# OnebotCatalog —— 欧霓博气动元件电子目录软件（自研）

对标 CADENAS PARTdataManager 目录光盘，但不依赖任何 CADENAS 组件。目标：普通客户通过软件选型并**下载 STEP 文件**，导入自己的 CAD 使用。

> 📌 项目全景/架构/踩坑/待办见同目录 **项目总览.md**（继续开发的入口）；本文件夹各目录用途见 **文件夹说明.md**；改数据看 **onebot-data\数据维护说明书.md**；NX 母模建模看 **sample-data\tools\NX母模建模操作说明书.md**。

## 现状（2026-08-22）

- **M1/M2/M3 全部完成**：桌面版（含维护入口）+ 网页版（纯静态）+ 一键发布三份产物 + 真实数据入库（17 系列 52,193 型号；含 2026-08-23 新增的 6 个 UNIVER 系分类样板系列 UCBM/ULP/USP/UGP/UAGP/LAE）
- 数据源：`onebot-data\catalog\`（catalog.json + series\*.meta.json + csv\ + step\ + manual\ + crossref.csv 平替对照）
- 特色功能：平替对照（竞品型号↔我方型号，搜索/标签页双入口）、手册页对照、新迪 3D（menu=min 精简）、.stp/.step 后缀兼容
- 自测：ONEBOT 包 25 项 / 样例包 40 项（`--selftest`，结果 `sample\selftest.log`）
- 品牌：ONEBOT；维护密码：onebot888

## 目录结构（自包含布局，整体拷贝不断链）

```
OnebotCatalog/
├── 项目总览.md / 文件夹说明.md / 设计文档 / 开发提示词   ← 文档都在根
├── src/            # 源代码: App(WPF界面) + CatalogCore(数据包/规则引擎/构建器) + Viewer3D(自绘3D)
├── bin/            # 编译产物: OnebotCatalog.exe(开发版) + OnebotCatalog-Customer.exe(客户版) + 维护入口.bat
├── sample/         # 数据包 .opc + selftest.log + SC-meta.json(单系列配置样例)
├── release/        # 交付产物: OnebotCatalog_2026.08\(客户版目录) + update_2026.08\(增量包) + web_2026.08\(网页站)
├── web/            # 网页版前端源码 (纯静态: index.html/app.js/style.css)
├── viewer/         # 新迪 3D 查看器本地副本 (桌面浏览器预览/网页 3D; 原项目 Z 盘只读)
├── tools/          # build.ps1 编译 / publish.ps1 一键发布 / serve-web.ps1 本地预览(16并发) / fix-bom.ps1 等
├── assets/         # OneBot 图标 (编译进 exe)
├── docs/           # 用户手册 / 维护手册
├── onebot-data/    # ★唯一数据源★ catalog\ + 生成工具 + 数据维护说明书.md
└── sample-data/    # 样例数据 + NX 工具 (nx-batch-export.vb 批量导出 / nx-batch-export-glb.vb / 母模说明书)
```

## 常用命令

```powershell
# 编译开发版
powershell -NoProfile -ExecutionPolicy Bypass -File tools\build.ps1

# 自测 (结果看 sample\selftest.log)
bin\OnebotCatalog.exe --selftest sample\OnebotCatalog_2026.08.opc

# 全量构建 (统一路线: 源目录 → .opc; 维护窗口【重建全量目录】同内核)
bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc

# 一键发布 (自测门禁 → 客户版 exe(数据内置) → 光盘目录+增量包+网页站; ★先停 serve-web 和运行中的 exe★)
powershell -NoProfile -ExecutionPolicy Bypass -File tools\publish.ps1

# 本地网页预览 (localhost:8080, 关掉即停)
powershell -NoProfile -ExecutionPolicy Bypass -File tools\serve-web.ps1

# 运行 (客户模式 / 维护模式)
bin\OnebotCatalog.exe sample\OnebotCatalog_2026.08.opc
bin\OnebotCatalog.exe sample\OnebotCatalog_2026.08.opc --admin    # 或双击 维护入口.bat (密码 onebot888)
```

**注意**: 编辑任何含中文的 .ps1/.cs/.vb 后必须运行 `sample-data\tools\fix-bom.ps1` 再编译/运行（PowerShell 5.1/csc 对无 BOM 文件按 GBK 读取）。

## 与设计文档的偏差（环境适配）

| 设计文档 (M1) | 实际实现 | 原因 |
|---|---|---|
| C# / .NET 8 (WPF+MVVM) | C# / .NET Framework 4.8 (代码式 WPF) | 本机无 .NET SDK；net48 内置于 Win10/11，客户机免装运行时 |
| SQLite + FTS5 | catalog.json (zip 内) + 内存查询 | 避免外部依赖；10 万级变体内存 LINQ 足够 |
| Helix Toolkit 渲染 | WPF 内置 Viewport3D + 自绘解析器 | 零依赖；真实 B-rep 走浏览器+新迪查看器（内嵌本机服务器） |
| 预生成预览网格 | 占位几何直接解析；真实数模浏览器预览 | 真实 CAD 通用 STEP 由 NX 母模批量导出（预生成变体） |
| MVVM | 代码式事件驱动 | 保持模块分层（Core 不依赖 UI） |

## 已知简化（诚实清单）

- 维护密码硬编码 `onebot888`（在 App.cs，未移配置）
- 桌面 3D：真实 B-rep **窗口内直渲、不弹浏览器**——有 STL 网格走开源 Helix Toolkit（MIT），无网格走 **WebView2 内嵌新迪查看器**（真实 STEP 直接渲染，Win11 自带运行时）；两者都不可用才回退外部浏览器；网页轻量化（glTF）待办 9
- 行程为离散标准档位（10/20/30/50/75/100）；"任意行程"待参数化二期（NX 运行时生成，待办 7）
- 网页 3D 对占位 STEP 走 Canvas 回退；真实 NX STEP 走新迪渲染（已验证）
- 发布站 app.js 的 `VIEWER_BASE` 需按生产部署改前缀（见项目总览 §12）

## 待办（见项目总览 §9 完整清单）

- NX 母模批量导出真实 STEP（KC-00-32x10 已试点；母模说明书见 sample-data\tools\）
- 代码签名证书 / 虚拟机验收 / 检查更新 / 参数化二期 / TC 集成（可选）
