From e8d575fd0b8508e30566c9b28d9b5ce797c0f628 Mon Sep 17 00:00:00 2001 From: lanceyq <1982376970@qq.com> Date: Tue, 24 Mar 2026 16:10:23 +0800 Subject: [PATCH] [add] Separate the definitions of end_user and user_alias --- .../controllers/user_memory_controllers.py | 2 +- api/app/schemas/end_user_schema.py | 31 +------------------ api/app/schemas/user_alias_schema.py | 12 ++++--- api/app/services/user_memory_service.py | 13 +++++--- 4 files changed, 17 insertions(+), 41 deletions(-) diff --git a/api/app/controllers/user_memory_controllers.py b/api/app/controllers/user_memory_controllers.py index dbdc0a16..d6b910a3 100644 --- a/api/app/controllers/user_memory_controllers.py +++ b/api/app/controllers/user_memory_controllers.py @@ -23,7 +23,7 @@ from app.services.memory_entity_relationship_service import MemoryEntityService, from app.schemas.response_schema import ApiResponse from app.schemas.memory_storage_schema import GenerateCacheRequest from app.repositories.workspace_repository import WorkspaceRepository -from app.schemas.end_user_schema import ( +from app.schemas.user_alias_schema import ( UserAliasResponse, UserAliasCreate, UserAliasUpdate, diff --git a/api/app/schemas/end_user_schema.py b/api/app/schemas/end_user_schema.py index d541ba47..c2498203 100644 --- a/api/app/schemas/end_user_schema.py +++ b/api/app/schemas/end_user_schema.py @@ -19,33 +19,4 @@ class EndUser(BaseModel): # 用户摘要和洞察更新时间 user_summary_updated_at: Optional[datetime.datetime] = Field(description="用户摘要最后更新时间", default=None) - memory_insight_updated_at: Optional[datetime.datetime] = Field(description="洞察报告最后更新时间", default=None) - - -class UserAliasResponse(BaseModel): - """用户别名响应模型""" - model_config = ConfigDict(from_attributes=True) - - user_alias_id: uuid.UUID = Field(description="用户别名记录ID") - end_user_id: uuid.UUID = Field(description="终端用户ID") - other_name: str = Field(description="用户名称") - aliases: Optional[List[str]] = Field(description="别名列表", default=None) - meta_data: Optional[dict] = Field(description="扩展信息", default=None) - created_at: datetime.datetime = Field(description="创建时间") - updated_at: datetime.datetime = Field(description="更新时间") - - -class UserAliasCreate(BaseModel): - """创建用户别名请求模型""" - end_user_id: str = Field(description="终端用户ID") - other_name: str = Field(description="用户名称") - aliases: Optional[List[str]] = Field(description="别名列表", default=None) - meta_data: Optional[dict] = Field(description="扩展信息", default=None) - - -class UserAliasUpdate(BaseModel): - """更新用户别名请求模型""" - user_alias_id: str = Field(description="用户别名记录ID") - other_name: Optional[str] = Field(description="用户名称", default=None) - aliases: Optional[List[str]] = Field(description="别名列表", default=None) - meta_data: Optional[dict] = Field(description="扩展信息", default=None) \ No newline at end of file + memory_insight_updated_at: Optional[datetime.datetime] = Field(description="洞察报告最后更新时间", default=None) \ No newline at end of file diff --git a/api/app/schemas/user_alias_schema.py b/api/app/schemas/user_alias_schema.py index 847c5c5d..a8bf7700 100644 --- a/api/app/schemas/user_alias_schema.py +++ b/api/app/schemas/user_alias_schema.py @@ -1,6 +1,6 @@ import uuid import datetime -from typing import Optional, Dict, Any +from typing import Optional, Dict, Any, List from pydantic import BaseModel, Field from pydantic import ConfigDict @@ -8,18 +8,20 @@ from pydantic import ConfigDict class UserAliasBase(BaseModel): """用户别名基础模型""" other_name: str = Field(description="关联的用户名称") - alias: Optional[str] = Field(description="用户别名", default=None) + aliases: Optional[List[str]] = Field(description="用户别名列表", default=None) meta_data: Optional[Dict[str, Any]] = Field(description="用户相关的扩展信息", default=None) class UserAliasCreate(UserAliasBase): """创建用户别名请求模型""" - end_user_id: uuid.UUID = Field(description="关联的终端用户ID") + end_user_id: str = Field(description="关联的终端用户ID") class UserAliasUpdate(BaseModel): """更新用户别名请求模型""" - alias: Optional[str] = Field(description="用户别名", default=None) + user_alias_id: str = Field(description="用户别名记录ID") + other_name: Optional[str] = Field(description="用户名称", default=None) + aliases: Optional[List[str]] = Field(description="用户别名列表", default=None) meta_data: Optional[Dict[str, Any]] = Field(description="用户相关的扩展信息", default=None) @@ -27,7 +29,7 @@ class UserAliasResponse(UserAliasBase): """用户别名响应模型""" model_config = ConfigDict(from_attributes=True) - id: uuid.UUID = Field(description="别名ID") + user_alias_id: uuid.UUID = Field(description="用户别名记录ID") end_user_id: uuid.UUID = Field(description="关联的终端用户ID") created_at: datetime.datetime = Field(description="创建时间") updated_at: datetime.datetime = Field(description="更新时间") diff --git a/api/app/services/user_memory_service.py b/api/app/services/user_memory_service.py index 5aa589e8..0a01b6dc 100644 --- a/api/app/services/user_memory_service.py +++ b/api/app/services/user_memory_service.py @@ -397,7 +397,7 @@ class UserMemoryService: } # 构建响应数据 - from app.schemas.end_user_schema import UserAliasResponse + from app.schemas.user_alias_schema import UserAliasResponse response_data = UserAliasResponse( user_alias_id=user_alias_record.id, end_user_id=user_alias_record.end_user_id, @@ -485,7 +485,7 @@ class UserMemoryService: db.refresh(new_alias) # 构建响应数据 - from app.schemas.end_user_schema import UserAliasResponse + from app.schemas.user_alias_schema import UserAliasResponse response_data = UserAliasResponse( user_alias_id=new_alias.id, end_user_id=new_alias.end_user_id, @@ -556,9 +556,12 @@ class UserMemoryService: "error": "用户别名记录不存在" } - # 更新字段 + # 定义允许更新的字段白名单 + allowed_fields = {'other_name', 'aliases', 'meta_data'} + + # 更新字段(仅允许白名单中的字段) for field, value in update_data.items(): - if hasattr(user_alias_record, field) and field != 'user_alias_id': + if field in allowed_fields: setattr(user_alias_record, field, value) # 更新时间戳 @@ -569,7 +572,7 @@ class UserMemoryService: db.refresh(user_alias_record) # 构建响应数据 - from app.schemas.end_user_schema import UserAliasResponse + from app.schemas.user_alias_schema import UserAliasResponse response_data = UserAliasResponse( user_alias_id=user_alias_record.id, end_user_id=user_alias_record.end_user_id,