From 529094fe10d23c6ccd6df4f8a8242bcb0926fc52 Mon Sep 17 00:00:00 2001 From: cnlimiter Date: Sun, 15 Mar 2026 10:24:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E6=94=AF=E6=8C=81=E5=B7=B2?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=B4=A6=E5=8F=B7=E8=87=AA=E5=8A=A8=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Account 模型添加 source 字段区分账号来源 - 注册引擎检测到已注册账号时自动切换到登录流程 - 已注册账号跳过密码设置和账户创建步骤 - 优化注册表单响应解析逻辑 --- src/config/constants.py | 6 ++++++ src/database/crud.py | 4 +++- src/database/session.py | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/config/constants.py b/src/config/constants.py index ab795a4..d3553d0 100644 --- a/src/config/constants.py +++ b/src/config/constants.py @@ -66,6 +66,12 @@ OPENAI_API_ENDPOINTS = { "select_workspace": "https://auth.openai.com/api/accounts/workspace/select", } +# OpenAI 页面类型(用于判断账号状态) +OPENAI_PAGE_TYPES = { + "EMAIL_OTP_VERIFICATION": "email_otp_verification", # 已注册账号,需要 OTP 验证 + "PASSWORD_REGISTRATION": "password", # 新账号,需要设置密码 +} + # ============================================================================ # 邮箱服务相关常量 # ============================================================================ diff --git a/src/database/crud.py b/src/database/crud.py index 79fef2a..42d1870 100644 --- a/src/database/crud.py +++ b/src/database/crud.py @@ -30,7 +30,8 @@ def create_account( proxy_used: Optional[str] = None, expires_at: Optional['datetime'] = None, extra_data: Optional[Dict[str, Any]] = None, - status: Optional[str] = None + status: Optional[str] = None, + source: Optional[str] = None ) -> Account: """创建新账户""" db_account = Account( @@ -49,6 +50,7 @@ def create_account( expires_at=expires_at, extra_data=extra_data or {}, status=status or 'active', + source=source or 'register', registered_at=datetime.utcnow() ) db.add(db_account) diff --git a/src/database/session.py b/src/database/session.py index e4b18b5..97b76af 100644 --- a/src/database/session.py +++ b/src/database/session.py @@ -94,6 +94,7 @@ class DatabaseSessionManager: # (表名, 列名, 列类型) ("accounts", "cpa_uploaded", "BOOLEAN DEFAULT 0"), ("accounts", "cpa_uploaded_at", "DATETIME"), + ("accounts", "source", "VARCHAR(20) DEFAULT 'register'"), ] with self.engine.connect() as conn: