QiuSWandClaude Opus 5 7bd8166a30 feat(#49): add shop service — CRUD, enable toggle and enabled-name lookup
Stage B step 2 (service layer; HTTP handlers next).

Rename rewrites NormalizedName along with DisplayName. Leaving the key
stale would show the new name while still matching the old one, so the
archive would look correctly configured while importing a different shop.
Mutation-tested: updating only display_name makes the rename test fail.

Duplicates are reported against the name already stored, not the one just
submitted — the two can differ only in case or character width, and
echoing back what was typed reads as the system rejecting a name it does
not have.

Delete is a soft delete carrying the id into DeletedFlag, so the same
name can be added again afterwards while past sync records keep resolving
the old row.

EnabledNames returns an empty map without error. Empty is a legitimate
state that callers must turn into "refuse to sync", never "import
everything".

MarkSeen only updates shops already on the list. A sync must not grow the
allow-list as a side effect; discovery is a separate explicit action.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:23:02 +08:00

GoAuto 移动采集管理平台

GoAuto 使用 go-admin、go-admin-ui 和 Android Portal/Agent 跑通 PDD 商品采集闭环:人工添加 PDD 链接、创建采集规则、创建任务、由 Android 执行并在任务详情查看结构化结果。

当前 MVP 只包含 PDD 商品、采集规则、采集任务、Android 执行和任务详情结果。顺云宝、Shopee、采购、批量任务、规则发布流程、全局停机和实时屏幕均不在当前范围。

阅读入口

  1. 项目档案
  2. 开发工作流
  3. 架构与代码地图
  4. 业务规则与术语
  5. 本地开发与验证
  6. 常见修改
  7. 故障排查
  8. MVP 需求
  9. 共享 API 契约
  10. 一期交付工单索引
  11. 交互原型

旧版 ADB/Portal 验证代码、日志和诊断资料已归档到本机 demo/,该目录不进入 Git。

当前状态

  • 需求和技术边界已确认。
  • Harness Coding 文档和工单已建立。
  • 服务端与 Android 端为可交互 HTML 原型。
  • server/ 已固定导入 go-admin v2.3.0。
  • web/ 已固定导入 go-admin-ui v3.0.0。
  • android/ 已建立 Kotlin/SDK 34 Agent 骨架。
  • 最小闭环 8 张业务表、迁移和唯一约束测试已经落地。
  • 设备首次自注册、Token 认证、停用和吊销接口已经落地。
  • Token 心跳、在线/离线、空闲/忙碌和离线任务失败已经落地。

验证

.\scripts\verify.ps1 -Component all

也可以把 all 改为 server、web 或 android 单独验证。

S
Description
No description provided
Readme
11 MiB
Languages
HTML 50.6%
Go 26.6%
Kotlin 10.4%
Vue 7.7%
JavaScript 1.9%
Other 2.7%