1824bb1590
- I-1: test_company_facts 捕获完整 prompt 的用例补话术池注入断言
("- EN:"/"- ZH:" 分组行在场)——守 AIService 组装缝,防 Task 9
重接提示词线时静默丢池
- I-2: seed_profiles/README.md 落档 $DEFLECTION_POOL 占位符约定
(缺失 = 话术池静默不注入);test_prompt_provider 占位符防漂移改
glob 遍历 seed_profiles/*/prompts/system.md,第三租户自动纳管
(空 glob 显性兜底,防假守护)
- Minor-1 注记: _format_deflection_pool docstring 记已知边界——条目
含引号/换行暂不转义,Phase 2 编辑器批次处理
- Minor-5: test_provider_loads_from_tenant_dir 删恒真 or 侧,改单一
明确断言;registry 加载期显性失败清单补 prompts 读取失败
(FileNotFoundError 说明);conftest build_jiancai_runtime 注明
data_dir 仅占位、从不 ensure_ready
Co-Authored-By: Claude Code <noreply@anthropic.com>
31 lines
2.5 KiB
Markdown
31 lines
2.5 KiB
Markdown
# seed_profiles —— 出厂租户档案
|
||
|
||
每个子目录是一个租户的出厂档案(Phase 1 的配置来源;Phase 2 换 platform.db 后作为"新建租户"的模板与"重置出厂"的基准)。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
seed_profiles/<slug>/
|
||
├── tenant.json # 站点 + 品牌 + 引擎配置(本文件是租户装配入口)
|
||
├── wall.json # 安全墙词表/话术(Task 4 由老项目 AST 提取生成)
|
||
├── prompts/ # 提示词 4 件套 md(Task 6 拷入)
|
||
│ ├── system.md / company_facts.md / extractor.md / evaluator.md
|
||
└── brand_values.json # 品牌值机器提取草稿(人工归一参考,运行时不读)
|
||
```
|
||
|
||
## tenant.json 要点
|
||
|
||
- **slug 不可变**:客户端存储 key(邀请卡状态、会话令牌)全部以 slug 命名,改动 = 重置所有客户页面记忆;site slug 同理。`slug` 字段必须与目录名一致(加载期校验)。
|
||
- **站点模型**:域名挂在站点上,站点属于租户。每租户**至少一个站点**。站点两种接入方式(jiancai 的两个站点即示范):
|
||
- **绑域名**:`main` 站 `"domains": ["chat2.agent.hnxinyouhe.com", ...]`,按请求 Host 自动识别(大小写/端口会先归一);
|
||
- **空域名 + `data-site`**:`es` 站 `"domains": []`,与 main 共用挂件域名,嵌入代码以 `data-site="es"` 参数选择站点。
|
||
- **`site.brand` 是覆盖层**:缺省项继承 `config.brand`(深合并),只覆盖门面(标题/欢迎语等);AI 脑子与线索管道留在租户级。
|
||
- **wall 不写在 tenant.json 里**:加载器会把同目录 `wall.json` **隐式并入** `config["wall"]`(原始词表,供后台编辑/回滚),编译产物挂 runtime 的 `compiled_wall` 供引擎消费——词表数据源只有 wall.json 一份。
|
||
- **`config` 内不含 prompts**:提示词由目录内 `prompts/*.md` 提供(Task 6);**system.md 必须包含 `$DEFLECTION_POOL` 占位符**——组装时注入 wall.json 的 deflections 话术池(缺失 = 话术池静默不注入;test_prompt_provider 以 glob 遍历守护全部租户)。
|
||
- 加载期显性失败(不流入运行期):无效 JSON、slug 与目录名不一致、零站点、wall 编译错误、域名跨站点/跨租户重复绑定。
|
||
|
||
## 纪律
|
||
|
||
- 改动本目录后必须跑全量 pytest(出厂配置影响面大,见 CLAUDE.md)。
|
||
- `brand_values.json` 是 Task 4 的机器提取草稿(`conflict=true` 处需人工归一),`tenant.json` 的品牌值应与其保持一致;它本身不被运行时读取。
|