From 1e986c641f2337dc85e99944c11808bd0dcde61f Mon Sep 17 00:00:00 2001 From: lanceyq <1982376970@qq.com> Date: Wed, 25 Mar 2026 16:36:20 +0800 Subject: [PATCH] [fix] Fix the code according to the comments --- api/app/models/__init__.py | 2 +- api/app/models/end_user_info_model.py | 4 +-- .../repositories/end_user_info_repository.py | 32 ++++--------------- api/app/services/user_memory_service.py | 22 ++++++++----- 4 files changed, 23 insertions(+), 37 deletions(-) diff --git a/api/app/models/__init__.py b/api/app/models/__init__.py index 7dd26d34..e889504a 100644 --- a/api/app/models/__init__.py +++ b/api/app/models/__init__.py @@ -61,7 +61,7 @@ __all__ = [ "AppRelease", "MemoryIncrement", "EndUser", - "UserAlias", + "EndUserInfo", "AppShare", "ReleaseShare", "Conversation", diff --git a/api/app/models/end_user_info_model.py b/api/app/models/end_user_info_model.py index ed747002..c02f254c 100644 --- a/api/app/models/end_user_info_model.py +++ b/api/app/models/end_user_info_model.py @@ -1,7 +1,7 @@ import datetime import uuid -from sqlalchemy import Column, DateTime, ForeignKey, String, Text +from sqlalchemy import Column, DateTime, ForeignKey, String, Text, ARRAY from sqlalchemy.dialects.postgresql import UUID, JSONB from sqlalchemy.orm import relationship @@ -15,7 +15,7 @@ class EndUserInfo(Base): id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, nullable=False, index=True) end_user_id = Column(UUID(as_uuid=True), ForeignKey("end_users.id"), nullable=False, index=True, comment="关联的终端用户ID") other_name = Column(String, nullable=False, comment="关联的用户名称") - aliases = Column(JSONB, nullable=True, comment="用户别名列表(JSON数组)") + aliases = Column(ARRAY(String), nullable=True, comment="用户别名列表(字符串数组)") meta_data = Column(JSONB, nullable=True, comment="用户相关的扩展信息(JSON格式)") created_at = Column(DateTime, default=datetime.datetime.now, comment="创建时间") updated_at = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment="更新时间") diff --git a/api/app/repositories/end_user_info_repository.py b/api/app/repositories/end_user_info_repository.py index ee05d12d..f9f4665c 100644 --- a/api/app/repositories/end_user_info_repository.py +++ b/api/app/repositories/end_user_info_repository.py @@ -17,18 +17,18 @@ class EndUserInfoRepository: def __init__(self, db: Session): self.db = db - def create(self, end_user_id: uuid.UUID, other_name: str, alias: str = None, meta_data: dict = None) -> EndUserInfo: + def create(self, end_user_id: uuid.UUID, other_name: str, aliases: List[str] = None, meta_data: dict = None) -> EndUserInfo: """创建终端用户信息""" end_user_info = EndUserInfo( end_user_id=end_user_id, other_name=other_name, - alias=alias, + aliases=aliases or [], meta_data=meta_data ) self.db.add(end_user_info) self.db.commit() self.db.refresh(end_user_info) - logger.info(f"创建终端用户信息: end_user_id={end_user_id}, alias={alias}") + logger.info(f"创建终端用户信息: end_user_id={end_user_id}, aliases={aliases}") return end_user_info def get_by_id(self, info_id: uuid.UUID) -> Optional[EndUserInfo]: @@ -39,12 +39,12 @@ class EndUserInfoRepository: """获取用户的所有信息记录""" return self.db.query(EndUserInfo).filter(EndUserInfo.end_user_id == end_user_id).all() - def update(self, info_id: uuid.UUID, alias: str = None, meta_data: dict = None) -> Optional[EndUserInfo]: + def update(self, info_id: uuid.UUID, aliases: List[str] = None, meta_data: dict = None) -> Optional[EndUserInfo]: """更新用户信息""" end_user_info = self.get_by_id(info_id) if end_user_info: - if alias is not None: - end_user_info.alias = alias + if aliases is not None: + end_user_info.aliases = aliases if meta_data is not None: end_user_info.meta_data = meta_data self.db.commit() @@ -68,23 +68,3 @@ class EndUserInfoRepository: self.db.commit() logger.info(f"删除用户所有信息记录: end_user_id={end_user_id}, count={count}") return count - - def batch_create(self, end_user_id: uuid.UUID, other_name: str, aliases: List[str]) -> List[EndUserInfo]: - """批量创建用户信息""" - end_user_infos = [] - for alias in aliases: - if alias and alias.strip(): - end_user_info = EndUserInfo( - end_user_id=end_user_id, - other_name=other_name, - alias=alias.strip() - ) - self.db.add(end_user_info) - end_user_infos.append(end_user_info) - - self.db.commit() - for end_user_info in end_user_infos: - self.db.refresh(end_user_info) - - logger.info(f"批量创建终端用户信息: end_user_id={end_user_id}, count={len(end_user_infos)}") - return end_user_infos diff --git a/api/app/services/user_memory_service.py b/api/app/services/user_memory_service.py index 4106a1b0..28dabe10 100644 --- a/api/app/services/user_memory_service.py +++ b/api/app/services/user_memory_service.py @@ -382,14 +382,14 @@ class UserMemoryService: } """ try: - from app.models.end_user_info_model import EndUserInfo + from app.repositories.end_user_info_repository import EndUserInfoRepository from app.core.api_key_utils import datetime_to_timestamp # 转换为UUID并查询 user_uuid = uuid.UUID(end_user_id) - end_user_info_record = db.query(EndUserInfo).filter(EndUserInfo.end_user_id == user_uuid).first() + end_user_info_records = EndUserInfoRepository(db).get_by_end_user_id(user_uuid) - if not end_user_info_record: + if not end_user_info_records: logger.warning(f"终端用户信息记录不存在: end_user_id={end_user_id}") return { "success": False, @@ -397,6 +397,9 @@ class UserMemoryService: "error": "终端用户信息记录不存在" } + # 获取第一条记录 + end_user_info_record = end_user_info_records[0] + # 构建响应数据(转换时间为毫秒时间戳) response_data = { "end_user_info_id": str(end_user_info_record.id), @@ -453,15 +456,15 @@ class UserMemoryService: } """ try: - from app.models.end_user_info_model import EndUserInfo - from app.models.end_user_model import EndUser + from app.repositories.end_user_info_repository import EndUserInfoRepository + from app.repositories.end_user_repository import EndUserRepository from app.core.api_key_utils import datetime_to_timestamp # 转换为UUID并查询 user_uuid = uuid.UUID(end_user_id) - end_user_info_record = db.query(EndUserInfo).filter(EndUserInfo.end_user_id == user_uuid).first() + end_user_info_records = EndUserInfoRepository(db).get_by_end_user_id(user_uuid) - if not end_user_info_record: + if not end_user_info_records: logger.warning(f"终端用户信息记录不存在: end_user_id={end_user_id}") return { "success": False, @@ -469,6 +472,9 @@ class UserMemoryService: "error": "终端用户信息记录不存在" } + # 获取第一条记录 + end_user_info_record = end_user_info_records[0] + # 定义允许更新的字段白名单 allowed_fields = {'other_name', 'aliases', 'meta_data'} @@ -488,7 +494,7 @@ class UserMemoryService: # 如果 other_name 被更新,同步更新 end_user 表 if other_name_updated: - end_user_record = db.query(EndUser).filter(EndUser.id == user_uuid).first() + end_user_record = EndUserRepository(db).get_by_id(user_uuid) if end_user_record: end_user_record.other_name = update_data['other_name'] end_user_record.updated_at = datetime.now()