# flashwarehouse **Repository Path**: zsjfj/flashwarehouse ## Basic Information - **Project Name**: flashwarehouse - **Description**: 闪仓开源仓库,由于维护问题使用了新的仓库地址 - **Primary Language**: Unknown - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: https://flashwarehouse.cn - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2026-08-28 - **Last Updated**: 2026-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

FlashWarehouse 闪仓 Logo

FlashWarehouse(闪仓)

免费、开源、支持 PC 与移动端协同的进销存 / 仓库管理系统

项目官网 · 在线使用 · 使用指南 · 项目 Wiki · 问题反馈

MPL-2.0 License Java 8 Spring Boot 2.7.15 Vue 3 uni-app Mobile

> **公开仓库说明** > > 本仓库是经过净化后发布的开源快照,包含 PC 管理端、移动端和 Java 后端,不包含原私有仓库的 Git 历史、生产数据库、用户数据、运行日志、部署口令、签名文件或第三方平台密钥。它适合学习、二次开发和自托管;用于正式生产前,请自行完成安全审计、容量评估、备份与灾难恢复方案。 ## 目录 - [项目简介](#项目简介) - [核心能力](#核心能力) - [技术栈](#技术栈) - [仓库结构](#仓库结构) - [快速开始](#快速开始) - [配置说明](#配置说明) - [构建与测试](#构建与测试) - [生产部署提示](#生产部署提示) - [安全说明](#安全说明) - [常见问题](#常见问题) - [项目 Wiki](#项目-wiki) - [更多文档](#更多文档) - [参与贡献](#参与贡献) - [支持项目](#支持项目) - [开源许可](#开源许可) ## 项目简介 FlashWarehouse 面向门店、仓库、批发零售与中小团队,将商品、采购、销售、库存、合作伙伴、员工权限、报表和打印等日常业务集中到一套系统中。 三个客户端共享同一套后端数据: ```text PC 管理端(Vue 3) ───────┐ ├── Spring Boot API ── MySQL 移动端 / H5(uni-app) ───┘ │ └── 可选 AI / 支付 / 企业微信等集成 ``` 你可以直接访问 [项目官网](https://flashwarehouse.cn) 了解产品,也可以进入 [在线系统](https://jhsc.top) 体验公开服务。自行部署时,请使用自己的域名、数据库、RSA 密钥和第三方服务凭据。 ## 核心能力 | 领域 | 主要能力 | | --- | --- | | 商品 | 商品档案、分类、单位、条码、自定义字段、图片与价格信息 | | 采购 | 询价、采购订单、采购入库、退货、换货与采购统计 | | 销售 | 报价、销售订单、销售出库、退货、换货与销售报表 | | 库存 | 多仓库、实时库存、其他出入库、调拨、盘点与库存预警 | | 往来与财务 | 客户 / 供应商、开票信息、财务科目和业务统计 | | 员工与权限 | 员工管理、角色权限和业务范围控制 | | 打印 | 单据打印、条码 / 二维码和自定义打印模板 | | AI 助手 | 支持用户配置兼容接口、模型选择、业务问答与辅助操作 | | 多端协同 | PC 管理端、移动 H5 与 app-plus 资源共享同一套业务数据 | 部分外部能力(AI、支付宝、企业微信、淘宝等)是可选集成,只有配置对应服务后才会启用。 ## 技术栈 | 部分 | 技术 | | --- | --- | | PC 管理端 | Vue 3、Vue Router、TDesign Vue Next、Axios、ECharts、Vue CLI 5 | | 移动端 | uni-app、Vue 3、Vite 5、uni-ui、uView、ECharts | | 后端 | Java 8、Spring Boot 2.7.15、MyBatis-Plus、Maven | | 数据库 | MySQL 8.0+ | | 数据传输 | RSA 2048、AES-GCM 混合加密能力 | | 接口文档 | OpenAPI / Swagger UI | | 许可 | Mozilla Public License 2.0 | ## 仓库结构 ```text flashwarehouse/ ├── frontend/ # PC 管理端 │ ├── src/ # Vue 页面、组件、路由和请求层 │ ├── public/ # 静态资源 │ ├── patches/ # patch-package 补丁 │ └── .env.example # 公开的前端配置模板 ├── mobile/ # uni-app 移动端 / H5 │ ├── pages/ # 页面 │ ├── utils/ # API、权限、更新和打印工具 │ ├── scripts/ # Android 发布辅助脚本 │ ├── tests/ # 移动端 Node 测试 │ └── .env.example # 公开的移动端配置模板 ├── backend/ # Spring Boot Maven 多模块后端 │ ├── sys/ # 应用启动模块 │ ├── common/ # 公共配置、加密、拦截器和工具 │ ├── warehouse_manager/ # 仓库、采购、销售和库存 │ ├── goods_manager/ # 商品管理 │ ├── finance/ # 财务与合作伙伴 │ ├── staff_manager/ # 员工管理 │ ├── user/ # 用户与权限 │ ├── ai/ # AI 助手 │ ├── taobao/ # 可选电商集成 │ ├── tests/ # API 集成测试 │ ├── create_db.sql # 全新本地数据库初始化脚本 │ └── .env.example # 后端环境变量清单 ├── docs/assets/ # README 资源 └── LICENSE # MPL-2.0 ``` ## 快速开始 ### 1. 环境要求 | 工具 | 建议版本 | 用途 | | --- | --- | --- | | JDK | 8 | 后端编译与运行 | | Maven | 3.8+ | 后端依赖与构建 | | MySQL | 8.0+ | 业务数据库 | | Node.js | 20+(建议当前 LTS) | PC 与移动端构建 | | npm | 随 Node.js 安装 | 前端依赖管理 | | OpenSSL | 1.1.1+ / 3.x | 生成独立 RSA 密钥 | | HBuilderX / DCloud 离线环境 | 可选 | 生成 Android / iOS 原生安装包 | ### 2. 克隆仓库 ```bash git clone https://gitee.com/zsjfj/flashwarehouse.git cd flashwarehouse ``` ### 3. 初始化本地数据库 > **危险:** `backend/create_db.sql` 第一条操作是 `DROP DATABASE IF EXISTS wms`。它只适合全新的本地开发数据库,绝对不要对生产库或包含重要数据的实例执行。 ```bash mysql -u root -p < backend/create_db.sql mysql -u root -p wms < backend/migration_ai_conversation.sql ``` 初始化脚本创建的数据库名是 `wms`。后端启动时必须把 `WMS_DB_URL` 指向 `wms`,不要依赖示例文件中的默认库名。建议为应用创建权限受限的独立 MySQL 用户,而不是长期使用 `root`。 `backend/migration_ai_business.sql` 与 `backend/migration_payment_security.sql` 只用于旧数据库升级;全新数据库已经包含对应字段、索引和表,不需要重复执行。支付迁移必须在付费开关保持关闭时由具备 DDL 权限的 DBA 执行,详见 [支付接入与安全](docs/wiki/payments.md)。 ### 4. 生成自己的 RSA 密钥 不要使用网上复制的密钥,也不要把私钥放进仓库。以下命令会在仓库外创建一套 2048 位密钥: ```bash mkdir -p ../flashwarehouse-secrets openssl genpkey -algorithm RSA \ -pkeyopt rsa_keygen_bits:2048 \ -out ../flashwarehouse-secrets/wms-private.pem openssl pkey \ -in ../flashwarehouse-secrets/wms-private.pem \ -pubout \ -out ../flashwarehouse-secrets/wms-public.pem ``` - 私钥只提供给后端环境变量 `WMS_SECURITY_RSA_PRIVATE_KEY_FILE`(优先)或 `WMS_SECURITY_RSA_PRIVATE_KEY`。 - 公钥提供给 PC 构建变量 `VUE_APP_RSA_PUBLIC_KEY`。 - 仓库已忽略常见密钥文件扩展名,但仍应使用系统密钥管理服务保存生产私钥。 ### 5. 启动后端 在仓库根目录设置本地环境变量,然后构建: ```bash export WMS_DB_URL='jdbc:mysql://127.0.0.1:3306/wms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai' export WMS_DB_USERNAME='wms' export WMS_DB_PASSWORD='replace-with-your-local-password' export WMS_SECURITY_RSA_PRIVATE_KEY="$(cat ../flashwarehouse-secrets/wms-private.pem)" cd backend mvn test mvn clean package -DskipTests java -jar sys/target/sys-0.0.1-SNAPSHOT.jar ``` 默认 API 地址为 `http://localhost:10086`。启动后可以访问: - Swagger UI:`http://localhost:10086/swagger-ui.html` - OpenAPI JSON:`http://localhost:10086/v3/api-docs` `backend/.env.example` 是变量清单,不会被 Spring Boot 自动加载。请通过终端、IDE Run Configuration、容器编排或密钥管理服务注入变量。 ### 6. 启动 PC 管理端 新开一个终端: ```bash cd flashwarehouse/frontend cp .env.example .env.local npm ci npm run serve ``` 编辑 `frontend/.env.local`,填入与后端私钥配套的公钥: ```dotenv VUE_APP_RSA_PUBLIC_KEY=your-public-key ``` 该变量支持原始 Base64 SPKI,或使用字面量 `\n` 表示换行的 PEM。不要在前端环境变量里放置任何私钥、AI API Key、数据库密码或访问令牌,因为 `VUE_APP_*` 会进入浏览器构建产物。 PC 开发服务默认运行在 `http://localhost:8081`,本地代理会把 `/flash_warehouse` 请求转发至 `http://localhost:10086`。 ### 7. 启动移动端 H5 再开一个终端: ```bash cd flashwarehouse/mobile cp .env.example .env.local npm ci npm run dev:h5 ``` 移动 H5 默认运行在 `http://localhost:5173`。示例配置使用相对路径 `/flash_warehouse`,Vite 开发代理会转发至本地后端。 当前快照的 `mobile/vite.config.js` 已内置 `/flash_warehouse` 开发代理,并在转发到 `http://127.0.0.1:10086` 时移除该前缀。如果 H5 请求仍全部返回 404,请确认后端确实监听 `10086`、使用的是 `npm run dev:h5`、`.env.local` 没有覆盖为错误地址,并按 [移动端 Wiki](docs/wiki/mobile.md#h5-接口全部返回-404) 检查代理的 `target` 与 `rewrite`。生产环境仍应使用 HTTPS 网关地址。 `npm run build:app` 只生成 app-plus 资源,不会生成可安装、可签名的 APK / IPA。原生安装包仍需要 HBuilderX 或 DCloud 离线打包环境,以及你自己的应用标识、证书和签名配置。 当前移动端锁文件的 `npm audit --omit=dev` 为 0。完整 `npm audit` 仍报告 36 项来自 uni-app / Vite 开发构建链的间接依赖问题;它们不属于生产依赖,但仍应随上游升级持续治理,不能用 `npm audit fix --force` 冒险改写构建链。为修复打印链的生产依赖问题,锁文件对 jsPDF 4 做了安全版本覆盖,并已通过冷安装、H5/app-plus 构建和基础 PDF/ECharts smoke test;正式 APK 的复杂打印、字体、分页与真机 WebView 兼容性仍需设备回归。 ## 配置说明 ### 后端核心变量 完整清单见 [`backend/.env.example`](backend/.env.example)。 | 变量 | 是否必需 | 说明 | | --- | --- | --- | | `SERVER_PORT` | 否 | API 端口,默认 `10086` | | `WMS_SERVER_ADDRESS` | 否 | API 监听地址,默认仅 `127.0.0.1`;公网流量应经 HTTPS 反向代理 | | `WMS_SWAGGER_ENABLED` | 否 | 是否启用 OpenAPI/Swagger,默认 `false` | | `WMS_DB_URL` | 是 | MySQL JDBC 地址;全新初始化应指向 `wms` | | `WMS_DB_USERNAME` | 是 | MySQL 用户名 | | `WMS_DB_PASSWORD` | 是 | MySQL 密码 | | `WMS_SECURITY_RSA_PRIVATE_KEY_FILE` / `WMS_SECURITY_RSA_PRIVATE_KEY` | 是 | PKCS#8 私钥;优先使用绝对路径指向 root-only 文件,也支持 Base64 / PEM 环境变量 | | `WMS_SECURITY_AUTH_TOKEN_SECRET` | 生产必配 | 至少 32 字节随机值的 Base64 编码,用于签发登录令牌;各实例必须一致 | | `WMS_SECURITY_AUTH_TOKEN_TTL_SECONDS` | 否 | 登录令牌有效期,默认 `43200` 秒 | | `WMS_SECURITY_AI_CREDENTIAL_KEY` | 使用用户自定义 AI Key 时必需 | 32 字节随机值的 Base64 编码,用于在数据库中以 AES-256-GCM 加密 AI API Key | | `WMS_SECURITY_AI_CREDENTIAL_MIGRATION_ENABLED` | 否 | 是否在启动时迁移历史明文 AI Key,默认 `true`;升级前先备份 | | `WMS_SECURITY_STAFF_PASSWORD_MIGRATION_ENABLED` / `WMS_SECURITY_STAFF_PASSWORD_MIGRATION_LIMIT` | 否 | 是否迁移历史员工明文密码及单次上限,默认 `true` / `100` | | `WMS_CORS_ALLOWED_ORIGINS` | 生产必配 | 允许访问 API 的精确前端来源 | | `WMS_CORS_ALLOWED_ORIGIN_PATTERNS` | 否 | 需要通配规则时使用,生产环境应尽量收紧 | | `WMS_LOG_DIR` | 否 | 日志目录,默认 `./logs` | | `WMS_GOODS_IMAGE_DIR` | 否 | 商品图片目录,默认 `./data/goods` | | `WMS_AI_UPLOAD_DIR` | 否 | AI 上传文件目录,默认 `./data/ai_uploads` | | `WMS_DASHSCOPE_*` | 否 | 默认 AI 提供商;用户也可在可信实例的 UI 中配置兼容接口 | | `WMS_WECHAT_*` | 否 | 企业微信集成 | | `WMS_ALIPAY_PAID_ACCESS_ENABLED` | 否 | 付费注册/续费总开关,默认 `false`;数据库迁移、唯一约束和签名通知测试完成前严禁开启 | | `WMS_ALIPAY_APP_ID` / `WMS_ALIPAY_PRIVATE_KEY` / `WMS_ALIPAY_ALIPAY_PUBLIC_KEY` / `WMS_ALIPAY_SELLER_ID` | 启用支付时必需 | 商户应用、应用私钥、支付宝平台公钥和卖家 ID;私钥必须放在 Secret 管理中 | | `WMS_ALIPAY_NOTIFY_URL` / `WMS_ALIPAY_RETURN_URL` | 启用支付时必需 | HTTPS 异步通知地址与同步返回地址;只有异步通知可以授予权益 | | `WMS_ALIPAY_SUBSCRIPTION_AMOUNT` / `WMS_ALIPAY_SUBSCRIPTION_DAYS` | 否 | 下单时固化的金额与权益天数,默认 `100.00` / `365` | | `WMS_ALIPAY_PENDING_RETENTION_HOURS` | 否 | 未支付注册材料保留时长,默认 `24` 小时;超时后清空并关闭订单 | | `WMS_ALIPAY_DONATION_ENABLED` | 否 | 在线打赏独立开关,默认 `false`;打赏永不授予注册或续费权益 | | `WMS_TAOBAO_APPLICATION_KEY` | 否 | 可选电商集成 | ### 客户端变量 | 文件 / 变量 | 说明 | | --- | --- | | `frontend/.env.local` / `VUE_APP_RSA_PUBLIC_KEY` | 后端私钥对应的公开 RSA 公钥 | | `frontend/.env.local` / `VUE_APP_STORAGE_SEED` | 可选的客户端混淆种子;它不是秘密 | | `mobile/.env.local` / `VITE_WMS_API_BASE_URL` | 移动端 API 公共地址或本地代理路径 | | `mobile/.env.local` / `VITE_WMS_UPDATE_API_URL` | 可选的客户端更新元数据公共接口;留空会禁用更新检查 | 所有 `VUE_APP_*` 和 `VITE_*` 变量都会被打入客户端包,只能存放公开信息。 ### AI 助手最小配置 用户自定义 AI API Key 只能在登录后的 AI 助手设置页面保存,不要写入前端环境变量、源码或配置模板。设置页面再次打开时只显示脱敏值;测试连接、更换平台或更换地址时,需要重新输入完整 Key。后端使用 `WMS_SECURITY_AI_CREDENTIAL_KEY` 对用户 Key 做 AES-256-GCM 存储加密,该主密钥必须放在 Secret 管理中并在重启、扩容和备份恢复时保持一致。 使用 AiHubMix 时,如果其主域名在后端所在网络出现 DNS 解析异常或连接超时,可以改用兼容端点 `https://api.inferera.com/v1/chat/completions`,并先以 `gpt-4.1-mini-free` 验证连接。免费模型、额度和可用名称可能由服务商调整,最终以账号实际可用模型为准。 建议按“测试连接 → 普通问答 → 只读业务查询 → 需要确认的写操作”逐级验证。遇到 401、模型不支持、TLS 握手失败、流式响应长时间空白或确认按钮无响应时,请查阅 [AI 助手 Wiki](docs/wiki/ai-assistant.md),不要通过关闭证书校验、放宽鉴权或在 CSP 中加入 `unsafe-inline` 来绕过问题。 ### AI 助手实际能力与边界 截至 2026-09-05,当次真实生产 E2E 仅验证了:签名登录、从 AIHubMix 获取模型列表(当次返回 414 个条目)、连接测试、普通回复、Agent SSE 流式响应,以及 `user` 与 `assistant` 两类会话消息成功持久化。这证明了当次部署的网页、鉴权、后端、上游模型和数据库主链路可用,不代表其他 AI 平台、所有模型或全部业务动作都已经验证。 代码中注册了 44 个业务工具并都有执行分支,覆盖库存、仓库、采购/销售单据、员工、往来单位和审批等场景;这些工具尚未逐个完成生产端到端验证,因此不能据此宣称“44 个工具全部可用”。所有写操作仍受后端身份、租户、权限和确认机制约束,模型本身不能绕过这些检查。 附件可解析 `xlsx`、`xls`、`csv`、`txt`、`md`、`pdf`、`docx` 与常见图片;旧版 `.doc` 只会提示不支持,不会提取正文。单文件上限 20 MB,表格最多读取 2,000 行,注入模型上下文的文本最多 30,000 字符。上游接口仅兼容 OpenAI Chat Completions 风格;Agent 所用模型还必须实际支持 streaming 和 tools/function calling。它不具备通用网页浏览、邮件收发或操作服务器/个人电脑的能力,除非后续另行实现并授权对应工具。免费模型可能受到 429、额度、下线和稳定性限制。 ## 构建与测试 ### PC 管理端 ```bash cd frontend npm run test:ai npm run lint npm run build ``` 2026-09-05 最新验收中,PC AI / 安全专项测试为 12/12,通过了完整 lint 和 production build,`npm audit --omit=dev` 为 0。线上 `index.html`、app 主包、AI chunk 及 TDesign Chat 的 JS/CSS 与本地 production build 对应文件的 SHA-256 逐项一致;这只证明线上静态资源与本次受测构建相同。未登录访问 AI 配置、AI 会话、企业配置、余额和 Agent SSE 均返回 401,携带恶意 `Origin` 的请求返回 403。 PC 运行时依赖已随构建产物本地打包,生产页面不需要从第三方域名加载脚本或样式。完整 `npm audit` 仍可能报告 Vue CLI 旧构建链的开发依赖问题,请结合迁移测试逐项处理,不要执行会跨主版本改写依赖的 `npm audit fix --force`。 ### 移动端 ```bash cd mobile npm run test:auth npm run test:update npm run build:h5 npm run build:app ``` 移动端生产依赖审计命令是 `npm audit --omit=dev`,当前应返回 0;完整审计仍有 36 项 uni-app / Vite 开发构建链告警。jsPDF 4 覆盖已完成基础 smoke test,但不能替代正式 APK 的复杂打印真机回归。 ### 后端 ```bash cd backend mvn test mvn clean package -DskipTests ``` `mvn test` 会编译并运行父工程默认模块的测试;通过后再用跳过重复测试的打包命令生成可运行 JAR。 2026-09-05 最新 Java 8 全量回归为 161/161,0 failure/error/skip;其中新增的 CSP 测试覆盖正常响应、404、下游异常与过滤器注册顺序。 后端 API 集成测试说明位于 [`backend/tests/README.md`](backend/tests/README.md)。这些测试会创建、更新和删除业务数据,但不会删除注册的测试用户;如果设置了 `AI_API_KEY`,Key 会保存到该测试用户,测试中断时 `/tmp/wms-test-state.json` 还可能保留临时账号信息。只能对可销毁的隔离数据库运行,使用专用短期 Key,并在测试后清库、删除状态文件和轮换 Key。在完全理解范围前,不要设置 `ALLOW_NONLOCAL_E2E=true`,更不要对生产环境运行。 ## 生产部署提示 本仓库不包含一键上线到任意服务器的通用脚本。正式部署至少应完成: 1. 使用 HTTPS,并通过 Nginx、Caddy 或网关把 `/flash_warehouse` 转发到后端。 2. 只允许实际使用的前端域名通过 CORS,禁止无约束通配。 3. 通过平台 Secret、容器 Secret 或系统服务环境注入密码和私钥。 4. 为 MySQL 使用最小权限账号,启用定期备份并实际演练恢复。 5. 将 `data/`、上传目录和日志目录放到持久卷,设置容量与权限限制。 6. 使用自己的 RSA 密钥、域名、应用 ID、移动端签名和第三方平台配置。 7. 关闭或限制公网 Swagger,增加访问控制、限流、监控与告警。 8. 保持 `WMS_ALIPAY_PAID_ACCESS_ENABLED=false`,先完成支付迁移和签名异步通知隔离测试;未接入支付时永久保持关闭。 9. 在切换生产流量前完成接口、权限、库存变更、支付回调与回滚测试。 ## 安全说明 - 不要提交 `.env`、生产配置、数据库备份、私钥、Token、API Key、支付密钥、签名证书、运行日志或用户上传文件。 - AI API Key 不应写入 PC / 移动端构建变量。仅在你自己部署或明确可信的实例中通过设置界面配置,并为后端配置独立、稳定的 AI 凭据加密主密钥。 - 已经公开过的凭据不能靠删除 Git 文件恢复安全,必须在对应平台轮换或吊销。 - 不要把真实密钥、个人信息或生产日志粘贴到公开 Issue。 - 仓库中的初始化 SQL 和集成测试具有数据修改能力,运行前务必确认目标数据库和 API 地址。 - 公开快照不代表已满足你的行业合规要求;生产使用者需要自行完成依赖、权限、数据保护和合规审计。 如发现安全问题,请优先通过 [官网意见反馈](https://flashwarehouse.cn/zh/contact) 联系维护者,不要先公开利用细节或真实数据。 ## 常见问题 ### 是否永久免费? 源代码按 MPL-2.0 开源,可依许可自行使用、修改和部署。服务器、域名、短信、AI 模型、支付通道及其他第三方服务产生的费用由部署者自行承担。 ### 仓库里有默认账号或生产数据吗? 没有。公开快照不包含生产账号和用户数据,请在自己的实例中注册并初始化业务数据。 ### 为什么前端启动后无法请求后端? 依次检查:后端是否监听 `10086`、数据库是否为 `wms`、RSA 公私钥是否配套、前端代理是否生效,以及 CORS 是否允许当前来源。 ### 为什么没有可直接安装的 APK? 公开仓库提供移动端源码和 app-plus 构建资源,不提供维护者的生产签名。请使用自己的应用标识和签名生成安装包。 ### 可以用于二次开发和商业项目吗? 可以,但必须遵守 MPL-2.0。分发修改过的 MPL 覆盖文件时,需要按许可证要求提供相应源代码和许可声明。 ## 项目 Wiki 使用与部署过程中遇到问题时,请先查看 [Gitee 在线 Wiki](https://gitee.com/zsjfj/flashwarehouse/wikis/Home)。Wiki 的版本化源文件同时保存在 [`docs/wiki/`](docs/wiki/Home.md),按症状整理了数据库、RSA、API/CORS、AI API Key、移动端打包、打印上传、生产部署与安全等排查步骤。 - [故障排查总览](docs/wiki/troubleshooting.md) - [数据库与升级](docs/wiki/database.md) - [PC 前端与 API](docs/wiki/frontend-api.md) - [AI 助手](docs/wiki/ai-assistant.md) - [支付接入与安全](docs/wiki/payments.md) - [移动端与打包](docs/wiki/mobile.md) - [打印与文件](docs/wiki/printing-files.md) - [API 集成测试](docs/wiki/integration-tests.md) - [生产部署与安全](docs/wiki/production-security.md) ## 更多文档 > 根 README 与 Wiki 是当前快照的准确信息源。部分子目录 README 保留了历史设计说明,其中的旧端口、部署脚本或配置项可能已经过时;执行前请以实际源码配置和本 Wiki 为准。 - [后端历史设计说明](backend/README.md) - [PC 管理端历史设计说明](frontend/README.md) - [移动端说明](mobile/readme.md) - [Android CI/CD](mobile/docs/ANDROID_CI_CD.md) - [移动端打印模板指南](mobile/PRINT_TEMPLATE_GUIDE.md) - [移动端样式指南](mobile/STYLE_GUIDE.md) - [后端 API 集成测试](backend/tests/README.md) - [后端架构时序图](backend/docs/WMS_Backend_Sequence_Diagrams.drawio) - [PC 架构图](frontend/docs/WMS_PC_Architecture.drawio) - [移动端架构图](mobile/docs/WMS_Mobile_Architecture.drawio) `.drawio` 文件可以使用 [diagrams.net](https://app.diagrams.net/) 或 VS Code 的 Draw.io 插件打开。 ## 参与贡献 欢迎提交 Issue、文档修正和代码改进: 1. Fork 本仓库并从 `master` 创建功能分支。 2. 保持改动范围清晰,不提交生成目录、密钥或个人数据。 3. 根据改动范围运行对应的构建和测试。 4. 在提交说明中写清问题、解决方式、验证结果和兼容性影响。 5. 通过 Gitee Pull Request 提交,并关联相关 Issue。 适合优先贡献的方向包括:部署文档、自动化测试、无障碍体验、国际化、移动端适配、依赖升级和安全加固。 ## 支持项目 如果 FlashWarehouse 对你有帮助,欢迎通过支付宝自愿打赏,支持项目继续维护。打赏完全自愿,不构成购买、投资或服务承诺。

支付宝打赏支持 FlashWarehouse

也可以通过 Star、Issue、文档修正或代码贡献支持项目。 ## 开源许可 本仓库采用 [Mozilla Public License 2.0](LICENSE)(MPL-2.0)。使用、修改或分发前,请阅读许可证全文并遵守相应义务。