Files
order_system/packaging/win7/服务器版本更新操作手册.md

7.1 KiB
Raw Permalink Blame History

采购订单系统:Win7 服务器版本更新操作手册

适用版本:2026-10-14 工单更新包(源码提交 4aaa6c6)

适用场景:一台 Windows 7 SP1 电脑运行 PO_Server_Win7.exe,员工在公司局域网内用电脑或手机访问。

操作原则:先在独立目录打包并完成自检,再停旧服务、备份数据、替换 EXE。 整个公司只运行一个正式服务实例。

开始前:确认这三件事

  1. 确认正在运行的 EXE 所在目录,记为“正式服务目录”,例如 D:\PO_Server。记录员工实际访问的内网地址和端口、当前 EXE 文件名、是否通过快捷方式或开机任务启动。
  2. 确认数据目录。未设置 PO_DATA_DIR 时,数据在正式 EXE 同目录的 instance、uploads、exports;若设置过 PO_DATA_DIR,数据在该变量指定的目录。最重要的数据库是 instance\po.db。不要把新包中不存在的空数据目录当成旧数据。
  3. 安排维护时间,通知正在制单、审批的同事先保存并退出。更新期间所有电脑和手机都暂时无法访问系统。

本次工单更新不改数据库表结构,也不重新生成历史已审批 PDF。若从更早版本跨级升级,程序启动时仍可能执行旧版本所需的数据库迁移;因此备份步骤不能省略。

一、在服务器上生成新 EXE(旧服务保持运行)

  1. 把 PO_Win7_SourceBuild_v4_20261014_issue1.zip 复制到服务器,完整解压到一个新目录,例如 C:\PO_Win7Build_20261014。不要覆盖以前的打包目录,也不要解压到正式服务目录。压缩包的 SHA-256 为:

    77e199eb20a80313845d1729d867a98f73ca7c21172ab0a83357ddea260565dc

  2. 如果上一个包已成功使用 Python 3.8.10,保留上一个包所在目录。新包会尝试复用可用的 Python。必要时在新包根目录新建 python_path.txt,只填旧 python.exe 的完整路径,例如 C:\旧打包目录\.python38\python.exe。

  3. 在新包根目录双击 01_install_env.cmd,等待出现 SETUP COMPLETE。失败时查看 logs\setup-时间.log,不要继续替换正式程序。系统若要求重启,先重启后再运行。

  4. 双击 02_build_exe.cmd,等待出现 BUILD COMPLETE。新程序位于新包的 dist\日期-位数\PO_Server_Win7.exe;同目录 BUILD_INFO.json 记录打包机器、源码提交和 EXE 哈希。出现 BUILD FAILED 时保持旧服务运行,查看 build\日期-位数\build.log。

打包脚本在隔离的临时目录自检,不使用正式订单数据库。生成 EXE 后才进入停机窗口。

二、停机、备份、替换

  1. 在服务器上关闭旧 EXE 的命令窗口或按原有服务管理方式停止,确认原内网地址暂时无法打开。不要让新旧 EXE 同时访问同一个 po.db。
  2. 在另一块硬盘或另一台受信任电脑上建立带日期时间的备份文件夹,例如备份介质上的 PO_Backup\20261014-1430。把正式服务目录完整复制进去,至少包含旧 EXE、instance、uploads、exports。若使用 PO_DATA_DIR,还要把该变量指向的整个数据目录单独复制进去。备份后确认备份目录内能找到 instance\po.db,并保留旧 EXE 与备份配套。
  3. 如果服务器另有完整项目源码及 Python,可再运行 python tools\backup_db.py --data-dir "实际数据目录" 做一次 SQLite 一致性备份。离线打包包不包含该工具;停机后的完整目录副本是必需的回退备份,必须放在服务目录之外。
  4. 把新建的 PO_Server_Win7.exe 复制到原正式服务目录。先把旧 EXE 改名为 PO_Server_Win7_old_日期.exe,再把新 EXE 命名为原来启动方式指向的文件名。只替换 EXE,不替换、不删除 instance、uploads、exports,也不要复制新包中的空目录过去。
  5. 如果原来设置了 PO_DATA_DIR、PO_HOST、启动端口参数或开机任务,继续使用原配置和同一个数据目录。按原方式启动新 EXE,查看窗口是否显示“已启动”和实际端口。默认端口是 8080;被占用时会尝试后续端口,因此必须核对窗口显示的端口。若端口意外改变,先检查旧进程是否仍在运行。

三、验收后恢复使用

  1. 用服务器本机浏览器打开 http://127.0.0.1:实际端口;再用一台员工电脑和一部连接公司 Wi-Fi 的手机打开原内网地址。确认能登录,且不出现首次初始化页面。若出现要求重新初始化,请立即停止新 EXE,检查数据目录是否指向旧 instance\po.db,不要继续新建管理员。
  2. 核对最近订单的单号、供应商、审批记录、付款/交货状态,并下载一份已审批的历史 PDF;历史 PDF 内容应保持原样。
  3. 核对本次新功能:供应商搜索;新建订单选供应商;编辑订单搜索物料;订单列表按物料查历史订单、复制下单;工作台的“未交付”“已交付已收票待付款”“已完成”和“其他待跟进”。复制订单会清空旧交期,新单需重新填写并核对单价。
  4. 由管理员在“物料库”按业务需要点击一次“同步历史审批价”,把升级前已审批订单的物料单价补录到物料库。该操作会更新物料库默认价,不会修改历史订单或归档 PDF;执行前先确认已完成备份,完成后抽查几种常用物料。
  5. 如已启用企业微信通知,用一张明确标为测试的订单,在业务负责人知情下验证审批群消息和公司 Wi-Fi 内手机审批。不要把生产群通知当成打包自检的一部分。确认原内网地址、端口和通知配置仍正确。
  6. 验收通过后,通知同事恢复使用。保留旧 EXE、升级前数据备份和新包,至少到完成一轮正常业务核对后再按公司备份制度处理。

四、失败时回退

  • **新 EXE 无法启动,且没有产生新业务数据:**停止新 EXE;把本次停机前备份的服务目录及独立数据目录恢复到原位置;用原启动方式运行旧 EXE,核对原订单和登录。不要只换回旧 EXE,却让它继续使用已被新版迁移的数据库。
  • **新 EXE 已产生订单、审批、付款或通知:**先停止服务并保存当前目录的副本,记录新业务和已发送的通知,再由业务负责人决定如何迁移或补录。直接恢复旧数据库会丢失升级后的记录;恢复旧通知队列还可能造成重复推送。
  • **出现首次初始化页面或订单为空:**这通常表示程序连接到了另一个数据目录。立即停止,检查 PO_DATA_DIR、EXE 所在目录和 instance\po.db,不要在空库上继续操作。
  • **新服务跑到 8081 等端口:**先核对旧进程是否完全退出,以及端口是否被其他程序占用。员工网址和企业微信通知中的内网地址应以最终实际端口为准。

本手册用于正式服务器版本替换。首次安装、Win7 环境故障和企业微信配置细节见同包 README_WIN7.txt 及现有使用升级手册。Win7 现场打包、局域网访问和真实企业微信发送仍需在目标服务器实际验收。