a27db5f9601aacd1622fb480a699d9c8fdaf87e5
sybimport.Parse 剥离 【...】,而括号里经常是真正的规格标识而非备注: 款号 白色【207A】、色号 黑色【M0059C1】、颜色组合 【深灰+淺灰】。剥离后 不同的虾皮规格塌缩成同一个 target_color,而它正是采购查映射的键,同键 即同映射,Agent 会为不同规格点击同一个 PDD 值。 线上实测(2026-09-16):颜色塌缩键 78 个、涉及 61 个商品、190 个原始 规格;尺码塌缩键 24 个;受影响明细 407 条。落在塌缩键上的采购任务 3 笔, order_created 0 笔——至今没出事是因为每个塌缩键目前只有一条规格真正 下过单,不是设计上有保证。最高危的 6 个键全部尚未采购。 本次不改解析契约、不迁移数据,只让它明确失败:采购预览命中塌缩键时返回 SPEC_KEY_AMBIGUOUS 并提前返回,不再落到就绪判定;process_stage 一并拦截, 因为塌缩的键不能走 AI 匹配那条路——再匹配一次也只会为同一个键写一份映射, 而问题恰恰是多个规格共用这个键。 `[必须]` 解析原语下沉到新的叶子包 sybspec。sybimport 已依赖 purchase, 采购侧直接引用会成环;而两边各写一份镜像实现必然漂移,届时塌缩检测会拿错 半边去比,结论反而不可信。sybimport 保留别名转发,调用方无需改动。 `[必须]` 检测按虾皮商品加载全部明细,不是本次请求的那几条:塌缩是商品级 属性,只看请求内的明细会漏判。 TestBatchPreviewBulkLoadsAndNeverCallsAIMatcher 的查询数由 7 改为 8,新增 的是一次有界批量查询。该断言守的是不得出现 N+1,不是具体数字。 测试样本全部取自线上真实数据。app/goauto/sybimport 的 12 个失败先于本次 存在(#285),未新增。 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%