From 35fea3802f98b62ed4801435e369bc4a2df19043 Mon Sep 17 00:00:00 2001 From: liuwenxin <1009266660@qq.com> Date: Fri, 6 Nov 2026 15:36:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=A4=87=E4=BB=BD):=20=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=84=9A=E6=9C=AC=E8=A6=86=E7=9B=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=B9=B6=E8=BF=94=E5=9B=9E=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复根目录 README 的失效文档链接,改为现有 T+ 本地恢复手册。\n恢复脚本移除 RESTORE WITH REPLACE,默认不覆盖已有数据库;成功和失败均写入结果文件,失败显式返回非零退出码,并统一释放数据库连接。\n\n影响范围:项目导航文档与两个本地 SQL Server 恢复辅助脚本。\n\nCo-Authored-By: Claude Code --- README.md | 6 ++++-- db/restore_run.ps1 | 28 ++++++++++++++++++++++++++++ db/restore_run2.ps1 | 19 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 db/restore_run.ps1 create mode 100644 db/restore_run2.ps1 diff --git a/README.md b/README.md index 1d7ab9c..0383e53 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 营销人员绩效工资核算系统。后端 Python/FastAPI,前端 Vue 3,数据存 MySQL,会话与缓存在 Redis。 -> 当前进度:正式工资闭环及同步运维自动化已完成本地开发验证,支持每周原始采集、有限重试、独立心跳和站内提示,并提供 Windows 托管脚本。生产自动化默认关闭,尚未安装启用;真实金额与整月工资尚未验收,首组样本缺人工指导成本。审核能力保留但默认关闭,多原单更正仍单独跟踪。最新交付见 [开发记录](docs/同步运维自动化与样本核对开发记录_2026-10-30.md) 和 [Windows 操作说明](scripts/windows/README.md)。 +> 当前进度:正式工资闭环及同步运维自动化已完成本地开发验证,支持每周原始采集、有限重试、独立心跳和站内提示,并提供 Windows 托管脚本。辽宁兴晟达真实样本已在隔离库完成正式导入、核算、月结、报表与导出验收,整月实际工资仍须另行核定,见[真实样本业务闭环验收](docs/真实样本业务闭环验收_2026-11-03.md)。生产自动化默认关闭,尚未安装启用。审核能力保留但默认关闭,多原单更正仍单独跟踪。相关说明见 [T+ 本地恢复与同步开发手册](docs/T+本地恢复与同步开发手册.md) 和 [Windows 操作说明](scripts/windows/README.md)。 ## 快速开始 @@ -128,6 +128,8 @@ python e2e/system_management.py # 系统管理 13 项 ## 相关文档 +客户现场部署见 [客户现场部署与 T+ 连接说明](docs/客户现场部署与T+连接说明.md):按 Linux 容器、Windows Server 或 Linux 原生选择托管方式,连接客户既有 T+ SQL Server。生产 Compose 为 `docker/docker-compose.prod.yml`,T+ 恢复库编排仅用于本地开发。 + | 文档 | 内容 | | --- | --- | | `backend/README.md` | 后端启动、分层约定、接口清单 | @@ -141,7 +143,7 @@ python e2e/system_management.py # 系统管理 13 项 - 应用新增迁移后,T+ 页面提供正式业务导入预览/执行;业务列表“正式核算”准备人工业务资料或核算已导入资料,台账可查看逐段依据。 - “生成月结快照”首次成功即锁定该月分配;审批退回、重新生成不解锁。历史已生成工资保留,差额计调整单生成当月。 - 后端接口说明、验证状态和已知边界见 `docs/正式工资闭环开发记录_2026-10-30.md`。旧引擎仅通过 `PAYROLL_ALLOW_LEGACY_CALCULATION` 显式启用作历史兼容,默认关闭,不用于最新规则验收。 -- 集成回归使用 `scripts/run_isolated_tests.py`;原 `.venv` 不可用时,本机使用 `backend/.venv-workbench/Scripts/python.exe`。测试运行器保留隔离库供复查,不删除原开发数据。 +- 集成回归使用 `scripts/run_isolated_tests.py`;原 `.venv` 不可用时,本机使用 `backend/.venv-workbench/Scripts/python.exe`。运行器默认清理本次新建的隔离库和账号,绝不删除原开发数据;需复查失败现场时加 `--keep`。 审核默认关闭:`PAYROLL_APPROVAL_ENABLED=false`,工资生成直接完成且不产生审批痕迹;如确需系统内复核,显式开启后沿用财务/领导审核和各类审批参数。此配置与旧核算引擎兼容开关独立。 diff --git a/db/restore_run.ps1 b/db/restore_run.ps1 new file mode 100644 index 0000000..df679b7 --- /dev/null +++ b/db/restore_run.ps1 @@ -0,0 +1,28 @@ +# restore_run.ps1 - 独立进程执行 RESTORE,默认不覆盖已有数据库 +if (-not $env:PAYROLL_RESTORE_CONNECTION_STRING) { throw "PAYROLL_RESTORE_CONNECTION_STRING is required" } +$connStr = $env:PAYROLL_RESTORE_CONNECTION_STRING +$c = New-Object System.Data.Odbc.OdbcConnection $connStr +$cmd = $null +try { + $c.Open() + $cmd = $c.CreateCommand() + $cmd.CommandTimeout = 14400 + $cmd.CommandText = @" +RESTORE DATABASE [UFTData472115_000001] +FROM DISK = '\\192.168.1.170\dbbak\ceshi20261026.bak' +WITH MOVE 'MsSql' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\UFTData472115_000001.mdf', + MOVE 'MsSql_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\UFTData472115_000001_log.ldf', + RECOVERY, STATS = 10 +"@ + $cmd.ExecuteNonQuery() | Out-Null + "RESTORE-DONE-OK" | Out-File 'D:\work\code\PayrollManagementSystem\db\restore_result.txt' -Encoding ascii + exit 0 +} catch { + $message = $_.Exception.Message + if ($_.Exception.InnerException) { $message = $_.Exception.InnerException.Message } + ("RESTORE-FAILED: " + $message) | Out-File 'D:\work\code\PayrollManagementSystem\db\restore_result.txt' -Encoding ascii + exit 1 +} finally { + if ($cmd) { $cmd.Dispose() } + if ($c) { $c.Close(); $c.Dispose() } +} diff --git a/db/restore_run2.ps1 b/db/restore_run2.ps1 new file mode 100644 index 0000000..3c1511f --- /dev/null +++ b/db/restore_run2.ps1 @@ -0,0 +1,19 @@ +if (-not $env:PAYROLL_RESTORE_CONNECTION_STRING) { throw "PAYROLL_RESTORE_CONNECTION_STRING is required" } +$connStr = $env:PAYROLL_RESTORE_CONNECTION_STRING +$c = New-Object System.Data.Odbc.OdbcConnection $connStr +$cmd = $null +try { + $c.Open() + $cmd = $c.CreateCommand() + $cmd.CommandTimeout = 14400 + $cmd.CommandText = "RESTORE DATABASE [UFTData472115_000001] FROM DISK = 'C:\baktmp\ceshi20261026.bak' WITH MOVE 'MsSql' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\UFTData472115_000001.mdf', MOVE 'MsSql_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\UFTData472115_000001_log.ldf', RECOVERY, STATS = 10" + $cmd.ExecuteNonQuery() | Out-Null + "RESTORE-DONE-OK" | Out-File "D:\work\code\PayrollManagementSystem\db\restore_result.txt" -Encoding ascii + exit 0 +} catch { + ("RESTORE-FAILED: " + $_.Exception.Message) | Out-File "D:\work\code\PayrollManagementSystem\db\restore_result.txt" -Encoding ascii + exit 1 +} finally { + if ($cmd) { $cmd.Dispose() } + if ($c) { $c.Close(); $c.Dispose() } +}