docs: 目录布局改为扁平结构,与 chis_upload 对齐
按团队 AGENTS.md 的扁平偏好,弃用 internal/+cmd/,改为顶层平铺包 + 单 main.go(-mode server|deliver)。同步更新 docs/03 目录结构图与 §4.4、 docs/05 路线图措辞、CLAUDE.md 目录职责表。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+37
-37
@@ -39,48 +39,48 @@
|
||||
|
||||
## 3. 目录结构
|
||||
|
||||
采用**扁平布局**(顶层平铺包、单 `main.go` + `-mode` 子命令),与参考项目 `chis_upload` 保持同款形状,降低团队接手成本。
|
||||
与 `chis_upload` 的差别只在"内容"——无 `chis/`(逆向)、无 `middleware/`(cookie)、无 SM2,新增 `osi/`/`mapping/`/`pipeline/`。
|
||||
|
||||
```
|
||||
chis_osi/
|
||||
├── cmd/
|
||||
│ ├── server/ main:HTTP 服务入口
|
||||
│ └── deliver/ main:投递 worker 入口
|
||||
├── config/ viper 配置(osi/phis/redis/log/proxy)
|
||||
├── internal/
|
||||
│ ├── osi/ ★ 薄客户端:与平台的全部交互
|
||||
│ │ ├── sign.go MD5 签名(ts + password)
|
||||
│ │ ├── transport.go HTTP 发送、超时、SOCKS5
|
||||
│ │ ├── client.go Call(ctx, serviceId, body, &out):注入头+信封+发送+判码
|
||||
│ │ ├── codes.go 返回码常量与成功/可重试判定
|
||||
│ │ ├── jkda.go 档案:Create/Update/Find/FindRqbj
|
||||
│ │ ├── jktj.go 体检:Create/Update/Query/List/Last
|
||||
│ │ ├── lnr.go 老年人:自理评估、中医体质辨识
|
||||
│ │ ├── zyjkzd.go 中医健康指导
|
||||
│ │ └── public.go 网格/责任医生/药品/机构 字典查询
|
||||
│ ├── contract/ ★ 校验后的接口契约(请求/响应结构体 + serviceId 常量)
|
||||
│ │ ├── envelope.go 通用信封:{serviceId, uploadinfo|baseInfo, manageInfo}
|
||||
│ │ ├── jkda.go / jktj.go / lnr.go / ...
|
||||
│ ├── mapping/ ★ PHIS→OSI 映射(本项目核心)
|
||||
│ │ ├── dict.go 码表:性别/民族/血型/职业/文化程度/婚姻/医保...(双向)
|
||||
│ │ ├── health_record.go 档案字段映射 + 校验
|
||||
│ │ ├── health_check.go 体检字段映射
|
||||
│ │ ├── elderly.go 老年人映射
|
||||
│ │ └── checkid.go checkId 生成(确定性,幂等键来源)
|
||||
│ ├── source/phis/ PHIS 拉取客户端 + 任务模型 + 状态回写
|
||||
│ ├── pipeline/ 投递编排:校验→映射→调用→分类→重试→幂等→报告
|
||||
│ │ ├── deliver.go 单条投递
|
||||
│ │ ├── retry.go 重试与错误分类
|
||||
│ │ ├── idempotency.go 基于 checkId 的去重存储(redis|file)
|
||||
│ │ ├── circuit.go 熔断
|
||||
│ │ └── report.go 批次报告
|
||||
│ ├── observ/ report log(redis 优先,文件降级)+ 快照 + trace
|
||||
│ └── store/ redis 客户端封装(可选)+ 文件存储
|
||||
├── main.go 入口:-mode server|deliver(沿用 chis_upload 的单入口 + flag 风格)
|
||||
├── config/ viper 配置(osi/phis/redis/proxy)
|
||||
├── osi/ ★ 薄客户端:与平台的全部交互
|
||||
│ ├── sign.go MD5 签名(ts + password)
|
||||
│ ├── transport.go HTTP 发送、超时、SOCKS5
|
||||
│ ├── client.go Call(ctx, serviceId, body, &out):注入头+信封+发送+判码
|
||||
│ ├── codes.go 返回码常量与成功/可重试判定
|
||||
│ ├── jkda.go 档案:Create/Update/Find/FindRqbj
|
||||
│ ├── jktj.go 体检:Create/Update/Query/List/Last
|
||||
│ ├── lnr.go 老年人:自理评估、中医体质辨识
|
||||
│ ├── zyjkzd.go 中医健康指导
|
||||
│ └── public.go 网格/责任医生/药品/机构 字典查询
|
||||
├── contract/ ★ 校验后的接口契约(请求/响应结构体 + serviceId 常量)
|
||||
│ ├── envelope.go 通用信封:{serviceId, uploadinfo|baseInfo, manageInfo}
|
||||
│ └── jkda.go / jktj.go / lnr.go / ...
|
||||
├── mapping/ ★ PHIS→OSI 映射(本项目核心)
|
||||
│ ├── dict.go 码表:性别/民族/血型/职业/文化程度/婚姻/医保...(双向)
|
||||
│ ├── health_record.go 档案字段映射 + 校验
|
||||
│ ├── health_check.go 体检字段映射
|
||||
│ ├── elderly.go 老年人映射
|
||||
│ └── checkid.go checkId 生成(确定性,幂等键来源)
|
||||
├── source/ PHIS 拉取客户端 + 任务模型 + 状态回写
|
||||
├── pipeline/ 投递编排:校验→映射→调用→分类→重试→幂等→报告
|
||||
│ ├── deliver.go 单条投递
|
||||
│ ├── retry.go 重试与错误分类
|
||||
│ ├── idempotency.go 基于 checkId 的去重存储(redis|file)
|
||||
│ ├── circuit.go 熔断
|
||||
│ └── report.go 批次报告
|
||||
├── observ/ report log(redis 优先,文件降级)+ 快照 + trace
|
||||
├── store/ redis 客户端封装(可选)+ 文件存储
|
||||
├── handler/ HTTP handlers(server 模式对外接口)
|
||||
├── router/ 路由
|
||||
├── docs/
|
||||
└── AGENTS.md 沿用旧项目协作规范
|
||||
└── AGENTS.md / CLAUDE.md 协作规范
|
||||
```
|
||||
|
||||
> `internal/` 用于约束包边界,避免被外部误用;若团队更习惯扁平结构,可去掉 `internal/` 层级,保持包名不变。
|
||||
> 不使用 `internal/` 与 `cmd/`:团队 `AGENTS.md` 偏好扁平、避免过度抽象,且 `chis_upload` 已是单 `main.go`+`-mode` 形态,保持一致优先于"标准 Go 布局"。
|
||||
|
||||
---
|
||||
|
||||
@@ -142,7 +142,7 @@ type ManageInfo struct { DSFMC, OperateUnit, OperateUser string }
|
||||
> 完整度(completeLevel/perfection):默认**不本地计算**,按文档字段如实上送,依赖平台计算。
|
||||
> 若联调发现平台要求接入方计算,再把旧项目 `health_record_complete_level.go`/`health_check_perfection.go` 移植进 `mapping/`(开放问题,见第 8 节)。
|
||||
|
||||
### 4.4 `source/phis` —— 任务源
|
||||
### 4.4 `source` —— 任务源
|
||||
|
||||
- 拉取待上送明细(替代旧项目的本地 mock 文件)。
|
||||
- 任务模型:`{taskId, dataType, payload(PHIS原始), ...}`。
|
||||
@@ -177,7 +177,7 @@ type ManageInfo struct { DSFMC, OperateUnit, OperateUser string }
|
||||
## 5. 关键时序:一条体检记录的投递
|
||||
|
||||
```
|
||||
deliver-worker source/phis mapping osi.Client CHIS OSI
|
||||
deliver-worker source mapping osi.Client CHIS OSI
|
||||
│ 拉取任务 │ │ │ │
|
||||
│ ───────────────────▶│ │ │ │
|
||||
│ ◀─ task(原始体检) │ │ │ │
|
||||
|
||||
Reference in New Issue
Block a user