Files
cmroubao/README.md
T

129 lines
5.0 KiB
Markdown
Raw Normal View History

2026-07-25 16:59:06 +08:00
# 采购自动化验证系统
本项目面向采购管理人员和采购执行人员,目标是将后台采集的商品标题、描述、图片、
数量和预算转成 Android 端可执行的采购任务,并验证 AI 辅助拼多多检索和候选商品
判断是否可靠。
第一版只验证:
```text
后台创建任务
-> Android App 手动领取
-> App 本地 VLM 解析图片与文字
2026-07-25 16:59:06 +08:00
-> 拼多多搜索和候选比较
-> 停在人工确认位置
-> 回传结果、截图和失败原因
```
管理后端只负责任务控制和结果审计,不保存或代理 VLM;App 使用有限离线授权和本地
加密 outbox。MVP 不自动提交订单、不支付、不绕过验证码或平台风控。
2026-07-25 16:59:06 +08:00
## 目标结构
```text
cmroubao/
├── android-buyer/ # Roubao main 固定 commit 的 Android 基线
├── backend-api/ # Go-Gin API、SQLite、迁移和后续管理页面
2026-07-25 16:59:06 +08:00
├── docs/ # Harness Coding 项目事实和执行约束
├── AGENTS.md # AI coding agent 权威入口
├── init.ps1 # Windows 标准构建/真机启动入口
└── init.sh # Unix 等价构建/真机启动入口
2026-07-25 16:59:06 +08:00
```
管理人员使用 Web 管理端,采购人员使用 Android App;二者共享同一后端、任务数据
和权限体系。验证版已实现 ADMIN 服务端会话、BUYER 账号和预授权设备联合身份,
完整 RBAC 放到验证通过后。
2026-07-25 16:59:06 +08:00
后端采用 Go 1.23.0 + Gin 1.11.0,以 Go Blueprint v0.10.11 为一次性骨架参考,
已收敛出 SQLite、Goose 迁移、健康检查和可关闭的 HTTP Server;业务 API 按 Phase 2
任务逐步加入。
2026-07-25 16:59:06 +08:00
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 不携带真实订单资料。
## 后端运行
2026-07-27 11:20:39 +08:00
在项目根目录可直接使用 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
2026-07-29 08:43:35 +08:00
$env:CMROUBAO_AUTH_PASSWORD = "至少 5 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
2026-07-29 08:43:35 +08:00
$env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 5 个 UTF-8 字节"
go run ./cmd/authctl create-user BUYER buyer01
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
2026-07-29 08:43:35 +08:00
$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`](backend-api/README.md)。
Debug App 通过 USB 连接本机后先执行
`adb reverse tcp:8080 tcp:8080`,再在“任务”页使用
`http://127.0.0.1:8080`、BUYER 账号、设备 ID 和只显示一次的设备密钥登录。
正式版后台地址只接受 HTTPS。App 每次由采购员点击“获取任务”,不会自动领单。
2026-07-27 15:51:45 +08:00
局域网 Debug 联调先生成本机 CA 和服务端证书,再启动服务:
```powershell
.\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。
2026-07-25 16:59:06 +08:00
## 文档入口
- [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) 为准。