From d1c10f3281c9edb63964cac79a0f6cf39b414ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Mon, 12 Oct 2026 14:52:19 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20spec=20=E5=AE=9A=E7=A8=BF=E8=A1=A5?= =?UTF-8?q?=E4=B8=81=EF=BC=88ATTACH=20=E6=94=B9=E9=80=90=E5=BA=93=E5=90=88?= =?UTF-8?q?=E5=B9=B6/gitignore/=E5=AF=BC=E5=85=A5=E5=B9=82=E7=AD=89/slug?= =?UTF-8?q?=20=E4=B8=8D=E5=8F=AF=E5=8F=98/last-write-wins/=E5=B5=8C?= =?UTF-8?q?=E5=85=A5=E4=BB=A3=E7=A0=81=E5=9D=97/=E5=87=BA=E5=8E=82?= =?UTF-8?q?=E8=AF=AD=E4=B9=89/=E6=81=A2=E5=A4=8D=E6=BC=94=E7=BB=83/mem=5Fl?= =?UTF-8?q?imit/md=20sanitize/=E9=83=A8=E7=BD=B2=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E7=BB=A7=E6=89=BF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- ...2026-10-12-unified-kefu-platform-design.md | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/docs/superpowers/specs/2026-10-12-unified-kefu-platform-design.md b/docs/superpowers/specs/2026-10-12-unified-kefu-platform-design.md index 38bf02b..372607e 100644 --- a/docs/superpowers/specs/2026-10-12-unified-kefu-platform-design.md +++ b/docs/superpowers/specs/2026-10-12-unified-kefu-platform-design.md @@ -102,7 +102,7 @@ platform_settings(key, value) -- 平台级默认:集团 AI 凭据、默认 S ### 5.3 生效机制(热加载) -进程内 TenantRegistry:`tenant_id → { config, db_engine, session_factory, manager }`。后台保存 → 校验 → 写 platform.db → **原子替换 Registry 条目**。进行中的会话下一条消息即用新配置(提示词逐轮拼装,天然支持)。不重启、无分发协议——单进程架构红利。 +进程内 TenantRegistry:`tenant_id → { config, db_engine, session_factory, manager }`。后台保存 → 校验 → 写 platform.db → **原子替换 Registry 条目**。进行中的会话下一条消息即用新配置(提示词逐轮拼装,天然支持)。不重启、无分发协议——单进程架构红利。并发编辑策略:同一租户被两人同时保存时后保存者覆盖(last-write-wins)——单人维护场景接受,不做乐观锁。 ### 5.4 保存校验 + 试金石(租户可编辑正则的安全网) @@ -120,7 +120,8 @@ platform_settings(key, value) -- 平台级默认:集团 AI 凭据、默认 S - **话术单一事实源(R1)**:迂回话术池只存于墙配置;ai_service 组装 system prompt 时以模板变量(`$DEFLECTION_POOL` 等)注入提示词。改一处,提示词与墙同时变——消除"提示词教的说法"与"墙的执法标准"分叉。 - **配置演进(E4)**:Registry 加载 = 快照深合并出厂默认值,引擎升级新增字段不炸旧租户。 - **external_key 前缀全局唯一(E1)**:数据库约束 + 保存校验,防 CRM 线索空间串号。 -- **出厂档案**:`seed_profiles/auto/`、`seed_profiles/jiancai/`(提示词 md + 词表 json + 品牌 json),由提取脚本从两个老项目生成;新租户创建时选出厂档案或空白。 +- **tenant slug 创建后不可变**:客户端存储 key 全部以 slug 命名,改动 slug = 重置所有客户页面的记忆(邀请卡状态、会话令牌)。 +- **出厂档案**:`seed_profiles/auto/`、`seed_profiles/jiancai/`(提示词 md + 词表 json + 品牌 json),由提取脚本从两个老项目生成;新租户创建时选出厂档案或空白。两个概念分清:**重置出厂** = 代码库当前模板(随平台升级演进);**租户创建** = 当时选定档案的快照(不随升级变化)。 ### 5.7 内容与文件上限 @@ -213,6 +214,8 @@ all-kefu/ `platform/` 与 `engine/` 是隔离边界:引擎不感知平台存在,只认 TenantRuntime——将来某租户需独立部署时 engine 包可整体拎走。 +运行期产物**绝不进 git**(首次提交前建好 .gitignore):`tenants/*.db`、`platform.db`(含密钥,进了 git 历史就洗不干净)、`data/uploads/`、`admin/node_modules/`、`admin/dist/`。 + ## 7. 统一管理后台(art-design-pro) ### 7.1 工程与构建 @@ -232,7 +235,7 @@ all-kefu/ | 页面 | 超管 | 租户管理员 | |---|---|---| -| 仪表盘 | 租户卡片墙(今日会话/线索/推送成功率,ATTACH 跨库聚合)+ 平台总览 | 只看自己指标 | +| 仪表盘 | 租户卡片墙(今日会话/线索/推送成功率,**逐库查询 + 应用层合并**——不用 SQLite ATTACH,其默认上限 10 个附加库,租户一多就炸)+ 平台总览 | 只看自己指标 | | 租户管理 | 创建向导(名称→域名→选出厂档案 auto/jiancai/空白→生成租户管理员)、停用/启用、域名绑定 | ✗ | | 会话与线索 | 顶部租户切换器,看所有租户会话/画像/推送日志 | 只看自己的 | | 配置中心 | 编辑任何租户全部配置组 | 编辑自己全部配置组(全开) | @@ -241,8 +244,8 @@ all-kefu/ ### 7.4 配置编辑形态 -- 品牌:表单(颜色选择器、头像上传、文案)+ 挂件实时预览。 -- 提示词:markdown 编辑器(语法高亮),侧栏显示 `$DEFLECTION_POOL` 等注入变量当前值,保存必须留 comment。 +- 品牌:表单(颜色选择器、头像上传、文案)+ 挂件实时预览 + **嵌入代码复制块**(显示本租户 `