feat(osi): 体检最近一次查询打通(T-301)

- osi.LastHealthCheck(JKTJLSJL00002 /auto/jktjlscx/query)
- contract.HealthCheckSummary 只强类型化定位字段,完整内容走 Result.Raw
- codes.go 登记 JKTJLSJL00002 + JKTJLIST00002 路由
- 单测:路径/解码/Raw 保留/idcard 小写映射/单键校验(脱敏假数据)
- 实测:单查 JKTJ00002 平台未部署;data 为单对象;身份证字段小写 idcard

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ila
2026-07-08 00:45:47 +08:00
co-authored by Claude Opus 4.8
parent 6822ad4350
commit 0e1915fc2b
4 changed files with 117 additions and 0 deletions
+7
View File
@@ -14,6 +14,11 @@ const (
ServiceIDDoctors = "ZRYS00001"
ServiceIDDrugs = "YPML00001"
ServiceIDOrgs = "CXJG00002"
ServiceIDJKTJLast = "JKTJLSJL00002" // 最近一次体检(实测可用)
ServiceIDJKTJList = "JKTJLIST00002" // 已检/待检人员列表(入参待厂家确认)
// 单条查询 JKTJ00002:docx 标 auto/jktj/query,平台实测"没有url的接口配置"(未部署),
// auto/jktj/find 待确认;确认前不登记路由。见 docs/04 §11、docs/06 B5。
)
const codeRetryableTimeout = "405"
@@ -27,6 +32,8 @@ var servicePaths = map[string]string{
ServiceIDDoctors: "/auto/zryscx/query",
ServiceIDDrugs: "/auto/ypmlcx/query",
ServiceIDOrgs: "/auto/cxjg/query",
ServiceIDJKTJLast: "/auto/jktjlscx/query",
ServiceIDJKTJList: "/auto/jktjlist/query",
}
func PathOf(serviceID string) (string, error) {