官网改版,产品展示那部分没什么可说的,几张图、几段工艺文字、一个轮播。真正花时间的是「经销商查询」这个入口。
客户给的是一张 Excel
500 多家门店,一个 sheet,列有省份、城市、门店名、地址、电话、联系人。打开文件第一眼就看到问题:同一个省有好几种写法,「内蒙古」「内蒙古自治区」「内蒙」混着;城市列里还夹了「市区」「旗舰店」这类不属于城市的值;电话有 20 多条带分机,写成 010-12345678-802 这种一串。
直接导进库,按省筛选就会裂成三个「内蒙古」。
清洗比写前台久
我们做了三件事。
省份建一张字典表,32 条,把别名统一映射过去。导入时用映射表校对,匹配不上的不静默跳过,单独列到一页「待确认」里,那次剩了 11 条,是客户自己打电话核的。
电话拆成 phone 和 ext 两个字段,展示时拼回去,拨号链接只取 phone 部分。原来一整串的文本里,分机号在手机上也点不出拨号。
城市列单独做了非空和合法性校验,把「旗舰店」这种值挪到门店类型字段。
那 11 条待确认最后怎么收的
省份字典匹配不上的 11 条,客户打电话核了两天。其中 4 条是「省」字写法不同,比如「内蒙古自治区」写成「内蒙古省」,字典里补了别名;3 条是经销商自己填了个城市名当省份,比如「深圳」;剩下 4 条是空值,客户说那几家后来不合作了,直接标成停用,没删。
停用这个状态当时是临时加的,没想到后来最常用。经销商名单每年进进出出,前台不显示停用的,后台留着,导出时单独一个 sheet。第二年客户自己往停用里挪了 20 多家,没找过我们。
电话那两个字段
拆成 phone 和 ext 之后,有一处没考虑到:有些门店留的是手机号,没有分机,ext 空着。前台拼接时判了一下,ext 为空就不显示横杠,免得出现「138xxxx-」这种半截号码。这个细节是上线第二天客户文员发截图指出来的,照着改了,没记进需求文档。
还有个小事。tel 链接在部分安卓机上会把分机号也拨出去,客户说有人投诉过拨不通。后来拨号链接只取 phone,分机单独显示在旁边,让人自己按。系统能做的到此为止。
后来再看那张 Excel
2017 年那份原始表我们留着,2024 年做经销商后台时又翻出来对过一次字段。11 列里,有 2 列这些年从没被用过:联系人性别、备注二。当年没舍得删,是怕万一要用,七年过去还是没用上。那份表文件名带「原样」,现在还在项目文件夹第一层,谁也没动过。停用状态那列,2024 年做后台时原样搬了过去,连字段名都没改,客户文员说这个状态最常用,比新增还常用。
前台就两个控件
一个省份下拉,一个关键词框。没做级联到城市,因为客户说大部分人只记得门店名或者一个区名,反而直接搜更快。搜索走的是 MySQL 的 LIKE 加一个 city 字段的普通索引,500 多条数据,全表扫也够快,没上 Elasticsearch。
结果列表每页 20 条,地址太长就折行,电话做成可点的 tel 链接。地图没接,客户说门店变动快,地图标错了比不标更麻烦。
后台
后台留了 Excel 批量导入,导入前先跑一遍校验,把重复门店号、缺省份、电话格式不对的行号列出来让人改。顺手加了查重:门店名加城市加地址前 6 个字算一个键。上线三个月客户自己导过 4 次,没再找我们。
12 月 21 号上线那天下午,我们蹲在客户办公室看他们文员试着导了一次。她传完文件,预览页跳出 3 行「省份未匹配」,自己就改了。挺好,本来就该她改。

