Files
OnebotCatalog/docs/维护手册.md
wangruiguo 3c4f236cba 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>
2026-09-15 01:05:41 +08:00

120 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 欧霓博气动元件电子目录 —— 维护手册 / Maintenance Manual
> 面向欧霓博目录维护人员。开发环境要求:Windows 10/11 + Visual Studio 2022 Build Tools(仅需其自带 csc 编译器)。
> 更完整的团队操作指南(数模替换/新增系列/打包/排查)见 `onebot-data\数据维护说明书.md`。
## 1. 数据源(统一路线)
**唯一数据源 = `onebot-data\catalog\`**:
| 文件 | 要求 |
|---|---|
| catalog.json | 目录级定义(版本/分类/系列列表),手工编辑系列列表 |
| series\*.meta.json | 每系列定义(参数/规则/显示名/附件),**由维护向导编辑** |
| csv\*.csv | 参数表:首列=型号编码(唯一),参数列名=参数代码(bore/stroke/magnet/mount...),**必须含 `step_file` 列**;UTF-8 |
| step\*.step | STEP 文件,文件名与 `step_file` 列一致(NX 母模批量导出后放这里;**.stp 后缀自动兼容**,同名即可无需改名) |
| crossref.csv | 平替对照表(可选):brand,foreign_model,our_model,note;our_model 必须存在,构建自动校验 |
| manual\<系列>\ | 手册页 PNG(render-manual-pages.py 生成) |
## 2. 日常编辑与重建
1. 双击 `bin\维护入口.bat`(密码 `onebot888`)→ 顶栏【维护入口】按钮
2. 维护窗口:当前包系列清单 + 校验
3. 【目录制作器】:Step1 顶部【数据源目录】(默认已填 `onebot-data\catalog`)→ 下拉选系列 → 编辑参数/规则/显示名/附件 →【保存配置】(写回 series\*.meta.json)→ 点 **【重建全量目录】** → 全量 .opc 生成,可一键加载验证
- 新系列:手动导入 CSV → 填系列信息 → 保存配置 → 把系列代码加进 catalog.json 的分类列表 → 放 STEP → 重建
- 等价 CLI:`bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc`(结果看 `sample\build.log`)
## 3. 校验 / Validate
维护入口 →「校验 / Validate」检查:STEP 缺失、编码重复、规则引用/冲突、附件缺失。**有 ERROR 不允许发布**(发布门禁会拦)。
## 4. 一键编译发布 / Publish
```powershell
# 前提: 先关闭正在运行的目录软件 exe 和本地预览服务器 (占用文件会导致失败)
powershell -NoProfile -ExecutionPolicy Bypass -File tools\publish.ps1 -Opc sample\OnebotCatalog_2026.08.opc -Version 2026.08
```
自动执行:自测门禁(31 项)→ 编译客户版(数据内置、维护入口剔除、图标)→ 发布目录(含本机 3D 查看器组件 ~8MB)→ 增量包 → 网页站。
产出:
- `release\OnebotCatalog_2026.08\` —— 客户交付目录,压缩成 zip 即发(工作区根有现成 zip 示例)
- `release\update_2026.08\catalog.opc` —— 增量更新包,客户替换同名文件即升级
- `release\web_2026.08\` —— 网页站,整目录上传即上线
发布前建议在**纯净 Win10/11 虚拟机(断网)**上验收:双击运行、选型、下载 STEP 并在 CAD 中打开核对。
## 5. 日常命令 / Daily Commands
| 操作 | 命令 |
|---|---|
| 编译开发版 | `powershell -NoProfile -ExecutionPolicy Bypass -File tools\build.ps1` |
| 自测 | `bin\OnebotCatalog.exe --selftest sample\OnebotCatalog_2026.08.opc`(结果 `sample\selftest.log`) |
| 全量构建 | `bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc` |
| 本地网页预览 | `powershell -NoProfile -ExecutionPolicy Bypass -File tools\serve-web.ps1`(localhost:8080,16 并发) |
| 刷新源数据(占位几何) | `powershell -NoProfile -ExecutionPolicy Bypass -File onebot-data\tools\gen-onebot-source.ps1`(NX 真实 STEP 直接替换 catalog\step\ 同名文件即可,无需跑这个) |
**注意**:编辑任何含中文的 `.ps1`/`.cs`/`.vb` 后必须先运行 `sample-data\tools\fix-bom.ps1` 再编译/运行(PowerShell 5.1/csc 对无 BOM 文件按 GBK 读取会乱码报错)。
## 6. 修改维护密码 / Change Admin Password
编辑 `src\App\App.cs` 中 `PromptPassword()` 的 `"onebot888"`,重新编译开发版即可(客户版不含维护入口,无需处理)。
## 7. 桌面 3D 预览说明
- 占位简化几何 → 桌面内置 3D 直接渲染
- **真实 NX 数模 → 窗口内直渲,不弹浏览器**(2026-08-24 起),四级优先级:
1. 有 STL 网格(`mesh\` 侧车目录,与 STEP 同名)→ 开源 Helix Toolkit 窗口内直渲
2. 无网格 → **WebView2 内嵌新迪查看器**(窗口内嵌浏览器控件,真实 STEP 直接渲染;Win11 自带运行时,Win10 装 Edge 即有)
3. WebView2 不可用 → 外部浏览器回退(程序内嵌本机微型服务器,完全离线;客户版发布目录已附带查看器组件)
4. 占位几何 → 内置自绘
- 网格生成:NX journal 导出 STEP 时同步导出(`exportStl` 开关);已有真实 STEP 用 `python onebot-data\tools\step-to-stl.py` + `simplify-stl.py` 批量转换压缩
- 网页端轻量化(glTF)待办 9,`nx-batch-export-glb.vb` 模板已备
## 8. 参数化选型引擎(一期,2026-08-25,两端一致)
- **模式开关**:series.meta.json 的 series 块加 `"mode": "parametric"` + `"modelCodeTemplate"`(语法 `{field}` 或 `{field:padN}` 前补零),参数可定义 range 域:`"type": "range", "min": 10, "max": 200, "step": 1, "gridValues": [10, 20, 30, 50, 75, 100]`。缺失字段 = 枚举模式,老系列零影响
- **语义**:CSV 仍是"标准档位网格"(搜索/平替/参数表/下载的数据源);选型面板可输入网格外的**非标组合**(range 自由输入),引擎按模板实时生成型号编码
- **非标档位行为**:标题带徽标;STEP 下载按钮置灰(请联系销售或选择标准档位);3D 展示最近标准档位近似几何 + 提示条;可加入清单但打包时跳过并注明
- **对拍门禁**:构建期强制校验——参数化系列的**全部 CSV 编码必须能被模板重新生成且一一对应**,任何一个不一致构建失败(build.log 显示"参数化对拍门禁通过: N 个编码全部一致")
- **双端一致性**:一份规则 JSON + C#/JS 各一个解释器 + 同一份测试向量 `catalog\parametric-vectors.json`(随 .opc 发布):桌面 selftest 自动对拍;网页无头 `node tools\e2e-parametric.js`(16 项)+ 购物车回归 `node tools\e2e-cart.js`
- **联动语义(重要)**:参数合法性按"域+规则"判定,**不按网格行存在性**;规则 Then 参数未选不判违背(避免选一半清空其他选项)
- **试点 KC** 已上线;推广新系列时:确认型号编码模板补零规则(对拍门禁会兜底)、按产品手册补规则、range 参数列出 gridValues
## 9. NX 按需生成服务(二期 A 版,2026-08-25,开发完成待 NX 联调/部署)
- **架构**:`bin\GenServer.exe`(csc 编译轻量后端:服务端二次校验(复用目录端同一规则引擎)→ 检索先行 → 文件任务队列 → 输出留存 → 限流/CORS)+ 常驻 NX worker(`sample-data\tools\worker_journal.vb`,每席位一个 `run_journal.exe` 进程:认领任务 → 拷母模副本 → 设表达式 → 更新 → 导出多格式 → 写结果;批量任务单会话顺序处理)
- **配置(服务器侧,`onebot-data\`)**:`genserver-config.json`(端口/API key/目录;apiKey 留空=匿名模式仅限流)、`masters.json`(母模+表达式映射+switchRules+exports)、`catalog-masters\<系列>\<母模>.prt`
- **部署三步**:① 管理员执行 `netsh http add urlacl url=http://+:8899/ user=Everyone`(否则仅本机)② 启动 GenServer ③ 每席位一个:`run_journal.exe worker_journal.vb <worker号> <genserver-config.json 路径>`(NXBIN 下,计划任务守护)
- **两端接入**:网页 `web\config.js` 的 api(空=非标下载维持置灰过渡态);桌面 = 源目录 `catalog.json` 的 `genApi` 字段(重建+发布生效)
- **检索先行**:`output\<系列>\<型号编码>\` 留存不删(全格式齐全即命中复用,不再触发 NX);任务私有工作副本任务后即删
- **多格式导出**:STEP(214)/Parasolid/IGES/STL,下载为全格式 zip;购物车含非标时打包前自动批量生成(型号子文件夹)
- **本地联调(无 NX)**:模拟 worker 的 PS 脚本 + 网页端 `tools\e2e-gen.js`(8 项)
- **NX 2506 实测 API(2026-08-26,反射探针核对,详见 `开发记录-NX2506批处理攻坚.md`)**:批处理打开部件用 **OpenBaseDisplay**(OpenBase 后 Work=NULL);CloseAll 两参数;建表达式 `Expressions.CreateExpression("Number","名=值")`;改表达式 UF `EditExp`(只改已存在);更新 `ufs.Modl.Update()`;导出器在 **Session.DexManager**(CreateStepCreator/CreateIgesCreator/CreateParasolidExporter/CreateStlCreator);journal 环境无 JSON 库 → 任务文件为行式键值;母模/worker 副本**必须清只读属性**(否则保存被拒)
- **待用户确认(上线前)**:① `masters.json` 表达式名按 NX 母模实际命名填写 ② KC 母模放入 `catalog-masters\KC\` ③ run_journal 路径(随 NX 版本)④ **卡点**:批处理模式翻译器导出空几何——需交互式 NX 录制导出宏修正 worker 导出函数,或用真母模直接实测(开发记录 §5 两方案)⑤ 部署时 `netsh http add urlacl url=http://+:8899/ user=Everyone`
## 10. 购物车批量导出(2026-08-24,两端一致)
- 加入:参数面板【加入清单】(选型完成后)/ 参数表行尾"+"或勾选行【加入清单】;顶栏【清单 (N)】角标实时计数
- 清单面板:桌面独立窗口 / 网页右侧抽屉;数量可改(只在 BOM 数量列体现,zip 每型号一份);支持删除/清空
- 一键打包:【下载全部 (zip + BOM)】→ `ONEBOT_清单_<时间戳>.zip` = 全部 STEP(型号命名)+ BOM.csv(UTF-8 BOM,Excel 直开)+ 清单.txt
- 购物车生命周期:网页刷新浏览器 / 桌面重启软件才清空;切系列/搜索/平替等操作不影响清单
- 桌面零新依赖(net48 ZipArchive);网页用开源 JSZip 3.10.1(MIT,web\libs\jszip.min.js)前端打包
## 11. 网页版系列缩略图(2026-09-14)
- 首页为**系列缩略图网格**,按大类切换;点左树大类 → 网格切换,点卡片 → 进入选型,点【← 返回系列总览】回首页
- 缩略图目录:`web\series\<系列码>.webp`(40 个系列各一张)
- **换图/补图**:把你的图按 `web\series\<系列码>.webp` 覆盖同名文件即可,无需改代码。
文件名只支持 `.webp .png .jpg .jpeg .svg`(前端按此顺序自动回退探测)
- 生成占位图:`PYTHONUTF8=1 python onebot-data\tools\gen-series-thumbs.py`
(给 `PLACEHOLDER` 列表里的系列画统一风格的"图片待补"占位图)
- 视觉风格参照 `D:\开发\bom-viewer`(青/teal 主色、大圆角、柔和阴影、卡片悬停抬升动画)
## 12. English Summary
- Data source: `onebot-data\catalog\` (catalog.json + per-series meta JSON + CSVs with a `step_file` column + STEP files + manual page PNGs).
- Edit: run `bin\维护入口.bat` (password `onebot888`) → Admin → Builder → pick series → save → 【重建全量目录】 (same engine as CLI `--buildfull`).
- Publish: `tools\publish.ps1` runs the selftest gate first, then compiles the customer exe (data embedded, no admin entry), assembles the release folder + incremental update package + static web site.
- Always run `sample-data\tools\fix-bom.ps1` after editing Chinese-containing .ps1/.cs/.vb files.