feat/336-yeeke-return-sync
Two reviewer-identified defects in the yeeke return sync: - acquire() wrote LeaseExpiresAt but nothing ever read it back, so a crash/restart mid-run left a permanent active_slot=1 row blocking every future sync. acquire() now runs a conditional takeover UPDATE first (status=running AND lease_expires_at <= now -> failed, active_slot cleared, error_message recorded), following the lease-with-expiry- takeover idiom in order_writeback_worker.go. The takeover UPDATE is a single statement so it is atomic per-row, and the ux_yeeke_sync_run_active_slot unique index arbitrates a concurrent takeover race the same way it already arbitrates two brand-new runs. - itemKey() always appended the positional index, so a package whose items come back in a different order on a later sync got new keys and duplicate rows. The index fallback is now used only when i.ID, i.ItemID and i.VariationID are all empty. Added tests: TestStaleLeaseIsTakenOverOnNextAcquire, TestValidLeaseIsNotTakenOver, TestConcurrentTakeoverExactlyOneWins, TestItemKeyStableAcrossReorder, TestItemKeyIndexFallbackForItemsLackingAllIDs, TestItemKeyDistinctVariationsOfSameItemID. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
GoAuto 移动采集管理平台
GoAuto 使用 go-admin、go-admin-ui 和 Android Portal/Agent 跑通 PDD 商品采集闭环:人工添加 PDD 链接、创建采集规则、创建任务、由 Android 执行并在任务详情查看结构化结果。
当前 MVP 只包含 PDD 商品、采集规则、采集任务、Android 执行和任务详情结果。顺云宝、Shopee、采购、批量任务、规则发布流程、全局停机和实时屏幕均不在当前范围。
阅读入口
旧版 ADB/Portal 验证代码、日志和诊断资料已归档到本机 demo/,该目录不进入 Git。
当前状态
- 需求和技术边界已确认。
- Harness Coding 文档和工单已建立。
- 服务端与 Android 端为可交互 HTML 原型。
server/已固定导入 go-adminv2.3.0。web/已固定导入 go-admin-uiv3.0.0。android/已建立 Kotlin/SDK 34 Agent 骨架。- 最小闭环 8 张业务表、迁移和唯一约束测试已经落地。
- 设备首次自注册、Token 认证、停用和吊销接口已经落地。
- Token 心跳、在线/离线、空闲/忙碌和离线任务失败已经落地。
验证
.\scripts\verify.ps1 -Component all
也可以把 all 改为 server、web 或 android 单独验证。
Languages
HTML
51.4%
Go
25.7%
Kotlin
10.6%
Vue
7.6%
JavaScript
1.9%
Other
2.7%