소스 검색

docs(交付): 两份交付说明短码示例订正为六位 + 10-09 批补记现行产物

评审 🟡2:`680406f9` 把编码改成 GB/T 2260 完整六位后,两份已入库交付说明
仍载短码示例(`省份编码不存在: 99` / `3301(省 32)` / `省 32` /
`3201(省 32)` / `4301(省 43)`)—— 接手人照文档构造 400 必然对不上
(99/3301 已是非法输入)。同步为六位(`999999` / `330100(省 320000)` 等),
10-08 那份在句尾补订正标记(`680406f9`)。

10-09 说明追加 ★ 晚间补记:批后 3 个提交(`680406f9` / `128a2276` /
`946a3639`)与现行 jar(`5e5bfb47…`)/ dist(`ab7c0c96…`)指纹,覆盖正文
里已过期的 `8662237e…` / `4b87bb40…`;§五 挂账补记独立评审结果
(🟡1 行为选项待拍板 + 4 条未动 minors + 省直辖假设)。
alphaH 5 일 전
부모
커밋
55080617e9
2개의 변경된 파일과 29개의 추가작업 그리고 6개의 파일을 삭제
  1. 5 5
      .claude/plan/2026-10-08-har-shop-region-交付说明.md
  2. 24 1
      .claude/plan/2026-10-09-har-pick-dedup-retry-交付说明.md

+ 5 - 5
.claude/plan/2026-10-08-har-shop-region-交付说明.md

@@ -194,12 +194,12 @@
 ### 开放文档写了什么(你点名要的「格式」)
 
 10.2 请求表加 `province_code`/`city_code` 两行,其后一块说明写死:**与 10.1 建店 GB/T 2260
-同一套码**(省级两位、地级四位);**传代码不是地名**;`city_code` 必须属于 `province_code`;
+同一套码**(完整六位:省级 XX0000、地级 XXXX00);**传代码不是地名**;`city_code` 必须属于 `province_code`;
 **只在没传任何门店码时生效**;先同市、市无店回退全省;同地区多店按 `out_biz_no` 稳定;
-挑中回显在响应 `third_shop_code`;三种 400 文案逐字(`省份编码不存在: 99` /
-`城市编码不属于该省: 3301(省 32)` / `省份编码不能为空: 传了 city_code 就必须一并传 province_code` /
-`该地区没有可用门店: 省 32`(带市码时 `该地区没有可用门店: 3201(省 32)`))——
-**这四个字符串与测试里钉的完全同一批**,文档不是手抄的。
+挑中回显在响应 `third_shop_code`;三种 400 文案逐字(`省份编码不存在: 999999` /
+`城市编码不属于该省: 330100(省 320000)` / `省份编码不能为空: 传了 city_code 就必须一并传 province_code` /
+`该地区没有可用门店: 省 320000`(带市码时 `该地区没有可用门店: 320100(省 320000)`))——
+**这四个字符串与测试里钉的完全同一批**,文档不是手抄的。(示例码原为短码,2026-10-09 按 GB/T 2260 六位订正,见 `680406f9`。)
 
 ### 部署(与 §三 同序,换新 jar/dist 即可)
 

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

@@ -4,6 +4,20 @@
 > 状态:**已提交、未 push**(push 由你做)。origin/java = `f09e9cce`;
 > 写本文件时 `git rev-list --count origin/java..java` = **8**(上批 region 5 个 + 本批 3 个;本文件自身的提交不计入)。
 
+## ★ 2026-10-09 晚间补记 —— 批后又追加 3 个提交(六位订正 / 编号生成 / 评审修复)
+
+正文写于当天下午(批 = 3 提交 + jar `8662237e…` + dist `4b87bb40…`);此后 `java` 分支又追加:
+
+- `680406f9` 省市编码订正为 GB/T 2260 **完整六位**(20 文件:`har-region-cn.json` 重生成、7 个测试类改钉、8 处 javadoc、前端 `har.ts`/`har-openapi.md`/建店表单;`db/har-shop-region.sql` 追加「短码订正」幂等 UPDATE 段)
+- `128a2276` 建店门店编号自动生成(前端 2 文件:`utils/shop-code.ts` + 建店表单;`SP` + 时间戳 + 16 位 CSPRNG,只读、无「重新生成」按钮)
+- `946a3639` 建店弹窗警示随编号自动生成同步 —— 删去已不成立的「重复提交会被后台拒绝」,改为如实陈述(独立评审 🟡1)
+
+**现行产物(换这一套,覆盖 §二里记的指纹)**:
+- jar:`5e5bfb4747be…`(143,153,224 字节,17:08:09;含六位订正)
+- dist.zip:`ab7c0c96fbb8…`(9,377,220 字节,17:23:49;含编号生成 + 弹窗警示修复)
+
+部署顺序不变;两个 SQL **都要跑**:`db/har-callback-retry.sql` **且** `db/har-shop-region.sql`(后者自 2026-10-09 起含短码订正段);无重登、无新菜单。本补记同时把两处残留短码示例订正为六位(评审 🟡2)。写本补记时 `git rev-list --count origin/java..java` = 12,本提交计入则 13。
+
 ## 需求原文与裁定
 
 ### ① 开放 API 挑店改版(C)
@@ -15,7 +29,7 @@
 - IP 解析失败 / 该 IP 解析出归属地但无店 ⇒ **回退省份码继续挑**(两者都没有才报错)
 - 稳定散列(同一 `out_biz_no` 恒挑同一家);`out_biz_no` 为空 ⇒ 随机
 - `city_code` 字段**删除**;误传须响亮失败(Jackson `UnrecognizedPropertyException`,不静默忽略)
-- 400 文案三句:`省份编码不存在: 99` / `用户 IP 无法解析出归属地: 1.2.3.4` / `该地区没有可用门店: 省 32`(带市时 `该地区没有可用门店: 4301(省 43)`)
+- 400 文案三句:`省份编码不存在: 999999` / `用户 IP 无法解析出归属地: 1.2.3.4` / `该地区没有可用门店: 省 320000`(带市时 `该地区没有可用门店: 430100(省 430000)`)
 - 显式门店码(`third_shop_id`)优先——传了就不挑
 
 ### ② 开放接口去上游化(B)
@@ -121,3 +135,12 @@
 - 收银台腿不带门店码(地区批挂账,待拍板)
 - 收款链接批:F1 限流 / F5 订单号前缀(待拍板)
 - 挑店稳定散列 seed 用 `out_biz_no`(已实现);调用方不传 `out_biz_no` 时等价于随机 —— 开放文档已写明
+
+### 2026-10-09 独立评审后新增挂账(0 🔴 / 2 🟡 / 5 💭;🟡2 已随本批修复)
+
+- 🟡1 行为层后半:「提交成功前保留同一编号」是否改 —— 现状 = 每次打开换新(弹窗文案已如实,`946a3639`);要改须同时设计换店时的重新生成入口(只读格 + 无「重新生成」按钮会把想换一家店的运营卡死),待拍板
+- 短码订正 SQL 段 guard 偏宽:`length(x) < 6` 会把 `''`/任意短垃圾(如 `99`)补成看似合法的六位;建议 `BETWEEN 2 AND 5`(异常留在 `< 6`,只读核对④才拦得住),未动
+- `HarRegionControllerTest:90` 松懈断言 `startsWith("32")`(88 行已另钉 `length == 6`,组合偏松);建议 `startsWith("3200")` 或 equals,未动
+- `utils/shop-code.ts` 注释动机(「能在电话/微信里念得出来」)与只读自动生成格不符;建议改注释真实动机,未动
+- `logs/` 未被 gitignore:`git add -A` 会连截图/生成器/台子/日志一起收走(本仓提交一直走显式路径);建议加 ignore 条目,未动
+- 省直辖县级行政区划 4 码(419000/429000/469000/659000)截图不可见、按补零规则推;建店选到这些省前先找上游确认