Files
ai-customer-service/PRODUCTION_EXECUTION_PLAN.md

223 lines
7.5 KiB
Markdown
Raw Permalink Normal View History

# AI-Customer-Service 生产上线执行方案
> 定位:本文件替代 demo/proto 导向的实施口径,作为小龙统筹 PM / TechLead / QA / Engineer 按生产上线标准推进的唯一执行基线。
## 1. 结论
当前 `ai-customer-service` **不具备生产上线条件**
已完成的只是一个可运行原型,不能作为“阶段完成”或“可灰度上线”的依据。后续工作必须按生产项目方式推进,满足:
- 文档与实现一致
- 数据与审计可持久化
- 权限、签名、幂等、隔离、防重放具备
- 工单闭环真实存在
- 外部依赖真实联通并可观测
- 灰度、回滚、SLO、告警、Runbook 完整
## 2. 小龙团队职责重排
### 2.1 小龙(统筹)
负责:
- 统一生产一期范围,禁止再使用 MVP-proto 口径作为完成标准
- 建立跨角色门禁,不允许“代码能跑”替代“产品可上线”
- 每阶段只允许在 PM/TechLead/QA 共同签字后进入下一阶段
- 对“文档说有、代码没有”“测试只测 happy path”直接打回
### 2.2 PM
必须补齐:
1. 《生产一期范围与门禁定义》
2. 《客服 SLA 与升级响应规范》
3. 《工单运营闭环 SOP》
4. 《灰度发布与回滚 Runbook》
5. 《客服运营后台需求说明》
6. 《身份核验与数据权限策略》
7. 《数据合规与留存策略》
8. 《商业化与价值追踪方案》
### 2.3 TechLead
必须补齐:
1. 生产数据模型与 migration 方案
2. PostgreSQL / Redis / 外部依赖 / 配置系统接入设计
3. Webhook 签名、防重放、幂等、审计 fail-closed 方案
4. Ticket / Session / Audit / KB 真实架构
5. IntegrationPlugin / 集成运行模式设计
6. metrics / tracing / logging / health readiness 设计
7. 降级、熔断、回滚、灰度技术方案
### 2.4 QA
必须补齐:
1. 文档-实现一致性检查清单
2. 威胁建模到测试映射清单
3. AC/失败路径/安全/性能/灾备测试矩阵
4. 灰度与回滚演练检查表
5. 实施漂移检测点
6. 上线阻断条件清单
### 2.5 Engineer
必须按文档和门禁实现,不得自行降级为:
- 内存版替代持久化
- 文本文案替代真实工单
- 占位 OpenAPI 替代真实契约
- 永远 UP 的 health 替代 readiness
## 3. 当前 P0 阻塞项
### P0-1 范围口径错误
- 当前 `IMPLEMENTATION_PLAN.md` 仍使用 `MVP-proto` 口径。
- 必须废弃其“已完成即可进入下一阶段”的含义。
### P0-2 持久化与数据模型缺失
- Session / Audit / Knowledge 仍为内存实现。
- 无 PostgreSQL schema / migration / rollback。
### P0-3 Webhook 安全链路缺失
- 无签名校验、无防重放、无幂等、无限流。
### P0-4 工单闭环不存在
- 当前转人工只返回文案,没有真实 ticket 创建、分配、处理、关闭。
### P0-5 身份核验与只读业务查询缺失
- 无用户绑定、无 quota/token/error logs 真实查询。
### P0-6 权限与隔离缺失
- 无鉴权、无 RBAC、无后台权限模型、无跨用户隔离验证。
### P0-7 审计不可靠
- 审计不持久化,且当前是 fail-open。
### P0-8 可观测性与健康检查失真
- 无 metrics/tracing/structured logging。
- readiness/health 不检查依赖状态。
### P0-9 灰度/回滚不可执行
- 文档有灰度与回滚要求,但代码与部署层无对应能力。
### P0-10 契约失真
- OpenAPI / INTERFACE / router 实现明显不一致。
## 4. 分阶段执行计划
### Phase 0收口生产一期基线必须先完成
交付物:
- `PRODUCTION_EXECUTION_PLAN.md`(本文件)
- 重写 `IMPLEMENTATION_PLAN.md`,去掉 proto 口径
- PM 产出生产一期范围、门禁、SLA、工单运营、灰度回滚、合规文档清单
- QA 产出上线阻断清单
退出条件:
- 不再使用“最小原型已完成”作为阶段结论
- PM / TechLead / QA 对 P0 范围达成一致
### Phase 1生产底座
交付物:
- PostgreSQL schema + migration + rollback
- Redis 方案
- 配置系统YAML + env
- 结构化日志、metrics、trace id
- health/live/ready 真实区分
- graceful shutdown
退出条件:
- 服务重启不丢核心状态
- 多实例可运行
- readiness 能真实阻断坏实例接流量
### Phase 2入口安全与契约
交付物:
- webhook 签名校验
- 防重放
- 幂等表与重复消息处理语义
- body limit / schema validation
- 完整 OpenAPI
- 统一错误码
退出条件:
- 外部恶意/重复/畸形请求不能造成假成功
- QA 契约测试通过
### Phase 3核心业务闭环
交付物:
- Session / Message / Ticket / Audit 持久化
- 真实工单状态机
- 转人工创建/分配/关闭链路
- 身份核验与账户绑定
- quota/token/error logs 只读查询
- 审计 fail-closed
退出条件:
- 查询、转人工、审计、人工处理形成真实闭环
- 不再存在“文案假装已转人工”
### Phase 4运营后台与知识库
交付物:
- 工单后台 API
- 知识库 CRUD / 发布 / 审核 / 引用统计
- FAQ 命中与未命中回流
- 运营指标看板
退出条件:
- 客服与运营团队可实际接管系统
### Phase 5依赖联调、灰度、回滚
交付物:
- supply-api / token-runtime / gateway / NewAPI/Sub2API 联调结果
- 灰度策略开关
- 回滚脚本与 Runbook
- 压测/安全/灾备报告
- 发布检查单
退出条件:
- QA 签字通过
- 小龙批准进入灰度
## 5. 生产级门禁
### Gate A允许开始实现前
- [ ] 生产一期范围清晰,不含 proto/demo 表述
- [ ] PM 文档补齐到可执行程度
- [ ] QA 阻断项建立完成
- [ ] TechLead 生产架构方案冻结
### Gate B允许联调前
- [ ] 持久化、签名、防重放、幂等、鉴权、审计已具备
- [ ] OpenAPI 与实现一致
- [ ] 真实健康检查可工作
- [ ] 关键失败路径自动化测试存在
- [x] **Phase 1 真实范围已定义**6 个接口P0-A~C + P1-D~E+ 错误码统一
- [x] **16+ 漂移接口已明确分类**GET tickets/{id} / POST sessions/{id}/handoff / POST sessions/{id}/feedback / GET tickets/stats → Phase 1KB 全系 / admin 全系 / 会话查询类 → Phase 2
- [ ] **GET /tickets/{id}** 已实现并测试通过
- [ ] **POST /sessions/{id}/handoff** 已实现并测试通过(手动转人工)
- [ ] **POST /sessions/{id}/feedback** 已实现并测试通过
- [ ] **GET /tickets/stats** 已实现并测试通过
- [ ] **错误码全局统一**:无 hardcode 散落,统一使用 `internal/domain/error/`
### Gate C允许灰度前
- [ ] 工单闭环真实可用
- [ ] 身份核验与只读查询真实可用
- [ ] 监控、告警、SLO 仪表板上线
- [ ] 灰度/回滚 Runbook 完成并演练
- [ ] 压测/安全/灾备测试通过
### Gate D允许全量前
- [ ] 灰度期间投诉率、错误率、转人工率、SLA 达标
- [ ] 无 P0/P1 未关闭缺陷
- [ ] PM/TechLead/QA/小龙联合签字
## 6. 当前立即执行项(本轮)
1. 废弃 demo 口径:重写 `IMPLEMENTATION_PLAN.md`
2. 以生产底座为先,优先落地:
- PostgreSQL migration
- 持久化 Session/Audit/Ticket 基础模型
- 配置系统
- readiness/health 改造
- HTTP 超时/请求体限制/优雅停机/结构化日志基础设施
3. 并行补齐 PM/QA 文档,不允许只有代码没有上线规则
## 7. 纪律要求
- 不允许再把“代码能运行”汇报成“项目可上线”。
- 不允许拿 mock/内存版冒充生产闭环完成。
- 不允许 QA 在没有真实依赖、真实工单、真实权限边界验证的情况下放行。
- 任何阶段发现文档与实现漂移,立即回退到上一门禁。