FDE·交付知识库
目录
卫浴经销商 门窗与淋浴房 旧改局改

21 · 卫浴经销商门店业务流

一句话:经销商行业最值钱的是「订单字段是否完整」,不是算法。AI 最容易犯的错,是把「字段缺失」当成「默认值」往下跑,最后算出一个看着像真的错价。

项目锚点 · 德莉玛门店订购单系统(本地端口 8787 / v2.5.0)

一条流水线跑的是 订单 → BOM → 玻璃图纸 → 报价。项目里真实存在的三件事:

项目事实内容
系统德莉玛淋浴房门店订购单系统 v2.5.0,Express + better-sqlite3,本地端口 8787,pm2 挂进程
产品线5 大系列:H / H4 / K / M / S。其中只有 H / S / M 配了价格,K 系列要靠 BOM 模板兜底
数据体检拿 33,176 笔历史订单 / 387 个经销商 / 2,799 个型号 跑校验:型号匹配 96.6%、厚度 95.2%、尺寸覆盖 29%、客户匹配 0%
抽样式体检抽 400 单 看 spec:97% 为 null 或「否」(等于没尺寸),只有 3 单有真实尺寸且属于 K / Y 系列,不是 H / S / M 主流系列
三个卡点① 出厂价红线(PV / KW / K1)② 尺寸数据源 ③ 订单 ↔ 经销商 ID 对照表

结论:数据量根本不够跑智能算法。这一步不是"劝退客户",是把钱花在真正缺的地方——先补字段、建数据源,再谈引擎。延伸:模块 11 · 数据迁移实战(这批历史订单怎么落成一个能查的真库)、模块 13 · 报价引擎(为什么先量覆盖率再谈算法)。

01

先看全景:一场生意在门店里被切成几段

客户进店到售后,不是一件事,是七段手工作坊式的接力。每一段的产出物,到了下一段就变成一个字段——字段断了,后面全断。

#业务段谁做用什么 / 落到哪个字段最容易错什么信息化优先级
1客户进店门店导购口头交流 + 微信;几乎不落库客户是谁、从哪来,事后全靠回忆P1
2出方案导购 / 门店设计画册 + 经验;型号 + 规格 + 颜色型号写错字(H4 写成 H),选配漏项P0
3下单导购order + order_line(dealer_id / model / spec / thick / process / qty / area)① dealer_id 挂错 ② spec 空着交 ③ 型号无码P0
4拆单门店技术员 / 厂内bom_line(bom_cat 玻璃/五金/密封/型材 + sku + qty + route + supplier + line_cost)玻璃和五金的用量算错一档,整单成本偏P0
5生产厂 / 玻璃车间玻璃图纸;thick 厚度 + process 工艺厚度/工艺没传下去,整块玻璃重做P1
6交付安装 installer / 物流出库单 + 安装单 + 照片回传尺寸和现场对不上,装不上P2
7售后 / 复购店长 / 客服客服记录(往往还在纸上/微信里)没有客户资产沉淀,二次购买不认识你P2
优先级 P0 是全篇重点:第 3、4 段(下单、拆单)是唯一决定"这条订单有没有变成数据"的两段。第 1 段和第 7 段错了只是慢,第 3 段错了是整条数据链从源头就是空的。
02

为什么「有订单 ≠ 有数据」

这句话是我在这个项目里最想让客户听懂的一句。它听起来像废话,但门店经营方普遍以为"我有三万多笔订单,我有数据了"。

有订单(表面看)有数据(能算东西看)
订单号有,33,176 笔有(唯一键)
客户 / 经销商有(订单表上写着)客户匹配 0% —— 订单和经销商对不上号
型号有,2,799 个型号型号匹配 96.6% —— 大部分能认
厚度有厚度 95.2% —— 勉强可用
尺寸「应该有吧,都是按尺寸做的」尺寸覆盖 29%,抽 400 单有 97% 是 null / 「否」
翻译成人话:这些订单能证明"卖过东西",不能证明"能算出价"。报价需要的四个关键字段里,两个还行,一个半残,一个完全为零。
这是一句被验证过的判断,不是保守:型号和厚度能匹配,说明主数据(series / product_model / sku)是干净的;但尺寸和归属对不上,说明采集环节(第 3 段)从来没被当成数据环节管理过。
03

spec 字段为空的杀伤力:一个字段能让整条流水线停摆

在门店订购单系统里,order_line 的规格字段叫 spec。它看起来只是"一个可选参数",实际是报价、拆单、玻璃图纸三处的共同上游。

下游环节需要 spec 干什么spec 为空时会怎样
报价算玻璃面积 → 面积 × 单价 × 工艺系数面积算不出来,只能报"区间价"或拍一个估算值
拆单 BOM决定标准件规格(铰链周长、胶条长度、型材长度)用量只能按默认值,BOM 是"看起来对"的错单
玻璃图纸开孔位置、分割方式、磨边工艺都要尺寸出不了图,或者出了图车间开不了料
生产排程按尺寸分批次全塞同一批,加工效率崩

实测分布(抽 400 单):

状态占比含义
spec 为 null 或「否」97%等于这条订单没有尺寸
有真实尺寸3 单且都属于 K / Y 系列,不是 H / S / M 主流系列
为什么这个分布比"97%"这个数字更扎心:剩下那 3 单有尺寸的,压根不在主力系列里。也就是说——主力的 H / S / M 三个系列,用 33,176 笔订单的体量,一条真实尺寸都没留下。
所以结论不是"补 3% 的数据就行",而是数据采样根本没落在正确的位置上。主数据(型号/厚度)是干净的,业务数据(尺寸)是空的。
04

DP 选型到型号匹配:四类匹配率分别卡在哪

"DP"在这个品类里指的是 DP 选型( doing 门型 / door pattern 的门扇配置选型)——选哪个系列、哪个门型、几个扇、什么开口方向。它是型号名(H4-T52 这种)的前半段。选型和型号对不上,后面全白搭。

校验项实测覆盖率判定卡在哪
型号匹配96.6%🟢 可用product_model.code 唯一索引在起作用,绝大多数历史单能对上型号
厚度匹配95.2%🟡 勉强厚度落在少数几个档位上,sku 主数据够用,但没有了档位就会掉到"无厚度"分支
尺寸覆盖29%🔴 致命见第 03 节:抽 400 单 97% 为空,且样本不在主流系列
客户 / 经销商匹配0%🔴 致命订单和经销商门店对不上号——不知道这张单该给谁报、算谁的业绩
四类不是一个档次的东西,别平均看待:型号、厚度是主数据质量问题(建库时能解决);尺寸是采集纪律问题(得靠表单和流程约束);客户匹配是关联关系缺失问题(得建对照表)。三种病因,三套药,不能一并"上算法"。

四类匹配率对报价引擎的实际含义

匹配率引擎能到哪一档输出长什么样
型号 + 厚度(≈96%)L2能给到标准件成本,能出 BOM
+ 尺寸(≈29%)L3 卡死面积算不出,只能报区间价(total_min / total_max 两列并存)
+ 客户匹配(0%)L4 卡死连"给谁报"都答不了,红线价体系无从挂靠
05

三个卡点之一:出厂价红线 PV / KW / K1

建材行业的价格不是"一个数",是一张带红线的表。红线是厂家给的最低出厂价,低于这条线就是串货/违规——所以系统里必须能"拦",而不是"算完才知道"。

代码性质在系统里干什么对 AI 的约束
PV出厂价 / 底价口径报价计算的乘数基准不许由模型"推"出来,只能从价表里读
KW口径 / 宽度类系数和宽度相关的换算口径变化频率高,必须按生效日期查
K1口径 / 折扣类系数和系列、经销商等级挂钩不同经销商不同值,跨单混用就是错价
这三个代码是"不能凭感觉填"的典型。AI 看到 PV 这种缩写,非常容易顺手编一个"合理值"——这就是最危险的一类错:错得很像真的。
防线只有一条:这些值只能从价表读取,读取不到就报"算不了",绝不许生成。
红线价的正确实现方式:不是"算完跟红线比一下",而是在报价结果上直接标状态——低于红线时返回结果 + below_floor: true,让人一眼看到"这条单不能这么报",而不是让人自己拿计算器去比对。
06

三个卡点之二:尺寸数据源(不是缺数字,是缺"哪来的")

"尺寸覆盖率 29%" 这句话本身还有歧义。真正难的不是"有 29% 的尺寸",而是这 29% 的尺寸可信吗、从哪来、谁改过。

缺的不是缺的其实是不解决会怎样
一个尺寸输入框尺寸的数据源定义:门店量房单?厂里复尺?还是导购口头记的?同一个客户两版尺寸,谁也不知道哪个是最终版
一个字段字段的必填纪律:下单时哪几个字段是"不填不让提交"99% 的单都能提交成功,系统就在默许空字段
一个表复尺变更的痕迹:改过几次、谁改的装不上时无法追责,只能吵
1

先定"哪些字段必须填",写进表单校验

不是全字段必填——是按系列分档必填。H / S / M 这类主力系列尺寸必填;K 系列走 BOM 模板兜底时,允许参数缺失但必须打上"模板价"标记,绝不能静默当真实尺寸用。

2

给每个字段加"来源"标记

同一个 spec 值,source = 门店量房 / 厂内复尺 / 客户口头 三种可信度不同。报价时用最高可信度的那一版。

3

上线后每周跑一次空值体检

不是上线就不管了。SELECT count(*) FROM order_line WHERE spec IS NULL OR spec='否' 这条 SQL 每周跑一次,数字从 97% 往下降就是真的在治理,不动就是假的。

这条 SQL 就是"数据治理有没有真的在推进"的唯一客观证据。比任何汇报都管用。
07

三个卡点之三:订单 ↔ 经销商 ID 对照表

客户匹配 0%,指的是:订单上虽然有"经销商"这个字段,但它和实际的经销商门店主数据对不上。

现象根因后果
同一个门店在不同订单里 ID 不同历史数据里门店是按名字存的文字,没有统一编码按经销商统计业绩时,一家店被拆成五家店
订单 dealer_id 指向不存在的行删过门店,没做软删除外键悬空,关联查询直接丢行
387 个"经销商"里大部分只有一两张单这是渠道/项目制的残留,不是零售门店以为有 387 个客户,实际能跑通业务闭环的是少数
这一条最容易被低估:型号、厚度错了你还能看见,客户匹配 0% 是静默的——系统照常出单、照常出库,只是所有按客户维度做的分析(复购率、客单价、品类交叉、RFM 分层)全部算不出来。
而按客户做分析,恰恰是经销商行业最值钱的那部分能力。

对照表怎么建(四步)

《订单 ↔ 经销商 ID 对照表》迁移步骤
  1. 拉全量:从历史订单里 SELECT DISTINCT 经销商名称 FROM order,拿到实际出现过的所有写法
  2. 归一:按名称做人工/规则清洗,同一实体只允许一个 dealer.code(如 DL01…)
  3. 回填:给每条历史订单写 UPDATE,把文字名换成 dealer_id;改前先 SELECT 同一个 WHERE 看影响行数
  4. 锁死:新单必须在下单表单里从经销商下拉里选,不许手打文字——这一步才是"以后不再复发"的关键

延伸:模块 11 · 数据迁移实战 里那套「脏数据六种典型形态」里的单位不统一和孤儿引用两种,就是这两类问题的学名。

08

给 AI 的字段完整性校验规则(缺字段就报「算不了」)

这是这一页最该被复制走的东西。不管用什么模型,把下面这张规则贴进你的系统提示词或校验层,能挡掉 90% 的"看起来很专业的错"。

#规则违规示例正确行为
R1字段缺失 ≠ 默认值spec 为空 → 取"标准 800mm"继续算立即返回 COMPLETE_REQUIRED,附上缺哪个字段
R2价格/系数只能读,不能推缺 PV → 模型编一个"合理出厂价"缺失即中断,绝不许生成数值
R3未知 ≠ 零厚度没匹配上 → 按 0 参与计算厚度档位未命中就走"未定档"分支,不参与数值运算
R4兜底必须显式标记K 系列无价 → 静默用模板价返回结果 + 标记 priced_by = template,让下游知道这是估的
R5错误必须可归因只回一句"无法报价"回 { error, missing_fields[], blocking_reason }
R6宁可少说,不可编造不确定时给个"大约"值凑上不确定就输出"该维度覆盖率 X%,不足以计算"
这套规则的价值不是"更严谨",是"可验收":以前客户说"你这系统算的价不对",你没法自证;上了 R5 之后,系统每次算不了都会明确告诉你缺哪个字段,争议从"你算错了"变成"这个字段还没录"——这是两个完全不同的对话。
09

AI 最常犯的错:把「字段缺失」当成「默认值」往下跑

同一类错误有三种长相。它们的共同点是:结果都长得像一个正常的报价单——有金额、有明细、能导出、能发给客户。这才是危险所在。

错误长相AI 实际做的看起来像什么真实后果
静默补默认值spec 空 → 用"标准尺寸"算,不加任何提示「一份完整的报价单」客户按这个价签单,实际开工发现尺寸不对
编造系数缺 PV → 说"按常规 0.85 系数"「算得很细的报价单」价格低于红线,厂家不认,或者你自己亏
混淆兜底与实测K 系列用 BOM 模板价,输出时没说是估的「和别家一样的精确价」客户拿模板价当实价砍价,门店没有还价空间
判断一个 AI 系统靠不靠谱,只问一句:当它算不出来的时候,它会不会说"我算不出来"?
会说的 → 它能被信任;说不出"算不了"、总能给你一个数的 → 它永远在编,你只是不知道哪一次是编的。
这不是模型能力问题,是校验规则问题。规则可以写,模型换不掉。
10

信息化优先级 P0 → P3:先做什么,后做什么

客户常问"能不能先上个智能推荐"。先给这张表,比讲一堆技术概念有用得多。

优先级做什么交付物为什么是这个顺序
P0下单表单强制字段校验 + 经销商下拉锁定一个能"不许提交不完整单"的表单 + 空值周报 SQL不动数据质量 ,后面全是空中楼阁
P0出厂价红线表落库(PV/KW/K1 只读路径)价表 + 报价结果带 below_floor 标记红线是合规线,必须先有
P1订单 ↔ 经销商 ID 对照表回填对照表 + 历史数据 UPDATE 记录解锁一切按客户的分析
P1主流系列(H/S/M)尺寸采集纪律分档必填规则 + 来源标记字段把 97% 的空值率往下降
P2玻璃图纸自动化、安装回传拍照图纸生成 + 回传链路生产端提效,不影响正确价
P3智能推荐、智能客服、销量预测算法模块数据达标后才谈得了
P3 那一行要跟客户一起读三遍。经销商行业最贵的错,是在 P0 没做完的时候,先花钱买了个 P3 的东西,然后发现"算法不准"——不是算法不准,是它拿到的是空字段。
11

流水线四段:订单 → BOM → 玻璃图纸 → 报价

德莉玛门店订购单系统 v2.5.0 的主链路就这四段。每一段的输出都是下一段的输入字段,中间任何一段"静默降级",都会传染到最后。

第 1 段
订单(order + order_line)
主表放整单共有(order_no / dealer_id / status / total_min / total_max),明细放每行独有(model / spec / thick / process / qty / area)。这一步决定了"这条单有没有身份"。
第 2 段
拆单(bom_line)
bom_cat 四类(玻璃 / 五金 / 密封 / 型材)+ sku + qty + route(玻璃厂/型材厂/五金厂/胶条厂)+ supplier + line_cost。这是 BOM 揭示成本的地方。
第 3 段
玻璃图纸
吃 thick(厚度)+ process(工艺)+ spec(尺寸)。这一段是"物理世界"——出错了不是数据错,是真要开料、真要装不上。
第 4 段
报价(total_min / total_max)
BOM 成本 + 红线规则 + 系列价格。H / S / M 有价可直接算;K 系列无价 → 走 BOM 模板兜底 → priced_by=template。
四段里唯一能"自证"的是第 4 段:它输出一个数,客户能立刻看对不对。第 1~3 段错了,第 4 段会用一个漂亮的数字把它盖住。所以上线验收一定从第 1 段的空值率开始验,不能从报价准不准开始验。
12

常见坑 / 红线

坑 1 · 拿「订单数量」当「数据质量」汇报

「我们有 33,176 笔订单」是数量,不是质量。真正该汇报的是四个数字:型号 96.6% / 厚度 95.2% / 尺寸 29% / 客户 0%。汇报数量会被问"那能算出价吗",汇报覆盖率会直接决定下一步做什么。

坑 2 · 抽样的单不在主流系列上

400 单里只有 3 单有真实尺寸,而且这 3 单是 K / Y 系列。如果只说"尺寸覆盖率 3%",结论方向没错,但你会误以为补 397 单就能达标。正确说法是:主力系列 H/S/M 的有效样本量 ≈ 0。

坑 3 · 用 BOM 模板价冒充实价对外报价

K 系列没价格,BOM 模板能兜底算出个数。兜底是内部算成本用的,不是对外报价用的。只要模板价 outflow 到报价结果里,就必须在输出上打标记;不打标记 = 主动制造纠纷。

坑 4 · 让 AI 去"推断"经销商归属

客户匹配 0% 的时候,模型很容易根据片区/电话区号"猜"这是哪家店。猜对是运气,猜错是事故(业绩算错、红线价给错对象)。归属关系只能来自对照表,不能来自推理。

坑 5 · 上线即不管,空值率永远 97%

表单校验加了,第一周从 97% 掉到 20%,第三周又爬回 90%——因为门店赶单时会绕开必填。所以才需要那个每周的空值 SQL 和月度盘点,否则你会以为"改了表单就完了"。

✓

自查清单

  • ✓我能把门店业务流背成七段,并说出每段落在哪个字段上
  • ✓我讲得清「有订单 ≠ 有数据」:33,176 笔订单 ≠ 能算出价
  • ✓我知道抽 400 单实测 97% 的 spec 为 null /「否」,且有效样本不在主流系列
  • ✓我能背出四类匹配率:96.6% / 95.2% / 29% / 0%,并知道它们分属三种不同病因
  • ✓我知道三个卡点是 出厂价红线 PV/KW/K1、尺寸数据源、订单↔经销商 ID 对照表
  • ✓我能说出 H / S / M 有价、K 系列靠 BOM 模板兜底 这条约束
  • ✓我写过并认可 R1~R6 六条校验规则,尤其 R1:字段缺失 ≠ 默认值
  • ✓我能举出 AI 把字段缺失当默认值跑下去的三种错误长相
  • ✓我知道上线验收应该从「第 1 段空值率」开始验,不是从报价数字准不准开始验
  • ✓我知道那条每周该跑的空值统计 SQL,能用它证明治理有没有真的在推进
面试怎么答

「你在建材/零售行业做过什么真实项目? data 层面最难的是什么?」

说立场:我做过德莉玛淋浴房的门店订购单系统,本地 8787 端口跑订单→BOM→玻璃图纸→报价这条流水线。这个项目 data 层面最难的不是算法,是"字段根本没被采集过"。

先给客户看数字。客户原本要的是自动报价,我拿他 33,176 笔历史订单 / 387 个经销商 / 2,799 个型号 跑了一遍校验,结果很直接:型号匹配 96.6%、厚度 95.2%,这两个还行;但尺寸覆盖只有 29%,客户匹配是 0%。 我又单独抽了 400 单看 spec 字段,97% 是 null 或者写着「否」——等于没尺寸。而且剩下那 3 单有真实尺寸的,是 K / Y 系列,不是主力 H / S / M。

所以我给客户的结论是:主数据是干净的,业务数据是空的。型号厚度能匹配,说明型号库、SKU 库建得没问题;但尺寸和经销商归属对不上,说明采集环节从来没被当成数据环节管理过。真正的卡点也不是缺一个报价算法,是三个前置数据缺失——出厂价红线 PV/KW/K1、尺寸数据源、订单↔经销商 ID 对照表。

所以方案改成:先把这三个前置建起来,报价引擎等数据达标再上。这避免了客户花大钱买到一个算不出价、或者算出个错价的系统。

至于 AI 这一层,我最坚持的一条规则是:字段缺失不等于默认值。 我把校验规则写死在系统里——缺尺寸就报「算不了,缺 spec」,缺 PV 就不许模型编一个"合理系数",K 系列走模板兜底必须在结果上打 priced_by=template 标记,报错必须返回缺哪几个字段。判断一个 AI 系统靠不靠谱,只问一句:它算不出来的时候会不会说"我算不出来"。会说的才能被信任;总能给你一个数的,你只是不知道哪次是编的。

价值上,这套东西改变的是对话方式:以前客户说"你这系统算的价不对",我自证不了;现在系统每次算不了都会明确说缺哪个字段,争议从"你算错了"变成"这个字段还没录"——这是两个完全不同的对话,也是数据治理的钱该花的地方。

Q2 · 「门店业务流你拆解成几段?哪几段最重要?」

七段:客户进店 → 出方案 → 下单 → 拆单 → 生产 → 交付安装 → 售后复购。

我会按"谁做 / 用什么 / 最容易错什么 / 信息化优先级"四列拆成一张表。但真正要盯的是优先级:P0 只有两个——下单和拆单。理由是:这两段是唯一决定"这条订单有没有变成数据"的段落。第 1 段(进店)和第 7 段(售后)错了只是慢一点;第 3 段(下单)错了,整条数据链从源头就是空的——型号对、厚度够,但 spec 是 null,后面报价、拆单、玻璃图纸三处一起塌。
拆单段也别低估:它输出 bom_line 的玻璃 / 五金 / 密封 / 型材四类,还带 route 和 supplier。用量错一档,整单成本就偏,而且这个错平时看不见,只有对账时才发现。

Q3 · 「客户说先上个智能推荐,你怎么接?」

先给一张优先级表,再谈智能。

我会把 P0 到 P3 摊开给他看:P0 是下单表单强制字段校验 + 经销商下拉锁定、出厂价红线 PV/KW/K1 落库;P1 是订单↔经销商 ID 对照表回填、主流系列尺寸采集纪律;P2 是玻璃图纸自动化和安装回传;P3 才是智能推荐、智能客服、销量预测。
P3 那一行我会跟他一起读三遍。因为经销商行业最贵的错,是在 P0 没做完的时候先花钱买了个 P3 的东西,然后说"算法不准"——不是算法不准,是它拿到的是空字段。

Q4 · 「为什么 K 系列不能跟 H/S/M 一样直接算价?」

因为价格表上没有 K,只能靠 BOM 模板兜底。

德莉玛 5 大系列里,H / S / M 配了价格,K 系列要靠 BOM 模板兜底。这不是"还没配上"的临时状态,是必须写进系统的约束。所以我定的规则是:兜底可以,但必须在结果上打 priced_by = template 标记。
为什么这么严:模板价是内部算成本用的,一旦冒充实价对外报价,客户会拿这个估计值来砍价,门店就没有还价空间了。而且它造成的错特别隐蔽——数字看起来完全正常,只是不准,等到对不上账才发现,已经吵完了。
所以对应的校验规则是 R4:兜底必须显式标记,和 R1(字段缺失 ≠ 默认值)配套用。

Q5 · 「你怎么证明数据治理真的在推进,不是嘴上说说?」

一条 SQL,每周跑,数字只准往下走。

SELECT count(*) FROM order_line WHERE spec IS NULL OR spec='否'——这条 SQL 就是唯一的客观证据。改完表单第一周能从 97% 掉到 20%,第三周又爬回 90%,因为门店赶单时会绕开必填;这时候你只有两种选择:要么真管,要么假装没这事。
我会把这个数字做成一个固定看板,跟型号 96.6%、厚度 95.2%、尺寸 29%、客户 0% 这四组数放一起看。四组数一起动才是治理,只有一组动说明是局部补丁。汇报的时候也只报这四组数——"我们有 33,176 笔订单"是数量,不是质量,报数量会被问"那能算出价吗",报覆盖率才能直接决定下一步做什么。

🔗 接着看

本篇讲的是业务流和数据质量。栅格类产品的结构正确性怎么度量、AI 出图怎么不把门扇数画错,在 21 组 · 门窗与淋浴房;旧改 / 局改 / 适老化的 B2B 定位与出片降本,在 21 组 · 旧改局改。
基础面:模块 11 · 数据迁移(脏数据六种形态)· 模块 13 · 报价引擎(先量覆盖率再谈算法)· 基础 16 · 数据库(27 张表怎么组织)。

下一组 22 · 门窗与淋浴房:栅格类产品的结构正确性 →