1
This commit is contained in:
@@ -1217,8 +1217,9 @@ Phase 4 本轮已完成以下主链接线:
|
||||
- published works 明确输出 `canEnterWorld=true`
|
||||
4. 前端 Agent 结果页已开始消费服务端 Phase4 状态:
|
||||
- 结果页在 Agent 草稿未发布时把主 CTA 改成“发布并进入世界”
|
||||
- 结果页会展示服务端 preview source、publish blockers、warning 数量
|
||||
- 有 blocker 时会禁用“发布并进入世界”按钮,不再让前端继续假装可以直接进入世界
|
||||
- 结果页会消费服务端 gate 语义,但不再把 preview source 做成底部常驻提示
|
||||
- publish blockers 改为点击“发布并进入世界”时,通过独立面板提示
|
||||
- warning 数量仍可作为非阻断摘要展示
|
||||
5. `useRpgCreationEnterWorld.ts` 与 `RpgEntryFlowShellImpl.tsx` 已把 Agent 结果页进入世界主链改成:
|
||||
- 先 `sync_result_profile`
|
||||
- 再执行后端 `publish_world`
|
||||
|
||||
@@ -4,12 +4,13 @@
|
||||
|
||||
## 1. 目标边界
|
||||
|
||||
本次迭代开放账号密码登录、登录后修改密码、手机号验证码重置密码,但不开放密码注册。
|
||||
本次迭代开放手机号密码登录、登录后修改密码、手机号验证码重置密码,但不开放独立注册页面。
|
||||
|
||||
1. 新用户只能通过手机号验证码完成注册与首次登录。
|
||||
2. 已有用户可以在登录后设置或修改密码。
|
||||
3. 忘记密码时,只能通过已绑定手机号验证码重置密码。
|
||||
4. 密码登录只校验已存在且已设置密码的账号,不自动创建新账号。
|
||||
4. 密码登录只校验已存在且已设置密码的手机号账号,不自动创建新账号。
|
||||
5. 登录面板本地缓存最近一次成功登录的手机号,只用于回填手机号输入框,不缓存密码或验证码。
|
||||
|
||||
## 2. 接口设计
|
||||
|
||||
@@ -17,10 +18,11 @@
|
||||
|
||||
沿用现有 `POST /api/auth/entry`:
|
||||
|
||||
1. 请求字段:`username`、`password`。
|
||||
2. 用户不存在时返回 `401`,不创建账号。
|
||||
3. 用户存在但未设置密码时返回 `401`。
|
||||
4. 校验成功后签发 access token,并写入 refresh cookie。
|
||||
1. 请求字段沿用 `username`、`password`,但前端固定把手机号填入 `username`。
|
||||
2. 后端优先按标准手机号归一化后查找账号,兼容历史用户名只作为开发游客兜底能力。
|
||||
3. 手机号不存在时返回 `401`,不创建账号。
|
||||
4. 手机号存在但未设置密码时返回 `401`。
|
||||
5. 校验成功后签发 access token,并写入 refresh cookie。
|
||||
|
||||
### 2.2 修改密码
|
||||
|
||||
@@ -46,14 +48,24 @@
|
||||
|
||||
复用 `POST /api/auth/phone/send-code`,`scene` 增加 `reset_password`。
|
||||
|
||||
### 2.5 验证码注册/登录
|
||||
|
||||
复用现有 `POST /api/auth/phone/login`:
|
||||
|
||||
1. 请求字段:`phone`、`code`。
|
||||
2. 验证码校验成功后,若手机号已绑定账号,则直接完成登录。
|
||||
3. 验证码校验成功后,若手机号没有账号信息,则后端自动创建手机号账号,再完成登录。
|
||||
4. 自动创建账号默认不设置用户可用密码,用户后续可在账号设置或忘记密码流程设置密码。
|
||||
|
||||
## 3. 前端交互
|
||||
|
||||
登录弹窗拆成两个页签:
|
||||
登录弹窗不再拆独立注册页签:
|
||||
|
||||
1. `登录`:提供密码登录、手机号验证码登录、忘记密码入口。
|
||||
2. `注册`:只提供手机号验证码注册/登录,不提供账号密码注册。
|
||||
3. `忘记密码`:从登录页进入独立重置面板,不在当前表单下方展开。
|
||||
4. 账号设置面板提供密码修改入口;未设置密码的账号显示为设置密码。
|
||||
1. 面板直接展示手机号和密码输入,用于已设置密码账号登录。
|
||||
2. 登录按钮文本固定为 `注册/登录`,避免用户在登录和首次进入之间做页面切换。
|
||||
3. 忘记密码入口显示在登录按钮右下侧,点击后仍进入独立重置面板,不在当前表单下方展开。
|
||||
4. 同一面板保留手机号验证码注册/登录能力,用于新用户自动注册和已注册用户免密码登录。
|
||||
5. 账号设置面板提供密码修改入口;未设置密码的账号显示为设置密码。
|
||||
|
||||
## 4. 数据约束
|
||||
|
||||
@@ -63,4 +75,4 @@
|
||||
2. 微信待绑定账号默认没有用户可用密码。
|
||||
3. 只有用户显式修改或重置密码后,才允许密码登录。
|
||||
|
||||
后续迁移到 SpacetimeDB 表时,保持同一语义:密码哈希字段允许为空,密码登录 reducer 不承担注册能力。
|
||||
后续迁移到 SpacetimeDB 表时,保持同一语义:密码哈希字段允许为空,密码登录 reducer 不承担注册能力,验证码登录 reducer 承担“无账号则自动注册”的唯一注册入口。
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
已改为:
|
||||
|
||||
补充修复:`RpgCreationResultViewImpl` 已补齐 `previewSourceLabel` props 解构,避免 Agent 结果页在渲染数据源提示时触发 `ReferenceError`。
|
||||
|
||||
```text
|
||||
Agent 结果页点击新增场景角色 / 新增场景
|
||||
-> RpgCreationResultView.onGenerateEntity
|
||||
|
||||
Reference in New Issue
Block a user