修复业务镜像增量分页超时 #61

Merged
WuYongJie merged 1 commits from hotfix/WuYongJie-business-mirror-incremental-keyset into main 2026-08-15 05:03:20 +08:00
Owner

任务占用与边界

  • 任务名称:修复业务镜像增量分页超时
  • 实际开发者:WuYongJie
  • 目标结果:超大 SQL Server 视图增量同步不再按无索引时间字段反复排序;每个数据集使用新鲜上游连接
  • 预计/实际修改路径:modules/EcommerceFinance/Services/BusinessMirrorSynchronizer.php、tests/Unit/EcommerceFinance/BusinessMirrorSynchronizerTest.php
  • 将写入的公共契约:BusinessMirrorSynchronizer.incremental-order-columns、每数据集 ODBC 连接生命周期
  • 仅复用、明确不修改:operations_replica.rpt.jst_skumap、business_mirror_table_states
  • 明确不修改:数据库结构、业务页面、金额、权限、生产连接资料

开工碰撞检查

  • 已运行 scripts/codex-task-preflight.ps1
  • 已检查最新 main 和全部远程任务分支
  • 已清理内容已由 main 完整包含的历史批次修复分支
  • 未发现实际写入重叠

实际改动

  • 水印字段只保留在增量时间窗口 WHERE 条件中。
  • 增量 keyset 分页和 ORDER BY 仅使用数据集稳定业务键,避免超大视图按时间字段反复排序超时。
  • 每个数据集同步开始前重置该来源缓存的 PDO,避免失效连接污染后续数据集。
  • 增加第二页 keyset 回归测试,验证水印不进入游标和绑定。

验证证据

  • PHP 语法:2 个修改文件通过。
  • 目标测试:9 tests / 48 assertions 通过。
  • 相关镜像回归:17 tests / 108 assertions 通过。
  • git diff --check 通过;git merge-tree --write-tree origin/main HEAD 无冲突。

风险检查

  • 不新增迁移,不变更数据库结构、金额、权限和连接资料。
  • 生产运行影响:后续增量读取排序方式改变;稳定键由数据集配置明确约束,水印仍限制读取窗口。
  • 回滚:回退本次提交,镜像现有数据不受影响。
  • 未提交 .env、密码、Token、私钥、真实财务数据、生产日志或构建产物
  • 前端改动:不适用

合并前复查

  • 已重新拉取远程引用并审核完整 diff
  • PR 不再是 WIP,测试结果已补齐
  • 无越界修改、敏感内容、未处理冲突和未验证结论
  • 已授权当前任务 Codex 执行 Squash merge、验证 main 并清理任务分支
  • 生产部署沿用用户此前对该镜像同步任务的明确授权
## 任务占用与边界 - 任务名称:修复业务镜像增量分页超时 - 实际开发者:WuYongJie - 目标结果:超大 SQL Server 视图增量同步不再按无索引时间字段反复排序;每个数据集使用新鲜上游连接 - 预计/实际修改路径:`modules/EcommerceFinance/Services/BusinessMirrorSynchronizer.php`、`tests/Unit/EcommerceFinance/BusinessMirrorSynchronizerTest.php` - 将写入的公共契约:`BusinessMirrorSynchronizer.incremental-order-columns`、每数据集 ODBC 连接生命周期 - 仅复用、明确不修改:`operations_replica.rpt.jst_skumap`、`business_mirror_table_states` - 明确不修改:数据库结构、业务页面、金额、权限、生产连接资料 ## 开工碰撞检查 - [x] 已运行 `scripts/codex-task-preflight.ps1` - [x] 已检查最新 main 和全部远程任务分支 - [x] 已清理内容已由 main 完整包含的历史批次修复分支 - [x] 未发现实际写入重叠 ## 实际改动 - 水印字段只保留在增量时间窗口 WHERE 条件中。 - 增量 keyset 分页和 ORDER BY 仅使用数据集稳定业务键,避免超大视图按时间字段反复排序超时。 - 每个数据集同步开始前重置该来源缓存的 PDO,避免失效连接污染后续数据集。 - 增加第二页 keyset 回归测试,验证水印不进入游标和绑定。 ## 验证证据 - PHP 语法:2 个修改文件通过。 - 目标测试:9 tests / 48 assertions 通过。 - 相关镜像回归:17 tests / 108 assertions 通过。 - `git diff --check` 通过;`git merge-tree --write-tree origin/main HEAD` 无冲突。 ## 风险检查 - 不新增迁移,不变更数据库结构、金额、权限和连接资料。 - 生产运行影响:后续增量读取排序方式改变;稳定键由数据集配置明确约束,水印仍限制读取窗口。 - 回滚:回退本次提交,镜像现有数据不受影响。 - [x] 未提交 `.env`、密码、Token、私钥、真实财务数据、生产日志或构建产物 - 前端改动:不适用 ## 合并前复查 - [x] 已重新拉取远程引用并审核完整 diff - [x] PR 不再是 WIP,测试结果已补齐 - [x] 无越界修改、敏感内容、未处理冲突和未验证结论 - [x] 已授权当前任务 Codex 执行 Squash merge、验证 main 并清理任务分支 - [x] 生产部署沿用用户此前对该镜像同步任务的明确授权
WuYongJie added 1 commit 2026-08-15 05:02:28 +08:00
WuYongJie changed title from WIP: 修复业务镜像增量分页超时 to 修复业务镜像增量分页超时 2026-08-15 05:03:17 +08:00
WuYongJie merged commit 809bca2e5c into main 2026-08-15 05:03:20 +08:00
WuYongJie deleted branch hotfix/WuYongJie-business-mirror-incremental-keyset 2026-08-15 05:03:21 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WuYongJie/CaiWuXiTong#61
No description provided.