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

4.7 KiB
Raw Blame History

接续包 · 共享模型按用户授权 + 品牌改名 + 跨机落地修复(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. 验证回放(想自己复核时照跑)

# 红/绿两腿(会停启 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')。