fix(merchant): 开户行按银行名与支行名分别匹配,城市降级为本地优先排序
商户在进件里搜不到「农行邻水丰禾支行」,而这条网点在目录里是存在的
(103676368390 中国农业银行股份有限公司邻水丰禾支行)。搜不到是三层原因叠加,
每一层单独都足以把它挡掉:
- 城市是硬过滤:前端传了开户城市就追加 `and branch_name like '%城市%'`,而目录里的支行名
由县区名构成(「邻水丰禾支行」里没有「广安」),整批县区级网点被筛掉。开户城市选攀枝花时
结果集被锁死在 98 条里,把官方全名一字不差地输进去同样是 0 条。
- 简称不是子串:「农行」不是「中国农业银行」的子串,全库命中 0 条。
- 整串不连续:「农行邻水丰禾支行」在官方全名里中间隔着「股份有限公司」,子串匹配对不上。
改法:新增 BankBranchKeyword 把关键词拆成银行名与支行名两段,分别对 bank_name 与 branch_name
匹配,并把常见银行简称归一(农行、工行、建行、邮储、农商行、浦发等);空格一律去掉,所以
「农行 邻水 丰禾」也能命中;纯数字按联行号片段匹配,只记得后几位也搜得到。城市不再作为过滤
条件,改为本地网点优先排序,跨市开户的商户仍能搜到自己的开户行。
前端空关键词不再发请求(否则会拿到一份按行名排序的全国网点名单),补未搜索与未匹配两种空态,
并修掉「请尝试输入银行简称」这句已经不成立的提示。
回归:BankBranchKeywordTests(9 项解析用例)、BankBranchSearchTests(5 项对真实 MySQL 走完整
服务调用的检索用例,覆盖组合谓词与参数顺序)。