docs: 回写 Z20–Z21 启动弹绑定与空体安全解析(宇恒已改完)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
whm
2026-08-06 17:55:08 +08:00
parent 56f62be184
commit 6ccc107f22

View File

@@ -1,6 +1,6 @@
# 联调后修改意见 · 宇恒松离线(形态 B # 联调后修改意见 · 宇恒松离线(形态 B
> 初稿2026-08-01 · 修订至 **2026-08-06 17:15**Z19 禁默认登记、修表单 components > 初稿2026-08-01 · 修订至 **2026-08-06 17:45**Z21 绑定接口空体不抛 JSON
> 焦点:**§0.2**(按负责方);**改代码前须先写入本意见**(见 §0.0 > 焦点:**§0.2**(按负责方);**改代码前须先写入本意见**(见 §0.0
> 来源:宇恒 `yuhengyihao_client` ↔ 智建(生产 `aisite.yuxindazhineng.com` > 来源:宇恒 `yuhengyihao_client` ↔ 智建(生产 `aisite.yuxindazhineng.com`
> 依据:`松离线-dbsync方案-最终版.md`、`宇恒-松离线数据同步使用文档.md` > 依据:`松离线-dbsync方案-最终版.md`、`宇恒-松离线数据同步使用文档.md`
@@ -24,6 +24,8 @@
| **Z17 鉴权失败可换绑** | **宇恒已改完;智建无需** | 鉴权/换票失败门闸提供「绑定或更换绑定」清本机同步落点后重走绑定表单§5.15 | | **Z17 鉴权失败可换绑** | **宇恒已改完;智建无需** | 鉴权/换票失败门闸提供「绑定或更换绑定」清本机同步落点后重走绑定表单§5.15 |
| **Z18 模块操作换绑按钮** | **宇恒已改完;智建无需** | 「模块操作」表单底部独立**按钮**「换绑」非下拉选项点后强制清落点并弹绑定表单§5.16 | | **Z18 模块操作换绑按钮** | **宇恒已改完;智建无需** | 「模块操作」表单底部独立**按钮**「换绑」非下拉选项点后强制清落点并弹绑定表单§5.16 |
| **Z19 禁默认登记先绑定** | **宇恒已改完;智建无需** | 无绑定不得静默 agent/register登记失败引导绑定修 sendFrom 漏 components§5.17 | | **Z19 禁默认登记先绑定** | **宇恒已改完;智建无需** | 无绑定不得静默 agent/register登记失败引导绑定修 sendFrom 漏 components§5.17 |
| **Z20 失败即弹绑表单** | **宇恒已改完;智建无需** | 启动失败不只发文字,直接 force_rebind 弹绑定/换绑表单§5.18 |
| **Z21 绑定接口空体安全解析** | **宇恒已改完;智建无需** | `sync_bind_flow` 空响应/`Expecting value` 不再打断 prepare配合 Z19/Z20§5.19 |
| **仍关注** | 用法 | 通道断了靠智建自愈;表数据靠宇恒双向指纹 / 数据恢复;不是「再点启动」 | | **仍关注** | 用法 | 通道断了靠智建自愈;表数据靠宇恒双向指纹 / 数据恢复;不是「再点启动」 |
### 0.0 修改流程(冻结) ### 0.0 修改流程(冻结)
@@ -60,6 +62,8 @@
| **Z17** | **鉴权失败门闸绑定或更换绑定2026-08-06 · 宇恒已改完)**`pending_auth` 选项含「绑定或更换绑定」;点选后 `clear_local_sync_bind` + `force_rebind` 再弹绑定表单,避免因 agents/me 已绑而跳过。**智建无需改** | | **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`。鉴权门闸同步改为按钮而非下拉选项。**智建无需改** | | **Z18** | **模块操作页底部「换绑」按钮2026-08-06 · 宇恒已改完)**sendFrom 增加 `showRebind`/`rebindText``ask_module_action` 点按钮 → `FormRebindInterrupt``force_rebind`。鉴权门闸同步改为按钮而非下拉选项。**智建无需改** |
| **Z19** | **禁静默默认登记 + 修表单 components2026-08-06 · 宇恒已改完)**:未绑定先弹绑定;`build_sendfrom_form` 补回 `components`。**智建无需改** | | **Z19** | **禁静默默认登记 + 修表单 components2026-08-06 · 宇恒已改完)**:未绑定先弹绑定;`build_sendfrom_form` 补回 `components`。**智建无需改** |
| **Z20** | **启动失败直接弹绑定/换绑表单2026-08-06 · 宇恒已改完)**。**智建无需改** |
| **Z21** | **绑定 HTTP 空体安全 JSON2026-08-06 · 宇恒已改完)**`_safe_http_json` 替代裸 `r.json()`,避免 `Expecting value` 打断启动。**智建无需改** |
#### A. 宇恒 · 配合注意(非阻塞新开发) #### A. 宇恒 · 配合注意(非阻塞新开发)
@@ -866,6 +870,26 @@ POST /api/v1/agent/sync/channels/{id}/pull
3. sendFrom 表单必须带 `components` 3. sendFrom 表单必须带 `components`
### 5.18 【Z20 · 2026-08-06】启动失败直接弹绑定表单
**状态****宇恒已改完**。启动未完成时禁止只 notify 文字;立即 force_rebind 推绑定表单(底部换绑同源)。门闸异常时同样回落弹表。
另:`ty_host`≥1.2.33 禁止用 DONE 永久跳过 bootstrap旧日志「已自动登记过跳过」会导致选中会话再也不弹表。失败后 ACTIVE 清掉,可再拉起。
### 5.19 【Z21 · 2026-08-06】绑定接口空体安全解析
**状态****宇恒已改完****智建无需开发**。
**现象**
- 日志 `prepare_runtime failed: Expecting value: line 1 column 1` → 某绑定/鉴权 HTTP 返回空体,裸 `r.json()` 抛错,启动被打断;再选会话若被旧 DONE 跳过则只剩文字。
**诉求 / 改动**
1. `yxd/app_fastapi/sync_bind_flow.py``_safe_http_json`,空体/非 JSON 返回 `{}`,不抛。
2. 与 Z19/Z20 配合:解析失败不阻断 → 走「未绑定」→ 直接弹绑定表单。
## 6. 联系与附件 ## 6. 联系与附件
- **待改清单(优先看)**§0.2**A 宇恒配合 · B 智建运维**;开发项已清空);**改代码前先写本意见**§0.0);配合见 **§0.3** - **待改清单(优先看)**§0.2**A 宇恒配合 · B 智建运维**;开发项已清空);**改代码前先写本意见**§0.0);配合见 **§0.3**