Files
ctms/docs/guides/release-checklist.md
T
2026-03-31 09:34:29 +08:00

81 lines
3.3 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.
# 立项配置发布清单
状态: `active`
适用范围: `setup-config`
最后更新: `2026-03-30`
## 1. 构建与迁移
- [ ] `docker compose run --rm backend-init`
- [ ] `cd backend && python3 -m compileall app scripts`
- [ ] `cd frontend && npm run build`
## 1.1 容器构建校验
- [ ] `docker compose config` 渲染成功
- [ ] `docker compose build backend frontend` 成功
- [ ] `docker compose run --rm backend-init` 成功
## 2. 接口与权限回归
- [ ] ADMIN 账号可 `GET/PUT/PUBLISH/IMPORT-EXCEL/EXPORT-EXCEL`
- [ ] PM 账号可 `GET/PUT/PUBLISH/IMPORT-EXCEL/EXPORT-EXCEL`
- [ ] CRA 账号可 `GET/EXPORT-EXCEL``PUT/PUBLISH/IMPORT-EXCEL` 返回 `403`
- [ ] 非项目成员访问返回 `403`
## 3. 并发冲突回归
- [ ] 双开两个窗口同项目配置
- [ ] A 保存后,B 再保存触发 `409`
- [ ] 前端显示冲突对比弹窗(可读 diff + JSON
- [ ] 选择“使用服务器版本”后版本同步
- [ ] 选择“用本地草稿覆盖”后保存成功且版本递增
- [ ] `409` 响应结构包含 `detail.code=SETUP_CONFIG_VERSION_CONFLICT`
## 3.1 业务校验回归(422
- [ ] `enrollmentPlan.startDate > endDate` 返回 `422`
- [ ] 非本项目 `siteId` 返回 `422`
- [ ] `centerConfirm` 状态为“已确认”但无 `confirmDate` 返回 `422`
- [ ] `422` 响应包含 `detail.errors[].field``detail.errors[].message`
## 4. 发布快照回归
- [ ] 草稿保存后 `publish_status=DRAFT`
- [ ] 发布后 `publish_status=PUBLISHED`
- [ ] 发布后可切换“已发布快照”并只读
- [ ] 再修改草稿后状态回到 `DRAFT`
## 5. 导入导出回归
- [ ] 导出 Excel 文件可打开且结构完整
- [ ] 导入有效 Excel 成功,页面数据刷新
- [ ] 导入非法 Excel 给出错误提示
- [ ] 导入冲突时触发 `409` 提示并刷新版本
## 6. 锁定与审计回归
- [ ] 项目锁定后 `PUT/PUBLISH/IMPORT-EXCEL` 返回 `403`
- [ ] 页面进入只读态,编辑按钮不可用
- [ ] 审计日志可按对象类型筛选 `立项配置`
- [ ] 审计事件包含:
- [ ] `CREATE_SETUP_CONFIG`
- [ ] `UPDATE_SETUP_CONFIG`
- [ ] `PUBLISH_SETUP_CONFIG`
- [ ] `IMPORT_SETUP_CONFIG_EXCEL`
## 7. 监控埋点回归
- [ ] 访问 `GET /health/setup-config-stats` 可返回 JSON
- [ ] `by_endpoint` 中可看到 `setup-config` 各接口 `2xx/4xx/5xx` 计数
- [ ] 人为制造一次冲突或锁定写入后,`4xx` 计数增加
## 8. 冒烟脚本
- [ ] `cd backend && docker compose exec -T backend python scripts/smoke_setup_config.py`
- [ ] 使用 `BASE_URL/EMAIL/PASSWORD/STUDY_ID` 环境变量执行一次(覆盖指定项目)
- [ ] `BASE_URL=http://localhost:8888 EMAIL=... PASSWORD=... STUDY_ID=... bash docs/setup-config-curl-smoke.sh`
- [ ] 导入并执行 Postman 集合 `docs/postman/setup-config.postman_collection.json`
## 9. 发布前确认
- [ ] 文档已更新:`docs/guides/setup-config-api.md`
- [ ] 本清单已全量勾选
- [ ] 发布说明已包含新增接口与权限规则
## 10. Enterprise UI 发布门禁
- [ ] `cd frontend && npm run ui:contract`
- [ ] `cd frontend && npm run type-check`
- [ ] `cd frontend && npm run build`
- [ ] `docs/audits/enterprise-ui-acceptance-checklist.md` 状态为 `PASS` 且记录审阅日期
- [ ] 管理层演示路径已走查:`/project/overview -> /project/milestones -> /risk-issues/sae -> /fees/contracts -> /file-versions -> /admin/projects/:id`