77 lines
5.7 KiB
Markdown
77 lines
5.7 KiB
Markdown
# 任务看板(Tasks)
|
||
|
||
> 把 MVP 拆成小步、可独立交付的任务。每轮只做一个任务。
|
||
|
||
## 使用规则
|
||
|
||
1. 每轮只领取第一个状态为 `TODO` 且依赖均为 `DONE` 的任务。
|
||
2. 开始前把任务状态改为 `DOING`。
|
||
3. 完成、自测并记录证据后,把任务状态改为 `DONE`。
|
||
4. 完成后向 [../progress.md](../progress.md) 追加记录,并覆盖更新 [current-state.md](current-state.md)。
|
||
5. 结束前检查 [clean-state-checklist.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 |
|
||
| 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。
|