# 工作交接：NX 按需生成服务（二期 A 版）

> 给接手的同事/新会话。读完这份 + `项目总览.md` + `开发记录-NX2506批处理攻坚.md` 即可快速跑起来。
> 更新：2026-08-27

## 一、一句话现状

**软件侧全部打通，两天卡点（NX 批处理导出 0 solid）已解决，全链路实测通过。现在只等真实母模（母版）就位。**

## 二、系统由 3 个进程组成

| 进程 | 端口 | 作用 | 怎么启动 |
|---|---|---|---|
| **网页端** serve-web.ps1 | 8080 | 选型界面（客户看到的就是这个）| `_start_all.bat` 不含它，需单独起，或见 §五 |
| **GenServer.exe** | 8899 | 生成服务后端（队列/校验/下载/预览）| `_start_all.bat` 第 3 步 |
| **NX worker** run_journal | — | 常驻轮询任务，调 NX 生成数模 | `_start_all.bat` 第 4 步 |

## 三、一键启动（最关键的一条命令）

```
d:\开发\OnebotCatalog\_start_all.bat
```

它会：停旧进程 → 编译 GenServer → 启动 GenServer → 启动 NX worker → health 自检。
浏览器开 `http://localhost:8080`，底部信息栏右侧有状态圆球：**绿=就绪，橙=等 worker，红=故障**。

## 四、UG（NX）配置后台怎么进

浏览器开：**`http://localhost:8899/admin`**

**密码登录**：默认密码 `onebot888`。打开 `/admin` 先弹登录页 → 输密码 → 进后台。

后台是**顶部三个 tab**（点击切换）：
1. **UG 配置**：NX 版本目录（自动探测 2506/2512，可手动选）、数据源/母模/输出/任务/工作各目录、端口、API Key、管理页密码、队列上限、批量上限、限流
2. **参数配置**：直接编辑 `masters.json`（expressionMap / switchRules / exports），保存后即时热重载，无需重启
3. **模型管理**：手动清理（一键清空 output 目录）+ 定时清理（设置留存时长 outputTtlHours，0=永不清空）

- 密码改法：`genserver-local\genserver-config.json` 里 `adminKey` 字段（默认 `onebot888`）

## 五、网页端单独启动

`_start_all.bat` 没包含网页端（它是独立的 serve-web）。单独起：

```
d:\开发\OnebotCatalog\_start_web.bat
```

（站点在 `release\web_2026.08\`，`config.js` 里 `api` 已指向 `http://localhost:8899`）

## 六、母模 ↔ 参数的对应关系（建模工程师必读）

对应靠 `onebot-data\masters.json` 这张翻译字典：

```json
"KC": {
  "masterPart": "KC_master.prt",
  "expressionMap": { "bore": "bore", "stroke": "stroke" },   // 尺寸参数 → NX表达式名
  "switchRules": [
    ["magnet", "", "magOn", "0"], ["magnet", "M", "magOn", "1"],
    ["mount", "", "mountIdx", "0"], ["mount", "FA", "mountIdx", "1"], ... 
  ],                                                          // 枚举开关 → NX表达式
  "exports": { "step": "214", "iges": true, "prt": true }
}
```

**铁律**：母模里的表达式名必须和 `masters.json` 写的**一字不差**（`bore`/`stroke`/`magOn`/`mountIdx`）；`bore`/`stroke` 带 mm 单位，`magOn`/`mountIdx` 是纯数字开关；磁石/固定形式用「按表达式抑制」切换。

**待确认**：`type`（00/02/03）是否影响几何？影响则补映射，不影响则忽略。

## 七、真实母模就位后做什么

1. 把交互式建模的真实气缸母模命名 `KC_master.prt`，放到 `catalog-masters\KC\` 覆盖占位母模
2. 重跑 `_start_all.bat`
3. 网页选 KC + stroke=87（非标）→ 在线生成 → 预览 → 下载
4. NX 打开生成的 `.stp` 核对缸径/行程与请求一致

## 八、关键踩坑（接手前必看）

1. **`.bat` 必须纯 ASCII 无中文**——cmd 按 GBK 读，中文会拆坏命令报"XX不是内部或外部命令"（见记忆 `bat-ascii-no-chinese`）
2. **编译前先停 GenServer**——exe 被运行中进程锁住会 `error CS2012`
3. **批处理里别用 DexManager 导出**——NX 2506 的 ST-DEVELOPER 翻译器在 run_journal 里判 0 solid，正解是独立命令行翻译器 `step214ug.exe`(.prt→.step)/`iges.exe`(.prt→.igs)
4. **配置以 D 盘为准**——W 盘是旧 TeamCenter 映射已废弃
5. **前端 dev 源 `web/` 与发布产物 `release\web_2026.08\` 要同时改**——serve-web 服务的是 release 目录

## 九、待办（剩余）

1. ⭐ **真母模**：建模工程师做真实气缸母模（等用户）—— 唯一真正卡进度的
2. **NX 2512 实测**：换机后先验证 journal API + step214ug.exe 在 2512 下可用
3. **生产部署**：netsh urlacl 授权、网页 config.js 填生产地址、桌面端 genApi 字段
4. **待确认**：`type`（00/02/03）是否影响几何，影响则补 masters.json 映射（后台「参数配置」tab 可直接改）

> 注：参数映射网页后台编辑、密码登录、模型管理（手动/定时清理）均已在 `/admin` 后台实现。
