diff --git a/docs/01-OSI接口规范分析.md b/docs/01-OSI接口规范分析.md index 2dfcfa9..e063360 100644 --- a/docs/01-OSI接口规范分析.md +++ b/docs/01-OSI接口规范分析.md @@ -137,7 +137,7 @@ | 创建 | `/osi/api/jktj/create` | `JKTJ00001` | 待写入授权 | | 查询(单条) | `/osi/api/auto/jktj/query` | `JKTJ00002` | ⚠ 实测"没有url的接口配置"(**未部署**);`auto/jktj/find` 待确认 | | 更新 | `/osi/api/jktj/update` | `JKTJ00003` | 待写入授权 | -| 已检/待检人员列表 | `/osi/api/auto/jktjlist/query` | `JKTJLIST00002` | 路径登记;入参待确认 | +| 已检/待检人员列表 | `/osi/api/auto/jktjlist/query` | `JKTJLIST00002` | ✅ 联调可用(T-305,入参 checkYear+分页)| | 最近一次体检 | `/osi/api/auto/jktjlscx/query` | `JKTJLSJL00002` | ✅ 联调可用(T-301) | > 体检报文体量大(实测最近一次约 260 字段,分 4 object + 3 array 子节点),是字段映射工作量最大的一块。响应结构与字段清单见 `docs/04 §11`。 diff --git a/docs/04-字段与接口映射.md b/docs/04-字段与接口映射.md index 0c55932..4774517 100644 --- a/docs/04-字段与接口映射.md +++ b/docs/04-字段与接口映射.md @@ -295,7 +295,7 @@ T-206 已建立本地契约与客户端方法,真实写入验收暂未执行 ### 11.4 已检/待检人员名单查询 JKTJLIST00002(docx 契约,沙箱部署待验证) > **不是体检数据源**,是机构级"某年度已检/未检人员名单/进度":返回**人员一行 + 体检状态**,不含体检明细。 -> 来源:docx。沙箱是否部署未实测(对应 T-305;先用 Python 探针 `SERVICE="list"` 确认)。 +> 来源:docx + 2026-07 沙箱实测(`code="01"`,返回分页人员名单)。**端点已部署可用**(T-305)。 - serviceId `JKTJLIST00002`,`POST /osi/api/auto/jktjlist/query`,信封同查询式(`uploadinfo{baseInfo, manageInfo}`)。 - **请求 `baseInfo`**(page/rows 也在 baseInfo 内): @@ -308,4 +308,5 @@ T-206 已建立本地契约与客户端方法,真实写入验收暂未执行 | `checkType` | 否 | `0`已检 / `1`未检 / `2`全部 | | `personName` `sex` `age` `personGroup` `gridAddress` `beginDate` `endDate` | 否 | 各类筛选。⚠ docx 参数表与样例字段名不一致(表 `ageBegin/ageEnd`/`sexCode`/`regionCode` vs 样例 `age`/`sex`/`gridAddress`)——以联调实测为准 | -- **响应 `data`(list,每人一行)**:`idCard`/`personName`/`age`/`birthDay`/`regionCode`/`regionCodeText`/`manaUnitId`/`manaUnitText`/`sexCode`/`mobileNumber`/`contact`/`contactPhone`/`signFlag`(y/n 签约)/`address`/`manadoctorId`/`phrid`/**`checkType`(0已检/1未检)**/`rqbj`(人群标志,同 personSign 码表)。 +- **响应 `data`(list,每人一行)· 实测字段名**(⚠ 与 docx 多处不符,以实测为准): + `idCard`/`personName`/`age`/**`birthday`**(docx 误写 birthDay)/`sexCode`/`regionCode`/`regionCodeText`/`manaUnitId`/`manaUnitText`/**`manaDoctorId`**(docx 误写 manadoctorId)/**`manaDocterName`**(拼写 Docter)/**`phrId`**(docx 误写 phrid,此处驼峰)/**`empiId`**/`signFlag`(y/n 签约)/`address`/`mobileNumber`/`contact`/`contactPhone`/**`checkType`(0已检/1未检)**/`rqbj`(人群标志,同 personSign 码表)。 diff --git a/progress.md b/progress.md index 863edec..63756ed 100644 --- a/progress.md +++ b/progress.md @@ -216,3 +216,12 @@ - 变更:从 docx 扒出 JKTJLIST00002 完整契约(checkYear/page/rows 在 baseInfo,返回人员名单+checkType 状态),记入 `docs/04 §11.4`;`tasks.md` 拆出 **T-305(体检已检/未检名单,契约齐全仅待沙箱部署验证,TODO 可领)**,把 T-304 收窄为真正缺 serviceId 的列表(档案/老年人/中医指导);`scripts/query_health_check.py` 的 list 模式改为 docx 正确参数。 - 决策:JKTJLIST00002 契约不缺(docx 完整),不该被 B1/B2 阻塞——只差运行时确认端点是否部署,故独立成可领任务;纠正原 T-304"一刀切 BLOCKED"把能做的和真卡的混在一起。它是名单/进度接口,不含体检明细,非数据源。 - 下一步:跑 list 探针确认部署 → 若通即领 T-305 建 osi 方法;未部署则归 docs/06 B5 催厂家。 + +## 2026-07-08 T-305 体检已检/未检名单查询打通 + +- 状态:DONE +- 变更:`contract/jktj.go` 加 `HealthCheckPerson`(名单一行 20 字段,字段名按实测校正);`osi/jktj.go` 加 `ListHealthCheckPeople`(JKTJLIST00002)+ `ListHealthCheckQuery`(checkYear 必填、page/rows 默认、idCard/checkType 可选);`osi/jktj_test.go` 加名单解码/路径/baseInfo分页/checkYear 校验测试(脱敏假数据);`docs/04 §11.4` 校正实测字段名并标端点已部署;`docs/01 §5.2` 标 JKTJLIST00002 联调可用。 +- 验证:Python 探针 `list` 实测 `code=01`,返回 10 人名单(每人 checkType 状态)。Go 侧待用户 `go test ./...` 复验(本环境离线)。 +- 发现:实测字段名与 docx 多处不符——`birthday`(非 birthDay)、`phrId`(非 phrid,驼峰)、`manaDoctorId`(非 manadoctorId),另有 docx 未列的 `manaDocterName`(拼写 Docter)/`empiId`/`manaUnitText`。再次印证以实测样本为准。 +- 决策:名单行字段稳定且均为字符串(20 项),全部强类型化(区别于体检明细 260 项只留 Raw);单查 JKTJ00002 仍未部署,与本条无关。 +- 下一步:T-302 体检 HTTP 端点;或按需把名单也暴露成 HTTP 端点。 diff --git a/tasks.md b/tasks.md index 1ab88bd..b61bdea 100644 --- a/tasks.md +++ b/tasks.md @@ -76,7 +76,7 @@ | 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-303 | 老年人查询打通:自理 LNRZLPG / 体质 LNRZYTZ(查询 serviceId 部分待确认) | T-004 | 真实请求打通;缺失 serviceId 先向厂家确认(docs/06 B4) | TODO(部分待 B4) | -| T-305 | 体检已检/未检名单查询 JKTJLIST00002(`osi` 方法 + 契约)| T-004 | 先用 Python 探针确认 `auto/jktjlist/query` 已部署;通后建 `osi.ListHealthCheckPeople`,按 checkYear+idCard 返回名单(含 checkType 状态),契约见 docs/04 §11.4 | TODO(契约齐全,仅待沙箱部署验证)| +| 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 厂家回填)| ## 里程碑