Files
dsh_ai1net_server/归档/交接单-20260924-归档/接续包_共享模型授权与品牌改名_20260919.md
T
admin 7bd1151c67 chore(工作区): 归档交接单 27 件 + 新增 CODEBUDDY §9 工作区卫生
交接单按归属约定(正文落文档库、工作区只放指针)归档至
归档/交接单-20260924-归档/,含逐件判定 README:
- 16 件已被文档库正式版取代(T09–T21 + 覆盖网络-24/25/26)
- 4 件主题已被覆盖网络线入口汇总
- 7 件历史接续包/规划件

CODEBUDDY §9:收口清本棒 tmp、tmp 保留期 7 天、禁「待清理」中间态、
工作区入库只放文档与文件、不保留脚本副本、>60 KB 单文件须逐个判。
2026-09-24 07:58:57 +08:00

65 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 接续包 · 共享模型按用户授权 + 品牌改名 + 跨机落地修复(2026-09-19)
> **本包是唯一细节来源**。接续会话开工第一步:`state.py` → 重算本文件 md5 → 与 automation prompt 里的值比对,
> **不符即停并报告「口径已更新,需重新接续」**。
> ⚠️ **本棒已全部完成并入库**,无在途任务;下一棒默认动作 = **核实完成状态后报告结束**(⛔ 勿自行开工)。
## 1. 目标(全部达成)
| # | 用户需求(原话) | 状态 |
|---|---|---|
| ① | 「admin设置的共享模型,需要admin在用户列表中开启(新增选项,默认关闭),用户才能在会话中使用(以及在设置的模型设置页面展示)」 | ✅ 上线并两腿实测 |
| ② | 「把页面上的能力枢纽 改为能力网络」 | ✅ 上线并实测 |
| ③ | 「处理完毕后提交到仓库」 | ✅ 已提交并双推 |
## 2. 已完成(可核对的落点)
| 项 | 值 |
|---|---|
| commit | **`9c2e797`**(主提交 `c2b7c5e`,30 文件;补提交 `9c2e797`,manifest) |
| 双推 | 原仓 `work.alotbuy.com:maogeigei/dsh_shenxian.git` + CNB `cnb.cool/maogeigei/dsh-shenxian.git`;**三方裸 sha 全等** |
| 档案 | `dsh-server-docs/04-调整方案/138-平台共享模型-管理员逐用户授权.md`、`139-品牌中文名改为能力网络.md`;`INDEX.md` 已登记;`137` 顶部加"后续"指针(不改历史) |
| 迁移 | DB **v11** `users.shared_model_granted`(DEFAULT 0)已应用 |
| 部署 | 47 `/opt/dshs/lib` 51 个产物、106 `/opt/dshs-cluster/lib` 12 个(对账 0 不一致);插件 `business-plugins` **0.3.24** 已铺 admin+guest |
| 回滚点 | `/opt/dsh/backups/seq138b-20260919-125345/{opt/dshs/lib,opt/dshs-cluster/lib}`(`lib/` 是 gitignore ⇒ 只能这样物化;另 `seq138-web-20260919-125345/` = 4 个前端文件) |
| 零回归 | `npm test` 226 / 225 pass / 0 fail / 1 skip;`verify-static`、`verify-inject`、`verify-platform-admin-section`、`verify-models-render` 全绿 |
| 镜像 | `/opt/dsh/docs` 的 INDEX / 138 / 139 / 137 / docs-manifest 已同步,md5 一致 |
## 3. 在途 / 未完成
- **无代码在途**。工作区仅剩三个**历史**临时目录(`_tmp_seq24/`、`_tmp_seq40/`、`_中间产物_待清理/`,本次未动)。
- 全局执行锁:**收口时已释放**(若 `state.py` 显示被占,是本棒之后的会话,⛔ 与本棒无关)。
## 4. 🔴 关键决定(后续别推翻)
1. **门禁与用户偏好分两列**:`shared_model_granted`(admin,默认 0)∧ `shared_model_enabled`(用户,默认 1)
—— **生效 = 两者都为真**。⛔ 别合并成一列(用户就能给自己授权)。
2. **存量用户默认全部"未授权"**(v11 的 DEFAULT 0 回填)。**guest 已被显式开启**(恢复其原有可用性);
若你要改,在 admin 用户列表点一下即可。
3. **平台侧写用户 home 必须走 `UserFs`**(`readHomeFile` / `writeHomeFile`,文件名白名单
`settings.yaml` / `.credentials.yaml`)—— ⛔ 别再用 `join(home_dir, …)` + 本机 fs:
用户卷在 worker 上时那是**静默空操作**(读回空串、不报错)。
4. **门禁类判据一律失败关闭**;但"一次性交接认领"用的 `sharedDeepseekKey()` **刻意不判门禁**
(判在 `resolveApiKey` 的调用点)—— 否则被撤销授权的用户认不出自己那行、删不掉。
5. `pg.ts` **有自己的一份 `USER_COLS`**(与 `repo.ts` 两份)⇒ 加列必须**两处都改**。
## 5. 下一步(都属"需要你"或"可选增量",⛔ 无必须开工项)
1. **UI 目视(只能你做)**:`https://ai1net.com/admin.html` 用户列表的新「共享模型」列;
用户实例「设置 → 模型设置」在未授权时那一块不出现。
2. **可选增量**:`shared_model_enabled` 目前的用户侧开关**未加门禁**(有意,见档案 138 §七-4);
若要"授权后用户不得自关",需另立需求。
3. **在册旧账(与本次无关)**:D8 云安全组(唯一在册红,待你在云控制台落地)、档案 136 控制面并集(已立项未落地)。
## 6. 验证回放(想自己复核时照跑)
```bash
# 红/绿两腿(会停启 guest 实例,⛔ 别在生产高峰跑)
sh <本工作区>/_tmp_seq138/seq138-leg.sh false # 期望:106 上 guest 的 .credentials.yaml refs 变空
sh <本工作区>/_tmp_seq138/seq138-leg.sh true # 期望:DEEPSEEK_API_KEY 回来
# 语言偏好跨机
# POST /api/me/locale {locale:'en'} ⇒ 106 的 home/settings.yaml 出现 locale.preference
```
⚠️ 验证脚本用 `mksess.cjs` 造临时会话(TTL 10 分钟),**必须一次跑完并清理**
(`DELETE FROM sessions WHERE user_agent='poc-curl2'`)。