Files
order_system/README.md
T

4.8 KiB

博特维采购订单管理系统

苏州博特维智能科技有限公司内部使用的采购单 / 委外生产订单系统。当前源码版本 v3,支持制单、单次审批、正式 PDF 归档、撤回、作废及变更重审。

启动

需要 Python 3.11+。在项目根目录执行:

python -m pip install -r po_app/requirements.txt
python po_app/app.py 8080

打开控制台打印的访问地址,默认 http://127.0.0.1:8080。也可双击 po_app/启动.bat。

首次运行不创建演示账号。管理员须读取服务电脑上的 po_app/instance/setup.token,在首次设置页面创建管理员,再通过“用户”页分配制单员、审批员账号。初始/重置密码在首次登录时须更改。

局域网协作应由一台固定电脑运行服务,其他电脑用浏览器访问主机 IP。每台电脑单独启动 EXE 会形成不同数据库。已有 EXE 须从本版源码重新打包,不能通过替换源码自动升级 EXE。

已有数据升级前,请阅读 运行与升级说明。 程序会先备份旧数据库再执行增量迁移;重复单号会阻止升级,不能自动给历史单据改号。

主要能力

  • 采购单和委外单,供应商/物料库、中文 XLS/XLSX 导入。
  • 草稿可暂存,“保存并提交”保证当前修改一起进入审批。
  • 数量、单价四位精度;逐行四舍五入到分再合计,页面、数据库和 PDF 使用同一口径。
  • 制单与审批由不同账号完成,管理员也遵守分工;审批员一次确认即可通过或驳回。
  • 制单员仅访问自己的订单,详情、复制、PDF、台账和统计使用统一权限。
  • 撤回、作废、批准后变更重审;每次提交保留内容快照,日志记录操作账号、姓名、环节及版本。
  • 审批通过时归档带一枚“采购专用章”的正式 PDF,后续下载保持该文件;草稿、驳回和作废单带对应水印。
  • 企业微信审批群通知、持久化发送队列、失败重试及过期待办跳过;管理员在“通知配置”页设置。
  • 公司 Wi-Fi 内手机审批,通知链接登录后回到对应订单;保留盖章确认、角色分工和版本校验。
  • 用户编辑、重置密码、启用和停用,以及旧会话失效。
  • 随机部署密钥、表单 CSRF 校验、请求独立事务、单号唯一约束、重复建单和旧页面操作保护。
  • 按状态、供应商、月份统计以及 Excel 台账导出。

图形审批章表示系统内部审批确认,不是第三方证书数字签名。金额分级、部门审批、企业微信个人定向通知、预算、到货和付款跟踪不在当前版本中。

项目结构

po_app/
  app.py             服务入口、工作台、基础资料、用户、统计
  security.py        会话、认证、请求事务、首次设置
  order_routes.py    制单及审批操作、PDF 和版本查看
  order_logic.py     权限、校验、金额、提交快照
  notifications.py   企业微信群通知、事务队列与后台发送
  notification_routes.py 管理员通知配置、测试通知和重试
  models.py          数据模型及固定精度字段
  migrations.py      旧 SQLite 数据升级和自动备份
  money.py           Decimal 计算与舍入规则
  excel_io.py        XLS/XLSX 读取和上传文件名处理
  pdf_export.py      PDF 排版、内部审批图形章
  amount_cn.py       人民币大写
  templates/         页面模板
  static/            样式、精确金额预览
  instance/          数据库、部署密钥、备份(不入库)
tests/               隔离回归测试
tools/               备份、测试和浏览器验收脚本

可用 PO_DATA_DIR 更改数据目录,PO_HOST 更改绑定地址。服务使用 Waitress。历史上传和导出目录同样不入库;新批准的正式 PDF 存在数据库的版本归档中。

企业微信接入及内网手机访问步骤见 运行与升级说明。通知默认关闭,须配置真实 Webhook 和手机可达的内网地址后启用。源码测试使用模拟发送器,不会向真实群发消息。

检查和备份

python -m pip install -r requirements-dev.txt
python -m pytest tests -q
node tests/test_money_js.cjs
python tools/browser_smoke.py
python tools/backup_db.py

浏览器验证依赖本机 Microsoft Edge;仅操作临时服务和临时数据库。测试输出在 tools/out/,不提交真实业务数据。

备份、恢复、升级限制、完整操作规则及验收步骤见 运行与升级说明。首次检查的历史问题见 项目检查记录,该记录描述修复前版本。

许可

本仓库为苏州博特维智能科技有限公司内部业务系统源码,仅供公司内部使用与维护。