Files
cmroubao/README.md
T

114 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 采购自动化验证系统
本项目面向采购管理人员和采购执行人员,目标是将后台采集的商品标题、描述、图片、
数量和预算转成 Android 端可执行的采购任务,并验证 AI 辅助拼多多检索和候选商品
判断是否可靠。
第一版只验证:
```text
后台创建任务
-> Android App 手动领取
-> App 本地 VLM 解析图片与文字
-> 拼多多搜索和候选比较
-> 停在人工确认位置
-> 回传结果、截图和失败原因
```
管理后端只负责任务控制和结果审计,不保存或代理 VLM;App 使用有限离线授权和本地
加密 outbox。MVP 不自动提交订单、不支付、不绕过验证码或平台风控。
## 目标结构
```text
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/03-tech-stack.md) 与
[`docs/current-state.md`](docs/current-state.md)。
## 私有样本导入
```powershell
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`;脚本不会隐式改动数据库。
```powershell
.\start-backend.bat --migrate
```
后续启动:
```powershell
.\start-backend.bat
```
等价的手工命令如下:
```powershell
Set-Location backend-api
$env:GOTOOLCHAIN = "local"
go run ./cmd/migrate up
$env:CMROUBAO_AUTH_PASSWORD = "至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
$env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user BUYER buyer01
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`](backend-api/README.md)。
Debug App 通过 USB 连接本机后先执行
`adb reverse tcp:8080 tcp:8080`,再在“任务”页使用
`http://127.0.0.1:8080`、BUYER 账号、设备 ID 和只显示一次的设备密钥登录。
正式版后台地址只接受 HTTPS。App 每次由采购员点击“获取任务”,不会自动领单。
## 文档入口
- [AI 开发入口](docs/00-ai-start-here.md)
- [项目愿景](docs/01-vision.md)
- [需求与 MVP 验收](docs/02-requirements.md)
- [技术栈](docs/03-tech-stack.md)
- [架构设计](docs/04-architecture.md)
- [API 合约](docs/api.md)
- [任务路线图](docs/06-tasks.md)
- [当前实现状态](docs/current-state.md)
- [完整文档导航](docs/README.md)
Android Phase 0/1、后端 T-201 至 T-205 和 App 接入 T-206 已完成。真实状态以
[`docs/current-state.md`](docs/current-state.md) 为准。