Files
cmautobuy/docs/02-architecture-and-code-map.md

3.3 KiB
Raw Permalink Blame History

generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Architecture-and-Code-Map wiki_url: https://git.ilapage.cn/OPC/cmautobuy/wiki/Architecture-and-Code-Map.- wiki_revision: 85497cc74dcd6f45d81d2a2806c5425b625f9c2d synchronized_at: 2026-08-26T08:42:40Z

架构与代码地图

项目定位

cmautobuy 把采购员在 Admin 上的商品、规格和任务管理,与 Client 在 Android PDD App 上的采集和真实下单(不支付)串成一个可追溯闭环。Admin 是调度器和业务数据主库,Client 是设备执行器。

代码地图

位置 作用 修改前先读
admin/main.go、admin/internal/app/ Admin 启动和依赖装配 admin/AGENTS.md
admin/internal/handler/ Web/API 请求解析与响应 Admin 接口、界面文档
admin/internal/service/ 导入、同步、匹配、任务等业务逻辑 对应需求和数据模型
admin/internal/repository/ MySQL/迁移数据访问 Admin 数据模型
admin/templates/、admin/static/ 服务端页面和静态资源 Admin UI 规范
client/src/ui_main.py、*_ui.py、*_ui_event.py Client 窗口、页面和事件装配 client/AGENTS.md
client/src/*gateway*.py Admin HTTP 边界 Client API 契约
client/src/*repository*.py Client SQLite 和 Outbox Client 数据模型
client/src/pdd_*adapter.py、select_color_size.py Android 页面识别、规格选择和采购执行 Client 质量与安全
dev_scripts/ Wiki/Harness 与发布辅助 开发工作流
docs/task/ 2026-08-26 前历史归档及按需快照 默认只读

查代码符号时优先使用项目代码知识图谱;不足时再使用 rg 搜索字面量、配置和非代码文件。

两条主要执行路径

商品采集

Admin 创建采集任务
→ Client 登记并领取
→ Android 打开 PDD 商品页并采集标题/店铺/颜色/尺码/价格
→ Client 先写 SQLite 与 Outbox
→ Client 提交 Admin
→ Admin 幂等落库并更新任务与关联商品

真实采购(不支付)

Admin 创建采购任务并指定可见 Client
→ Client 只有在身份、设备、live 执行器就绪时领取
→ 复核商品、颜色、尺码、数量、总价上限
→ 不可逆前写 task_runs 标记
→ PDD 创建未付款订单
→ 只读核对订单编号和下单时间
→ 提交 Admin,等待人工审核和付款

规格无法确定时允许 Client 向 Admin 提交当前页面候选,Admin 用确定性规则或 AI 返回建议;Client 仍必须在页面上复核后才能继续。

不可破坏的边界

  • 根 AGENTS.md 的五条红线不能被文档迁移或重构削弱。
  • Admin 只调度,Client 只执行;Client 不在任务中途查询 Admin 状态。
  • Client API 契约以 Client 侧文档为唯一事实来源。
  • Handler 不写业务逻辑和 SQL;Repository 才能写业务 SQL。
  • Qt 主线程不执行 HTTP、ADB、uiautomator2、休眠或大文件操作。
  • 任务进入 irreversible_action_at 后只准核单,绝不重新下单。
  • 金额用整数分,时间用带时区 ISO 8601,结果提交必须幂等。
  • Wiki 是长期文档主源,本地 docs/ 只是带 revision 的版本镜像。