Files
2026-07-05 11:39:28 +08:00

5.7 KiB
Raw Permalink Blame History

任务看板(Tasks)

把 MVP 拆成小步、可独立交付的任务。每轮只做一个任务。

使用规则

  1. 每轮只领取第一个状态为 TODO 且依赖均为 DONE 的任务。
  2. 开始前把任务状态改为 DOING。
  3. 完成、自测并记录证据后,把任务状态改为 DONE。
  4. 完成后向 ../progress.md 追加记录,并覆盖更新 current-state.md。
  5. 结束前检查 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
T-004 支持本地 .env 配置加载 T-003 增加 .env 自动加载能力;固定并安装 python-dotenv 兼容 Python 3.8 的版本;.env 加入 .gitignore 且不提交真实密钥;.env.example 保持占位;测试覆盖 .env 加载和系统环境变量优先级;真实安装、测试和启动命令同步到技术栈、编码规则和当前状态 TODO

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。