docs: spec 评审意见落档(brand 响应携带 tenant slug、测试计数勘误、Redis 死配置显式丢弃、admin 域名占位注记)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-12 14:28:12 +08:00
parent e24b2109ac
commit 026eb056ce
@@ -147,7 +147,7 @@ class TenantRegistry:
| 文件 | 现状 | 改造后 |
|---|---|---|
| config.py | 全局 Settings 读 .env | 拆 ProcessSettings(.env:平台库路径/端口/超管初始密码)+ TenantConfig(platform.db) |
| config.py | 全局 Settings 读 .env | 拆 ProcessSettings(.env:平台库路径/端口/超管初始密码)+ TenantConfig(platform.db);顺带丢弃 Redis 死配置(REDIS_URL/REDIS_PASSWORD) |
| ai_service.py | import 时读 4 提示词 | PromptProvider 挂 TenantRuntime;组装 = system.md + company_facts.md + `$DEFLECTION_POOL` 注入 + 当轮 context reminder |
| conversation.py(约 1250 行) | 3 组模块级正则 + 逐字话术 | 正则/话术从 config.wall 编译;Manager 每租户实例化;**只做依赖注入,不重写结构** |
| boundary_filter.py | 正则话术焊死 | 纯函数化:接收已编译词表,机制与数据分离 |
@@ -171,8 +171,8 @@ class TenantRegistry:
### 6.3 前端
1. widget.js:启动时 `fetch /api/public/brand`(Host 已识别租户,免鉴权返回品牌 JSON)→ 与 data-* 合并(data-* 优先);失败时 data-*/中性默认兜底;no-cache。
2. 客户端 key 全部租户化:`cc-widget-host-<tenant>`、`widget_invite_dismissed_<tenant>_<path>`、chat 页 localStorage 会话 key 同理——同页双挂件根治。
1. widget.js:启动时 `fetch /api/public/brand`(Host 已识别租户,免鉴权返回品牌 JSON,**响应携带 tenant slug**)→ 与 data-* 合并(data-* 优先);失败时 data-*/中性默认兜底;no-cache。
2. 客户端 key 全部租户化(`<tenant>` 取 brand 响应里的 tenant slug):`cc-widget-host-<tenant>`、`widget_invite_dismissed_<tenant>_<path>`、chat 页 localStorage 会话 key 同理——同页双挂件根治。
3. widget.js 与 chat.html 保持零构建原生 JS(嵌入官网资产必须轻量零依赖);主题派生单元机制不变,默认值来自品牌配置。
### 6.4 目标目录结构
@@ -248,7 +248,7 @@ all-kefu/
```
chat.agent.hnxinyouhe.com ─┐
chat2.agent.hnxinyouhe.com ─┼→ 1Panel 各站点反代 → 127.0.0.1:8018 → all-kefu 容器
admin.xxx.com(新) ─┘
admin.xxx.com(新,具体值部署前由需求方确定)─┘
```
- 一个容器一个 upstream;compose 固定 `name: all-kefu`(互删根因根治——只剩一个 compose 项目);WS 升级头单套(426 教训);`/static/widget.js` no-cache(缓存教训);`--workers 1`。
@@ -258,7 +258,7 @@ admin.xxx.com(新) ─┘
## 10. 测试策略
1. **机制测试全保留**:jc 的 230 项 + 上游独有测试,移植到统一 conftest——租户夹具(临时 platform.db + auto/jc 两个种子租户 + 各自租户库),断言基本不动;LLM 全 mock 原则不变。
1. **机制测试全保留**:jc 的全部机制测试(约 320 个用例,实测计数;jc 文档旧称 230 项)+ 上游独有测试,移植到统一 conftest——租户夹具(临时 platform.db + auto/jc 两个种子租户 + 各自租户库),断言基本不动;LLM 全 mock 原则不变。
2. **多租户专项(改造的回归安全网)**:Host 路由(A 域名进 A、未知 Host 404);跨租户数据隔离(A 的 admin/API 摸不到 B 数据);配置热切换(保存新提示词→下一条消息生效;改词表→墙行为即时变);前缀唯一约束;快照深合并默认值;试金石判定;widget 客户端 key 租户前缀(静态断言);停用租户行为。
3. **真实 LLM 验收**:真实智谱 Key + scripts/mock_uniservice.py 联调流程照旧(沿用 test-checklist 体系)。