Răsfoiți Sursa

docs(交付): 补记 ③ —— 轮询 10 秒 + 回调上限 3 次,产物指纹换代

记录 2026-10-09 两条用户裁定的落地:f2ef6b13(订单轮询 60s→10s)、
5396cb4c(回调失败上限 8→3 含首推)。含现行 jar/dist 指纹
(46d7cad9… / 1fd3d9f9…,覆盖补记 ② 的 41c1b1ac 批)、判据与正对照
(javap 回读注解与常量、jar 内嵌 SQL、dist 文档 chunk 三命中 + 与旧件
规范化比对唯一差异)、全量 1270/0/0/0 两读一致。

部署注意与订正:已跑过 SQL 的环境无需重跑;yml/启动参数若显式配了
har.callback-max-retries 需同步改 3(配置覆盖默认);乐收赢仍 8 未动;
验收 §三 回调封顶按 3 次观察;push 状态订正(origin/java=41e6c634
此前全部已 push,本轮 3 提交待推)。
alphaH 5 zile în urmă
părinte
comite
d750c285b5

+ 37 - 0
.claude/plan/2026-10-09-har-pick-dedup-retry-交付说明.md

@@ -49,6 +49,43 @@
 部署步骤不变:先跑 `db/har-callback-retry.sql` + `db/har-shop-region.sql`,再 jar + dist 同批换;
 无新 SQL、无重登、无新菜单。
 
+## ★ 2026-10-09 晚间补记 ③ —— 轮询 10 秒 + 回调上限 3 次(用户两条裁定)
+
+两个功能提交 + 本节一提交:
+
+- `f2ef6b13` 订单轮询间隔 60s → 10s(`HarOrderPollScheduler#pollPendingOrders` 的 fixedDelay / initialDelay;
+  `retryFailedCallbacks` 保持 60s / 75s 不动)。只改「发货」节奏:单笔订单两次查询的间距仍由各自
+  `next_query_time` 游标控制(30s 起步退避),对上游的查询密度不变,只减少「已到期却还没被捞走」的空等。
+  该文件此前没有任何调度间隔断言,本次补两条钉住用例(poll=10s、retry=60s,先红后绿)。
+- `5396cb4c` 回调失败重试上限 8 → **3 次(含首推 = 首推 1 + 重试 2)**:`HarProperties.callbackMaxRetries` 8→3、
+  `db/har-callback-retry.sql` 存量封顶 UPDATE 8→3(含注释与只读核对)、`HarCallbackServiceTest` 改钉
+  (schema 用例改为「提取脚本封顶值」并断言 == 默认值 == 3;`retryFailed_pinsScanQuery` 自定义值 3→5 ——
+  原值恰逢新默认值会让「写死常量」的变异不再变红、判别力归零,改 5 后变异实测红
+  `expected [5,FAILED] but was [3,FAILED]`、还原后绿)、`har-openapi.md` 两处 8→3。
+
+**现行产物(换这一套,覆盖上一条补记的指纹;jar + dist 同批)**:
+
+- jar:sha256 `46d7cad9da2f32c8ef69d142f72f784f052f41896ddb6d6da98021b7c0139a78`(143,153,266 字节,18:50:59)
+- dist.zip:sha256 `1fd3d9f94483f29315f563bf36e87982360679f50f3611dd0a9868c732100fe1`(9,373,683 字节,18:54:42;
+  281 条目 = 277 文件 + 4 目录项、0 反斜杠、testzip None)
+
+判据(各带正对照):jar 内 `javap -v` 回读 —— `pollPendingOrders` 注解 `fixedDelay=10000l, initialDelay=10000l`、
+`retryFailedCallbacks` 仍 `60000l / 75000l`;`HarProperties` 构造器 `iconst_3 → putfield callbackMaxRetries`
+(正对照:connect / read timeout 5000 / 15000 原样);jar 内嵌 `db/har-callback-retry.sql` 已是 `notify_count = 3` / `< 3`。
+dist 内文档 chunk(`index.C6vqgUS8.js`)「3 次(含首推)」在、「8 次(含首推)」0 命中、正对照「本章接口路径前缀」在;
+与工作区旧 zip(sha 前缀 `83f4536f…`,9,286,480 字节,18:13 出现 —— 非本方会话产物,内容属 18:08 构建的另行重打包)
+规范化逐条目比:唯一实质差异就是该文档 chunk(72714 → 72714 字节,前缀 35679 / 后缀 35967 相等,中段即两处 8→3)。
+
+读数:全量 **1270 / 0 / 0 / 0**(上批 1268 + 两条新钉住用例;控制台汇总与 100 份 surefire XML 求和两读一致)。
+
+部署:已跑过 `har-callback-retry.sql` 的环境**无需重跑**(列与索引已在;脚本新值 3 供生产首次执行 / 清库重跑);
+jar + dist 同批换、无重登、无新菜单。★ 若部署环境显式配过 `har.callback-max-retries`(application.yml / 启动参数),
+配置会覆盖 Java 默认值 —— 需一并改 3。乐收赢 `leshouying.downstream-notify-max-retries` 仍为 8,**未动**(不在裁定范围)。
+验收订正:§三 第 4 条(回调)的封顶数按 **3 次**观察 —— 正文 §③ / §三 里写的 8 为本轮之前的写法。
+
+push 状态订正:写本节时 `origin/java` = `41e6c634`(此前提交**已全部 push**,含 18:11 的 application.yml 提交);
+本轮 3 个提交(`f2ef6b13`、`5396cb4c`、本节)待你 push。
+
 ## 需求原文与裁定
 
 ### ① 开放 API 挑店改版(C)