任务看板(Tasks)
把 MVP 拆成小步、可独立交付的任务。每轮只做一个任务。
使用规则
- 每轮只领取第一个状态为
TODO 且依赖均为 DONE 的任务。
- 开始前把任务状态改为
DOING。
- 完成、自测并记录证据后,把任务状态改为
DONE。
- 完成后向 ../progress.md 追加记录,并覆盖更新 current-state.md。
- 结束前检查 clean-state-checklist.md。
状态图例
TODO 待开始 · DOING 进行中 · DONE 已完成并验收 · BLOCKED 受阻
Phase 0 · 项目地基
| ID |
任务 |
依赖 |
验收要点 |
状态 |
| T-001 |
初始化 Flask 项目骨架 |
- |
使用当前系统 Python 3.8,不创建虚拟环境;创建 requirements.txt 并固定 Flask==3.0.3;使用 application factory 模式实现 create_app(config_object=None);本地 health check API 可启动;真实命令同步到技术栈和当前状态 |
DONE |
| T-002 |
建立基础配置与目录 |
T-001 |
目录符合架构文档;配置从环境变量读取;无真实密钥 |
DONE |
| T-003 |
建立最小测试框架 |
T-001 |
pytest 可运行;至少有 create_app / health check 测试,能通过测试配置创建 Flask app |
DONE |
Phase 1 · CHIS 登录与会话
| ID |
任务 |
依赖 |
验收要点 |
状态 |
| T-101 |
迁移 CHIS 登录链路 |
T-002 |
参考 D:\hans\chupd\chis\login_client_v2.py;登录逻辑进入 app/chis/auth.py 或等价模块;public key 从配置读取;CHIS_PROXY 有值时登录请求走代理,空值直连;账号密码不落日志;失败返回明确错误 |
DONE |
| T-102 |
接入账号信息查询验证会话 |
T-101 |
能用已有 cookie 查询当前账号信息;失败可判断会话无效 |
DONE |
| T-103 |
实现 Redis 会话缓存 |
T-102 |
会话对象包含 cookies、账号、角色/机构、过期时间;有效会话复用;无效会话清理 |
DONE |
| T-104 |
实现失效重登策略 |
T-103 |
CHIS 返回未登录时清缓存、重登一次、重试一次;不会无限重试 |
TODO |
Phase 2 · CHIS 只读查询验证
在保存上报前,先用只读查询验证登录、cookie、角色/机构上下文、SM2 加密和通用 *.jsonRequest 是否可用。
| ID |
任务 |
依赖 |
验收要点 |
状态 |
| T-201 |
实现通用 CHIS jsonRequest client |
T-104 |
自动携带会话;CHIS_PROXY 有值时为 http / https 设置 SOCKS5 代理,空值直连;处理 timeout、CHIS 错误和未登录;能调用 getLanderInfo 与 getEncryType |
TODO |
| T-202 |
实现体检详情查询 client |
T-201 |
参考 reverse_file/20260704_query_health_check.har;支持 healthCheck + phrId + idCard 调 getHMNIListOfHTML;支持 idCard + checkDate 调 getCheckInfoDetail |
TODO |
| T-203 |
跑通只读查询 spike |
T-202 |
登录后能查询体检详情;验证结果写入 progress.md;不产生 CHIS 写入副作用 |
TODO |
| T-204 |
验证仅凭体检 id 查询的前置参数来源 |
T-203 |
明确是否能用 healthCheck 反查 phrId/idCard/checkDate/empiId/createUser;如不能,文档中确认第一版查询 API 需要调用方传全参数 |
TODO |
Phase 3 · 第三方上报 API
| ID |
任务 |
依赖 |
验收要点 |
状态 |
| T-301 |
定义第三方鉴权方式 |
T-003 |
未授权请求返回统一 401/403;密钥通过环境变量或配置加载 |
TODO |
| T-302 |
定义体检上报请求模型 |
T-301 |
请求字段、必填校验、错误响应写入 api.md;测试覆盖参数缺失 |
TODO |
| T-303 |
实现幂等键存取 |
T-302 |
相同 source + request_id 重复提交不会重复执行 CHIS 保存 |
TODO |
Phase 4 · 体检转换与 CHIS 提交
| ID |
任务 |
依赖 |
验收要点 |
状态 |
| T-401 |
建立内部体检标准模型 |
T-302 |
第三方输入先转换为内部模型;字段不直接耦合 CHIS 请求 |
TODO |
| T-402 |
实现最小 CHIS 体检 mapper |
T-401 |
参考 reverse_file/20260702_442525195910165439_create_health_check.har;生成包含 hcData 的最小保存请求;有样例测试 |
TODO |
| T-403 |
跑通单条体检上报闭环 |
T-303, T-402, T-201 |
第三方请求进入后能转换并提交 CHIS,返回统一结果和 trace_id |
TODO |
Phase 5 · 稳定性与收尾
| ID |
任务 |
依赖 |
验收要点 |
状态 |
| T-501 |
补齐错误码和运行日志 |
T-403 |
常见错误有统一 code;logs/ 每天一个综合日志文件,包含多级别摘要日志,保留 1 年;普通日志不包含明文敏感信息 |
TODO |
| T-502 |
实现请求 archive 归档 |
T-501 |
archives/ 每个 API 请求一个 JSON 文件;文件名包含日期、trace_id、request_id 等唯一字段;内容包含 api 和 chis 请求 / 响应数组;archive 不脱敏、原子写入、不进 git |
TODO |
| T-503 |
完整 MVP 验收 |
T-502 |
02-requirements.md 的 P0 验收全部通过 |
TODO |
| T-504 |
部署运行文档 |
T-503 |
新环境可按文档安装、配置、启动、验证;说明 logs/ 和 archives/ 保留 1 年、磁盘容量与清理策略 |
TODO |
Backlog
- 管理后台。
- 异步队列和失败重试。
- 更多 CHIS 业务类型。
- 字典同步和配置化 mapper。