Fosi Fossil Service
Small teams. Open source. Built on Fossil.

IaC / SwiftFlow

High-performance WMS with wave picking, smart routing, and real-time inventory visibility.

Public | Owner: IaC | Default branch: trunk | Last update: 2026-10-23 14:37

Artifact 3709f058d0772a77d93a8b7804a74eec29ac53a03445cb2d02d0ec4a1b071ef2:


SwiftFlow WMS 仓储管理系统 - 需求与系统规格说明书 (PRD)

文档版本 状态 编写日期 关联系统
v1.0.0 评审定稿 2026-10-22 QL361 ERP (只读逆向对接) / SwiftFlow 后端与多端

1. 项目概述与业务背景

1.1 项目目标

SwiftFlow 是一套基于 Monorepo(单仓库) 架构的现代化、高并发、精细化仓储管理系统(WMS)。 系统以后端 Gleam (基于 Erlang BEAM 虚拟机) 为核心引擎,实现对商品生命周期、批次保质期、四级库位、扫码作业及多仓库存的精细化管控。

1.2 核心业务边界与定位


2. 总体架构与多端定位

flowchart TD
    QL[QL361 云平台\n22beta.ql361.com] -->|逆向只读 API 抓取| SYNC[shared/ql361api\nGleam 逆向会话与数据抓取引擎]
    SYNC -->|标准化清洗数据| BACKEND[backend/ Gleam 后端核心\n业务逻辑 / RBAC / 状态机]
    
    subgraph MultiTerminal [多端协同体系]
        BACKEND <-->|RESTful / WebSocket| WEB[web/ Vite Web 端\n管理控制台 / 数据大屏 / 报表]
        BACKEND <-->|RESTful / 本地外设通讯| DESK[desktop/ 桌面端 (Win/macOS)\n电子秤通信 / 标签与面单批量高速打印]
        BACKEND <-->|RESTful / 扫码接口| MOB[mobile/ APP 端 (iOS/Android)\n工业 PDA 红外扫码 / 移动扫码作业]
        BACKEND <-->|RESTful / 扫码接口| MINI[miniapp/ 微信小程序端\n便捷出入库 / 移动库存查询]
    end

2.1 终端职责划分矩阵

终端 运行形态 面向角色 核心职责 特色技术需求
Web 端 (web/) 浏览器 (Vite SPA) 系统管理员、仓管主管、审单员 全局基础配置、RBAC 授权、波次策略调度、多仓报表、QL361 同步监控 现代化响应式后台、图表可视化
桌面客户端 (desktop/) Windows & macOS 打包复核员、发货操作员 功能与 Web 端一致,重点强化发货工作台:高速打包复核、打单发货 直接连接本地硬件外设(热敏打印机、串口/USB 电子秤)
APP 移动端 (mobile/) 移动终端 (iOS/Android) 库内作业员(上架、拣选、盘点、移库) 移动库内作业,执行入库验货、库位绑定、按路径波次拣货、盘点录入 支持手机摄像头扫码与工业级 PDA 红外扫描头(广播监听)
小程序端 (miniapp/) 微信小程序 仓库作业员、现场主管 轻量作业端,临时扫码收发货、退货验收、快速库存与库位查询 微信原生扫码与蓝牙便携打印机支持

3. QL361 逆向 API 对接规范 (shared/ql361api)

3.1 会话管理与认证机制

3.2 同步策略模型

  1. 后台轮询调度(Polling):
    • 定时拉取(例如默认每 3~5 分钟):抓取最新的“待发货销售订单”与“待入库采购单”。
    • 抓取商品增量:检测是否有新增 SKU,自动同步基础信息。
  2. 操作驱动主动查询(On-demand):
    • 管理员在 Web/桌面端可随时点击“立即同步 QL361 订单”。
    • 扫码作业若扫描到本地未缓存的新条码,触发实时 API 查验。

3.3 数据映射模型

QL361 实体 SwiftFlow WMS 本地实体 映射处理策略
商品档案 (Goods) Product & Sku 映射商品名称、编码、条码、规格、单位;本地补充安全库存、默认库位等
销售订单 (Sales Order) OutboundOrder (出库单) 仅抓取“已审核/待出库”状态订单,本地生成出库任务
采购进货单 (Purchase Order) InboundOrder (入库单) 抓取“待收货”单据,本地生成入库验货任务

4. WMS 核心业务功能规范

4.1 仓储空间与库位管理

4.2 采购入库作业流程

  1. 任务生成:由 QL361 采购单自动抓取生成,或手工新建到货单。
  2. 移动端收货验货:
    • 作业员在 APP/小程序扫码点验到货数量。
    • 批次与保质期录入:强制录入生产批次号(Batch No)、生产日期、保质期到期日。
  3. 上架推荐与确认:
    • 系统根据“同品集中”、“先进先出便利性”算法智能推荐目标库位。
    • 作业员至指定库位,依次扫描“库位条码”与“商品条码”,确认上架并生效可用库存。

4.3 销售出库作业流程(双模式支持)

flowchart TD
    ORDERS[QL361 待发货订单] --> AUDIT{出库模式分流}
    
    subgraph ModeA [模式一:一单一拣 / 边拣边打]
        AUDIT -->|急单 / 大件 / 散单| SINGLE[单订单拣货任务]
        SINGLE --> S_PICK[作业员扫码拣货 (推荐库位)]
        S_PICK --> S_PACK[直接复核称重打单]
    end
    
    subgraph ModeB [模式二:波次批量拣货 + 打包播种]
        AUDIT -->|高频同类订单| BATCH[波次生成引擎 (Wave)]
        BATCH --> B_PICK[生成汇总拣货单 + 路径优化]
        B_PICK --> B_STATION[运至打包分拣台 (播种墙)]
        B_STATION --> B_SEED[二次分播扫码复核]
        B_SEED --> B_PACK[称重校验 + 批量打印面单]
    end
    
    S_PACK --> OUT_FINISH[出库完成 / 扣减本地库存]
    B_PACK --> OUT_FINISH

4.4 库内管理与动态盘点

4.5 售后退货与逆向物流


5. RBAC 权限与多仓数据隔离模型

5.1 权限架构设计

系统采用严格的 RBAC (Role-Based Access Control) 模型,结合多仓数据范围约束: $$text{有效操作权限} = text{功能权限点 (Action)} cap text{管辖仓库范围 (Warehouse Scope)}$$

erDiagram
    USER ||--o{ USER_ROLE : has
    ROLE ||--o{ USER_ROLE : assigned_to
    ROLE ||--o{ ROLE_PERMISSION : contains
    PERMISSION ||--o{ ROLE_PERMISSION : belongs_to
    USER ||--o{ USER_WAREHOUSE : authorized_to
    WAREHOUSE ||--o{ USER_WAREHOUSE : assigned

5.2 预设系统角色与职责划分

角色编码 角色名称 访问终端权限 核心权限与职责
ROLE_SYS_ADMIN 超级管理员 Web / 桌面端 系统参数配置、多仓建立、QL361 账号配置、RBAC 授权、审计日志查看
ROLE_WH_MANAGER 仓库主管 Web / 桌面端 / 小程序 盘点任务发起与差异审批、损益确认、波次策略配置、员工绩效统计
ROLE_ORDER_CLERK 制单/调度员 Web / 桌面端 审核出入库任务、手动触发 QL361 订单同步、波次组单与异常单标记
ROLE_PACKER 打包复核员 桌面工作台 (Win/Mac) 播种分选、电子秤称重复核、面单打印、发货封箱
ROLE_OPERATOR 库内作业员 APP (iOS/Android) / 小程序 移动扫码收货、库位上架、波次拣选、移库理货、退货验收

5.3 多仓数据隔离规则

  1. 行级数据过滤:所有与库存、单据、库位相关的数据库查询,后端上下文自动附加 warehouse_id IN (user_authorized_warehouses) 条件。
  2. 跨仓防串单:移动端作业员在登录或开始作业前需选择“当前作业仓库”,无法扫描或操作其他仓库的库位与库存。

6. 软硬件与外设交互技术标准

6.1 扫码体系与 PDA 适配

6.2 桌面端硬件外设驱动


7. 数据实体与核心表结构设计 (Gleam 模型设计)

7.1 核心数据实体清单

  1. User / Role / Permission:RBAC 基础实体。
  2. Warehouse / Location:多仓库及四级库位实体。
  3. Product / ProductSku:商品主数据与条码。
  4. Inventory / InventoryBatch:库存现存量与批次库存(记录保质期、批次号)。
  5. InboundOrder / InboundItem:采购入库单及明细。
  6. OutboundOrder / OutboundItem / Wave:销售出库单、明细及波次组。
  7. StockMove / StockCheck:移库单与盘点单。
  8. Ql361SyncLog:逆向抓取与同步日志。

8. 实施里程碑规划

Clone

You can clone this repository with the following command:

fossil clone https://fosi.dev/IaC/SwiftFlow

Contribute

The best way to contribute is through e-mail. See the project documentation for more details.