Merge pull request #173 from SuanmoSuanyangTechnology/fix/memory_mcp2_1

Fix/memory mcp2 1
This commit is contained in:
Mark
2026-01-22 11:40:33 +08:00
committed by GitHub
6 changed files with 18 additions and 17 deletions

View File

@@ -24,7 +24,7 @@ from app.schemas.emotion_schema import (
) )
from app.schemas.response_schema import ApiResponse from app.schemas.response_schema import ApiResponse
from app.services.emotion_analytics_service import EmotionAnalyticsService 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 from sqlalchemy.orm import Session
# 获取API专用日志器 # 获取API专用日志器
@@ -45,6 +45,7 @@ emotion_service = EmotionAnalyticsService()
@router.post("/tags", response_model=ApiResponse) @router.post("/tags", response_model=ApiResponse)
async def get_emotion_tags( async def get_emotion_tags(
request: EmotionTagsRequest, request: EmotionTagsRequest,
language_type: str = Header(default="zh", alias="X-Language-Type"),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
): ):
@@ -96,6 +97,7 @@ async def get_emotion_tags(
@router.post("/wordcloud", response_model=ApiResponse) @router.post("/wordcloud", response_model=ApiResponse)
async def get_emotion_wordcloud( async def get_emotion_wordcloud(
request: EmotionWordcloudRequest, request: EmotionWordcloudRequest,
language_type: str = Header(default="zh", alias="X-Language-Type"),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
): ):
@@ -142,6 +144,7 @@ async def get_emotion_wordcloud(
@router.post("/health", response_model=ApiResponse) @router.post("/health", response_model=ApiResponse)
async def get_emotion_health( async def get_emotion_health(
request: EmotionHealthRequest, request: EmotionHealthRequest,
language_type: str = Header(default="zh", alias="X-Language-Type"),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
): ):
@@ -196,6 +199,7 @@ async def get_emotion_health(
@router.post("/suggestions", response_model=ApiResponse) @router.post("/suggestions", response_model=ApiResponse)
async def get_emotion_suggestions( async def get_emotion_suggestions(
request: EmotionSuggestionsRequest, request: EmotionSuggestionsRequest,
language_type: str = Header(default="zh", alias="X-Language-Type"),
db: Session = Depends(get_db), db: Session = Depends(get_db),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
): ):
@@ -261,6 +265,7 @@ async def get_emotion_suggestions(
@router.post("/generate_suggestions", response_model=ApiResponse) @router.post("/generate_suggestions", response_model=ApiResponse)
async def generate_emotion_suggestions( async def generate_emotion_suggestions(
request: EmotionGenerateSuggestionsRequest, request: EmotionGenerateSuggestionsRequest,
language_type: str = Header(default="zh", alias="X-Language-Type"),
db: Session = Depends(get_db), db: Session = Depends(get_db),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
): ):

View File

@@ -18,7 +18,7 @@ from app.services import task_service, workspace_service
from app.services.memory_agent_service import MemoryAgentService from app.services.memory_agent_service import MemoryAgentService
from app.services.model_service import ModelConfigService from app.services.model_service import ModelConfigService
from dotenv import load_dotenv 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 sqlalchemy.orm import Session
from starlette.responses import StreamingResponse 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) @router.get("/analytics/hot_memory_tags/by_user", response_model=ApiResponse)
async def get_hot_memory_tags_by_user_api( async def get_hot_memory_tags_by_user_api(
end_user_id: Optional[str] = Query(None, description="用户ID可选"), 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="返回标签数量限制"), limit: int = Query(20, description="返回标签数量限制"),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
db: Session=Depends(get_db), db: Session=Depends(get_db),

View File

@@ -20,7 +20,7 @@ from app.services.memory_reflection_service import (
) )
from app.services.model_service import ModelConfigService from app.services.model_service import ModelConfigService
from dotenv import load_dotenv 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 import text
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@@ -192,7 +192,7 @@ async def start_reflection_configs(
@router.get("/reflection/run") @router.get("/reflection/run")
async def reflection_run( async def reflection_run(
config_id: int, config_id: int,
language_type: str = "zh", language_type: str = Header(default="zh", alias="X-Language-Type"),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> dict: ) -> dict:

View File

@@ -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.logging_config import get_api_logger
from app.core.response_utils import success from app.core.response_utils import success
from app.db import get_db from app.db import get_db
@@ -20,7 +20,7 @@ router = APIRouter(
@router.get("/short_term") @router.get("/short_term")
async def short_term_configs( async def short_term_configs(
end_user_id: str, 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), current_user: User = Depends(get_current_user),
db: Session = Depends(get_db), db: Session = Depends(get_db),
): ):

View File

@@ -5,7 +5,7 @@
from typing import Optional from typing import Optional
import datetime import datetime
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends,Header
from app.db import get_db from app.db import get_db
from app.core.logging_config import get_api_logger from app.core.logging_config import get_api_logger
@@ -45,7 +45,7 @@ router = APIRouter(
@router.get("/analytics/memory_insight/report", response_model=ApiResponse) @router.get("/analytics/memory_insight/report", response_model=ApiResponse)
async def get_memory_insight_report_api( async def get_memory_insight_report_api(
end_user_id: str, 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), current_user: User = Depends(get_current_user),
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> dict: ) -> dict:
@@ -82,7 +82,7 @@ async def get_memory_insight_report_api(
@router.get("/analytics/user_summary", response_model=ApiResponse) @router.get("/analytics/user_summary", response_model=ApiResponse)
async def get_user_summary_api( async def get_user_summary_api(
end_user_id: str, 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), current_user: User = Depends(get_current_user),
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> dict: ) -> dict:
@@ -385,7 +385,7 @@ async def update_end_user_profile(
return fail(BizCode.INTERNAL_ERROR, "用户信息更新失败", error_msg) return fail(BizCode.INTERNAL_ERROR, "用户信息更新失败", error_msg)
@router.get("/memory_space/timeline_memories", response_model=ApiResponse) @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), current_user: User = Depends(get_current_user),
db: Session = Depends(get_db), db: Session = Depends(get_db),
): ):

View File

@@ -3,7 +3,6 @@
from typing import Optional from typing import Optional
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
class EmotionTagsRequest(BaseModel): class EmotionTagsRequest(BaseModel):
"""获取情绪标签统计请求""" """获取情绪标签统计请求"""
group_id: str = Field(..., description="组ID") group_id: str = Field(..., description="组ID")
@@ -11,7 +10,6 @@ class EmotionTagsRequest(BaseModel):
start_date: Optional[str] = Field(None, description="开始日期ISO格式2024-01-01") start_date: Optional[str] = Field(None, description="开始日期ISO格式2024-01-01")
end_date: Optional[str] = Field(None, description="结束日期ISO格式2024-12-31") end_date: Optional[str] = Field(None, description="结束日期ISO格式2024-12-31")
limit: int = Field(10, ge=1, le=100, description="返回数量限制") limit: int = Field(10, ge=1, le=100, description="返回数量限制")
language_type: Optional[str] = Field("zh", description="语言类型zh/en")
class EmotionWordcloudRequest(BaseModel): class EmotionWordcloudRequest(BaseModel):
@@ -19,24 +17,22 @@ class EmotionWordcloudRequest(BaseModel):
group_id: str = Field(..., description="组ID") group_id: str = Field(..., description="组ID")
emotion_type: Optional[str] = Field(None, description="情绪类型过滤joy/sadness/anger/fear/surprise/neutral") emotion_type: Optional[str] = Field(None, description="情绪类型过滤joy/sadness/anger/fear/surprise/neutral")
limit: int = Field(50, ge=1, le=200, description="返回词语数量") limit: int = Field(50, ge=1, le=200, description="返回词语数量")
language_type: Optional[str] = Field("zh", description="语言类型zh/en")
class EmotionHealthRequest(BaseModel): class EmotionHealthRequest(BaseModel):
"""获取情绪健康指数请求""" """获取情绪健康指数请求"""
group_id: str = Field(..., description="组ID") group_id: str = Field(..., description="组ID")
time_range: str = Field("30d", description="时间范围7d/30d/90d") time_range: str = Field("30d", description="时间范围7d/30d/90d")
language_type: Optional[str] = Field("zh", description="语言类型zh/en")
class EmotionSuggestionsRequest(BaseModel): class EmotionSuggestionsRequest(BaseModel):
"""获取个性化情绪建议请求""" """获取个性化情绪建议请求"""
group_id: str = Field(..., description="组ID") group_id: str = Field(..., description="组ID")
config_id: Optional[int] = Field(None, description="配置ID用于指定LLM模型") config_id: Optional[int] = Field(None, description="配置ID用于指定LLM模型")
language_type: Optional[str] = Field("zh", description="语言类型zh/en")
class EmotionGenerateSuggestionsRequest(BaseModel): class EmotionGenerateSuggestionsRequest(BaseModel):
"""生成个性化情绪建议请求""" """生成个性化情绪建议请求"""
end_user_id: str = Field(..., description="终端用户ID") end_user_id: str = Field(..., description="终端用户ID")
language_type: Optional[str] = Field("zh", description="语言类型zh/en")