# 7.21 纯知识问答客户直回计划

日期：2026-07-13
目标日期：2026-07-21

## 当前设计

- 现有自动流程只写 Jira internal comment，由 L1 审核后回复客户。
- 客户直回代码已接入独立开关，默认关闭。
- 首批范围仅限稳定、无需实时证据和客户上下文的纯知识问答。

## 风险

- 单个成功 ticket 不能证明整个 scenario 可以安全直回。
- Jira 写入可能成功，但本地状态落库失败；盲目重试会产生重复回复。
- 诊断、操作、事故、疑似缺陷和客户升级必须继续由人工负责。

## 目标契约

- 增加独立的客户直回 Gate；scenario 名称不能单独成为放行依据。
- 以 `auto_oncall_customer_reply_deliveries` 作为投递状态的 canonical source of truth。
- Jira 写入前按 issue 和 trigger version 抢占唯一发送权，并保存正文 hash。
- 状态限定为 `prepared`、`written`、`failed`；已存在任何状态都不得再次发送。
- `OP non-Wetech` hard-stop 只拦截需要实时证据的诊断，不拦截无需 cluster 上下文的纯知识问答。
- 客户直回由独立开关控制；开关关闭时不得调用 validator 或写客户可见回复。
- 发送前由 auto-oncall 做确定性 Gate，再由独立 Codex validator 复核；任一步失败均转 internal comment 给 L1。

## 实施步骤

1. 实现独立开关、场景和标签 allowlist、确定性 Gate、独立 validator。
2. Jira 写入前持久化唯一发送权；失败时写 internal comment 给 L1。
3. 完成本地契约测试；保持 Staging 和 Prod 开关关闭。

## 验证清单

- 开关关闭时不调用 validator、不写客户可见回复。
- 只有纯知识问答、指定标签、无缺失信息、无风险、无需证据时才进入 validator。
- validator 拒绝、异常、Jira 写入失败或重复发送请求均转 internal comment。
- TypeScript 类型检查和完整测试通过。

## 不做事项

- 本计划本身不启用客户可见写入；实际启用是 7 月 21 日单独验证的切换动作。
- 不以 T 级别、`internal_only` 或宽泛 `scenarioClass` 作为自动授权。
- 不自动 transition、关闭 ticket 或执行生产操作。
- 不修改线上开关，不创建 PR，不部署。
