فهرست منبع

docs(进件): Task 4 修复轮 2 - commitMerchantInfo javadoc 两处失实断言订正(零行为改动)

修复轮 1 在同一段 javadoc 新增的两条断言,重审实测都不成立:

(F1) 原句「那张表是创建页(196236555)那 26 项的翻译表」/「那张表的 26 项与必填矩阵
一一对应」:LABELS 是**创建页请求参数表**的翻译表,共 62 项(源文件 62 次 labels.put、
62 个去重键,运行时 LABELS.size() 同样是 62;LsyMerchantRequiredFields 自己那行也写着
「覆盖该表的全部 62 个参数」)。26 是**必填项缺失清单**的条数(LsyOnboardingServiceTest
里「共 26 项」那条断言),与这张表不是同一个集合 —— 两个计数被串了。后半句另有一层假:
表是「创建页 62 个参数」、矩阵是「必填项」,不是一一对应。

(F2) 原句「走 LABELS.get(...) 只会在运行时抛它自己那条 IllegalStateException
(「没登记标签」)」:实测六个键都取回 **null**,不抛异常 —— 该表是
Collections.unmodifiableMap 包出的不可变 Map,缺键按 Map.get 的约定返回 null。
引的那句异常消息在 java/src 里只命中这一行断言自己;真的那句在另一个方法 labelsOf()
(缺失清单渲染用,与本条路径无关)。真后果是**静默**的:null 被当成 label 传进
requireText,字段非空时它根本用不上(值照发),字段空白时 400 文案里字段名位置是字符串
null(实测拼出「null不能为空」)—— 不响亮也读不出是哪个字段,比一声 500 坏。

保留原警告「不要为了『统一』把这六个塞进那张表」,只把它给的理由换成真的那条:
LsyMerchantRequiredFieldsTest 的 LABELS_transcribesEveryParameterOfTheCreatePage 用
assertEquals 把该表键集钉成**不多不少**等于创建页那 62 个参数,多一个键就不相等。

改法:整段重写为两条 ★(为什么取字面量:表 62 项、不含这六个键;取字面量的第二个理由:
真去取得到的是 null 及它的后果),六个键的枚举与「与 createShop 同款」保留。
未引入任何未实测的数字或标识符。测试未动(那条「共 26 项」是对的,保持原样)。

验证:本文件的非注释改动行 = 0(git diff -U0 过滤 javadoc 行后输出为空);
全量测试改前/改后同为 Tests run: 548, Failures: 0, Errors: 0, Skipped: 0,BUILD SUCCESS。
alphaH 3 هفته پیش
والد
کامیت
7436b2a364

+ 17 - 8
java/src/main/java/com/payment/platform/module/payment/leshouying/service/LsyOnboardingService.java

@@ -540,14 +540,23 @@ public class LsyOnboardingService {
      * <br>★ 与 {@link #updateMerchant} 的取舍**不同是有意的**:那边只校验两项,因为该页的
      * 「必填=是」与「增量更新」互相矛盾(裁定 R39/R40)。
      * <br>★ <b>这六个 {@code label} 为什么是字面量而不是 {@link LsyMerchantRequiredFields#LABELS}</b>:
-     * 那张表是**创建页**(196236555)那 26 项的翻译表,**不覆盖**本页的六个字段 ——
-     * 实测 {@code mcht_aptitude} / {@code mcht_aptitude_note} / {@code store_Loca} /
-     * {@code mcht_Landuse} / {@code longitude} / {@code latitude} 六个键在
-     * {@code LsyMerchantRequiredFields} 里**命中数全是 0**(六个中文标签同样 0 命中)。
-     * ⇒ 在这里走 {@code LABELS.get(...)} 只会在运行时抛它自己那条
-     * {@code IllegalStateException}(「没登记标签」),所以取字面量,
-     * 与 {@link #createShop} 同款;**不要**为了「统一」把本页六个字段塞进那张表
-     * (那张表的 26 项与必填矩阵一一对应,塞进去会动到矩阵的覆盖面断言)。
+     * 那张表是**创建页**(196236555)请求参数表的翻译表,**共 62 项**(源文件里 62 次
+     * {@code labels.put}、62 个去重键,运行时 {@code LABELS.size()} 同样是 62),
+     * 而它**不覆盖**本页的六个字段 —— 实测这六个键在 {@code LsyMerchantRequiredFields} 里
+     * 一次都搜不到,在创建页转写件里也是 0 命中,只出现在**本页**(196236563)转写件里
+     * ({@code mcht_aptitude} / {@code mcht_aptitude_note} / {@code store_Loca} /
+     * {@code mcht_Landuse} / {@code longitude} / {@code latitude} 是提交页自己的参数)。
+     * ⇒ 取字面量,与 {@link #createShop} 同款;**不要**为了「统一」把这六个塞进那张表 ——
+     * {@code LABELS_transcribesEveryParameterOfTheCreatePage} 用 {@code assertEquals}
+     * 把那张表的键集钉成**不多不少**等于创建页那 62 个参数,多一个键就不相等。
+     * <br>★ <b>取字面量的第二个理由:真去那张表取这六个键,拿到的是 {@code null},不是异常。</b>
+     * 它是 {@code Collections.unmodifiableMap} 包出来的不可变 Map,缺键按 {@code Map.get}
+     * 的约定返回 {@code null}(实测六个键都取回 {@code null},对照键 {@code merchant_name}
+     * 取回的是中文标签);抛异常的是**另一个方法** {@link #labelsOf}(缺失清单渲染用,
+     * 与这条路径无关,抛的是 {@code IllegalStateException})。这个 {@code null} 被当成
+     * {@code label} 传进 {@link #requireText} 的后果是**静默**的:字段非空时它根本用不上
+     * (值照发,只是这个字段没有中文名可报);字段空白时抛出的 400 文案里字段名位置就是
+     * 字符串 {@code null}(实测拼出来的是「{@code null}不能为空」)—— 不响亮,也读不出是哪个字段。
      * <br>★ {@code label} 一律**逐字**取该页说明列(含上游错字「营业地址维度」),
      * 与 {@code LABELS} 那条「标签逐字取说明列」的规则同源 —— 照抄而不是顺手正字,
      * 理由见下方 {@code latitude} 那一行旁边的注释。