构建生产级 WMS RF:仓库权限、幂等、离线草稿和打印
一次 WMS RF 全量迁移实践:移动端身份认证、仓库权限、复用领域状态机、弱网恢复和原生网络打印。
把旧 WMS RF 迁移到新的移动技术栈,不能只把页面搬到手机尺寸。RF 是仓库执行入口,会直接改变库存、任务和设备状态,必须处理身份、仓库隔离、并发领取、弱网重试和真实硬件。
这次实现采用 Ionic Vue 与 Capacitor,PWA 和 Android 共用业务代码。后端继续使用现有 WMS 领域服务作为唯一状态机,移动接口只负责认证范围、任务编排、扫码校验、幂等和适合手持设备的响应。
仓库范围必须进入身份
UPM 增加 RF 操作角色和仓库授权。登录后的 JWT 携带允许访问的仓库范围,后端从认证上下文解析当前操作者。
客户端不能通过请求参数伪造公司或仓库。切换仓库时也必须在服务端授权集合中验证。这样即使有人修改移动请求,也无法领取或确认其他仓库的任务。
幂等与任务互斥
RF 常处于不稳定网络中。用户点击确认后没有及时看到响应,最自然的动作就是再次点击。如果接口没有幂等,库存和任务可能被重复变更。
每个写操作带稳定幂等键,超时后保留原键重试。任务领取使用互斥和版本检查,避免两台设备同时取得同一任务。移动层不复制库存规则,而是调用已有领域服务,让 Web 与 RF 共用状态机和事务边界。
离线不是伪造成功
客户端保存草稿、扫描结果和待提交操作。网络失败可以进入待同步队列,但业务校验失败必须立即展示;版本冲突要求刷新数据后由用户确认重做。
扫码层统一处理相机、硬件输入和手工输入,并进行短时间去重。附件限制大小和数量,超时不会丢弃用户已经录入的工作。
原生打印与可替换适配
Android 增加网络打印插件,用于发送服务端生成的 PDF 或打印数据。插件与页面之间保持明确接口,真实设备不可用时 Web 端仍可以完成大部分流程测试。
打印、扫码和权限都通过原生适配层封装,避免业务页面直接依赖设备 SDK。后续更换打印机或扫描硬件时,修改范围可以限制在适配器内。
分层验证
验证覆盖后端模块测试、移动端单元测试、浏览器冒烟测试、TypeScript 构建、Capacitor 同步、Android 单测和 Debug APK。还增加迁移矩阵、权限隐私说明、并行切换手册以及专用冒烟测试工具。
自动化检查全部通过,但真实 RF 与打印机仍被明确列为现场验收项。模拟和自动化可以证明接口、状态和构建正确,却不能替代射频设备的扫描速度、网络质量和打印效果。
生产级 RF 的关键不是页面数量,而是任何一次扫描和确认都可追踪、可重放但不重复,并且永远不能越过仓库边界。
先说明系统,再说明症状
如果需要生产排障、DevOps 交付或物流系统集成协作,请提供当前表现、预期结果、受影响环境、可用日志或数据样例,以及发布限制。我会从现有证据开始判断。
通过邮件开始