Files
ai-kefu-admin/seed_profiles/README.md
T
浅念 1824bb1590 test: PromptProvider 审查修复(组装缝断言/占位符约定文档与glob守护/边界注记)
- 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>
2026-10-12 20:16:40 +08:00

31 lines
2.5 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.
# 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` 的品牌值应与其保持一致;它本身不被运行时读取。