普通商品增加1688代发采购单价来源 #74

Merged
limeng merged 3 commits from feature/limeng-product-purchase-price into main 2026-08-21 14:49:17 +08:00
Collaborator

任务占用与边界

  • 任务名称:普通商品增加 1688 代发采购单价来源
  • 实际开发者:limeng
  • 目标结果:普通商品资料保留并标注原采购价,同时展示最近已完成采购单的 1688 一键代发单价及来源
  • 将写入的公共契约:product-inventory.purchase-order-prices、product_purchase_price_mirror_rows、product_purchase_price_sync_states、business-mirror:sync-product-purchase-prices
  • 仅复用、不修改:operations_replica.rpt.jst_sku、business.pages.show、UpstreamReadOnlyQueryFactory、business_mirror
  • 上游固定只读范围:jiansun 的 dbo.jst_purchase 与 dbo.jst_purchaseItem
  • 匹配与筛选:按 sku_id 匹配;页面取 status=Finished、标签包含 1688一键代发、有有效单价的最近一条
  • 明确不做:不修改上游数据库,不覆盖普通商品原采购价,不执行生产迁移、首次全量或部署

开工碰撞检查

  • 已检查最新 main 和所有远程任务分支
  • 已运行 scripts/codex-task-preflight.ps1
  • 已区分写入契约和仅复用契约
  • 合并前重新拉取远程引用并复跑预检
  • 未发现实际写入重叠

实际改动

  • 新增固定、参数化、只读采购单价 Repository,使用 updateTime + 明细 Id 稳定游标
  • 新增采购单价镜像表、同步状态、可断点全量/增量同步器和 Artisan 命令
  • 定时任务仅继续已完成首次全量的数据集,不自动发起首次全量
  • 普通商品页保留原 purchase_price,新增最近完成 1688 代发单价,并按用户指定全称标注两个来源
  • 首次同步未完成时仍显示原商品数据,并明确提示“当前仅显示普通商品采购价”
  • 更新业务镜像清单和相关单元、功能、部署脚本测试

验证证据

  • 定向测试:19 项通过,145 个断言
  • 相关 EcommerceFinance 回归:108 项通过,715 个断言
  • PHP 语法检查通过,git diff --check 通过
  • 本地标准环境 deploy/local-init.sh 构建并启动成功,app healthy
  • 实际页面验证:两列标题和来源全称完整,横向滚动正常,筛选区正常,未同步提示可见
  • 浏览器控制台无 warning/error
  • 无权限、首次同步中、同步失败保留旧数据等页面场景已有测试
  • 符合 DESIGN.md,无批准偏差

风险、回滚与授权

  • 涉及金额读取,但仅展示来源价格,不参与金额计算、不覆盖原价
  • 涉及新增共享业务镜像迁移;迁移未在共享/生产数据库执行
  • 未提交凭据、真实业务行、日志、.env 或构建产物
  • 生产迁移、首次 --full、镜像/上游对账和部署仍需独立明确授权

回滚:应用代码可回退本 PR;若未来已获授权执行迁移,表结构回滚和镜像数据处理必须作为独立生产数据库操作审批,不能随镜像回滚自动执行。

合并前复查

  • PR 已同步最新 main
  • 已逐文件审核 origin/main...任务分支 完整 diff
  • 已确认无越界修改和敏感内容
  • 测试与实际页面验证通过
  • 已授权当前任务 Codex通过 PR 执行 Squash merge
  • 本次不执行生产迁移、首次全量或部署
## 任务占用与边界 - 任务名称:普通商品增加 1688 代发采购单价来源 - 实际开发者:limeng - 目标结果:普通商品资料保留并标注原采购价,同时展示最近已完成采购单的 1688 一键代发单价及来源 - 将写入的公共契约:`product-inventory.purchase-order-prices`、`product_purchase_price_mirror_rows`、`product_purchase_price_sync_states`、`business-mirror:sync-product-purchase-prices` - 仅复用、不修改:`operations_replica.rpt.jst_sku`、`business.pages.show`、`UpstreamReadOnlyQueryFactory`、`business_mirror` - 上游固定只读范围:`jiansun` 的 `dbo.jst_purchase` 与 `dbo.jst_purchaseItem` - 匹配与筛选:按 `sku_id` 匹配;页面取 `status=Finished`、标签包含 `1688一键代发`、有有效单价的最近一条 - 明确不做:不修改上游数据库,不覆盖普通商品原采购价,不执行生产迁移、首次全量或部署 ## 开工碰撞检查 - [x] 已检查最新 `main` 和所有远程任务分支 - [x] 已运行 `scripts/codex-task-preflight.ps1` - [x] 已区分写入契约和仅复用契约 - [x] 合并前重新拉取远程引用并复跑预检 - [x] 未发现实际写入重叠 ## 实际改动 - 新增固定、参数化、只读采购单价 Repository,使用 `updateTime + 明细 Id` 稳定游标 - 新增采购单价镜像表、同步状态、可断点全量/增量同步器和 Artisan 命令 - 定时任务仅继续已完成首次全量的数据集,不自动发起首次全量 - 普通商品页保留原 `purchase_price`,新增最近完成 1688 代发单价,并按用户指定全称标注两个来源 - 首次同步未完成时仍显示原商品数据,并明确提示“当前仅显示普通商品采购价” - 更新业务镜像清单和相关单元、功能、部署脚本测试 ## 验证证据 - [x] 定向测试:19 项通过,145 个断言 - [x] 相关 EcommerceFinance 回归:108 项通过,715 个断言 - [x] PHP 语法检查通过,`git diff --check` 通过 - [x] 本地标准环境 `deploy/local-init.sh` 构建并启动成功,app healthy - [x] 实际页面验证:两列标题和来源全称完整,横向滚动正常,筛选区正常,未同步提示可见 - [x] 浏览器控制台无 warning/error - [x] 无权限、首次同步中、同步失败保留旧数据等页面场景已有测试 - [x] 符合 `DESIGN.md`,无批准偏差 ## 风险、回滚与授权 - [x] 涉及金额读取,但仅展示来源价格,不参与金额计算、不覆盖原价 - [x] 涉及新增共享业务镜像迁移;迁移未在共享/生产数据库执行 - [x] 未提交凭据、真实业务行、日志、`.env` 或构建产物 - [x] 生产迁移、首次 `--full`、镜像/上游对账和部署仍需独立明确授权 回滚:应用代码可回退本 PR;若未来已获授权执行迁移,表结构回滚和镜像数据处理必须作为独立生产数据库操作审批,不能随镜像回滚自动执行。 ## 合并前复查 - [x] PR 已同步最新 `main` - [x] 已逐文件审核 `origin/main...任务分支` 完整 diff - [x] 已确认无越界修改和敏感内容 - [x] 测试与实际页面验证通过 - [x] 已授权当前任务 Codex通过 PR 执行 Squash merge - [x] 本次不执行生产迁移、首次全量或部署
limeng added 1 commit 2026-08-21 13:29:16 +08:00
limeng added 2 commits 2026-08-21 14:45:43 +08:00
limeng changed title from WIP: 普通商品增加1688代发采购单价来源 to 普通商品增加1688代发采购单价来源 2026-08-21 14:48:30 +08:00
limeng merged commit d87ca96593 into main 2026-08-21 14:49:17 +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#74
No description provided.