docs: 登记 T-306 全部体检查询(JKTJ00002 实测字段校准)
- docs/04 §11.1 记录驼峰 idCard、历史 checkId 为 null 两个坑 - docs/01 §5.2 JKTJ00002 联调可用;tasks T-306 DONE Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -135,7 +135,7 @@
|
||||
| 业务 | 路径 | serviceId | 联调状态 |
|
||||
| --- | --- | --- | --- |
|
||||
| 创建 | `/osi/api/jktj/create` | `JKTJ00001` | 待写入授权 |
|
||||
| 查询(单条) | `/osi/api/auto/jktj/query` | `JKTJ00002` | ⚠ 实测"没有url的接口配置"(**未部署**);`auto/jktj/find` 待确认 |
|
||||
| 查询(某人全部体检,返回数组) | `/osi/api/auto/jktj/query` | `JKTJ00002` | ✅ 联调可用(按 idCard/phrid 查,返回全部体检数组)|
|
||||
| 更新 | `/osi/api/jktj/update` | `JKTJ00003` | 待写入授权 |
|
||||
| 已检/待检人员列表 | `/osi/api/auto/jktjlist/query` | `JKTJLIST00002` | ✅ 联调可用(T-305,入参 checkYear+分页)|
|
||||
| 最近一次体检 | `/osi/api/auto/jktjlscx/query` | `JKTJLSJL00002` | ✅ 联调可用(T-301) |
|
||||
|
||||
+7
-5
@@ -263,14 +263,16 @@ T-206 已建立本地契约与客户端方法,真实写入验收暂未执行
|
||||
| 业务 | serviceId | 路径 | 返回 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 最近一次体检 | `JKTJLSJL00002` | `/auto/jktjlscx/query` | 单对象(最近一次完整体检) | ✅ 实测可用(`osi.LastHealthCheck`) |
|
||||
| 某人全部体检 | `JKTJ00002` | `/auto/jktj/query` | **数组**(该人全部体检,每条完整) | ⚠ docx 有定义,实测"没有url的接口配置"(**未部署**),见 docs/06 B5 |
|
||||
| 某人全部体检 | `JKTJ00002` | `/auto/jktj/query` | **数组**(该人全部体检,每条完整) | ✅ 实测可用(`osi.QueryHealthChecks`;早期曾报"没有url配置",现已部署)|
|
||||
| 已检/待检名单 | `JKTJLIST00002` | `/auto/jktjlist/query` | 数组(人员名单+状态,非体检明细) | ✅ 实测可用(`osi.ListHealthCheckPeople`,见 §11.4) |
|
||||
|
||||
- 请求信封同档案(`serviceId` + `uploadinfo{baseInfo, manageInfo}`);查询按 `phrid`/`idCard` 之一(docx baseInfo 只列这俩)。
|
||||
- **两处与档案不同的坑**:① 最近一次的 `data` 是**单个对象**(档案 find 是数组);② 体检身份证字段是小写 **`idcard`**(档案是 `idCard`)。
|
||||
- **JKTJ00002 返回形态**:`data` 为**数组**,每个元素是一份**完整体检**(结构同"最近一次",约 260 项 + 各子节点,见 §11.3),每条含自己的 `checkId`(体检编号,响应字段,长度 20)。
|
||||
- docx 无"按 `checkId` 直接查单条"的接口——`checkId` 只是响应字段。要按体检编号取历史某次,须用本接口查该人全部体检,再**本地按 `checkId` 过滤**。
|
||||
- 部署后即为"查历史体检 / 按体检编号定位"的正解接口;未部署前只有"最近一次"可用。
|
||||
- **身份证字段大小写三接口不一致(务必分开建模)**:最近一次 `JKTJLSJL00002` 用**小写 `idcard`**;`JKTJ00002` 与 `JKTJLIST00002` 用**驼峰 `idCard``**。档案 find 也是 `idCard`。
|
||||
- 最近一次的 `data` 是**单个对象**(`JKTJ00002` 与档案 find 是数组)。
|
||||
- **JKTJ00002 返回形态(实测)**:`data` 为**数组**=该人全部体检历史(本样本 8 条,2013–2026);每个元素是一份**完整体检**,结构同"最近一次"(38 顶层标量 + `healthAssessment`/`examination`/`lifestySituation`/`accessoryExamination` + 3 数组节点,见 §11.3)。
|
||||
- ⚠ **`checkId` 仅近年记录有值,历史记录为 `null`**(本样本仅最近 2 条有体检编号,更早 6 条 `checkId=null`)——第三方流水码是接入后才有的。
|
||||
- 因此"按体检编号取历史某次"只对**有 checkId 的近期记录**成立;更早的体检**没有 checkId**,只能按 **`checkDate`** 定位。
|
||||
- docx 无"按 `checkId` 直接查单条"的接口——查历史须用本接口取该人全部体检,再本地按 `checkId`/`checkDate` 过滤。
|
||||
|
||||
### 11.2 记录结构与主键
|
||||
|
||||
|
||||
@@ -41,7 +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`(年度名单)|
|
||||
| `handler/health_check.go` | 已有 | 体检端点 `GET /api/health-check/last`(最近一次)+ `/all`(全部体检)+ `/list`(年度名单)|
|
||||
| `server.go` `osi_client.go` | 已有 | server 模式起 HTTP 服务、注册路由;`buildOSIClient` 共用构造(verify 与 server 复用) |
|
||||
| `pipeline/` 等 | 待建 | 后续任务 |
|
||||
|
||||
@@ -81,6 +81,7 @@ OSI_VERIFY_ID_CARD=<idCard> go run . -verify-jkda -config config.yaml
|
||||
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-check/last?idCard=<idCard>" # 最近一次体检
|
||||
curl "http://127.0.0.1:8080/api/health-check/all?idCard=<idCard>" # 某人全部体检(数组)
|
||||
curl "http://127.0.0.1:8080/api/health-check/list?checkYear=2025&idCard=<idCard>" # 年度已检/未检名单
|
||||
|
||||
# 本地 Python 联调查询(脚本硬编码凭据,勿提交)
|
||||
|
||||
Reference in New Issue
Block a user