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

54 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 采购订单系统: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 现场打包、局域网访问和真实企业微信发送仍需在目标服务器实际验收。