diff --git a/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md b/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md index 053b095..18c32b8 100644 --- a/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md +++ b/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md @@ -13,6 +13,13 @@ - [ ] 已确认统一入口 `gateway` 可访问。 - [ ] 已确认前端 API 地址使用同域 `/api`。 - [ ] 已确认内网穿透指向 `gateway:80`。 +- [ ] 已使用 `docker-compose.prod.yml`,未使用开发编排上线。 +- [ ] 已关闭 `DEBUG`、短信 mock、模型 mock 和飞书 mock。 +- [ ] 已配置敏感配置加密密钥,后台接口仅显示密钥掩码。 +- [ ] 已验证短信发送、验证码和管理员登录限流。 +- [ ] 已验证每日问答额度跨自然日自动重置。 +- [ ] 已验证并发排队、超时、取消和队列满提示。 +- [ ] 已验证退出登录后的 Token 在多 worker 下立即失效。 ## 发布中 diff --git a/ai_knowledge_base_v2/development_records/2026-07-10-production-readiness-remediation.md b/ai_knowledge_base_v2/development_records/2026-07-10-production-readiness-remediation.md new file mode 100644 index 0000000..b9fc9eb --- /dev/null +++ b/ai_knowledge_base_v2/development_records/2026-07-10-production-readiness-remediation.md @@ -0,0 +1,31 @@ +# 生产上线前风险修复计划与实施记录 + +## 背景 + +项目准备正式部署前,对用户端、管理后台、后端服务和容器编排进行上线审查。审查发现并发排队、每日额度、安全配置、登录防护、生产部署、自动化验证及代码维护性仍存在风险。本次按“先修复阻断上线的问题,再补齐验证与维护性”的顺序一次性收口。 + +## 修复范围 + +1. 修复聊天请求进入排队后引用未定义变量、流式响应中断的问题,并覆盖排队、超时、拒绝和释放场景。 +2. 为每日问答额度增加按自然日自动重置机制,避免额度累计后永久不可用,并保证并发扣减一致性。 +3. 为短信发送、短信验证码校验、图形验证码校验和管理员登录增加 Redis 限流与失败锁定;Redis 不可用时采用进程内降级保护。 +4. 对模型 API Key、飞书 AppSecret、阿里云 AccessKey Secret 等敏感配置进行应用层加密存储;读取接口只返回掩码,更新时留空不覆盖已有密钥。 +5. 将用户和管理员退出后的 Token 撤销状态迁移到 Redis,并按 Token 剩余有效期保存;Redis 不可用时保留进程内降级机制。 +6. 新增生产镜像与生产编排:前端使用 Nginx 静态服务,后端关闭 debug 和 mock,数据库与 Redis 不暴露公网端口,生产密钥必须显式配置。 +7. 修复自动验证脚本,补充后端关键单元测试、前端构建、数据库迁移和 Docker Compose 配置检查,并锁定依赖版本。 +8. 拆分管理后台超大单文件和后端高复杂度模块的职责边界;优先提取系统设置定义、登录视图和共享安全组件,保持现有行为不变。 + +## 上线验收条件 + +- 排队状态能够正常返回位置提示,排队完成、超时、取消和异常均释放占用。 +- 用户跨自然日首次提问时自动清零昨日用量,同日并发请求不能绕过额度。 +- 短信和登录接口具备可配置限流,错误次数达到阈值后临时锁定。 +- 管理后台和接口响应中不出现任何完整密钥;数据库中的新保存密钥不是明文。 +- 多 worker 下退出登录立即生效,Token 撤销状态在服务重启后仍可由 Redis 保留。 +- `docker-compose.prod.yml` 不包含开发弱口令、mock、debug、Vite 开发服务器和数据库公网端口。 +- 后端测试、迁移检查、用户端构建、管理后台构建和 Compose 检查全部通过。 +- 拆分后页面功能和 API 行为保持一致,核心文件职责更清晰。 + +## 实施记录 + +实施过程中按批次记录对应提交、验证结果和必要决策。每批代码修改均单独提交并推送。