Files
ai-customer-service/PRODUCTION_EXECUTION_PLAN.md
Your Name cf46b27610 fix: P0-1 RateLimiter并发写安全 + P0-2工单操作错误码区分 + P1 rows.Close修复
P0-1 (limits.go): Allow()方法改为全程使用写锁保护counters map读写,避免RLock写入时的data race
P0-2 (ticket_workflow.go+ticket_handler.go): Assign/Resolve/Close操作先查询ticket存在性和状态,返回明确的CS_TICKET_4001/CS_TKT_4002/CS_TICKET_4092/CS_TICKET_4093错误码,handler根据错误前缀路由HTTP状态码
P1-1 (ticket_store.go): 移除GetStats中3处手动rows.Close(),只保留defer Close()
2026-05-01 20:56:25 +08:00

223 lines
7.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.
# 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 在没有真实依赖、真实工单、真实权限边界验证的情况下放行。
- 任何阶段发现文档与实现漂移,立即回退到上一门禁。