docs: 登记 T-302 体检 HTTP 端点并同步快照

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ila
2026-07-08 21:17:02 +08:00
co-authored by Claude Opus 4.8
parent e67664da45
commit f293aaef00
3 changed files with 17 additions and 6 deletions
+8 -5
View File
@@ -41,6 +41,7 @@
| `mapping/health_record.go` `mapping/checkid.go` | 已有 | 健康档案映射草稿、字典快照注入、主数据反查、创建请求组装(含 createUser/createUnit 派生)、必填/码表校验、确定性 checkId |
| `mapping/health_record_baseline_test.go` | 已有 | docx 风格、联调风格、脏数据映射回归样本 |
| `handler/health_record.go` | 已有 | `GET /api/health-record/find` 查询端点,回写平台完整响应 |
| `handler/health_check.go` | 已有 | 体检端点 `GET /api/health-check/last`(最近一次)+ `/list`(年度名单)|
| `server.go` `osi_client.go` | 已有 | server 模式起 HTTP 服务、注册路由;`buildOSIClient` 共用构造(verify 与 server 复用) |
| `pipeline/` 等 | 待建 | 后续任务 |
@@ -76,9 +77,11 @@ go run . -mode deliver -config config.yaml.example
# config.yaml 已迁为 Go 嵌套 osi: 结构并从中读凭据;仅身份证走环境变量,不落文件/命令行历史
OSI_VERIFY_ID_CARD=<idCard> go run . -verify-jkda -config config.yaml
# server 模式 HTTP 查询端点(已实测;用真实 config.yaml,默认仅绑 127.0.0.1:8080)
# server 模式 HTTP 查询端点(用真实 config.yaml,默认仅绑 127.0.0.1:8080)
go run . -mode server # 起服务(阻塞)
curl "http://127.0.0.1:8080/api/health-record/find?idCard=<idCard>" # 返回平台完整档案 JSON
curl "http://127.0.0.1:8080/api/health-record/find?idCard=<idCard>" # 档案(完整 JSON)
curl "http://127.0.0.1:8080/api/health-check/last?idCard=<idCard>" # 最近一次体检
curl "http://127.0.0.1:8080/api/health-check/list?checkYear=2025&idCard=<idCard>" # 年度已检/未检名单
# 本地 Python 联调查询(脚本硬编码凭据,勿提交)
python3 scripts/query_health_record.py
@@ -88,9 +91,9 @@ python3 scripts/query_health_record.py
> 读先行调整(2026-07-08):写入(T-206/T-204)被厂家授权锁死,先推其余业务线查询。
1. ✅ T-301 体检查询打通(`osi.LastHealthCheck` JKTJLSJL00002;字段清单 docs/04 §11)——待 `go test ./...` 复验。
2. **T-302 体检 HTTP 查询端点**(复用 T-208 handler 模式)——当前可领。
3. 并行催厂家(docs/06 ★ 优先催办):写入授权+测试档案、缺失列表/单查 serviceId、checkId/完整度规则。
1. ✅ T-301/T-305 体检查询(最近一次 + 名单)、T-302 体检 HTTP 端点 —— 均已完成。
2. **T-303 老年人查询**(自理/体质,serviceId 部分待 B4)——起 Python 探针试探。
3. 并行催厂家(docs/06 ★ 优先催办):写入授权+测试档案、缺失单查/老年人 serviceId、checkId/完整度规则。
4. 授权到位后回到 T-206 真实 create 验收 → T-204。
## 维护规则
+8
View File
@@ -225,3 +225,11 @@
- 发现:实测字段名与 docx 多处不符——`birthday`(非 birthDay)、`phrId`(非 phrid,驼峰)、`manaDoctorId`(非 manadoctorId),另有 docx 未列的 `manaDocterName`(拼写 Docter)/`empiId`/`manaUnitText`。再次印证以实测样本为准。
- 决策:名单行字段稳定且均为字符串(20 项),全部强类型化(区别于体检明细 260 项只留 Raw);单查 JKTJ00002 仍未部署,与本条无关。
- 下一步:T-302 体检 HTTP 端点;或按需把名单也暴露成 HTTP 端点。
## 2026-07-08 T-302 体检 HTTP 查询端点
- 状态:DONE
- 变更:新增 `handler/health_check.go`(`GET /api/health-check/last` 最近一次 + `/list` 年度名单,回写平台完整响应)、`handler/health_check_test.go`(脱敏假 OSI 后端测 last/list 的路径/原样回写/缺参 400);`server.go` 注册两条体检路由并打印;抽 `writeRawOrError` 共用回写。`tasks.md`/`docs/current-state.md` 同步。
- 验证:待用户 `go test ./...`、`go build ./...` 复验(本环境离线无工具链)。
- 决策:端点直接回写 `Result.Raw`(同档案端点 T-208),完整内容不裁字段;last 按 idCard/phrid/empiId,list 按 checkYear(必填)+idCard+checkType;默认仅绑 127.0.0.1(返回真实档案/名单 PII)。
- 下一步:T-303 老年人查询探针。
+1 -1
View File
@@ -74,7 +74,7 @@
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-301 | 体检查询打通:`contract/jktj.go` + `osi/jktj.go`(最近一次 JKTJLSJL00002) | T-004 | 真实请求拿到 `code="01"` 与体检数据;响应字段(~260 项/7 节点)记入 docs/04 §11 | DONE(单条 JKTJ00002 平台未部署,见 §11) |
| T-302 | 体检 HTTP 查询端点(复用 T-208 handler 模式) | T-301 | server 模式 curl 返回体检完整 JSON;默认仅绑本机 | TODO |
| T-302 | 体检 HTTP 查询端点(复用 T-208 handler 模式) | T-301 | server 模式 `GET /api/health-check/last`(最近一次)+ `/list`(名单)curl 返回完整 JSON;默认仅绑本机 | DONE |
| T-303 | 老年人查询打通:自理 LNRZLPG / 体质 LNRZYTZ(查询 serviceId 部分待确认) | T-004 | 真实请求打通;缺失 serviceId 先向厂家确认(docs/06 B4) | TODO(部分待 B4) |
| T-305 | 体检已检/未检名单查询 JKTJLIST00002(`osi` 方法 + 契约)| T-004 | `auto/jktjlist/query` 探针实测已部署(code=01 返回名单);`osi.ListHealthCheckPeople` 按 checkYear+idCard 返回名单(含 checkType 状态),契约见 docs/04 §11.4 | DONE |
| T-304 | 列表类查询(**档案 / 老年人自理·体质 / 中医指导** 列表,serviceId docx 缺漏)| T-004 | 各列表路径+serviceId 到位后返回分页数组 | BLOCKED(待 docs/06 B1/B2 厂家回填)|