🧱 模块划分
顶层目录
icp-skills/
├─ cmd/
│ └─ go-icp/ # CLI 入口
├─ server/ # HTTP API 服务
├─ sdk/ # Go SDK 对外包
├─ core/
│ └─ icp/ # 查询编排核心
├─ source/
│ ├─ zhudun/ # 创宇盾适配
│ ├─ ocr/ # 点选 OCR 适配
│ └─ miit/ # 工信部页面补全
├─ httpc/ # 传输层(重试/限速)
├─ model/ # 领域模型与 DTO
├─ cache/ # 结果缓存
├─ conf/ # 配置加载
├─ log/ # 结构化日志
└─ internal/ # 内部工具职责边界
| 模块 | 可依赖 | 不可依赖 |
|---|---|---|
cmd/go-icp | sdk, conf | source/*(应通过 sdk) |
sdk | core/icp, model | source/* 直接耦合 |
core/icp | source/*, cache, model | cmd, server |
source/* | httpc, model | 彼此互依赖 |
httpc | 标准库 | 业务模型 |
编排核心 core/icp
唯一知道「先查谁、再查谁、何时降级、如何聚合」的地方。其余模块都是无状态能力提供者。
形态同源
CLI、SDK、HTTP API 三种形态都最终落到 core/icp 的同一组方法,保证:
- 行为一致(同样输入同样输出)
- 错误一致(同样错误码语义)
- 缓存共享(同一查询缓存命中)