diff --git a/docs/07-本项目HTTP接口.md b/docs/07-本项目HTTP接口.md index 587c501..6d8d829 100644 --- a/docs/07-本项目HTTP接口.md +++ b/docs/07-本项目HTTP接口.md @@ -145,12 +145,14 @@ GET /api/dictionaries/drugs | 参数 | 必填 | 说明 | | --- | --- | --- | +| `pageNo` | **是** | 页码,整数——药品目录是**分页查询**,必填 | +| `pageSize` | 否 | 每页数量,整数 | | `ypmc` | 否 | 药品名称关键字 | | `pym` | 否 | 拼音码 | -| `pageNo` | 否 | 页码,整数 | -- 上游:`YPML00001` `/auto/ypmlcx/query` -- 返回:`data` 为**数组**(药品目录主数据,含 `ypmc`、`ypdw`、`ypgg`、`jldw` 等) +- 上游:`YPML00001` `/auto/ypmlcx/query`(**分页目录查询**,非按名单条) +- 返回:`data` 为**数组**(一页药品),每条含 `ypxh`(序号)/`ypmc`/`ypdw`/`ypgg`/`ypjl`(剂量)/`ycjl`(一次剂量)/`jldw` 等 +- ⚠ 依 docx 契约,**YPML00001 尚未真实联调**:`pageNo` 是否真必填、`pageSize` 字段名、响应字段均以联调实测为准 ### 9. 查询机构 diff --git a/docs/openapi.yaml b/docs/openapi.yaml index c3a609e..fe49cc9 100644 --- a/docs/openapi.yaml +++ b/docs/openapi.yaml @@ -299,12 +299,25 @@ paths: tags: - dictionaries summary: 查询药品目录 - description: 查询药品目录主数据,原样返回上游 YPML00001 `/auto/ypmlcx/query` 响应。 + description: 查询药品目录主数据(分页),原样返回上游 YPML00001 `/auto/ypmlcx/query` 响应。pageNo 必填;契约依 docx,尚未真实联调。 operationId: listDrugs parameters: + - name: pageNo + in: query + required: true + description: 页码(药品目录为分页查询,必填)。 + schema: + type: integer + minimum: 1 + - name: pageSize + in: query + required: false + description: 每页数量。 + schema: + type: integer + minimum: 1 - $ref: '#/components/parameters/ypmc' - $ref: '#/components/parameters/pym' - - $ref: '#/components/parameters/pageNo' responses: '200': description: 平台完整响应,成功和平台业务错误均原样透传。 diff --git a/progress.md b/progress.md index a14ec71..8216d67 100644 --- a/progress.md +++ b/progress.md @@ -290,3 +290,11 @@ - 背景:docx YPML00001 药品目录查询是**分页列表**——`pageNo` 必填、有 `pageSize`、返回药品数组(ypxh/ypmc/ypdw/ypgg/ypjl/ycjl/jldw)。当前实现把 `pageNo` 当可选(`DrugQuery.PageNo` 带 omitempty、handler `parseOptionalInt`、docs/07 标"否"),且缺 `pageSize`——`pageNo=0` 会被 omitempty 丢弃,平台可能报必填错。 - 计划:`osi.DrugQuery` 去 pageNo omitempty + 加 PageSize;handler 缺 pageNo 返回 400 + 读 pageSize;`docs/07 §8`+`openapi.yaml` 标 pageNo 必填并补 pageSize;docx 契约未联调,全程注明待厂家样本核对。 - 注意:YPML00001 从未真实联调(current-state 自述),本次按 docx 校准,pageNo 是否真必填、响应字段名待联调确认;不扩 `Drug` 响应结构体(避免照单样本猜类型),HTTP 走 Raw 不受影响。 + +## 2026-07-09 T-211 药品目录分页契约修正(完成) + +- 状态:DONE +- 变更:`osi/public.go` `DrugQuery.PageNo` 去 omitempty(确保 pageNo=0 也上送)+ 加 `PageSize`;`handler/public.go` Drugs 改 pageNo 必填(新增 `parseRequiredInt`,缺则 400)+ 读 pageSize;`handler/public_test.go` 加"缺 pageNo→400"测试;`docs/07 §8` 标 pageNo 必填+补 pageSize+分页说明+未联调警示;`docs/openapi.yaml` drugs 内联 pageNo(required)+pageSize(不动共享 pageNo,网格地址仍可选)。 +- 验证:openapi YAML 合法、drugs pageNo required=true、grid-addresses 共享 pageNo 仍 false;Go 静态自检通过;现有 drugs 测试(pageNo=1/pageNo=bad)不受影响。待用户 `go test ./...` 复验。 +- 决策:只修请求侧分页契约(清晰的 bug);不扩 `Drug` 响应结构体(缺 ypxh/ypjl/ycjl),因 YPML00001 未真实联调、避免照 docx 猜类型,且 HTTP 走 Raw 不影响输出。全程注明 docx 契约待联调。 +- 下一步:联调 YPML00001 拿真实分页样本后,确认 pageNo/pageSize 真契约并补 Drug 响应字段。 diff --git a/tasks.md b/tasks.md index 7b91c84..5c7f244 100644 --- a/tasks.md +++ b/tasks.md @@ -66,7 +66,7 @@ | T-101 | `osi/public.go` 四个字典查询(网格/责任医生/药品/机构) | T-005 | 真实机构码能查到下级网格、责任医生、机构树 | DONE | | T-103 | 字典缓存(内存 + redis 可选) | T-101, T-102 | 映射层能反查 `regionCode/manaDoctorId/manaUnitId`;redis 不可用不阻断 | DONE | | T-210 | 公开查询 HTTP API(人群分类、网格地址、责任医生、药品目录、机构) | T-101, T-209 | server 模式暴露人群分类与四类公开查询 HTTP API;原样回写平台 JSON;同步 `docs/07` 与 `docs/openapi.yaml`;按内网部署场景明确绑定地址/鉴权边界 | DONE | -| T-211 | 药品目录查询按分页契约修正 YPML00001 | T-210 | 依 docx:`pageNo` 必填(去 `omitempty`+handler 缺则 400)、补 `pageSize`;`docs/07 §8`+`openapi.yaml` 标 pageNo 必填并补 pageSize;docx 契约未联调,注明待厂家样本核对(尤其 pageNo 是否真必填、响应 `ypxh/ypjl/ycjl` 字段)| DOING | +| T-211 | 药品目录查询按分页契约修正 YPML00001 | T-210 | 依 docx:`pageNo` 必填(去 `omitempty`+handler 缺则 400)、补 `pageSize`;`docs/07 §8`+`openapi.yaml` 标 pageNo 必填并补 pageSize;docx 契约未联调,注明待厂家样本核对(尤其 pageNo 是否真必填、响应 `ypxh/ypjl/ycjl` 字段)| DONE | | T-206 | `osi/jkda.go`:**Create/Update** + `contract/jkda.go` 补创建请求结构体 | T-201, T-202, T-103 | 一条档案经映射(真实字典快照)→ create → 平台返回成功码与 `phrId`;Update 沿用 checkId | BLOCKED(代码完成;待写入授权/测试档案,排在 Phase Q2 之后) | | T-204 | `handler`+`router`:`/api/health-record/save` | T-206 | server 模式起服务,curl 全链路返回投递结果 | TODO(待 T-206 解阻塞) |