feat(auth): 平台成唯一账号源——小程序微信登录进 users + OPC 报名资料字段
统一用户账号体系(阶段1,非破坏): - UserRepository 新增 get_by_wx_mini_openid。 - /auth/wx-login:小程序登录(X-Client=miniprogram)按 wx_mini_openid 建/复用 users 账号(role=opc_member, source=mini_program, auth_type=wx_openid), 并带 nickName/avatarUrl;非小程序仍走 wx_openid。 - /auth/me + 登录响应补齐小程序契约字段 name/phone/phoneBound。 - users 增 opc_status/topics 列(alembic 0010);desktop/web profile 也输出 name/phone/phoneBound/status/topics,且 update-profile 支持 name/status/topics 映射。 - scripts/db/seed.py 增 accounts→users 幂等迁移:旧小程序账号并入全局 users (wx_mini_openid/phone 关联 + opc_member 身份),由用户执行 migrate+seed。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,10 @@ class UpdateProfileRequest(BaseModel):
|
||||
expires_in: int | None = None
|
||||
# 演示用户资料字段(账户管理页可编辑)
|
||||
nickname: str | None = None
|
||||
# 小程序契约字段(name→nickname;status→opc_status;topics→JSON 列表)
|
||||
name: str | None = None
|
||||
status: str | None = None
|
||||
topics: list[str] | None = None
|
||||
account: str | None = None
|
||||
company: str | None = None
|
||||
room: str | None = None
|
||||
@@ -66,6 +70,9 @@ class UserProfile(BaseModel):
|
||||
|
||||
username: str = ""
|
||||
nickname: str = ""
|
||||
name: str = "" # 别名 = nickname(小程序契约:显示名 / 报名资料姓名)
|
||||
phone: str = "" # 已绑定手机号
|
||||
phoneBound: bool = False # 是否已绑手机(小程序「已绑定手机」徽标/绑定门槛)
|
||||
account: str = ""
|
||||
company: str = ""
|
||||
room: str = ""
|
||||
@@ -122,6 +129,8 @@ class PhoneLoginRequest(BaseModel):
|
||||
|
||||
class WxLoginRequest(BaseModel):
|
||||
code: str = Field(description="wx.login 返回的 code(未配置 appid 时当作 openid 直通)")
|
||||
nickName: str = ""
|
||||
avatarUrl: str = ""
|
||||
|
||||
|
||||
class WxPhoneRequest(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user