docs: establish project harness baseline
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 任务文件
|
||||
|
||||
> 默认一任务一文件:`docs/tasks/T-<编号>.md`。路线图只负责建议拆分,不跟踪状态。
|
||||
|
||||
## 命名和状态
|
||||
|
||||
- 文件名:`T-001.md`;细分任务可使用 `T-001a.md`。
|
||||
- 状态:`TODO`、`DOING`、`DONE`、`BLOCKED`。
|
||||
- 路线图已有编号时沿用;新编号不能覆盖已存在文件。
|
||||
- `_template.md` 不是任务。
|
||||
|
||||
## 领取规则
|
||||
|
||||
1. 每个 agent 同时最多一个 `DOING` 任务。
|
||||
2. 领取编号最小、状态为 `TODO`、依赖全部 `DONE` 的任务。
|
||||
3. 开工前写清 `write_paths`;和其他活跃任务有路径重叠时不得并行。
|
||||
4. 仓库启用 Git 后记录默认分支头 `context_ref` 和工作分支;未启用时保持 `null`。
|
||||
5. 状态改为 `DOING` 后再修改生产代码。
|
||||
6. 验收全部有证据后改为 `DONE`;无法继续时标 `BLOCKED` 并写清所需外部输入。
|
||||
|
||||
## 任务文件结构
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: T-101
|
||||
title: 一句话任务名
|
||||
phase: 1
|
||||
deps: [T-001]
|
||||
status: TODO
|
||||
created: 2026-07-25
|
||||
context_ref: null
|
||||
work_branch: null
|
||||
write_paths:
|
||||
- docs/tasks/T-101.md
|
||||
- android-buyer/path/**
|
||||
---
|
||||
```
|
||||
|
||||
正文必须包含:
|
||||
|
||||
- 问题/背景
|
||||
- 关联需求与交互
|
||||
- 方案
|
||||
- 验收要点
|
||||
- 边界
|
||||
- 执行记录
|
||||
|
||||
## 验证证据
|
||||
|
||||
执行记录至少写:
|
||||
|
||||
- 修改的文件。
|
||||
- 实际运行的完整命令。
|
||||
- 结果是成功、失败还是未运行。
|
||||
- Android smoke 的设备、Android、App 和拼多多版本。
|
||||
- 未验证范围和 blocker。
|
||||
- 涉及自动化时的安全停止证据。
|
||||
|
||||
“代码写完”“看起来可以”不能作为 `DONE` 证据。
|
||||
|
||||
## UI 和高风险任务
|
||||
|
||||
- P0 UI 首次实现前应有 `docs/design/` 原型并对齐 US/IX。
|
||||
- 拼多多真实自动化任务必须在受控测试账号和设备进行。
|
||||
- 验证码、风控、支付或未知页面只验证“能够识别并停止”,不验证绕过。
|
||||
- 任何扩大候选数量、提交订单或支付的任务,必须先更新需求并完成单独评审。
|
||||
|
||||
## 共享文档
|
||||
|
||||
- 单任务执行记录只改自己的任务文件。
|
||||
- 启动命令、目录或 blocker 变化时可以同步 `current-state.md`。
|
||||
- 需求、架构或 API 事实变化时,任务 `write_paths` 必须提前列出对应文档。
|
||||
- `progress.md` 只记录项目级大事记。
|
||||
@@ -0,0 +1,105 @@
|
||||
---
|
||||
id: T-001
|
||||
title: 初始化 Git 并接入 Roubao Android 基线
|
||||
phase: 0
|
||||
deps: []
|
||||
status: DOING
|
||||
created: 2026-07-25
|
||||
context_ref: null
|
||||
work_branch: main
|
||||
write_paths:
|
||||
- docs/tasks/T-001.md
|
||||
- android-buyer/**
|
||||
- .gitignore
|
||||
- README.md
|
||||
- init.ps1
|
||||
- init.sh
|
||||
- docs/00-ai-start-here.md
|
||||
- docs/03-tech-stack.md
|
||||
- docs/04-architecture.md
|
||||
- docs/05-coding-rules.md
|
||||
- docs/current-state.md
|
||||
---
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
当前仓库只有 Harness 文档,不是 Git 仓库,也没有 Roubao 源码、Gradle Wrapper 或
|
||||
可验证的 Android 命令。所有自动化、VLM 和后台任务都依赖一个可复现的 Android
|
||||
基线;在基线完成前不能开始拼多多业务修改。
|
||||
|
||||
预期上游已经从真实仓库完成远端核实:
|
||||
|
||||
- 仓库:`https://github.com/Turbo1123/roubao`
|
||||
- 许可证:MIT
|
||||
- 默认分支:`main`
|
||||
- 核实时 `main` commit:`c8a6d7f03422eb01744b01f3ee77bf7757741f7e`
|
||||
- 独立无障碍开发分支:`roubao2.0+AccessibilityService`,核实时 commit
|
||||
`5b114c0a9476c359b27cfe994743fc7beb0a3554`
|
||||
- 构建基线:Android Studio Hedgehog+、JDK 17、SDK 34、Gradle 8.2、AGP 8.2.0、
|
||||
Kotlin 1.9.20
|
||||
|
||||
这些是接入前核实结果,源码仍未导入、本机仍未构建。上游 `main` 使用 Shizuku,
|
||||
AccessibilityService 位于独立开发分支;接入前要先比较分支,不能只按分支名称选型。
|
||||
|
||||
## 关联需求与交互
|
||||
|
||||
- 功能:为 F-003 至 F-007 提供实现基线,本任务不实现业务功能。
|
||||
- 用户故事:不适用。
|
||||
- 交互:不适用。
|
||||
- 架构:`04-architecture.md` 的 Android 模块。
|
||||
|
||||
## 方案
|
||||
|
||||
1. 确认当前目录应作为新仓库后初始化 Git;远端地址未知时不擅自创建远端。
|
||||
2. 重新读取远端分支头,比较 `main` 与无障碍开发分支;确定以哪个 commit 为导入
|
||||
基线,并记录采用或移植无障碍实现的理由。
|
||||
3. 将需要二次开发的 Android 源码接入 `android-buyer/`,保留许可证和上游来源说明。
|
||||
4. 不做拼多多 Skill、VLM 业务和采购 UI 修改,只处理可构建所需的最小兼容问题。
|
||||
5. 运行 Gradle Wrapper 的真实构建和已有测试;有测试设备时安装并启动原始 App。
|
||||
6. 把真实目录、最终依赖版本、构建命令、上游 commit 和 blocker 同步到允许修改的
|
||||
文档;若接入后的配置与已核实远端版本不同,要记录差异原因。
|
||||
7. 用真实安装、验证和启动命令替换 `init.ps1`/`init.sh` 占位;如果无法提供设备
|
||||
启动命令,保留主动失败并把原因记录为 blocker,不能伪造命令。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- [x] 当前目录已成为可正常查看状态和提交的 Git 仓库。
|
||||
- [ ] `android-buyer/` 包含可追溯到明确 URL 和 commit 的 Roubao 源码。
|
||||
- [ ] 上游许可证文件已保留,并确认允许当前预期的二次开发方式。
|
||||
- [ ] Windows 上使用仓库内 Gradle Wrapper 成功构建 Debug APK。
|
||||
- [ ] 上游已有 Android 单元测试已执行;没有测试时明确记录。
|
||||
- [ ] 有测试设备时完成安装和启动 smoke,并记录设备/Android 版本;无设备时任务
|
||||
不能把设备 smoke 写成已通过。
|
||||
- [ ] 未加入真实 API key、签名密码、设备 token 或本地 SDK 绝对路径。
|
||||
- [ ] 已处理缺失的 `google-services.json`:提供本地忽略配置,或明确移除不需要的
|
||||
Firebase 插件和依赖。
|
||||
- [ ] `03-tech-stack.md` 和 `current-state.md` 不再把已核实信息标为待定。
|
||||
- [ ] `init.ps1`/`init.sh` 与文档中的当前命令一致,或因明确 blocker 保持主动失败。
|
||||
|
||||
建议验证命令形状,最终以接入工程为准:
|
||||
|
||||
```powershell
|
||||
git status --short
|
||||
Set-Location android-buyer
|
||||
.\gradlew.bat tasks
|
||||
.\gradlew.bat test
|
||||
.\gradlew.bat assembleDebug
|
||||
```
|
||||
|
||||
## 边界
|
||||
|
||||
- 不实现拼多多搜索、点击、候选比较或订单流程。
|
||||
- 不接入 VLM、后台 API、任务领取和管理页面。
|
||||
- 不升级与构建无关的依赖,不重构上游项目。
|
||||
- 不配置生产签名,不提交本机 `local.properties` 或密钥。
|
||||
|
||||
## 执行记录
|
||||
|
||||
### 2026-07-25:Git 和文档基线
|
||||
|
||||
- 当前目录已初始化为 Git 仓库,工作分支为 `main`,远端名为 `origin`。
|
||||
- 新增根目录 `.gitignore`,忽略本地 SDK 配置、Firebase 配置、密钥、构建产物、
|
||||
运行数据和日志。
|
||||
- 已核实 Roubao 上游版本并更新技术栈、当前状态及本任务,但 Android 源码尚未导入。
|
||||
- 本次只建立文档与脚本提交;Gradle 构建、测试、APK 安装和设备 smoke 均未运行。
|
||||
- T-001 保持 `DOING`,剩余 blocker 见 `docs/current-state.md`。
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
id: T-XXX
|
||||
title: 一句话任务名
|
||||
phase: 1
|
||||
deps: []
|
||||
status: TODO
|
||||
created: YYYY-MM-DD
|
||||
context_ref: null
|
||||
work_branch: null
|
||||
write_paths:
|
||||
- docs/tasks/T-XXX.md
|
||||
- path/to/allowed/module/**
|
||||
---
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
说明当前事实、为什么要做,以及不做会阻塞什么。
|
||||
|
||||
## 关联需求与交互
|
||||
|
||||
- 功能:F-XXX
|
||||
- 用户故事:US-XXX
|
||||
- 交互:IX-XXX;无 UI 时写不适用
|
||||
- 架构/API:对应章节
|
||||
|
||||
## 方案
|
||||
|
||||
按文件和模块写清怎么实现、如何处理失败和安全边界。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- 写明可观察结果。
|
||||
- 写明实际验证命令或设备 smoke 环境。
|
||||
- 高风险任务写明安全停止证据。
|
||||
|
||||
## 边界
|
||||
|
||||
明确不修改的模块和不实现的后续功能。
|
||||
|
||||
## 执行记录
|
||||
|
||||
开工后记录修改、命令、结果、环境、决策和 blocker。
|
||||
Reference in New Issue
Block a user