不选择店铺时串行同步全部店铺商品数据 #26

Open
opened 2026-09-29 17:03:31 +08:00 by ila · 1 comment
Owner

来源与授权(2026-09-29)

用户要求“可以不选店铺下载时下载所有店铺的数据吗”,明确授权实现空店铺选择时全部店铺同步,内部系统不增加独立审批。

目标与方案

  • 选择店铺只同步所选店铺;空/空白选择使用erpgo实时ListShops,不用缓存猜测范围,更新店铺缓存,逐店铺串行拉取在售商品,每店铺串行200条分页与内部ID去重沿用现有契约。
  • 每店铺所有分页成功后商品+诊断单事务落库,保留现有下载/视频/上传状态、错误与视频记录;失败不写该店铺部分数据,已成功店铺保留,普通店铺失败记录后继续后续店铺,不自动重试。不同店铺同内部ID冲突不覆盖此前成功店铺。
  • API Key失效、服务端认证失败、限流、取消、网络/服务不可用等全局错误停止,汇总成功/失败/未处理,避免对同一全局问题逐店重复请求;取消时不启动后续店铺。
  • DownloadProductData保留方法名/字符串参数,返回同步结果和error;结果包含店铺数、成功/失败/未处理数、实际落库商品数、失败店铺序号及稳定错误码、停止原因。初始化/单店失败走现有错误通道;全店部分失败返回汇总,界面用明确成功/警告文案。
  • Go侧防止同一App同时启动多个商品同步;前端不选店铺可下载,显示单店/全部范围,完成后刷新列表与店铺缓存,依据实际同步结果计数而非筛选后total。用户仅查询同步,不触发视频下载或上传。

非目标

不触发Shopee上游同步、货憨憨写操作、淘宝请求,不改分页/并发/任务/数据库结构,不删除旧商品,不实现自动重试、后台调度或第二份任务状态。

范围、依赖和风险

所属MVP #3/Epic #2(商品同步R1),基于已提交#20及当前主线;待人工验收不阻塞独立功能。影响erpgo同步编排、App绑定返回/Go入口锁、商品列表提示及模拟SQLite集成测试。风险为全部店铺耗时、部分成功及状态保持;每店事务避免失败覆写,保留成功店铺是明确边界。回退本提交不回滚已同步商品及用户配置。保留go.mod/go.sum、cmsp.code-workspace、cmsp.exe。

设计证据

复用当前下载按钮、加载状态、日志及消息;小范围UI用文字契约,不新增原型。空店铺=全部实时店铺,选择店铺=单店;已成功可保留、失败原数据保留、未处理不请求,不把部分成功显示全部成功。复用windows-ui-ux标准反馈,真机未覆盖明确记录。

验收

模拟API+临时SQLite验证单店不请求shops、空选实时店铺顺序请求/完整分页落库、分页失败保留原数据并继续、全局错误/取消停止、空列表/店铺查询失败无商品写入、跨店ID冲突、防重复同步、错误脱敏及下载上传/视频/诊断状态保持。Go test/race/vet、前端/Windows构建、Harness及Wiki检查。无真实全店铺落库或外部写操作验证。

文档影响

更新Wiki Architecture-and-Code-Map、Business-Rules-and-Glossary、Local-Development-and-Verification、Troubleshooting的空店语义、返回结果、部分成功/停止和验证;回读revision后同步镜像,无部署/归档影响。

状态

待验收

Gitea访问

当前无可用Gitea MCP,回退WikiClient API,凭据只从用户授权环境文件载入进程,不输出或保存。

## 来源与授权(2026-09-29) 用户要求“可以不选店铺下载时下载所有店铺的数据吗”,明确授权实现空店铺选择时全部店铺同步,内部系统不增加独立审批。 ## 目标与方案 - 选择店铺只同步所选店铺;空/空白选择使用erpgo实时ListShops,不用缓存猜测范围,更新店铺缓存,逐店铺串行拉取在售商品,每店铺串行200条分页与内部ID去重沿用现有契约。 - 每店铺所有分页成功后商品+诊断单事务落库,保留现有下载/视频/上传状态、错误与视频记录;失败不写该店铺部分数据,已成功店铺保留,普通店铺失败记录后继续后续店铺,不自动重试。不同店铺同内部ID冲突不覆盖此前成功店铺。 - API Key失效、服务端认证失败、限流、取消、网络/服务不可用等全局错误停止,汇总成功/失败/未处理,避免对同一全局问题逐店重复请求;取消时不启动后续店铺。 - DownloadProductData保留方法名/字符串参数,返回同步结果和error;结果包含店铺数、成功/失败/未处理数、实际落库商品数、失败店铺序号及稳定错误码、停止原因。初始化/单店失败走现有错误通道;全店部分失败返回汇总,界面用明确成功/警告文案。 - Go侧防止同一App同时启动多个商品同步;前端不选店铺可下载,显示单店/全部范围,完成后刷新列表与店铺缓存,依据实际同步结果计数而非筛选后total。用户仅查询同步,不触发视频下载或上传。 ## 非目标 不触发Shopee上游同步、货憨憨写操作、淘宝请求,不改分页/并发/任务/数据库结构,不删除旧商品,不实现自动重试、后台调度或第二份任务状态。 ## 范围、依赖和风险 所属MVP #3/Epic #2(商品同步R1),基于已提交#20及当前主线;待人工验收不阻塞独立功能。影响erpgo同步编排、App绑定返回/Go入口锁、商品列表提示及模拟SQLite集成测试。风险为全部店铺耗时、部分成功及状态保持;每店事务避免失败覆写,保留成功店铺是明确边界。回退本提交不回滚已同步商品及用户配置。保留go.mod/go.sum、cmsp.code-workspace、cmsp.exe。 ## 设计证据 复用当前下载按钮、加载状态、日志及消息;小范围UI用文字契约,不新增原型。空店铺=全部实时店铺,选择店铺=单店;已成功可保留、失败原数据保留、未处理不请求,不把部分成功显示全部成功。复用windows-ui-ux标准反馈,真机未覆盖明确记录。 ## 验收 模拟API+临时SQLite验证单店不请求shops、空选实时店铺顺序请求/完整分页落库、分页失败保留原数据并继续、全局错误/取消停止、空列表/店铺查询失败无商品写入、跨店ID冲突、防重复同步、错误脱敏及下载上传/视频/诊断状态保持。Go test/race/vet、前端/Windows构建、Harness及Wiki检查。无真实全店铺落库或外部写操作验证。 ## 文档影响 更新Wiki Architecture-and-Code-Map、Business-Rules-and-Glossary、Local-Development-and-Verification、Troubleshooting的空店语义、返回结果、部分成功/停止和验证;回读revision后同步镜像,无部署/归档影响。 ## 状态 待验收 ## Gitea访问 当前无可用Gitea MCP,回退WikiClient API,凭据只从用户授权环境文件载入进程,不输出或保存。
Author
Owner

实现完成,待验收(2026-09-29)

  • 空/空白店铺选择:实时查询erpgo店铺列表并更新缓存,按返回顺序逐店串行同步;已选择店铺仍只查该店铺,不额外查询shops。沿用每页200、完整分页校验和内部ID去重,前端筛选不缩小远端同步范围。
  • 每店商品和诊断同事务提交;失败不写部分页。成功、失败、未处理分别计数,保存商品数按实际去重提交统计。失败店铺原数据及下载/上传状态、视频记录、last_error保留,已成功店铺不回滚。跨店ID冲突不覆盖前一个成功店铺。
  • 普通店铺错误继续,全局认证/Key/限流/取消/网络/服务错误停止,剩余店铺不请求,无自动重试。Go侧TryLock拒绝重叠同步;界面显示同步范围、持久可关闭汇总、失败店铺详情和停止原因。日志仅序号/计数/稳定错误摘要,不打印店铺标识、名称、凭据或原始响应。

验证

  • go test ./...、go test -race ./...、go vet ./...:通过。
  • 基于当前已提交Wails v2.15.0的临时modfile执行go test ./...:通过;用户工作区v2.16.0依赖改动未纳入提交。
  • 模拟HTTP+临时SQLite:最新实时店铺范围、shops→A1→A2→B1串行顺序、A完整页前不写入、分页失败继续B、空列表/列表失败、12类错误停止/继续、取消不提交部分商品、跨店ID冲突、落库诊断失败事务回滚并继续、下载/上传/视频状态及诊断保留、错误脱敏;App重叠同步拒绝:通过。
  • Wails v2.16.0 Windows生产构建:生成绑定Promise<erpgo.SyncResult>、前端编译及Windows程序均通过;产物 build/bin/cmsp26.exe。
  • Harness 55项单测、check --strict、Wiki sync及sync --check:通过。新增事务回滚测试最初使用错误表名,修正为product_diagnoses后回归通过。

未验证与边界

没有对真实全部店铺执行同步或现有数据库落库,没有淘宝访问或货憨憨/Shopee写操作。未验证真实Windows WebView2交互、Narrator、高对比度、DPI和大店铺真实耗时;模拟与构建不能替代这些验收。复用现有组件,不新增原型/归档。

文档与提交

线上Wiki已修改、回读正文/revision并导出核心镜像:

  • Architecture-and-Code-Map:b6f38cfa6fd1abde9bf864e070843eceaa8f1651
  • Business-Rules-and-Glossary:34592c1fc27459e30f215ef053c3d0c603526505
  • Local-Development-and-Verification:1b97e699e41e235f146e2f26c703e5246cc9eba5
  • Troubleshooting:c94bf22f0832f7665e9c866f95ee7f85bdc10bdf

实现与镜像同一提交:309e3eeb11e318e9517dc9ae874dc84664c53190,已推送origin/main。保留原go.mod/go.sum、cmsp.code-workspace、cmsp.exe改动。部署命令/数据库结构未变化,无任务归档影响。

Gitea MCP当前不可用,继续使用项目WikiClient API回退;凭据仅从授权环境文件载入进程。状态:待验收,未关闭。

## 实现完成,待验收(2026-09-29) - 空/空白店铺选择:实时查询erpgo店铺列表并更新缓存,按返回顺序逐店串行同步;已选择店铺仍只查该店铺,不额外查询shops。沿用每页200、完整分页校验和内部ID去重,前端筛选不缩小远端同步范围。 - 每店商品和诊断同事务提交;失败不写部分页。成功、失败、未处理分别计数,保存商品数按实际去重提交统计。失败店铺原数据及下载/上传状态、视频记录、last_error保留,已成功店铺不回滚。跨店ID冲突不覆盖前一个成功店铺。 - 普通店铺错误继续,全局认证/Key/限流/取消/网络/服务错误停止,剩余店铺不请求,无自动重试。Go侧TryLock拒绝重叠同步;界面显示同步范围、持久可关闭汇总、失败店铺详情和停止原因。日志仅序号/计数/稳定错误摘要,不打印店铺标识、名称、凭据或原始响应。 ## 验证 - go test ./...、go test -race ./...、go vet ./...:通过。 - 基于当前已提交Wails v2.15.0的临时modfile执行go test ./...:通过;用户工作区v2.16.0依赖改动未纳入提交。 - 模拟HTTP+临时SQLite:最新实时店铺范围、shops→A1→A2→B1串行顺序、A完整页前不写入、分页失败继续B、空列表/列表失败、12类错误停止/继续、取消不提交部分商品、跨店ID冲突、落库诊断失败事务回滚并继续、下载/上传/视频状态及诊断保留、错误脱敏;App重叠同步拒绝:通过。 - Wails v2.16.0 Windows生产构建:生成绑定Promise<erpgo.SyncResult>、前端编译及Windows程序均通过;产物 build/bin/cmsp26.exe。 - Harness 55项单测、check --strict、Wiki sync及sync --check:通过。新增事务回滚测试最初使用错误表名,修正为product_diagnoses后回归通过。 ## 未验证与边界 没有对真实全部店铺执行同步或现有数据库落库,没有淘宝访问或货憨憨/Shopee写操作。未验证真实Windows WebView2交互、Narrator、高对比度、DPI和大店铺真实耗时;模拟与构建不能替代这些验收。复用现有组件,不新增原型/归档。 ## 文档与提交 线上Wiki已修改、回读正文/revision并导出核心镜像: - Architecture-and-Code-Map:b6f38cfa6fd1abde9bf864e070843eceaa8f1651 - Business-Rules-and-Glossary:34592c1fc27459e30f215ef053c3d0c603526505 - Local-Development-and-Verification:1b97e699e41e235f146e2f26c703e5246cc9eba5 - Troubleshooting:c94bf22f0832f7665e9c866f95ee7f85bdc10bdf 实现与镜像同一提交:309e3eeb11e318e9517dc9ae874dc84664c53190,已推送origin/main。保留原go.mod/go.sum、cmsp.code-workspace、cmsp.exe改动。部署命令/数据库结构未变化,无任务归档影响。 Gitea MCP当前不可用,继续使用项目WikiClient API回退;凭据仅从授权环境文件载入进程。状态:待验收,未关闭。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmsp#26