部署盒子方案.md 7.8 KB

部署盒子方案(现场主机选型)

状态:选型定稿,待采购(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 转发默认关闭,需要设备临时出网(如相机固件升级)时开启,用完关闭:

    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: falsedebug-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/0001docs/adr/0002 —— 支付渠道抽象与查单为主
  • scripts/publish-release.ps1 —— 发布打包脚本(镜像内容来源)