采购自动化验证系统
本项目面向采购管理人员和采购执行人员,目标是将后台采集的商品标题、描述、图片、 数量和预算转成 Android 端可执行的采购任务,并验证 AI 辅助拼多多检索和候选商品 判断是否可靠。
第一版只验证:
后台创建任务
-> Android App 手动领取
-> App 本地 VLM 解析图片与文字
-> 拼多多搜索和候选比较
-> 停在人工确认位置
-> 回传结果、截图和失败原因
管理后端只负责任务控制和结果审计,不保存或代理 VLM;App 使用有限离线授权和本地 加密 outbox。MVP 不自动提交订单、不支付、不绕过验证码或平台风控。
目标结构
cmroubao/
├── android-buyer/ # Roubao main 固定 commit 的 Android 基线
├── backend-api/ # Go-Gin API、SQLite、迁移和后续管理页面
├── docs/ # Harness Coding 项目事实和执行约束
├── AGENTS.md # AI coding agent 权威入口
├── init.ps1 # Windows 标准构建/真机启动入口
└── init.sh # Unix 等价构建/真机启动入口
管理人员使用 Web 管理端,采购人员使用 Android App;二者共享同一后端、任务数据 和权限体系。验证版已实现 ADMIN 服务端会话、BUYER 账号和预授权设备联合身份, 完整 RBAC 放到验证通过后。
后端采用 Go 1.23.0 + Gin 1.11.0,以 Go Blueprint v0.10.11 为一次性骨架参考, 已收敛出 SQLite、Goose 迁移、健康检查和可关闭的 HTTP Server;业务 API 按 Phase 2 任务逐步加入。
Android 端已核实的 Roubao 上游环境为 Kotlin 1.9.20、JDK 17、Gradle 8.2、
AGP 8.2.0、Android SDK 34,以及 Jetpack Compose Compiler 1.5.5。最低支持
Android 8.0(API 26),目标为 Android 14(API 34)。具体版本和本机环境状态见
docs/03-tech-stack.md 与
docs/current-state.md。
私有样本导入
Set-Location android-buyer
.\gradlew.bat :tools:shopee-importer:run `
--args="--input ../private-fixtures/shopee --output ../.local/probe-import"
.\gradlew.bat :app:assembleDebug `
'-PprobeFixturesDir=../.local/probe-import'
普通 .\init.ps1 或不带 -PprobeFixturesDir 的 Debug 构建会清除先前注入的私有
fixture,默认 APK 不携带真实订单资料。
后端运行
在项目根目录可直接使用 Windows 启动脚本。首次运行或更新代码后有 pending migration 时,
显式传入 --migrate;脚本不会隐式改动数据库。
.\start-backend.bat --migrate
后续启动:
.\start-backend.bat
等价的手工命令如下:
Set-Location backend-api
$env:GOTOOLCHAIN = "local"
go run ./cmd/migrate up
$env:CMROUBAO_AUTH_PASSWORD = "至少 5 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
$env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 5 个 UTF-8 字节"
go run ./cmd/authctl create-user BUYER buyer01
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
$env:CMROUBAO_AUTH_PASSWORD = "管理员新密码,至少 5 个 UTF-8 字节"
go run ./cmd/authctl reset-password admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
go run ./cmd/authctl create-device buyer-phone-01
go run ./cmd/api
默认监听 127.0.0.1:8080,SQLite 位于被忽略的 backend-api/var/。另一个终端可
访问 http://127.0.0.1:8080/healthz。可配置项和独立验证命令见
backend-api/README.md。
Debug App 通过 USB 连接本机后先执行
adb reverse tcp:8080 tcp:8080,再在“任务”页使用
http://127.0.0.1:8080、BUYER 账号、设备 ID 和只显示一次的设备密钥登录。
正式版后台地址只接受 HTTPS。App 每次由采购员点击“获取任务”,不会自动领单。
局域网 Debug 联调先生成本机 CA 和服务端证书,再启动服务:
.\generate-local-tls.ps1 -IPAddress 192.168.0.224
.\start-backend.bat --migrate
adb push .\.local\cmroubao-tls\ca.crt /sdcard/Download/cmroubao-local-ca.crt
在手机系统设置中从下载目录安装 cmroubao-local-ca.crt 为 CA 证书;Debug APK 才会
信任该用户安装的 CA。App 后端地址填写 https://192.168.0.224:8080。证书与私钥均
位于被忽略的 .local/,不可提交或共享;Windows 防火墙还必须允许入站 TCP 8080。
文档入口
Android Phase 0/1、后端 T-201 至 T-205 和 App 接入 T-206 已完成。真实状态以
docs/current-state.md 为准。