72 lines
3.1 KiB
Markdown
72 lines
3.1 KiB
Markdown
# Release Checklist(立项配置)
|
||
|
||
## 1. 构建与迁移
|
||
- [ ] `docker compose run --rm backend-init`
|
||
- [ ] `cd backend && python3 -m compileall app scripts`
|
||
- [ ] `cd frontend && npm run build`
|
||
|
||
## 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 EMAIL=... PASSWORD=... STUDY_ID=... bash docs/setup-config-curl-smoke.sh`
|
||
- [ ] 导入并执行 Postman 集合 `docs/postman/setup-config.postman_collection.json`
|
||
|
||
## 9. 发布前确认
|
||
- [ ] 文档已更新:`docs/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/ui/enterprise-ui-acceptance-checklist.md` 状态为 `PASS` 且记录审阅日期
|
||
- [ ] 管理层演示路径已走查:`/project/overview -> /project/milestones -> /risk-issues/sae -> /fees/contracts -> /file-versions -> /admin/projects/:id`
|