8.4 KiB
8.4 KiB
执行进度记录
只追加的历史流水:每轮做了什么、跑了什么验证、遇到什么阻塞、做了什么决策。 当前目录/命令/下一步等可覆盖快照写
docs/current-state.md,不在本文重复。 任务状态以tasks.md为准。
记录格式
## YYYY-MM-DD T-编号 任务名(或事件名)
- 状态:DONE / BLOCKED / PARTIAL
- 变更:改了哪些文件或模块
- 验证:运行的真实命令和结果
- 阻塞:如有,写明原因和需要谁决策
- 决策:如有,记录本轮确定的关键取舍
- 下一步:建议下一个任务 ID 或待确认事项
执行记录
2026-05~06 设计文档集初始化(pre-code)
- 状态:DONE
- 变更:
docs/01~06设计文档集、CLAUDE.md、.gitignore(源材料不入库)。详见git log 3498542..1fd2569。 - 决策:扁平目录布局对齐 chis_upload;OSI 为无状态 MD5 签名接口,不引入旧项目逆向复杂度;幂等键用 checkId。
2026-07-06 JKDA00002 联调打通 + 文档校准
- 状态:DONE
- 变更:
scripts/query_health_record.py(本地,不入库)打通真实查询;据实测样本校准docs/01(成功码/信封/机构码分层/坑点坐实)、docs/04(新增 §8 实测契约)、docs/06(A1~A9/B3/B6/C3/D2/D3 回填)。 - 验证:沙箱真实请求返回
code="01" message="操作成功",data为档案聚合数组;脚本离线自检(编译 + 信封 + 判码逻辑)通过。 - 决策:成功码为
"01"非 docx 所示"1",判定按去前导零;查询也走uploadinfo信封;请求头orgCode用 18 位统一社会信用代码(9 位码是manaUnitId,两者不可混用)。 - 阻塞:
tests/test_query_health_record.py测的是旧脚本 API,已失效(import 报错)→ 登记为 T-000。 - 下一步:T-000,然后 T-001 起步阶段 0。
2026-07-06 接入 harness coding 文档工件
- 状态:DONE
- 变更:新建
tasks.md(看板)、progress.md(本文)、docs/current-state.md(快照)、init.sh(统一验证入口)、AGENTS.md(通用 agent 薄入口);更新CLAUDE.md会话启动流程与文档同步表、docs/README.md导航、docs/05成功码勘误。 - 决策:任务看板放根目录
tasks.md;现有docs/01~06设计文档不重命名不重排;模板可选增强集(rubric/quality/method-map)暂不引入。 - 下一步:T-000。
2026-07-06 T-000 处理失效测试
- 状态:DONE
- 变更:删除
tests/(test_query_health_record.py及__pycache__)——文件从未被 git 跟踪,无需git rm。 - 验证:
git status --short确认删除前后均无该目录的跟踪历史;删除后工作区干净。 - 决策:不改写为新契约的最小测试,直接删除——脚本是硬编码的本地联调工具(不入库),暂不需要自动化测试覆盖。
- 下一步:T-001,进入路线图阶段 0(go module + 双子命令骨架)。
2026-07-06 T-001 初始化 Go module 与双子命令骨架
- 状态:DONE
- 变更:新增
go.mod/go.sum、main.go、main_test.go、config/config.go、config/config_test.go、config.yaml.example;tasks.md标记 T-001 完成;docs/05勾选阶段 0 第一项。 - 验证:
go test ./...通过;go build ./...通过;go run . -mode server -config config.yaml.example输出chis_osi mode=server;go run . -mode deliver -config config.yaml.example输出chis_osi mode=deliver。 - 验证补充:
bash init.sh在当前 Windows 环境失败,系统提示未安装 WSL;已用等价 Go 命令完成验收。 - 决策:Go module 使用本地模块名
chis_osi;main.go只打印 mode,不打印配置值,避免泄露真实环境信息;config.yaml.example只保留占位值。 - 下一步:T-002(
osi/sign.goMD5 头签名 + 单测)。
2026-07-06 T-002 MD5 头签名
- 状态:DONE
- 变更:新增
osi/sign.go与osi/sign_test.go;BuildHeaders组装 OSI 必需请求头,SignPassword按md5("ts=<ts>&ask=<ask>")输出 32 位小写;tasks.md标记 T-002 完成;docs/05勾选阶段 0 第二项。 - 验证:先运行
go test ./osi看到缺少SignPassword/BuildHeaders/HeaderInput的预期失败;实现后go test ./osi通过;go test ./...通过;go build ./...通过。 - 决策:固定测试向量
ts=1700000000123&ask=secret-key -> 008aceff8247cb42d2a99b2c48d0ac88来自 Pythonhashlib.md5(...).hexdigest(),用于对齐本地联调脚本签名算法;ask只参与签名,不进入 headers。 - 下一步:T-003(
osi/transport.go传输层,保留 SOCKS5/超时)。
2026-07-06 看板重排(查询先行)
- 状态:DONE(规划调整,无代码)
- 变更:
tasks.md把 Phase 1(字典)/Phase 2(档案) 重排为 Phase Q(查询)→M(映射)→D(字典+创建);osi/jkda.go拆为 T-203(Find/FindRqbj) 与 T-206(Create/Update);docs/05加执行顺序注记。任务 ID 不变。 - 决策:查询档案(Find)不依赖字典,映射纯函数单测只需码表+注入假字典快照,只有真实创建闭环才需 T-101/T-103 字典反查——故把字典接口降到创建之前、查询之后。顺带把"Create 依赖字典缓存"从隐性依赖显式化到 T-206。
- 下一步:仍是 T-003(Phase 0 未变),Phase 0 完成后按 Q→M→D 领取。
2026-07-06 T-003 OSI 传输层骨架
- 状态:DONE
- 变更:新增
osi/transport.go与osi/transport_test.go;传输层支持 JSON POST、请求超时、可选 SOCKS5 代理;不设置 Cookie/Origin/Referer/X-Requested-With 等网页拟态头;tasks.md标记 T-003 完成;docs/05勾选阶段 0 传输层项。 - 验证:先运行
go test ./osi看到NewTransport/TransportConfig未定义的预期失败;实现后go test ./osi通过;go test ./...通过;go build ./...通过。 - 决策:
socks5_proxy支持host:port和socks5://host:port两种写法;非空时只配置 OSI 客户端代理,不做直连回退;传输层只返回 HTTP status 和原始响应体,业务判码留给 T-004 的 client/codes。 - 下一步:T-004(
osi/client.goCall+osi/codes.go+contract/envelope.go)。
2026-07-06 T-004 OSI Client Call + 信封 + 判码
- 状态:DONE
- 变更:新增
contract/envelope.go、osi/codes.go、osi/client.go及对应单测;Client.Call负责拼/osi/api路径、组装 MD5 签名请求头、构造serviceId + uploadinfo{baseInfo,manageInfo}信封、发送 JSON、解析{code,message,data};tasks.md标记 T-004 完成;docs/05勾选 client/codes/envelope 两项。 - 验证:先运行
go test ./contract ./osi看到Envelope、NewClient、IsSuccessCode等未定义的预期失败;实现后go test -count=1 ./contract ./osi通过;go test ./...通过;go build ./...通过。 - 决策:成功码统一按去前导零后等于
"1"判定,兼容实测"01";405归类为可重试;osi.base_url按主机地址处理,Client 自动拼/osi/api,同时兼容已带/osi/api的输入。 - 下一步:T-005(阶段 0 验收:Go 侧真实请求打通 + 配置
init.sh)。
2026-07-06 T-005 阶段 0 验收:Go 侧真实请求打通 + init.sh
- 状态:DONE
- 变更:新增
verify_jkda.go/verify_jkda_test.go,main.go增加-verify-jkda-id-card验证入口;config支持OSI_*等环境变量覆盖;osi/transport.go改为按原始 HTTP/1.1 写请求以保留orgCode/deviceSN/userName头名大小写;init.sh配置依赖下载、go test ./...、启动三步命令;补充传输层头名与基础请求头单测。 - 验证:
go test ./...通过;go build ./...通过;使用本地环境变量发起 Go 版 JKDA00002 真实请求,返回JKDA00002 code=01 message=操作成功 data_count=1。 - 验证补充:
init.sh三命令已替换;当前机器从 Git Bash 启动 Go 会出现标准库路径/构建缓存权限异常,导致脚本运行环境未能完整验收。等价 PowerShell 下直接执行go test ./...、go build ./...与 Go 真实请求均通过。 - 决策:真实平台/代理对请求头大小写敏感,Go
net/http会规范化头名并触发 EOF;传输层因此对 OSI 调用使用原始 HTTP/1.1 写入,保留 Python requests 已验证的头名大小写与基础头语义。 - 下一步:T-201(
contract/jkda.go查询响应结构体)。