diff --git a/api/app/controllers/emotion_controller.py b/api/app/controllers/emotion_controller.py index 919ac695..154a3928 100644 --- a/api/app/controllers/emotion_controller.py +++ b/api/app/controllers/emotion_controller.py @@ -24,7 +24,7 @@ from app.schemas.emotion_schema import ( ) from app.schemas.response_schema import ApiResponse from app.services.emotion_analytics_service import EmotionAnalyticsService -from fastapi import APIRouter, Depends, HTTPException, status +from fastapi import APIRouter, Depends, HTTPException, status,Header from sqlalchemy.orm import Session # 获取API专用日志器 @@ -45,6 +45,7 @@ emotion_service = EmotionAnalyticsService() @router.post("/tags", response_model=ApiResponse) async def get_emotion_tags( request: EmotionTagsRequest, + language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), ): @@ -96,6 +97,7 @@ async def get_emotion_tags( @router.post("/wordcloud", response_model=ApiResponse) async def get_emotion_wordcloud( request: EmotionWordcloudRequest, + language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), ): @@ -142,6 +144,7 @@ async def get_emotion_wordcloud( @router.post("/health", response_model=ApiResponse) async def get_emotion_health( request: EmotionHealthRequest, + language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), ): @@ -196,6 +199,7 @@ async def get_emotion_health( @router.post("/suggestions", response_model=ApiResponse) async def get_emotion_suggestions( request: EmotionSuggestionsRequest, + language_type: str = Header(default="zh", alias="X-Language-Type"), db: Session = Depends(get_db), current_user: User = Depends(get_current_user), ): @@ -261,6 +265,7 @@ async def get_emotion_suggestions( @router.post("/generate_suggestions", response_model=ApiResponse) async def generate_emotion_suggestions( request: EmotionGenerateSuggestionsRequest, + language_type: str = Header(default="zh", alias="X-Language-Type"), db: Session = Depends(get_db), current_user: User = Depends(get_current_user), ): diff --git a/api/app/controllers/memory_agent_controller.py b/api/app/controllers/memory_agent_controller.py index 22830890..78a5771f 100644 --- a/api/app/controllers/memory_agent_controller.py +++ b/api/app/controllers/memory_agent_controller.py @@ -18,7 +18,7 @@ from app.services import task_service, workspace_service from app.services.memory_agent_service import MemoryAgentService from app.services.model_service import ModelConfigService from dotenv import load_dotenv -from fastapi import APIRouter, Depends, File, Form, Query, UploadFile +from fastapi import APIRouter, Depends, File, Form, Query, UploadFile,Header from sqlalchemy.orm import Session from starlette.responses import StreamingResponse @@ -652,7 +652,7 @@ async def get_knowledge_type_stats_api( @router.get("/analytics/hot_memory_tags/by_user", response_model=ApiResponse) async def get_hot_memory_tags_by_user_api( end_user_id: Optional[str] = Query(None, description="用户ID(可选)"), - language_type: Optional[str] ="zh", + language_type: str = Header(default="zh", alias="X-Language-Type"), limit: int = Query(20, description="返回标签数量限制"), current_user: User = Depends(get_current_user), db: Session=Depends(get_db), diff --git a/api/app/controllers/memory_reflection_controller.py b/api/app/controllers/memory_reflection_controller.py index 9be6e035..abd50a33 100644 --- a/api/app/controllers/memory_reflection_controller.py +++ b/api/app/controllers/memory_reflection_controller.py @@ -20,7 +20,7 @@ from app.services.memory_reflection_service import ( ) from app.services.model_service import ModelConfigService from dotenv import load_dotenv -from fastapi import APIRouter, Depends, HTTPException, status +from fastapi import APIRouter, Depends, HTTPException, status,Header from sqlalchemy import text from sqlalchemy.orm import Session @@ -192,7 +192,7 @@ async def start_reflection_configs( @router.get("/reflection/run") async def reflection_run( config_id: int, - language_type: str = "zh", + language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ) -> dict: diff --git a/api/app/controllers/memory_short_term_controller.py b/api/app/controllers/memory_short_term_controller.py index 9cf66749..c375ae80 100644 --- a/api/app/controllers/memory_short_term_controller.py +++ b/api/app/controllers/memory_short_term_controller.py @@ -1,4 +1,4 @@ -from fastapi import APIRouter, Depends, HTTPException, status +from fastapi import APIRouter, Depends, HTTPException, status,Header from app.core.logging_config import get_api_logger from app.core.response_utils import success from app.db import get_db @@ -20,7 +20,7 @@ router = APIRouter( @router.get("/short_term") async def short_term_configs( end_user_id: str, - language_type:Optional[str] = "zh", + language_type:str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): diff --git a/api/app/controllers/user_memory_controllers.py b/api/app/controllers/user_memory_controllers.py index 3b7345b6..6f02f8f9 100644 --- a/api/app/controllers/user_memory_controllers.py +++ b/api/app/controllers/user_memory_controllers.py @@ -5,7 +5,7 @@ from typing import Optional import datetime from sqlalchemy.orm import Session -from fastapi import APIRouter, Depends +from fastapi import APIRouter, Depends,Header from app.db import get_db from app.core.logging_config import get_api_logger @@ -45,7 +45,7 @@ router = APIRouter( @router.get("/analytics/memory_insight/report", response_model=ApiResponse) async def get_memory_insight_report_api( end_user_id: str, - language_type: str = "zh", + language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ) -> dict: @@ -82,7 +82,7 @@ async def get_memory_insight_report_api( @router.get("/analytics/user_summary", response_model=ApiResponse) async def get_user_summary_api( end_user_id: str, - language_type: str="zh", + language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ) -> dict: @@ -385,7 +385,7 @@ async def update_end_user_profile( return fail(BizCode.INTERNAL_ERROR, "用户信息更新失败", error_msg) @router.get("/memory_space/timeline_memories", response_model=ApiResponse) -async def memory_space_timeline_of_shared_memories(id: str, label: str,language_type: str="zh", +async def memory_space_timeline_of_shared_memories(id: str, label: str,language_type: str = Header(default="zh", alias="X-Language-Type"), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): diff --git a/api/app/schemas/emotion_schema.py b/api/app/schemas/emotion_schema.py index cfa65b0f..c48fbd41 100644 --- a/api/app/schemas/emotion_schema.py +++ b/api/app/schemas/emotion_schema.py @@ -3,7 +3,6 @@ from typing import Optional from pydantic import BaseModel, Field - class EmotionTagsRequest(BaseModel): """获取情绪标签统计请求""" group_id: str = Field(..., description="组ID") @@ -11,7 +10,6 @@ class EmotionTagsRequest(BaseModel): start_date: Optional[str] = Field(None, description="开始日期(ISO格式,如:2024-01-01)") end_date: Optional[str] = Field(None, description="结束日期(ISO格式,如:2024-12-31)") limit: int = Field(10, ge=1, le=100, description="返回数量限制") - language_type: Optional[str] = Field("zh", description="语言类型(zh/en)") class EmotionWordcloudRequest(BaseModel): @@ -19,24 +17,22 @@ class EmotionWordcloudRequest(BaseModel): group_id: str = Field(..., description="组ID") emotion_type: Optional[str] = Field(None, description="情绪类型过滤(joy/sadness/anger/fear/surprise/neutral)") limit: int = Field(50, ge=1, le=200, description="返回词语数量") - language_type: Optional[str] = Field("zh", description="语言类型(zh/en)") class EmotionHealthRequest(BaseModel): """获取情绪健康指数请求""" group_id: str = Field(..., description="组ID") time_range: str = Field("30d", description="时间范围(7d/30d/90d)") - language_type: Optional[str] = Field("zh", description="语言类型(zh/en)") + + class EmotionSuggestionsRequest(BaseModel): """获取个性化情绪建议请求""" group_id: str = Field(..., description="组ID") config_id: Optional[int] = Field(None, description="配置ID(用于指定LLM模型)") - language_type: Optional[str] = Field("zh", description="语言类型(zh/en)") class EmotionGenerateSuggestionsRequest(BaseModel): """生成个性化情绪建议请求""" end_user_id: str = Field(..., description="终端用户ID") - language_type: Optional[str] = Field("zh", description="语言类型(zh/en)")