WMS仓储管理系统全栈开发计划
技术架构
后端(backend/)
框架: NestJS + TypeScript
ORM: Prisma
数据库: MySQL (密码: root)
认证: JWT + 角色权限 (RBAC)
API文档: Swagger
打印: Puppeteer / jsPDF
文件上传: Multer
PC管理端(frontend/)
框架: Angular 17+
UI库: Ngx-admin (基于 Nebular)
状态管理: NgRx / RxJS
HTTP客户端: HttpClient + 拦截器
图表: ECharts / Chart.js
移动端(mobile/)
框架: Vue 3 + TypeScript + Vite
UI库: Vant / NutUI
HTTP: Axios
跨平台: 同时构建H5 + UniApp(可选)
部署(deploy/)
方式: Shell/Batch脚本一键部署
包管理器: 使用国内源 (npm --registry https://registry.npmmirror.com)
环境: MySQL + Node.js + Nginx
数据库设计(MySQL)
核心数据表
表名 说明
users 用户表
roles 角色表
permissions 权限表
role_permissions 角色权限关联
organizations 组织架构
warehouses 仓库表
zones 库区表
locations 库位表
materials 物料/商品表
suppliers 供应商表
customers 客户表
stock_orders 库存单据统一表
stock_order_details 库存单据明细表
inventory 库存实时表
inventory_batch 批次库存表
inventory_logs 库存流水日志
check_orders 盘点单
check_order_details 盘点单明细
transfer_orders 调拨单
transfer_order_details 调拨单明细
loss_orders 报损单
print_templates 打印模板
custom_fields 自定义字段定义
custom_field_values 自定义字段值
system_settings 系统设置
operation_logs 操作日志
阶段一:项目框架搭建与基础模块(预计1-2轮)
Task 1.1: 后端框架初始化
初始化NestJS项目,配置TypeScript、ESLint、Prettier
配置Prisma连接MySQL,定义基础Schema(users, roles, permissions)
配置Swagger API文档
实现JWT认证模块(登录、注册、Token刷新)
实现RBAC权限控制中间件
实现全局异常拦截器和操作日志拦截器
测试: 启动后端服务,验证Swagger文档和登录接口
Task 1.2: PC前端框架初始化
初始化Angular项目,集成Ngx-admin模板
配置HttpClient拦截器(Token注入、错误处理)
实现登录页面、主布局、侧边栏菜单
实现路由守卫(权限控制)
测试: 启动前端,验证登录和基础布局
Task 1.3: 移动端框架初始化
初始化Vue 3 + Vite + TypeScript项目
集成Vant UI组件库
配置Axios、路由、状态管理(Pinia)
实现登录页面和底部Tab导航
测试: 启动移动端,验证基础功能
Task 1.4: 基础设置模块 - 组织架构与用户管理
后端API: 组织架构CRUD、用户CRUD、角色CRUD、权限分配
PC前端: 组织架构树、用户列表、角色管理页面
移动端: 用户中心、组织信息查看
测试: 验证增删改查、权限控制
Task 1.5: 基础设置模块 - 仓库/库区/库位管理
后端API: 仓库CRUD、库区CRUD、库位CRUD(支持层级关系)
PC前端: 仓库管理页面、库区库位配置页面
移动端: 仓库列表、库位查询
测试: 验证仓库层级数据
Task 1.6: 基础设置模块 - 物料/商品管理
后端API: 物料CRUD、分类管理、SKU管理
PC前端: 物料列表、物料详情、分类管理
移动端: 物料查询、扫码查询
测试: 验证物料数据
Task 1.7: 基础设置模块 - 供应商/客户管理
后端API: 供应商CRUD、客户CRUD
PC前端: 供应商列表、客户列表
移动端: 供应商/客户查询
测试: 验证数据
Task 1.8: 自定义字段模块
后端API: 自定义字段定义CRUD、自定义字段值存储(JSON/独立表)
PC前端: 各模块页面集成自定义字段显示和编辑
测试: 验证自定义字段动态显示
阶段二:WMS核心功能模块(预计2-3轮)
Task 2.1: 库存单据统一模型与入库管理
后端API: 设计统一的stock_order模型,实现采购入库、退货入库、其他入库
PC前端: 入库单列表、入库单录入/编辑页面
移动端: 入库单查询、扫码入库
打印模组: 入库单打印模板
测试: 验证入库流程、库存更新、FIFO分配
Task 2.2: 出库管理
后端API: 销售出库、生产出库、其他出库,库存扣减逻辑
PC前端: 出库单列表、出库单录入/编辑页面
移动端: 出库单查询、扫码出库
打印模组: 出库单打印模板
测试: 验证出库流程、库存扣减
Task 2.3: 库存管理与查询
后端API: 库存实时查询、批次查询、库存调整
PC前端: 库存总览、批次管理、库存流水
移动端: 库存查询、批次追溯
测试: 验证库存数据准确性
Task 2.4: 盘点管理
后端API: 盘点单生成、盘点数据录入、盈亏处理
PC前端: 盘点单列表、盘点执行页面
移动端: 移动端盘点(扫码盘点)
打印模组: 盘点单打印
测试: 验证盘点流程
Task 2.5: 调拨管理
后端API: 调拨单创建、审核、出库确认、入库确认
PC前端: 调拨单列表、调拨流程页面
移动端: 调拨单查询、扫码确认
打印模组: 调拨单打印
测试: 验证调拨流程
Task 2.6: 报损管理
后端API: 报损单CRUD、库存扣减
PC前端: 报损单列表、报损申请页面
移动端: 报损单查询
打印模组: 报损单打印
测试: 验证报损流程
阶段三:后台管理与系统设置(预计1轮)
Task 3.1: 系统设置与数据字典
后端API: 系统参数配置、数据字典管理
PC前端: 系统设置页面、字典管理页面
测试: 验证配置生效
Task 3.2: 操作日志与审计
后端API: 操作日志查询、导出
PC前端: 日志查询页面、导出功能
测试: 验证日志记录完整
Task 3.3: 打印模板管理
后端API: 打印模板CRUD、模板渲染
PC前端: 模板设计器、模板列表
测试: 验证各单据打印
阶段四:部署与测试(预计1轮)
Task 4.1: 一键部署脚本
编写 deploy/install.sh (Linux/Mac)
编写 deploy/install.bat (Windows)
脚本内容:安装依赖、构建前后端、初始化数据库、启动服务
测试: 在干净环境中执行脚本,验证部署成功
Task 4.2: 集成测试与数据初始化
编写测试数据SQL脚本(测试用户、仓库、物料、单据等)
端到端测试各模块流程
测试: 验证完整业务流程
文件目录结构
plaintext
wms-we/
├── backend/ # NestJS后端
│ ├── prisma/
│ │ └── schema.prisma # 数据库模型
│ ├── src/
│ │ ├── main.ts # 入口
│ │ ├── app.module.ts # 根模块
│ │ ├── auth/ # 认证模块
│ │ ├── users/ # 用户模块
│ │ ├── roles/ # 角色模块
│ │ ├── organizations/ # 组织架构模块
│ │ ├── warehouses/ # 仓库模块
│ │ ├── locations/ # 库位模块
│ │ ├── materials/ # 物料模块
│ │ ├── suppliers/ # 供应商模块
│ │ ├── customers/ # 客户模块
│ │ ├── stock-in/ # 入库模块
│ │ ├── stock-out/ # 出库模块
│ │ ├── inventory/ # 库存模块
│ │ ├── check/ # 盘点模块
│ │ ├── transfer/ # 调拨模块
│ │ ├── loss/ # 报损模块
│ │ ├── print/ # 打印模块
│ │ ├── custom-fields/ # 自定义字段模块
│ │ ├── settings/ # 系统设置模块
│ │ ├── logs/ # 操作日志模块
│ │ └── common/ # 公共模块
│ ├── package.json
│ └── tsconfig.json
├── frontend/ # Angular PC管理端
│ ├── src/
│ │ ├── app/
│ │ │ ├── auth/ # 认证
│ │ │ ├── pages/ # 页面模块
│ │ │ │ ├── dashboard/
│ │ │ │ ├── users/
│ │ │ │ ├── warehouses/
│ │ │ │ ├── materials/
│ │ │ │ ├── stock-in/
│ │ │ │ ├── stock-out/
│ │ │ │ ├── inventory/
│ │ │ │ ├── check/
│ │ │ │ ├── transfer/
│ │ │ │ ├── loss/
│ │ │ │ ├── settings/
│ │ │ │ └── ...
│ │ │ └── shared/ # 共享模块
│ │ └── ...
│ ├── package.json
│ └── angular.json
├── mobile/ # Vue3移动端
│ ├── src/
│ │ ├── views/ # 页面
│ │ ├── components/ # 组件
│ │ ├── api/ # API接口
│ │ ├── stores/ # Pinia状态
│ │ └── ...
│ ├── package.json
│ └── vite.config.ts
├── deploy/ # 部署脚本
│ ├── install.sh
│ ├── install.bat
│ ├── docker-compose.yml # 可选Docker部署
│ └── nginx.conf
└── database/
├── init.sql # 初始化SQL
└── seed.sql # 测试数据
执行策略
由于项目规模庞大,我们将按阶段迭代方式执行:
每个Task完成后立即部署测试
每个阶段产出可独立运行的最小可用版本
逐步叠加功能,确保稳定性
评论一下?