docs: 回写 Z17–Z19 换绑按钮与禁默认登记(宇恒已改完)

鉴权/模块操作换绑、修 components、未绑定先绑定。
This commit is contained in:
whm
2026-08-06 17:16:13 +08:00
parent 169d890a2f
commit 56f62be184

View File

@@ -1,6 +1,6 @@
# 联调后修改意见 · 宇恒松离线(形态 B # 联调后修改意见 · 宇恒松离线(形态 B
> 初稿2026-08-01 · 修订至 **2026-08-06 14:45**Z16 去掉硬编码联调手机号 > 初稿2026-08-01 · 修订至 **2026-08-06 17:15**Z19 禁默认登记、修表单 components
> 焦点:**§0.2**(按负责方);**改代码前须先写入本意见**(见 §0.0 > 焦点:**§0.2**(按负责方);**改代码前须先写入本意见**(见 §0.0
> 来源:宇恒 `yuhengyihao_client` ↔ 智建(生产 `aisite.yuxindazhineng.com` > 来源:宇恒 `yuhengyihao_client` ↔ 智建(生产 `aisite.yuxindazhineng.com`
> 依据:`松离线-dbsync方案-最终版.md`、`宇恒-松离线数据同步使用文档.md` > 依据:`松离线-dbsync方案-最终版.md`、`宇恒-松离线数据同步使用文档.md`
@@ -21,6 +21,9 @@
| **Z14d 双向补齐** | **宇恒已接** | 误删任一侧 → 心跳/选同步按主键并集 pull↔push§5.11 | | **Z14d 双向补齐** | **宇恒已接** | 误删任一侧 → 心跳/选同步按主键并集 pull↔push§5.11 |
| **Z15 建站配置/绑定优先** | **宇恒已改完;智建无需** | 新机缺 `config.json` 自动生成无权限先绑定再鉴权§5.12 | | **Z15 建站配置/绑定优先** | **宇恒已改完;智建无需** | 新机缺 `config.json` 自动生成无权限先绑定再鉴权§5.12 |
| **Z16 禁硬编码联调手机** | **宇恒已改完;智建无需** | 代码/默认值不得内置 `13531041944`;凭票手机仅来自 env 或用户绑定§5.14 | | **Z16 禁硬编码联调手机** | **宇恒已改完;智建无需** | 代码/默认值不得内置 `13531041944`;凭票手机仅来自 env 或用户绑定§5.14 |
| **Z17 鉴权失败可换绑** | **宇恒已改完;智建无需** | 鉴权/换票失败门闸提供「绑定或更换绑定」清本机同步落点后重走绑定表单§5.15 |
| **Z18 模块操作换绑按钮** | **宇恒已改完;智建无需** | 「模块操作」表单底部独立**按钮**「换绑」非下拉选项点后强制清落点并弹绑定表单§5.16 |
| **Z19 禁默认登记先绑定** | **宇恒已改完;智建无需** | 无绑定不得静默 agent/register登记失败引导绑定修 sendFrom 漏 components§5.17 |
| **仍关注** | 用法 | 通道断了靠智建自愈;表数据靠宇恒双向指纹 / 数据恢复;不是「再点启动」 | | **仍关注** | 用法 | 通道断了靠智建自愈;表数据靠宇恒双向指纹 / 数据恢复;不是「再点启动」 |
### 0.0 修改流程(冻结) ### 0.0 修改流程(冻结)
@@ -54,6 +57,9 @@
| **Z14d** | **双向并集补齐2026-08-06**:不一致 → 先 `pull` 灌本机(不进 outbox再 ensure+full-push选「同步」同样先 pull 再 push**默认不做 prune**`YXD_SYNC_PRUNE_EXTRAS=1` 才清线上多余)。覆盖:线上误删 / 本地误删 / 缺表 | | **Z14d** | **双向并集补齐2026-08-06**:不一致 → 先 `pull` 灌本机(不进 outbox再 ensure+full-push选「同步」同样先 pull 再 push**默认不做 prune**`YXD_SYNC_PRUNE_EXTRAS=1` 才清线上多余)。覆盖:线上误删 / 本地误删 / 缺表 |
| **Z15** | **建站技能 config 自生成 + 无权限先绑定2026-08-06 · 宇恒已改完)**`ai-site-agent-api``config.json` 自动写默认模板;绑定优先;门闸含「绑定账号或手机号」。改动:`config_loader.py` / `host_bootstrap.py` / `forms.py` / `forms_ui.py` / `forms_ui.json` / `reference.md`。**智建无需改** | | **Z15** | **建站技能 config 自生成 + 无权限先绑定2026-08-06 · 宇恒已改完)**`ai-site-agent-api``config.json` 自动写默认模板;绑定优先;门闸含「绑定账号或手机号」。改动:`config_loader.py` / `host_bootstrap.py` / `forms.py` / `forms_ui.py` / `forms_ui.json` / `reference.md`。**智建无需改** |
| **Z16** | **去掉凭票硬编码手机号2026-08-06 · 宇恒已改完)**`_sync_phone()` 不再回落 `13531041944`;仅读 `YXD_SYNC_LOGIN_PHONE` / `YXD_ZHIJIAN_PHONE`;绑定成功则回写该 env。联调号仍可作**人工验收样例**§0.1),但**禁止写进产品默认值**。**智建无需改** | | **Z16** | **去掉凭票硬编码手机号2026-08-06 · 宇恒已改完)**`_sync_phone()` 不再回落 `13531041944`;仅读 `YXD_SYNC_LOGIN_PHONE` / `YXD_ZHIJIAN_PHONE`;绑定成功则回写该 env。联调号仍可作**人工验收样例**§0.1),但**禁止写进产品默认值**。**智建无需改** |
| **Z17** | **鉴权失败门闸绑定或更换绑定2026-08-06 · 宇恒已改完)**`pending_auth` 选项含「绑定或更换绑定」;点选后 `clear_local_sync_bind` + `force_rebind` 再弹绑定表单,避免因 agents/me 已绑而跳过。**智建无需改** |
| **Z18** | **模块操作页底部「换绑」按钮2026-08-06 · 宇恒已改完)**sendFrom 增加 `showRebind`/`rebindText``ask_module_action` 点按钮 → `FormRebindInterrupt``force_rebind`。鉴权门闸同步改为按钮而非下拉选项。**智建无需改** |
| **Z19** | **禁静默默认登记 + 修表单 components2026-08-06 · 宇恒已改完)**:未绑定先弹绑定;`build_sendfrom_form` 补回 `components`。**智建无需改** |
#### A. 宇恒 · 配合注意(非阻塞新开发) #### A. 宇恒 · 配合注意(非阻塞新开发)
@@ -800,6 +806,66 @@ POST /api/v1/agent/sync/channels/{id}/pull
3. 源码检索无产品路径硬编码 `13531041944`(文档/联调说明除外)。 3. 源码检索无产品路径硬编码 `13531041944`(文档/联调说明除外)。
### 5.15 【Z17 · 2026-08-06】鉴权失败可绑定或更换绑定
**状态****宇恒已改完****智建无需开发**。
**现象**
- 鉴权/换票失败后只像「重新检查授权」,虽有绑定项,但本机/线上仍判已绑时 `ensure_sync_bound_interactive` 直接 skipped无法换绑。
**诉求**
1. 鉴权失败门闸选项含 **「绑定或更换绑定」**(优先于仅重新检查)。
2. 点选后:清空本机 `CHANNEL_ID` / Token / `ONLINE_DB_ID` / `LOGIN_PHONE`,再强制弹出绑定码/手机号表单。
3. 不要求智建提供解绑 API本机强制重绑即可联调线上旧 Binding 由新绑定覆盖/复用)。
**验收**
1. 鉴权失败 → 表单可见「绑定或更换绑定」。
2. 即使 env 里仍有旧 channel点选后仍弹出绑定方式表单。
3. 绑定成功后可再「重新检查授权状态」。
### 5.16 【Z18 · 2026-08-06】模块操作页「换绑」为独立按钮
**状态****宇恒已改完****智建无需开发**。
**诉求**
- 「模块操作」第一屏底部提供独立按钮「换绑」,**不是**操作下拉里的选项。
- 鉴权失败门闸同样用按钮触发换绑,避免与「重新检查」混在同一枚举里。
- 点击后:`clear_local_sync_bind` + 强制绑定表单(同 Z17
**改动面**
- 前端 `sendFrom.vue``showRebind` / `rebindText`
- `yxd_skill_ty_host`:表单载荷 + `FormRebindInterrupt`
- 建站技能:`forms.py` / `host_bootstrap.py` / `forms_ui.json`
**验收**
1. 已登录看到「模块操作」时,底部有「换绑」按钮(与退出、提交并列)。
2. 点击后弹出绑定码/手机号表单,不依赖下拉选「换绑」。
3. 操作下拉里无「换绑」项。
### 5.17 【Z19 · 2026-08-06】禁止静默默认登记未绑定先绑修表单无组件
**状态****宇恒已改完****智建无需开发**。
**现象**
- 「默认登记失败Expecting value…」→ 旧路径静默 `POST /auth/agent/register`,空响应 JSON 解析失败。
- 紧接「会话异常chat form has no components」→ `build_sendfrom_form` 漏写 `components` 字段。
**诉求**
1. 无公司同步绑定时:**先绑定**,禁止把「默认登记」当登录。
2. 登记/换票失败文案引导绑定,不暴露原始 JSON 解析堆栈给用户为主路径。
3. sendFrom 表单必须带 `components`
## 6. 联系与附件 ## 6. 联系与附件
- **待改清单(优先看)**§0.2**A 宇恒配合 · B 智建运维**;开发项已清空);**改代码前先写本意见**§0.0);配合见 **§0.3** - **待改清单(优先看)**§0.2**A 宇恒配合 · B 智建运维**;开发项已清空);**改代码前先写本意见**§0.0);配合见 **§0.3**