待实施。涉及数据库迁移、定时调度和多实例并发,实施前必须再次取得用户明确确认。
041cd8d03fd53f84065b9c513f635e3b87729e75
sys_job + robfig/cron
sys_job.concurrent
/api/v1/job/start/:id
disabled
新增 shopee_spec_auto_match_run:保存触发来源(scheduled/manual)、状态、稳定 requestId、请求人、批量参数、扫描/符合/处理/confirmed/未匹配/失败数量、安全错误摘要和开始/结束时间;使用唯一可空 active_slot 与过期租约保证定时、手动及多实例全局只运行一个批次。
shopee_spec_auto_match_run
active_slot
新增 shopee_spec_auto_match_work_item:每个蝦皮商品唯一,保存输入指纹、状态、尝试次数、下次尝试时间、租约所有者/到期时间、最后运行、结果计数和脱敏错误。领取使用带旧状态、指纹、尝试次数和租约条件的原子更新,防止同一商品被重复处理。
shopee_spec_auto_match_work_item
GoAutoShopeeSpecAutoMatch
POST /api/admin/v1/shopee-spec-auto-match/runs
requestId
GET /api/admin/v1/shopee-spec-auto-match/runs/latest
复用 Admin 蝦皮商品列表现有工具栏和 Element Plus 交互:
[添加] [删除] [执行规格自动匹配] 最近一次:完成,处理 12,确认 9,未匹配 3
点击后确认框:
将在后台处理最多 20 个符合条件的商品,并可能调用 AI。不会创建采购任务或订单。是否继续?
状态覆盖:
设计状态:已确认。确认人/时间:用户,2026-09-01;确认范围为增加手动执行、列表入口、后台批次与定时任务共用门禁。无需完整原型或本地 HTML:现有页面小范围按钮、确认框和摘要反馈。
server/app/goauto/shopeeproduct/
server/app/jobs/examples.go
server/cmd/migrate/migration/version-local/
server/app/goauto/access/
web/src/views/goauto/shopee-products/
.\scripts\verify.ps1 -Component server
.\scripts\verify.ps1 -Component web
python dev_scripts/harness.py check --strict
已按确认方案完成并推送。
0 15 * * * *
go test ./...
go vet ./app/goauto/shopeeproduct ./app/jobs ./cmd/migrate/migration/version-local
pnpm build:prod
shopee-spec-auto-match-run.spec.ts
sync
sync --check
verify.ps1 -Component web
web/src/views/goauto/purchase-tasks/index.vue
2864a22f9e0f
0e1df62c48ae
87219820eec3
88422ddd1bd2
feat/195-scheduled-spec-auto-match
d792461
041cd8d
本会话未提供 Gitea MCP 与 codebase-memory 图工具,已按项目规则回退到已登录 Gitea 页面和 rg,未创建任务归档。工单保持开启,等待用户验收。
rg
No dependencies set.
The note is not visible to the blocked user.
阶段
待实施。涉及数据库迁移、定时调度和多实例并发,实施前必须再次取得用户明确确认。
原始需求摘要
前置依赖
041cd8d03fd53f84065b9c513f635e3b87729e75,尚待用户验收。当前代码事实
sys_job + robfig/cron调度框架,并已有 SYB 定时同步任务示例。sys_job.concurrent当前没有形成跨进程互斥,不能单独作为本任务的并发保证。/api/v1/job/start/:id只是把任务注册进 Cron,不是“立即执行一次”,因此不能冒充本需求的手动入口。目标范围
非目标
资格与匹配规则
disabled,并能给出当前可选颜色或尺码候选。数据与并发方案
运行记录
新增
shopee_spec_auto_match_run:保存触发来源(scheduled/manual)、状态、稳定 requestId、请求人、批量参数、扫描/符合/处理/confirmed/未匹配/失败数量、安全错误摘要和开始/结束时间;使用唯一可空active_slot与过期租约保证定时、手动及多实例全局只运行一个批次。商品工作状态
新增
shopee_spec_auto_match_work_item:每个蝦皮商品唯一,保存输入指纹、状态、尝试次数、下次尝试时间、租约所有者/到期时间、最后运行、结果计数和脱敏错误。领取使用带旧状态、指纹、尝试次数和租约条件的原子更新,防止同一商品被重复处理。调度与手动接口
GoAutoShopeeSpecAutoMatch,注册到现有任务表。POST /api/admin/v1/shopee-spec-auto-match/runs:提交 UUIDrequestId,异步启动一次手动批次;相同请求幂等重放。GET /api/admin/v1/shopee-spec-auto-match/runs/latest:读取最近一次执行摘要,供列表页反馈。低保真与设计证据
复用 Admin 蝦皮商品列表现有工具栏和 Element Plus 交互:
[添加] [删除] [执行规格自动匹配] 最近一次:完成,处理 12,确认 9,未匹配 3点击后确认框:
状态覆盖:
设计状态:已确认。确认人/时间:用户,2026-09-01;确认范围为增加手动执行、列表入口、后台批次与定时任务共用门禁。无需完整原型或本地 HTML:现有页面小范围按钮、确认框和摘要反馈。
预计影响
server/app/goauto/shopeeproduct/:扫描、工作状态、批次执行及复用 #194 服务。server/app/jobs/examples.go:注册调用目标。server/cmd/migrate/migration/version-local/:两张状态表及系统任务种子迁移与测试。server/app/goauto/access/、路由/处理器:管理员接口和权限。web/src/views/goauto/shopee-products/、对应 API 与测试:手动按钮和最近摘要。验收标准
验证方式
.\scripts\verify.ps1 -Component server.\scripts\verify.ps1 -Component webpython dev_scripts/harness.py check --strict风险与回退
文档影响
实施完成,待验收
已按确认方案完成并推送。
实现
shopee_spec_auto_match_run与shopee_spec_auto_match_work_item,以唯一活动槽、运行租约和逐商品租约保证定时/手动/多实例全局串行。GoAutoShopeeSpecAutoMatch。迁移幂等播种默认关闭任务:Cron0 15 * * * *,默认每批 20。POST /api/admin/v1/shopee-spec-auto-match/runs与GET /api/admin/v1/shopee-spec-auto-match/runs/latest;手动执行异步、requestId 幂等,已有活动批次时不重复启动。验证
go test ./...:通过。go vet ./app/goauto/shopeeproduct ./app/jobs ./cmd/migrate/migration/version-local:通过。pnpm build:prod:通过(只有仓库既有 CSS/大 chunk 警告)。shopee-spec-auto-match-run.spec.ts:1 passed。python dev_scripts/harness.py check --strict:通过。sync与sync --check:通过。verify.ps1 -Component web:被未修改的基线文件web/src/views/goauto/purchase-tasks/index.vue既有空格/Tab lint 错误阻断;本工单文件 lint、构建及新增浏览器用例均已单独通过,未越界修复。Wiki revisions
2864a22f9e0f0e1df62c48ae87219820eec388422ddd1bd2提交
feat/195-scheduled-spec-auto-matchd792461041cd8d本会话未提供 Gitea MCP 与 codebase-memory 图工具,已按项目规则回退到已登录 Gitea 页面和
rg,未创建任务归档。工单保持开启,等待用户验收。