From d712a0e137547f624c95c66ed7893fc569fff5c3 Mon Sep 17 00:00:00 2001 From: liubiren Date: Fri, 24 Jul 2026 16:19:33 +0800 Subject: [PATCH] 1 --- agent/application/models/tables.py | 7 ++++--- agent/application/states/auth.py | 16 ++++++++++------ agent/application/states/conversation.py | 5 ++--- agent/application/states/database.py | 14 +++++++------- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/agent/application/models/tables.py b/agent/application/models/tables.py index a934c74..4706e01 100644 --- a/agent/application/models/tables.py +++ b/agent/application/models/tables.py @@ -11,13 +11,14 @@ from sqlmodel import Field, JSON, SQLModel class CaptchaRecord(SQLModel, table=True): """ - 验证码记录表 - 邮箱和创建时间联合作为主键 + 验证码记录 + 邮箱、验证码和失效时间联合作为主键 """ email: str = Field(..., primary_key=True, description="邮箱") captcha: str = Field( default_factory=lambda: "".join(choices("0123456789", k=6)), + primary_key=True, description="验证码", ) is_valid: bool = Field( @@ -37,7 +38,7 @@ class CaptchaRecord(SQLModel, table=True): ) -# 用户表 +# 用户记录 class UserRecord(SQLModel, table=True): id: str = Field( default_factory=lambda: str(uuid7()), diff --git a/agent/application/states/auth.py b/agent/application/states/auth.py index ac71e8c..82a31dc 100644 --- a/agent/application/states/auth.py +++ b/agent/application/states/auth.py @@ -126,7 +126,7 @@ class AuthState(rx.State): async with self: # 创建验证码记录并获取验证码 database_state = await self.get_state(DatabaseState) - captcha = await database_state.create_captchas_record(email=self.email) + captcha = await database_state.create_captcha_record(email=self.email) # 构建验证码邮件 message = MIMEText( @@ -223,18 +223,22 @@ class AuthState(rx.State): self.is_logging_in = True - # 更新验证码记录 + # 获取数据库状态 database_state = await self.get_state(DatabaseState) - if not await database_state.get_captcha(email=self.email, captcha=self.captcha): + # 核验验证码 + if not await database_state.verify_captcha( + email=self.email, captcha=self.captcha + ): self.is_logging_in = False self.login_error_message = "验证码错误" return # 创建用户记录 - user_id = await database_state.create_users_record(email=self.email) + user_id = await database_state.create_user_record(email=self.email) - # 设置会话状态中用户唯一标识 + # 获取会话状态 conversation_state = await self.get_state(ConversationState) - await conversation_state.set_user_id(user_id=user_id) + # 加载 + await conversation_state.load(user_id=user_id) self.user_id = user_id diff --git a/agent/application/states/conversation.py b/agent/application/states/conversation.py index 25a45e8..009f0fb 100644 --- a/agent/application/states/conversation.py +++ b/agent/application/states/conversation.py @@ -118,9 +118,9 @@ class ConversationState(rx.State): # 会话创建状态,True表示正在创建,False表示未正在创建 is_conversation_creating: bool = False - async def set_user_id(self, user_id: str) -> None: + async def load(self, user_id: str) -> None: """ - 设置用户唯一标识 + 加载 :param user_id: 用户唯一标识 :return: None """ @@ -130,7 +130,6 @@ class ConversationState(rx.State): # 数据库状态 database_state = await self.get_state(DatabaseState) - # 获取会话字典 self.conversations = await database_state.get_conversations( user_id=self.user_id diff --git a/agent/application/states/database.py b/agent/application/states/database.py index 4cf96c5..76956b4 100644 --- a/agent/application/states/database.py +++ b/agent/application/states/database.py @@ -66,7 +66,7 @@ class DatabaseState(rx.State): 核验验证码 :param email: 邮箱 :param captcha: 验证码 - :return: 是否更新成功,True 表示更新成功,False 表示更新失败 + :return: 是否核验成功,True 表示核验成功,False 表示核验失败(根据邮箱和验证码未找到有效且未核验的记录,或失效) """ async with rx.asession() as session: result = await session.exec( @@ -86,7 +86,7 @@ class DatabaseState(rx.State): await session.refresh(record) return True - async def create_users_record(self, email: str) -> str: + async def create_user_record(self, email: str) -> str: """ 创建用户记录 :param email: 邮箱 @@ -97,14 +97,14 @@ class DatabaseState(rx.State): select(UserRecord).where(UserRecord.email == email) ) record = result.first() - # 若用户记录存在则返回用户唯一标识,否则创建新用户记录并返回所创建的用户唯一标识 + # 若记录存在则返回用户唯一标识,否则创建并返回所创建记录的用户唯一标识 if record: return record.id - new_user = UserRecord(email=email) - session.add(new_user) + record = UserRecord(email=email) + session.add(record) await session.commit() - await session.refresh(new_user) - return new_user.id + await session.refresh(record) + return record.id async def get_conversations(self, user_id: str) -> Dict[str, Conversation]: """