Files
OnebotCatalog/docs/更改说明-v2.1.md
wangruiguo fc5ee1dd36 v2.1: DESTACO 风格选型界面 + 参数组合补全(缺组合也能出零件号)
网页版选型改版 (仅网页版, 桌面版待同步)
- 新增零件号实时条: 边选边拼, 已确定片段实心高亮, 未定片段虚化, 进度条随选推进;
  浅色配色 (初版深色块与页面不协调, 已改); 选满且唯一命中时整块转青色实心
- 技术方案: 40 系列中仅 KC 有编码模板 → 改用「当前候选型号的最长公共前缀」,
  已验证 40/40 系列前缀单调增长(不回退)
- 参数选择由下拉菜单改为可视化选项块: 悬停抬升+青色投影, 选中青色填充+✓,
  不可选取值置灰(虚线+划线, 不消失, 让用户看到选项存在但当前组合不适用),
  再点一次取消; 有说明的显示代号+说明, 纯数值用紧凑文字块
- 参数联动仍复用 allowedOptions 规则引擎, 语义未变, 只改渲染

参数组合补全
- 原逻辑: 必须有真实数模才能生成型号 → 库里没有的组合选不出来也出不了号
- infer-sku-template.py 从已有型号反推编码模板, 得 23 个系列 100% 可复现
- verify-templates.py 作为门禁: 用模板重渲染每个已有型号必须逐字一致 ——
  该检查抓出 ULM/ULP 行程补零位数写错(2位写3位), 否则会生成 3000 个不存在的零件号
- gen-missing-combos.py 补全 8 个系列共 3157 个型号 (全库 54136 → 57293)
- 占位数模: 3157 个型号共用 1 个 PLACEHOLDER.step(4.5KB), 构建器按路径打包只存一份,
  数据包仅 2.10GB → 2.14GB (中途用硬链接方案踩坑: NTFS 上限 1024, 超出退化为拷贝白占 500MB)
- _pending_models.csv 输出待补数模清单, 供 AI 补完后替换 step_file

新增脚本: infer-sku-template / verify-templates / quantify-combo-gap /
          gen-missing-combos / gen-placeholder-step / check-combo-unique
新增文档: docs/更改说明-v2.1.md

发现未处理 (已记录在更改说明):
- 夹紧缸 9 系列一组参数对应多型号 (310 个型号, 编码含参数外尾缀, 旧码/新码混用)
- UAGP/LAGP 参数顺序与官方编码结构不符 (传感器应在转角之前)
- 17 个系列因模板不干净未补全 (宁可少补, 不生成可能不存在的零件号)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 02:14:55 +08:00

6.8 KiB
Raw Permalink Blame History

v2.1 更改说明

发布日期:2026-09-15 上一版:v2.0(4 分类真实数据替换 + 手册彩色重做 + 网页版改版)

本版聚焦两件事:选型交互改为 DESTACO 风格,以及参数组合补全(缺组合也能出零件号)。


一、选型界面:DESTACO 风格(网页版)

参照 DESTACO 配置器的交互做了改版。只改网页版,桌面版保持原样,后续再同步。

1. 零件号实时条(新增)

参数面板顶部新增一条零件号显示区,边选边拼:

  • 已确定的片段用深青色实心显示,未确定的用浅灰虚化占位
  • 底部进度条随选择推进
  • 选满且唯一命中时,整条转为青色实心渐变(完成反馈)
  • 浅色配色,与页面整体风格一致(初版曾用深色块,观感不协调,已改)

技术说明:40 个系列中只有 KC 有编码模板,无法靠模板拼号。改用**「当前候选型号的最长公共前缀」**—— 选的越多候选越少、公共前缀越长,自然拼出完整零件号。已验证 40/40 系列前缀单调增长(不回退)。

2. 参数选择改为可视化选项块(替代下拉菜单)

  • 每个维度显示为选项块网格,而不是 <select> 下拉
  • 悬停抬升 + 青色投影;选中青色填充 + ✓ 角标
  • 不可选的取值置灰(虚线框 + 划线),而不是从列表消失——用户能看到"该选项存在但当前组合不适用"
  • 再点一次可取消选择
  • 有说明文字的(如传感器 K = 电子 PNP M12)显示代号大字 + 说明小字;纯数值显示紧凑文字块
  • 连续域参数(range,如 KC 的行程)保留输入框 + 标准档位

语义未变:参数联动仍复用原有 allowedOptions 规则引擎,只改了渲染方式。


二、参数组合补全:库中缺的组合现在也能出零件号

背景

原逻辑是「必须有真实数模才能生成型号」:型号表由真实 STEP 文件扫描而来,构建器要求每个型号的数模必须存在。 结果是——库里没有的组合,用户选不出来,也拿不到零件号。

做法

1. 从已有型号反推编码模板

40 个系列里只有 1 个(KC)有现成模板。写了 infer-sku-template.py 从已有型号反推编码规则, 得到 23 个系列 100% 可复现的模板,例如:

ULP{size}{stroke:pad3}{rod}{orient}{sensor}0   →  ULP + 32 + 020 + A + E + K + 0
ULA{size}{stroke:pad3}{rod}{mount}{sensor}0
USSL{size}{pcmodel}{hook_pos}{pin_dia}{locating}{prog}{sensor}0

并加了自检门禁(verify-templates.py):用模板重新渲染每一个已有型号,必须与库中编码逐字一致。 这道检查抓出了一处真实错误——ULM/ULP 的行程补零位数写错(2 位写成 3 位), 若无此校验会生成 3,000 个不存在的零件号发给客户。

2. 补齐缺失组合

只对模板验证通过的 23 个系列补全(其余 17 个系列因旧码/新码混用、编码结构特殊,未补)。

系列 补全前 补全后
ULP 168 2,970
ULM 70 200
ULA 19 192
ULL 14 40
ULY / ULZ 各 10 各 20
USSL 7 12
ULT 3 4
合计新增 +3,157 个型号

全库型号数:54,136 → 57,293。构建通过(0 错误 0 警告)。

3. 占位数模

新增的 3,157 个型号共用 1 个 PLACEHOLDER.step(4.5KB 方块)。 构建器按路径打包,同一路径只存一份,因此数据包仅从 2.10GB 增至 2.14GB。

中途走过的弯路:先按"每型号一个硬链接文件"实现,但 NTFS 硬链接上限为 1024, 超出部分退化为真实拷贝,白占约 500MB。改为共享单文件后归零。

4. 待补数模清单

onebot-data/catalog/_pending_models.csv —— 3,157 行,列出每个待补型号及其参数,供 AI 补真实数模。 补完后把该行的 step_file 从 PLACEHOLDER.step 改为 <型号>.step 即可。


三、新增脚本

脚本 用途
infer-sku-template.py 从已有型号反推编码模板
verify-templates.py 校验模板能 100% 复现已有型号(生成新号前的门禁)
quantify-combo-gap.py 统计参数组合缺口规模
gen-missing-combos.py 补全缺失组合(--report 只统计,--write 落盘)
gen-placeholder-step.py 生成占位数模方块
check-combo-unique.py 检查"参数组合 ↔ 型号"是否一对一

四、发现但未处理的问题

1. 夹紧缸 9 个系列:一组参数对应多个型号

系列 变体数 重复组数 一组最多对应
UCBP 358 46 组 18 个型号
UCBM 266 26 组 15 个型号
UCBH 61 7 组 5 个型号
UCBQ / UCDP / UCIM / UCIP / UFL / UCBT — 2-4 组 2-6 个型号

共 310 个型号受影响。原因是这些型号的编码里有参数之外的尾缀(版本号/变体标记), 如 UCBP25AK00 vs UCBP25AK010(差末尾版本号)、UBP25010 vs UCBP25BK0(旧码/新码混用)。

影响:用户选完参数后仍无法唯一确定型号。界面已提示"该组合对应 N 个型号",但需后续补维度或清理。

2. UAGP / LAGP 参数顺序与官方编码结构不符

官方订购码顺序为 规格 - 台位 - 传感器 - 转角 - 制动 - 接口, 当前 meta 里传感器排在最后。不影响选型正确性(参数按名索引),但导致编码模板推不出来, 且界面展示顺序与官方不一致。

3. 未补全的 17 个系列

模板验证未通过的系列保持原状——宁可少补,也不生成可能不存在的零件号。


五、涉及文件

文件 改动
web/app.js 零件号实时条 + 选项块渲染(+148 行)
web/style.css SKU 条与选项块样式(+111 行)
web/index.html 新增 SKU 条容器
onebot-data/catalog/csv/*.csv 8 个系列追加 3,157 行
onebot-data/catalog/step/PLACEHOLDER.step 新增占位数模
onebot-data/catalog/_pending_models.csv 新增待补数模清单
onebot-data/tools/*.py 新增 6 个数据管线脚本

六、验证方式

  1. 构建:bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc → 应输出 系列数: 40 | 变体数: 57293,校验: 0 错误, 0 警告
  2. 网页预览:tools\serve-web.ps1 → 打开 http://localhost:8080(Ctrl+F5 强刷)
    • 选定位销 PIN → ULP → 选一个原来选不到的组合(如 63 缸 / 110 行程)
    • 应能看到零件号实时拼出、可下载(下载到的是占位方块)
  3. 模板门禁:PYTHONUTF8=1 python onebot-data\tools\verify-templates.py → 应输出「所有模板对已有型号 100% 复现」