在 SYB 同步记录页增加管理员立即同步 #78

Closed
opened 2026-08-24 16:58:09 +08:00 by ila · 2 comments
Owner

需求来源

  • 提出时间:2026-08-24
  • 需求摘要:定时同步之外需要可人工触发同步;人工入口应与 SYB 商品页解耦,放在“SYB 同步记录”页。
  • 目标:管理员无需等待整点任务,即可按固定范围立即发起一次同步,并在现有同步记录中查看过程和结果。

当前事实

  • 服务端已有管理员专用 POST /api/admin/v1/syb-products/import,接受 dateFrom/dateTo,并与定时任务共用同步执行与互斥机制。
  • “SYB 同步记录”页目前只提供查询、刷新和详情。
  • SYB 商品页已按 #77 移除同步执行状态,不应恢复同步入口或结果弹窗。

范围与方案

  • 仅修改 Web 管理端及对应测试;复用现有服务端接口,不改数据库、不新增 API。
  • 在“SYB 同步记录”页右上角增加仅管理员可见的“立即同步”按钮。
  • 固定同步浏览器本地日期的“昨天至今天”,不再增加日期选择弹窗。
  • 请求提交期间按钮显示加载并禁用;列表中已有运行中任务时显示“同步进行中”并禁用。
  • 服务端返回任务后刷新列表并沿用现有轮询;失败信息继续写入并在同步记录/详情中查看。
  • 采购员可查看同步记录,但看不到执行按钮。
  • SYB 商品页不增加入口、不显示同步成败提示。

设计证据(现有页面小范围交互)

低保真布局:

[SYB 同步记录]
查看每次同步的进度与结果……                       [立即同步]

[日期] [状态] [查询] [重置]
[同步记录表格]

交互状态:

  • 正常:admin 显示“立即同步”;采购员不显示。
  • 提交中:按钮 loading、禁用,避免重复提交。
  • 运行中:按钮显示“同步进行中”、禁用;列表按现有机制轮询。
  • 失败:不在 SYB 商品页弹窗;记录页列表/详情展示简明失败原因。
  • 后端互斥冲突:保留服务端可读提示“已有一个导入任务正在执行,请等它结束后再试”。

设计复用现有 SYB 同步记录页的按钮、加载、禁用、消息与表格规范,不新增页面或重大流程,因此无需 QuantUX/HTML 快照。

依赖与并行

  • 依赖 #75(定时同步与同步记录页)和 #77(商品页与同步状态解耦)的现有实现。
  • 不与修改同一同步记录页的任务并行。
  • 影响子项目:Web;服务端仅复用现有契约,Android 无影响。

验收标准

  • 管理员能在“SYB 同步记录”页看到并点击“立即同步”。
  • 请求固定提交昨天和今天(dateFrom 为昨天、dateTo 为今天)。
  • 提交期间与已有任务运行期间不能重复点击。
  • 接口受理后刷新同步记录并继续显示/轮询该任务。
  • 服务端拒绝或执行失败时,用户能在同步记录页获得清楚反馈并查看失败详情。
  • 采购员看不到“立即同步”;SYB 商品页仍无同步入口和同步结果提示。
  • Web 定向 E2E、构建与相关静态检查通过。

验证计划

  • Playwright 覆盖管理员触发、日期请求、运行中禁用以及采购员权限。
  • 运行 SYB 同步记录相关 E2E。
  • 运行 Web 构建。
  • 不对真实 SYB 线上环境发起同步;真实数据同步由人工验收触发。

风险

  • 人工触发会调用外部 SYB 服务,但沿用已有互斥,不能与定时同步并发。
  • 浏览器日期按本地时区格式化,避免使用 UTC 日期造成午夜边界偏差。
  • 不记录凭据、Cookie 或生产数据。

文档影响

需更新 Wiki《Business Rules and Glossary》:说明管理员可在同步记录页人工发起“昨天至今天”的同步,且与定时任务共用互斥;随后同步本地只读镜像。

## 需求来源 - 提出时间:2026-08-24 - 需求摘要:定时同步之外需要可人工触发同步;人工入口应与 SYB 商品页解耦,放在“SYB 同步记录”页。 - 目标:管理员无需等待整点任务,即可按固定范围立即发起一次同步,并在现有同步记录中查看过程和结果。 ## 当前事实 - 服务端已有管理员专用 `POST /api/admin/v1/syb-products/import`,接受 `dateFrom/dateTo`,并与定时任务共用同步执行与互斥机制。 - “SYB 同步记录”页目前只提供查询、刷新和详情。 - SYB 商品页已按 #77 移除同步执行状态,不应恢复同步入口或结果弹窗。 ## 范围与方案 - 仅修改 Web 管理端及对应测试;复用现有服务端接口,不改数据库、不新增 API。 - 在“SYB 同步记录”页右上角增加仅管理员可见的“立即同步”按钮。 - 固定同步浏览器本地日期的“昨天至今天”,不再增加日期选择弹窗。 - 请求提交期间按钮显示加载并禁用;列表中已有运行中任务时显示“同步进行中”并禁用。 - 服务端返回任务后刷新列表并沿用现有轮询;失败信息继续写入并在同步记录/详情中查看。 - 采购员可查看同步记录,但看不到执行按钮。 - SYB 商品页不增加入口、不显示同步成败提示。 ## 设计证据(现有页面小范围交互) 低保真布局: ``` [SYB 同步记录] 查看每次同步的进度与结果…… [立即同步] [日期] [状态] [查询] [重置] [同步记录表格] ``` 交互状态: - 正常:admin 显示“立即同步”;采购员不显示。 - 提交中:按钮 loading、禁用,避免重复提交。 - 运行中:按钮显示“同步进行中”、禁用;列表按现有机制轮询。 - 失败:不在 SYB 商品页弹窗;记录页列表/详情展示简明失败原因。 - 后端互斥冲突:保留服务端可读提示“已有一个导入任务正在执行,请等它结束后再试”。 设计复用现有 SYB 同步记录页的按钮、加载、禁用、消息与表格规范,不新增页面或重大流程,因此无需 QuantUX/HTML 快照。 ## 依赖与并行 - 依赖 #75(定时同步与同步记录页)和 #77(商品页与同步状态解耦)的现有实现。 - 不与修改同一同步记录页的任务并行。 - 影响子项目:Web;服务端仅复用现有契约,Android 无影响。 ## 验收标准 - [ ] 管理员能在“SYB 同步记录”页看到并点击“立即同步”。 - [ ] 请求固定提交昨天和今天(`dateFrom` 为昨天、`dateTo` 为今天)。 - [ ] 提交期间与已有任务运行期间不能重复点击。 - [ ] 接口受理后刷新同步记录并继续显示/轮询该任务。 - [ ] 服务端拒绝或执行失败时,用户能在同步记录页获得清楚反馈并查看失败详情。 - [ ] 采购员看不到“立即同步”;SYB 商品页仍无同步入口和同步结果提示。 - [ ] Web 定向 E2E、构建与相关静态检查通过。 ## 验证计划 - Playwright 覆盖管理员触发、日期请求、运行中禁用以及采购员权限。 - 运行 SYB 同步记录相关 E2E。 - 运行 Web 构建。 - 不对真实 SYB 线上环境发起同步;真实数据同步由人工验收触发。 ## 风险 - 人工触发会调用外部 SYB 服务,但沿用已有互斥,不能与定时同步并发。 - 浏览器日期按本地时区格式化,避免使用 UTC 日期造成午夜边界偏差。 - 不记录凭据、Cookie 或生产数据。 ## 文档影响 需更新 Wiki《Business Rules and Glossary》:说明管理员可在同步记录页人工发起“昨天至今天”的同步,且与定时任务共用互斥;随后同步本地只读镜像。
Author
Owner

实施完成,等待人工验收

实现结果

  • “SYB 同步记录”页新增仅管理员可见的“立即同步”。
  • 固定提交浏览器本地日期的昨天至今天,不增加日期弹窗。
  • 提交中和当前记录运行中时按钮禁用;受理后重置筛选、刷新列表并沿用轮询。
  • 采购员保持只读;SYB 商品页没有恢复同步入口或同步结果提示。
  • 复用现有管理员 API 与服务端互斥;服务端、数据库和 Android 均未修改。

验证

  • pnpm exec eslint src/views/goauto/syb-sync-runs/index.vue:通过。
  • pnpm exec playwright test tests/e2e/syb-sync-run.spec.ts:3/3 通过。
  • pnpm run build:prod:通过;只有既有 CSS 兼容与 chunk 体积警告。
  • python dev_scripts/harness.py sync --check:通过。
  • python dev_scripts/harness.py check --strict:通过。
  • 未对真实 SYB 发起同步,避免未经人工操作外部数据;需管理员页面验收。

文档与提交

  • Wiki《Business Rules and Glossary》已在线更新并回读确认:revision 3d2a64c6638229ff95a8ac5a5680bb41f0dcb91d。
  • 任务归档:Task-78-在-SYB-同步记录页增加管理员立即同步,revision ce8d21e7da612e5e43dfc522820292a79d797310。
  • 本地归档脚本因本机 Gitea API 凭据失效返回 401,已按 MCP 优先规则回退到 Gitea MCP 创建并回读归档;未导出 docs/task/。
  • 提交:5c9b75fc53f454ff9eac55487a3a627f771ca63d,已推送 main。

工单保持开启,状态为待验收。

## 实施完成,等待人工验收 ### 实现结果 - “SYB 同步记录”页新增仅管理员可见的“立即同步”。 - 固定提交浏览器本地日期的昨天至今天,不增加日期弹窗。 - 提交中和当前记录运行中时按钮禁用;受理后重置筛选、刷新列表并沿用轮询。 - 采购员保持只读;SYB 商品页没有恢复同步入口或同步结果提示。 - 复用现有管理员 API 与服务端互斥;服务端、数据库和 Android 均未修改。 ### 验证 - `pnpm exec eslint src/views/goauto/syb-sync-runs/index.vue`:通过。 - `pnpm exec playwright test tests/e2e/syb-sync-run.spec.ts`:3/3 通过。 - `pnpm run build:prod`:通过;只有既有 CSS 兼容与 chunk 体积警告。 - `python dev_scripts/harness.py sync --check`:通过。 - `python dev_scripts/harness.py check --strict`:通过。 - 未对真实 SYB 发起同步,避免未经人工操作外部数据;需管理员页面验收。 ### 文档与提交 - Wiki《Business Rules and Glossary》已在线更新并回读确认:revision `3d2a64c6638229ff95a8ac5a5680bb41f0dcb91d`。 - 任务归档:[Task-78-在-SYB-同步记录页增加管理员立即同步](https://git.ilapage.cn/OPC/goauto/wiki/Task-78-%E5%9C%A8-SYB-%E5%90%8C%E6%AD%A5%E8%AE%B0%E5%BD%95%E9%A1%B5%E5%A2%9E%E5%8A%A0%E7%AE%A1%E7%90%86%E5%91%98%E7%AB%8B%E5%8D%B3%E5%90%8C%E6%AD%A5.-),revision `ce8d21e7da612e5e43dfc522820292a79d797310`。 - 本地归档脚本因本机 Gitea API 凭据失效返回 401,已按 MCP 优先规则回退到 Gitea MCP 创建并回读归档;未导出 `docs/task/`。 - 提交:`5c9b75fc53f454ff9eac55487a3a627f771ca63d`,已推送 `main`。 工单保持开启,状态为待验收。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:34 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#78