# 立项配置发布清单 状态: `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`