# 部署盒子方案(现场主机选型) > 状态:**选型定稿,待采购**(2026-09-09 经 grill 访谈收口) > 背景:管理系统部署有两种情况——① 直接部署在用户的 Windows 电脑;② 提供预装系统的盒子设备现场部署。本方案针对 ② 的设备选型,同时给出两种情况的差异清单。 > 术语:见根目录 `CONTEXT.md` ## 1. 已定决策 | # | 决策点 | 结论 | |---|--------|------| | 1 | 功能边界 | 盒子为"停车场现场主机",一次到位:出口扫码支付链路 + FFmpeg 转码 + 票机打印(CSN DLL)+ 操作员工作台桌面,管理端所有内容都部署上去 | | 2 | 操作系统 | **Windows 锁定**——票机 CSN USB DLL(`CsnPrinterLibs.dll`)与 winspool 打印为 Windows 专用;核心链路(纯 Go + 无 CGO SQLite + 内嵌 MQTT)本就跨平台,选 Windows 是零移植成本 | | 3 | 部署环境 | 岗亭室内(有空调、有人);因需外接操作员显示器跑管理端页面 | | 4 | 试点节奏 | 首批 1~2 台自己上门装,跑通后做整盘镜像批量复制 | | 5 | 远程运维 | **ToDesk 预装**(开机自启、免确认),用户侧与内部远程均走它 | | 6 | 预算口径 | 单台 **¥2000~2500**(品牌机含税含质保);首批 2 台 ¥4000~5000(不含操作员显示器 ¥400~600、出口屏 ¥800~1500) | ## 2. 选型清单 **机型**:Windows 无风扇工控机(岗亭室内版,不需要宽温) | 项 | 规格 | 说明 | |---|---|---| | CPU | Intel N100(四核) | Go 后端 + FFmpeg 多路转码 + 操作员桌面余量充足 | | 内存 | 16G DDR4 | 8G 够用,16G 留桌面余量 | | 硬盘 | 512G NVMe SSD | 系统 + 数据库 + 转码缓存 | | 网口 | **双千兆** | 网口1 接停车场设备网段(相机/读卡器/出口屏);网口2 接路由器外网(微信查单出站 + ToDesk)——设备网与外网隔离 | | 显示 | HDMI ×2 | 操作员显示器(管理端工作台)+ 备用 | | 串口 | COM ×1~2(RS232/485) | 串口 UHF 读卡器、串口票机预留 | | USB | ≥4 | CSN 票机、扫码枪、维护 U 盘 | | 散热/供电 | 无风扇 + 来电自启(BIOS:AC Power Loss → Power On) | 7×24 不吸尘,断电无人值守恢复 | **价格带**:白牌方案商整机 ¥1500~2200;品牌(研华、华北工控等)¥2800~3800 含三年质保。**首批建议买品牌**。 ### 2.1 网关与网络拓扑(双网口角色) 盒子兼任**设备网段的网关与唯一出入口**: ``` 互联网/物业路由器 ──> 盒子[网口2: 外网口] (微信查单出站、ToDesk 远程) 盒子[网口1: 设备网口] 192.168.60.1 ──> 设备交换机 ├─ LPR 相机 ├─ 出口屏(安卓) ├─ UHF 读卡器(TCP) ├─ 道闸(MQTT) └─ 中央缴费机 ``` - **设备网段默认与外网隔离**:设备之间本地互通即可,无出网需求;出网的只有盒子自身(支付查单、远程运维)。现场拓扑收敛为"光猫 → 盒子 → 所有设备",省一台路由器。 - **NAT 转发默认关闭**,需要设备临时出网(如相机固件升级)时开启,用完关闭: ```powershell New-NetIPAddress -InterfaceAlias "设备网" -IPAddress 192.168.60.1 -PrefixLength 24 # 临时出网(默认不执行): Set-NetIPInterface -InterfaceAlias "设备网","外网" -Forwarding Enabled New-NetNat -Name ParkingNat -InternalIPInterfaceAddressPrefix 192.168.60.0/24 ``` - 设备网段 **IP 静态分配**(Windows 桌面版无 DHCP 服务角色,不为此装第三方 DHCP),IP 分配表见现场部署 Checklist。 - **单点风险低**:盒子宕机时设备网段二层仍然互通,出口屏 ↔ 后端的支付链路不受影响,仅损失远程运维与查单出网。 - 上行接入方式:盒子外网口接**物业路由器/光猫的 LAN 口**(作为上网客户端);不做 PPPoE 拨号,不接管物业宽带。 **UPS**:默认不配。支付到账确认是查单制(`docs/adr/0002`),断电重启后订单仍在、定时任务自动补确认,不丢单;现场断电频繁再补 ¥200~400 小 UPS。 ## 3. 系统与镜像 - **系统**:Windows 11 IoT Enterprise LTSC(无商店、无强制功能更新)。停车现场禁止系统半夜自动重启更新;用专业版替代时必须手动禁用自动更新。 - **镜像制作**(支持"先 a 后 b"的批量复制): 1. 系统 + 驱动 + FFmpeg(固定目录,config.yaml 指向) 2. 后端 `smart-parking-backend.exe` 注册为 **NSSM 服务**(崩溃自动拉起、开机自启) 3. 前端 `npm run build` 静态产物由后端托管(复用 `scripts/publish-release.ps1` 打包产物) 4. ToDesk 开机自启;SQLite 备份计划任务(每 30 分钟拷 db/wal/shm 到 `D:\backup`,保留 7 天) 5. 整盘镜像存 U 盘(傲梅/DiskGenius),现场换机 ≈ 30 分钟恢复 - **每台唯一化**(现场部署时改):设备编码、`config.yaml` 通道/设备绑定、出口屏页面地址、ToDesk 设备授权。 ## 4. 两种部署情况差异清单 | 项 | 情况 1:用户 Windows PC | 情况 2:部署盒子 | |---|---|---| | 开机与性能 | 依赖用户电脑与开机习惯 | 7×24 常开,BIOS 来电自启 | | 环境 | 杀毒软件可能拦截端口/进程,需放行清单 | 镜像固定环境,无此问题 | | 数据备份 | 责任在用户(交付清单写明) | 计划任务自动备份 `D:\backup` | | 系统更新 | 必须手动禁用自动更新 | LTSC 默认无强制更新 | | 网络隔离 | 单网段 | 双网口:设备网 / 外网隔离 | | 票机/打印 | 即插即用(Windows) | 即插即用(Windows) | | 交付 | 手工安装 + 验收单 | 镜像恢复 + 每台唯一化 + 验收单 | ## 5. 现场部署 Checklist(每台) - [ ] BIOS:来电自启(AC Power Loss → Power On) - [ ] 双网口接线:设备网段 / 外网网段分离,分别记录 IP - [ ] 设备网关角色配置:盒子设备网口静态 IP(如 192.168.60.1/24,见 2.1 节),NAT 转发保持关闭 - [ ] **设备网段 IP 分配表**(静态分配,逐台登记): | 设备 | IP | 备注 | |---|---|---| | 盒子设备网口 | 192.168.60.1 | 网关 | | LPR 出口相机 | 192.168.60.11 | | | 出口屏(安卓) | 192.168.60.21 | | | UHF 读卡器 | 192.168.60.31 | TCP 模式 | | 道闸控制器 | 192.168.60.41 | MQTT | - [ ] 静态 IP 或路由器 DHCP 绑定(后端、出口屏地址都要固定) - [ ] 后端服务(NSSM)启动并自启验证;`/health` 200 - [ ] FFmpeg 路径与 `conversion-mode` 核对;`gate-simulator: false`、`debug-routes: false`(生产必查) - [ ] 通道/读卡器/道闸/出口屏设备绑定与 `config.yaml` 一致 - [ ] ToDesk 自启 + 免确认;记录设备 ID/密码到运维台账 - [ ] SQLite 备份计划任务验证(手动触发一次,检查 `D:\backup`) - [ ] 票机 USB/串口连通(上票机阶段);出口屏浏览器自启指向 kiosk 页面 - [ ] 出口屏联调开关关闭确认:`exit-kiosk` 的 mock 渠道切回 `wechat` - [ ] 微信支付商户配置(`wechat-pay` 段)填写并小额真实交易验证 - [ ] 整盘镜像更新归档(部署完成后的最终态存 U 盘) ## 6. 相关文档 - `doc/扫码支付出口设计.md` —— 出口自助支付设计 - `doc/票机对接规划.md` —— 票机链路(CSN DLL 为 Windows 依赖的来源) - `docs/adr/0001`、`docs/adr/0002` —— 支付渠道抽象与查单为主 - `scripts/publish-release.ps1` —— 发布打包脚本(镜像内容来源)