# wms **Repository Path**: yhditto/wms ## Basic Information - **Project Name**: wms - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 仓储进销存管理系统(WMS Client/Server) 系统采用中心数据库架构: ```text WMS 客户端 EXE | | HTTP / HTTPS API v FastAPI 服务端 | | SQLAlchemy / PyMySQL v MySQL 中心数据库 ``` 客户端只负责界面和 API 访问;服务端负责业务事务、权限、审计和数据库访问。客户端不直连 MySQL。 ## 功能 | 模块 | 说明 | | --- | --- | | 仪表盘 | 库存概览、预警和快捷入口 | | 基础资料 | 物料、分类、单位、仓库、供应商、客户 | | 入库管理 | 采购入库、生产入库、销售退货、其他入库 | | 出库管理 | 领料出库、销售出库、生产退料、其他出库 | | 库存管理 | 实时库存、库存流水、库存预警 | | 报表中心 | 出入库明细、台账、Excel 导出 | | 系统管理 | 备份、还原、定时备份 | 业务能力包括草稿/审核流程、负库存拦截、移动加权平均成本、按类型分段的并发单号、角色权限、Bearer Token 登录和审计日志。 ## 源码结构 ```text ├── client.py # 客户端入口 ├── server.py # API 服务端入口 ├── WMSClient-Portable.spec # 客户端打包配置 ├── WMSServer-Portable.spec # 服务端打包配置 ├── src/wms/ # 客户端/服务端共享契约与序列化 │ ├── contracts/ │ └── shared/ ├── src/wms_client/ # 客户端:PySide6 UI、HTTP、配置 │ ├── ui/ │ ├── config.py │ ├── remote.py │ └── runtime.py ├── src/wms_server/ # 服务端:API、业务服务、ORM、数据库 │ ├── api/ │ ├── services/ │ ├── domain/ │ ├── database/ │ ├── bootstrap.py │ └── config.py ├── tests/ └── packaging/ ``` ## 快速开始 开发环境安装: ```powershell python -m pip install -e .[dev] ``` 启动 MySQL 后创建数据库和账号: ```sql CREATE DATABASE wms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wms'@'127.0.0.1' IDENTIFIED BY '替换为强密码'; GRANT ALL PRIVILEGES ON wms.* TO 'wms'@'127.0.0.1'; FLUSH PRIVILEGES; ``` 在项目根目录创建 `server-config.json`: ```json { "database": { "type": "mysql", "host": "127.0.0.1", "port": 3306, "name": "wms", "user": "wms", "password": "替换为强密码" } } ``` 启动 API 服务端: ```powershell python server.py ``` 另开一个终端启动客户端: ```powershell python client.py ``` 客户端登录窗口填写 API 服务器地址: ```text http://127.0.0.1:8000 ``` 数据库类型由服务端 `server-config.json` 或 `WMS_DATABASE_URL` 决定,客户端不选择、不保存数据库连接信息。 首次登录账号 `admin`,密码 `admin123`。首次登录后必须修改密码。 ## 配置 数据库配置读取顺序: 1. `WMS_DATABASE_URL` 环境变量 2. 服务端目录下的 `server-config.json` 3. 默认 SQLite `WMS_API_SECRET` 用于登录 Token 签名。未手动设置时,服务端会自动生成并保存到 `data\api-secret.txt`;该文件变更或删除后,所有客户端需要重新登录。 ## 打包 ```powershell # 服务端 powershell -ExecutionPolicy Bypass -File packaging\build-server.ps1 # 客户端 powershell -ExecutionPolicy Bypass -File packaging\build.ps1 ``` 产物: - `dist\WMSServer-Portable.zip` - `dist\WMSClient-Portable.zip` - `dist\WMSClient-Setup.exe` 客户端包不包含 FastAPI、SQLAlchemy、PyMySQL、bcrypt 或服务端模块。服务端包不包含 PySide6 或客户端 UI。 ## 部署 - 云服务器部署:[cloud-deployment.md](docs/cloud-deployment.md) - 本地局域网部署:[local-deployment.md](docs/local-deployment.md) ## 验证 ```powershell pytest -q ruff check src tests client.py server.py ``` ## 技术栈 - 客户端:PySide6、openpyxl - 服务端:FastAPI、Uvicorn、SQLAlchemy、PyMySQL、bcrypt - 数据库:MySQL 8.x / MariaDB - 质量与打包:pytest、pytest-qt、ruff、PyInstaller、Inno Setup