v2.0: 4 分类真实数据替换 + 手册彩色重做 + 网页版改版

数据 (定位销/勾销缸/翻转缸/电缸 → Univer 真实数模)
- 新增 19 系列 1124 型号 (PIN 303 / HOK 73 / ROT 741 / ELEC 9)
- 命名规则取自官方图册 CODIFICATION KEY (pdftotext 提取), 非推测
- 解析用「官方值域校验 + 左对齐 DFS 填空」, 可处理省略空位的型号
- 参数组合唯一性门禁: 1124 型号全部通过 (避免选型静默错配)
- 占位/测试文件 (如 USP50J_0___K0 销径为空) 在解析阶段丢弃
- catalog.json 分类系列表同步; crossref 失效引用清理

手册页
- 全部 42 系列改为彩色 (此前脚本误写死 csGRAY 转灰度), 346 页
- 修复 UCBT 附图只有 1 页 (筛选条件写死 UCBT40 且漏 CLAMPING ARMS)
- gen-pending-series.py 改为扫描 manual 目录自动生成附件清单,
  避免重跑脚本把多页附件覆盖回单页

网页版
- 首页改为系列缩略图网格 (40 张: 27 张真实产品图 + 13 张占位图),
  按大类分组; 图放 web/series/<系列码>.webp, 覆盖同名文件即可替换
- 左侧树改手风琴 (默认收起, 一次展开一个), 父级带 SVG 图标,
  悬停放大动画, 按钮间距随高度均匀分布; 可收起为图标窄条
- 修复分隔条被拖出容器后无法找回 (上限改为容器感知 + resize 重夹取
  + 双击复位); 同时阻止图片原生拖拽
- 购物车打包改取 .step.gz 副档 (传输量降至约 1/4.5), 无副档自动回退
- 修复搜索到型号后点结果内容区空白 (switchTab('dim') 已失效)
- OpcPackage 超大包 (>1.5GB) 改走临时文件, 绕过 MemoryStream 2GB 上限

工具
- gen-pending-series/manual, copy-pending-step, gen-step-gz,
  gen-series-thumbs, scan-pending-series 等 11 个脚本

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
wangruiguo
2026-09-15 01:05:17 +08:00
parent 0584ba67b4
commit 3c4f236cba
483 changed files with 6520 additions and 201 deletions

View File

@@ -1 +1,174 @@
{"series": {"code": "USP", "nameZh": "USP 系列气动勾销缸", "nameEn": "USP Series Pneumatic Hook Pin Cylinder", "keywords": "usp gouxiao hook pin", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [32, 50, 63], "display": {}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/USP/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/USP/USP_manual.pdf", "model": null}]}
{
"series": {
"code": "USP",
"nameZh": "USP 气动勾销缸",
"nameEn": "USP Pneumatic Pin Clamp",
"keywords": "usp gouxiao pin clamp",
"parameters": [
{
"code": "size",
"nameZh": "规格",
"nameEn": "Size",
"keywords": "guige size",
"unit": "mm",
"type": "number",
"values": [
50
],
"display": {}
},
{
"code": "pcmodel",
"nameZh": "型式",
"nameEn": "Model",
"keywords": "xingshi pin clamp model",
"unit": "",
"type": "enum",
"values": [
"J"
],
"display": {
"J": "标准"
}
},
{
"code": "pin_dia",
"nameZh": "销径",
"nameEn": "Pin Diameter",
"keywords": "xiaojing pin dia",
"unit": "mm",
"type": "number",
"values": [
1,
2,
3,
4,
5
],
"display": {}
},
{
"code": "locating",
"nameZh": "定位销",
"nameEn": "Locating Pin",
"keywords": "dingweixiao locating pin",
"unit": "",
"type": "enum",
"values": [
"1"
],
"display": {
"1": "含定位销"
}
},
{
"code": "prog",
"nameZh": "流水号",
"nameEn": "Progressive No.",
"keywords": "liushuihao prog special",
"unit": "",
"type": "enum",
"values": [
"001",
"002",
"003",
"004",
"005",
"009",
"010",
"013",
"014",
"015"
],
"display": {
"001": "001",
"002": "002",
"003": "003",
"004": "004",
"005": "005",
"009": "009",
"010": "010",
"013": "013",
"014": "014",
"015": "015"
}
},
{
"code": "sensor",
"nameZh": "传感器",
"nameEn": "Sensor",
"keywords": "chuanganqi sensor",
"unit": "",
"type": "enum",
"values": [
"K"
],
"display": {
"K": "电子 PNP M12 (DF-K)"
}
}
],
"rules": [],
"naming": {
"stepNameTemplate": "{model}.step"
},
"attachments": [],
"variants": []
},
"attachments": [
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p01.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p02.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p03.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p04.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p05.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p06.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p07.png",
"model": null
},
{
"kind": "manual",
"lang": "",
"source": "manual/USP/p08.png",
"model": null
},
{
"kind": "datasheet",
"lang": "",
"source": "manual/USP/USP_manual.pdf",
"model": null
}
]
}