[add] Separate the definitions of end_user and user_alias

This commit is contained in:
lanceyq
2026-03-24 16:10:23 +08:00
parent a7285e35ad
commit e8d575fd0b
4 changed files with 17 additions and 41 deletions

View File

@@ -23,7 +23,7 @@ from app.services.memory_entity_relationship_service import MemoryEntityService,
from app.schemas.response_schema import ApiResponse from app.schemas.response_schema import ApiResponse
from app.schemas.memory_storage_schema import GenerateCacheRequest from app.schemas.memory_storage_schema import GenerateCacheRequest
from app.repositories.workspace_repository import WorkspaceRepository from app.repositories.workspace_repository import WorkspaceRepository
from app.schemas.end_user_schema import ( from app.schemas.user_alias_schema import (
UserAliasResponse, UserAliasResponse,
UserAliasCreate, UserAliasCreate,
UserAliasUpdate, UserAliasUpdate,

View File

@@ -19,33 +19,4 @@ class EndUser(BaseModel):
# 用户摘要和洞察更新时间 # 用户摘要和洞察更新时间
user_summary_updated_at: Optional[datetime.datetime] = Field(description="用户摘要最后更新时间", default=None) user_summary_updated_at: Optional[datetime.datetime] = Field(description="用户摘要最后更新时间", default=None)
memory_insight_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)

View File

@@ -1,6 +1,6 @@
import uuid import uuid
import datetime import datetime
from typing import Optional, Dict, Any from typing import Optional, Dict, Any, List
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from pydantic import ConfigDict from pydantic import ConfigDict
@@ -8,18 +8,20 @@ from pydantic import ConfigDict
class UserAliasBase(BaseModel): class UserAliasBase(BaseModel):
"""用户别名基础模型""" """用户别名基础模型"""
other_name: str = Field(description="关联的用户名称") 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) meta_data: Optional[Dict[str, Any]] = Field(description="用户相关的扩展信息", default=None)
class UserAliasCreate(UserAliasBase): class UserAliasCreate(UserAliasBase):
"""创建用户别名请求模型""" """创建用户别名请求模型"""
end_user_id: uuid.UUID = Field(description="关联的终端用户ID") end_user_id: str = Field(description="关联的终端用户ID")
class UserAliasUpdate(BaseModel): 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) meta_data: Optional[Dict[str, Any]] = Field(description="用户相关的扩展信息", default=None)
@@ -27,7 +29,7 @@ class UserAliasResponse(UserAliasBase):
"""用户别名响应模型""" """用户别名响应模型"""
model_config = ConfigDict(from_attributes=True) 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") end_user_id: uuid.UUID = Field(description="关联的终端用户ID")
created_at: datetime.datetime = Field(description="创建时间") created_at: datetime.datetime = Field(description="创建时间")
updated_at: datetime.datetime = Field(description="更新时间") updated_at: datetime.datetime = Field(description="更新时间")

View File

@@ -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( response_data = UserAliasResponse(
user_alias_id=user_alias_record.id, user_alias_id=user_alias_record.id,
end_user_id=user_alias_record.end_user_id, end_user_id=user_alias_record.end_user_id,
@@ -485,7 +485,7 @@ class UserMemoryService:
db.refresh(new_alias) db.refresh(new_alias)
# 构建响应数据 # 构建响应数据
from app.schemas.end_user_schema import UserAliasResponse from app.schemas.user_alias_schema import UserAliasResponse
response_data = UserAliasResponse( response_data = UserAliasResponse(
user_alias_id=new_alias.id, user_alias_id=new_alias.id,
end_user_id=new_alias.end_user_id, end_user_id=new_alias.end_user_id,
@@ -556,9 +556,12 @@ class UserMemoryService:
"error": "用户别名记录不存在" "error": "用户别名记录不存在"
} }
# 更新字段 # 定义允许更新字段白名单
allowed_fields = {'other_name', 'aliases', 'meta_data'}
# 更新字段(仅允许白名单中的字段)
for field, value in update_data.items(): 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) setattr(user_alias_record, field, value)
# 更新时间戳 # 更新时间戳
@@ -569,7 +572,7 @@ class UserMemoryService:
db.refresh(user_alias_record) db.refresh(user_alias_record)
# 构建响应数据 # 构建响应数据
from app.schemas.end_user_schema import UserAliasResponse from app.schemas.user_alias_schema import UserAliasResponse
response_data = UserAliasResponse( response_data = UserAliasResponse(
user_alias_id=user_alias_record.id, user_alias_id=user_alias_record.id,
end_user_id=user_alias_record.end_user_id, end_user_id=user_alias_record.end_user_id,