fix: Z35 map Chinese display names to stable physical DB names
Keep Chinese on Binding for UI; Agents use user_{id} or db{hash}; sanitize on attach/heal/publish.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
| **Z23 表单推送失败禁止空等** | **宇恒已改完;智建无需** | `ask_fields_via_chat` 推送失败立即抛错;进行中再选中会话给出提示;对齐 ty_host≥1.2.35(§5.21) |
|
||||
| **Z24 已绑定勿 force 清落点** | **宇恒已改完;智建无需** | 启动自动引导绑定时禁止 `force_rebind` 清 CHANNEL;仅用户点「换绑」才清(§5.22) |
|
||||
| **Z34 / Z34b 换机恢复** | **宇恒半程 + 智建已落实** | 有手机静默恢复(Z34);无手机 `POST …/restore-by-host`(Z34b · §5.32) |
|
||||
| **Z35 库名非法中文** | **智建 · 意见已写清 · 生产须 pull** | DisplayName 当 PG 库名 → 400「婷婷管理员」;§5.33;**宇恒勿改** |
|
||||
| **Z35 库名非法中文** | **智建已落实(须生产 pull)** | 绑定/AttachSyncBind/heal 纠正;publish 拒非法名;§5.33;**宇恒勿改** |
|
||||
| **仍关注** | 用法 | 通道断了靠智建自愈;表数据靠宇恒双向指纹 / 数据恢复;不是「再点启动」 |
|
||||
|
||||
### 0.0 修改流程(冻结)
|
||||
@@ -1086,7 +1086,7 @@ POST /api/v1/agent/sync/channels/{id}/pull
|
||||
|
||||
### 5.33 【Z35 · 2026-08-07】绑定勿用中文 DisplayName 作 Postgres 库名
|
||||
|
||||
**状态**:**智建负责(须生产 pull)· 宇恒勿改代码**。
|
||||
**状态**:**智建已落实(须生产 `bash ./restart.sh --pull`)· 宇恒勿改代码**。
|
||||
联调复现仍指向生产 `aisite…`:`HTTP 400: ensure database: invalid database name: 婷婷管理员` —— **在生产未 pull 前会继续报错**,不是宇恒终端问题。
|
||||
|
||||
#### 现象
|
||||
@@ -1099,7 +1099,7 @@ POST /api/v1/agent/sync/channels/{id}/pull
|
||||
|
||||
#### 根因
|
||||
|
||||
1. 绑定路径 `bindUserHostSync` 把成员 **DisplayName(可中文)** 写入智能体 `database_name`。
|
||||
1. 绑定路径曾把成员 **DisplayName(可中文)** 写入智能体 `database_name`。
|
||||
2. 发布 Z8c:智能体带 `database_name` 时走 `database_per_app` → `EnsureDatabase` → Postgres `CREATE DATABASE`。
|
||||
3. 物理库名校验:`^[a-z][a-z0-9_]{1,47}$` —— 中文昵称非法 → 400。
|
||||
|
||||
@@ -1107,18 +1107,19 @@ POST /api/v1/agent/sync/channels/{id}/pull
|
||||
|
||||
| 方 | 做什么 | 不做什么 |
|
||||
|----|--------|----------|
|
||||
| **智建** | 改绑定落点库名规则 + publish 遇非法名纠正;**生产 `bash ./restart.sh --pull`** | — |
|
||||
| **智建** | 绑定落点库名规则 + AttachSyncBind/heal 纠正脏数据 + publish 遇非法名纠正;**生产 pull** | — |
|
||||
| **宇恒** | **不改**;意见对齐与复测 | 不在终端侧绕过/改写智建 `database_name` |
|
||||
|
||||
#### 智建改法(意见约定 · 实现要点)
|
||||
#### 智建改法(已落实)
|
||||
|
||||
1. **绑定**:`Agents.DatabaseName` / Binding 物理名用 `user_{userID}`(或同等合法 ASCII);`Binding.DisplayName` 仍用昵称「婷婷管理员」。
|
||||
2. **publish**:仅当 `ValidDBName(acc.DatabaseName)` 才用于 Ensure;否则回落 `AssignDatabaseName` / `SanitizeDBName`,并**回写纠正**智能体脏 `database_name`,避免反复 400。
|
||||
3. 已存在 app 的非法 `existing.DatabaseName` **不得**继续沿用。
|
||||
1. **中文可接受(展示层)**:昵称/库可读名可中文,写入 `Binding.database_name` / `display_name`。
|
||||
2. **物理层映射**:`Agents.database_name` 仅 ASCII —— 有用户 → `user_{id}`(改昵称不换库);无用户的中文标签 → 稳定哈希 `db`+16hex。
|
||||
3. **AttachSyncBind / heal / publish**:只对物理名做 EnsureDatabase;非法历史脏数据自动纠正。
|
||||
4. **换票 token**:不把中文 DisplayName 误当成物理库名下发。
|
||||
|
||||
#### 验收
|
||||
|
||||
1. 生产 pull 后,昵称含中文的已绑账号 → 新建/发布模块 **不再** 400。
|
||||
1. 生产 pull 后,昵称含中文的已绑账号 → 打开 SyncPage/agents/me(触发 heal)或再发布 → **不再** 400。
|
||||
2. 智能体 `database_name` 为合法 `a-z0-9_`;控制台展示名仍可为中文。
|
||||
3. 宇恒侧无需发版即可复测通过。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user