Files
chis_osi/tasks.md
T
2026-07-06 20:54:23 +08:00

67 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务看板(Tasks)
> 把 `docs/05-实施路线图.md` 的阶段拆成小步、可独立交付、可验收的任务。
> 每轮只领取**一个**状态为 `TODO` 且依赖均 `DONE` 的任务(取最靠前的)。
## 使用规则
1. 开工前读 `docs/current-state.md`(当前快照)与 `CLAUDE.md`(硬规则)。
2. 领取任务时把状态改为 `DOING`(同一时间最多 1 个)。
3. 标 `DONE` 前必须有**可运行证据**:验证命令和结果追加到 [`progress.md`](progress.md);只有"代码已写"不算完成。
4. 完成后:更新本文状态 → 追加 `progress.md` → 覆盖更新 `docs/current-state.md`。
5. 代码现实与看板冲突时,先说明冲突,不擅自跳步。
状态图例:`TODO` 待开始 · `DOING` 进行中 · `DONE` 完成并验收 · `BLOCKED` 受阻(注明原因)
---
## Phase B · 基线(接入 harness,先于一切新功能)
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-000 | 处理失效测试 `tests/test_query_health_record.py` | - | 它 import 的旧脚本 API 已删除(脚本已重写为硬编码版):要么删除,要么改写为校验新信封结构的最小测试;`pytest tests/` 通过或目录清空 | DONE |
## Phase 0 · 脚手架与契约骨架(路线图阶段 0)
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-001 | 初始化 go module + `main.go` 双子命令骨架 + `config/`(viper) | - | `go build ./...` 通过;`-mode server\|deliver` 可解析;`config.yaml.example` 占位值就绪 | DONE |
| T-002 | `osi/sign.go` MD5 头签名 + 单测 | T-001 | 单测校验 `password=md5("ts=<ts>&ask=<ask>")` 32 位小写;与 Python 脚本(scripts/,本地)产出比对一致 | TODO |
| T-003 | `osi/transport.go`:从 chis_upload 移植传输层 | T-001 | 保留 SOCKS5/超时;去掉 cookiejar 与网页拟态头;单测或最小连通验证 | TODO |
| T-004 | `osi/client.go` `Call` + `osi/codes.go` + `contract/envelope.go` | T-002, T-003 | 信封为 `serviceId`+`uploadinfo{baseInfo,manageInfo,...}`(docs/04 §8);成功码按去前导零 == `"1"` 判定(实测 `"01"`,docs/01 §1);`405` 归类可重试 | TODO |
| T-005 | 阶段 0 验收:Go 侧真实请求打通 + 配置 `init.sh` | T-004 | 用 JKDA00002(Python 已验证的同一查询)发真实请求拿到 `code="01"`;`./init.sh` 三命令替换完成且可运行 | TODO |
## Phase 1 · 字典服务(路线图阶段 1)
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-101 | `osi/public.go` 四个字典查询(网格/责任医生/药品/机构) | T-005 | 真实机构码能查到下级网格、责任医生、机构树 | TODO |
| T-102 | `mapping/dict.go` 全量码表(含 56 项民族) | T-001 | 双向查表;未命中显式 ValidationError;单测覆盖 | TODO |
| T-103 | 字典缓存(内存 + redis 可选) | T-101, T-102 | 映射层能反查 `regionCode/manaDoctorId/manaUnitId`;redis 不可用不阻断 | TODO |
## Phase 2 · 健康档案闭环(路线图阶段 2,第一条业务线)
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-201 | `contract/jkda.go`:以 docs/04 §8 实测契约为基线建结构体 | T-004 | Find 响应能完整反序列化本地联调样本(`data` 数组、null 字段用指针/omitempty、`adressNumber` 坑点拼写) | TODO |
| T-202 | `mapping/health_record.go` + `mapping/checkid.go` | T-102, T-201 | 映射纯函数 + 结构化校验错误;checkId 确定性生成单测 | TODO |
| T-203 | `osi/jkda.go`:Create/Update/Find/FindRqbj | T-201 | Find 真实请求通过;Create 待测试档案确认后联调 | TODO |
| T-204 | `handler`+`router`:`/api/health-record/save` | T-203 | server 模式起服务,curl 全链路返回投递结果 | TODO |
| T-205 | 映射单测基线:docx 样例 + 联调样本 | T-202 | `go test ./mapping/...` 全绿;必填/码表/格式校验生效 | TODO |
## 里程碑
- M1 = T-005:Go 客户端与平台真实握手成功(签名/信封/判码全对)。
- M2 = T-103:字典服务可反查主数据。
- M3 = T-205:档案业务线闭环 + 幂等,映射有回归基线。
## 待办池(Backlog,按路线图阶段 3~6 展开,进入时再拆小任务)
- 阶段 3:投递流水线(retry/idempotency/circuit/report + `-mode deliver`)。
- 阶段 4:其余业务线(体检 JKTJ 字段最多、老年人自理、中医体质、中医指导——B1/B2/B5 契约到位后拆)。
- 阶段 5:PHIS 真实接入与状态回写。
- 阶段 6:加固与交接(完整度定论、密钥环境变量化、运维文档、全绿)。
- 联调依赖跟踪见 `docs/06-厂家联调清单.md`(B 组契约缺口会阻塞阶段 4)。