Files
team/tasks/任务提示词目录和任务编排.md
2026-04-19 21:47:08 +08:00

321 lines
11 KiB
Markdown
Raw Permalink 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.
# 开发测试任务提示词目录和任务编排
**版本**: 1.7.0
**最后更新**: 2026-04-19
**维护者**: 项目经理 Agent
---
## 1. 概述
本文档是 M1~M8 里程碑开发测试任务的**总索引和执行编排**。
### 1.1 使用方式
1. **项目经理 Agent** 按里程碑顺序分发任务到对应 tmux pane
2. **后端 Agent**pane 1)执行 `backend` 类型任务
3. **前端 Agent**pane 2)执行 `frontend` 类型任务
4. **测试 Agent**pane 3)执行 `test` 类型任务
5. 每个里程碑内按编号顺序执行;同一里程碑内不同角色可并行
### 1.2 关键约束
- 每个 task 文件 <=200 行,功能强内聚(**本文档为例外,尽量不超过 400 行**)
- 严格遵守 `docs/09-API契约.md`,不可违背
- 模块独立:各 `apps/` 子模块禁止跨模块引用
- **角色标签约定**:服务端任务使用 `backend`,桌面端任务使用 `desktop`(非后端),前端 UI 任务使用 `frontend`
- 提交使用 jj,中文类型(功能、修复、维护...)
- **模板化体系**:8 类任务模板提供骨架(tmux 协议、编码规范、文档引用),任务文件保留差异内容(功能需求、代码骨架、验收标准)。详见 `任务提示词构建方法.md`
### 1.3 tmux 执行环境
- **Session**: `arno-team`
- **始终复用** `项目` / `后端` / `前端` / `测试` 四个 pane**禁止新建** tmux session / window / pane
- **每次任务前**,确保目标 pane 中是新启动的 `cc` 环境(`/exit` 后重启,清除遗留上下文)
- **分发方式**:参考 `scripts/tmux-send-prompt.sh`,由 `项目` pane 发送简短提示词,让目标 pane 自行读取任务文件,避免发送过多提示词
| Pane | 名称 | 角色 | 用途 |
|------|------|------|------|
| pane 0 | 项目 | 项目经理 | 任务分发、进度追踪 |
| pane 1 | 后端 | 后端开发 | 执行 backend 任务 |
| pane 2 | 前端 | 前端开发 | 执行 frontend 任务 |
| pane 3 | 测试 | 测试工程师 | 执行 test 任务 |
---
## 2. 任务总览
| 里程碑 | 后端 | 桌面端 | 前端 | 测试 | 合计 |
|--------|------|--------|------|------|------|
| M1 基础架构 | 1 | 0 | 1 | 1 | 3 |
| M2 核心功能 | 1 | 0 | 1 | 1 | 3 |
| M3 初始化与认证 | 0 | 2 | 2 | 1 | 5 |
| M4 核心业务 | 0 | 2 | 3 | 1 | 6 |
| M5 数据同步 | 0 | 2 | 1 | 1 | 4 |
| M6 部署与打包 | 2 | 0 | 1 | 2 | 5 |
| M7 增强功能 | 0 | 2 | 3 | 1 | 6 |
| M8 运维功能 | 0 | 2 | 2 | 1 | 5 |
| **合计** | **4** | **10** | **14** | **9** | **37** |
---
## 3. 里程碑任务清单
### M1 基础架构 (P1)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M1-001 | 后端 | FastAPI 项目结构、数据库初始化、健康检查 | 无 |
| M1-002 | 前端 | PyWebView + Svelte 5 项目结构 | 无 |
| M1-003 | 测试 | pytest/vitest 基础设施、共享 fixture | M1-001 |
### M2 核心功能 (P1)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M2-001 | 后端 | 设备注册/审批/禁用 + CLI | M1-001 |
| M2-002 | 前端 | 设备注册 UI | M1-002 |
| M2-003 | 测试 | 设备管理测试 | M2-001 |
### M3 初始化与认证 (P1)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M3-001 | 桌面端 | 数据证书生成/导入/导出 | M2-001, M4-001 |
| M3-002 | 桌面端 | 登录/锁定/密码验证 | M3-001, M4-001 |
| M3-003 | 前端 | 初始化向导 8 步骤 | M2-002 |
| M3-004 | 前端 | 登录/锁定界面 | M3-003 |
| M3-005 | 测试 | 初始化与认证测试 | M3-001, M3-002 |
### M4 核心业务 (P1)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M4-001 | 桌面端 | 核心引擎/基础设施 | 无 |
| M4-002 | 桌面端 | 条目 CRUD + 搜索 | M4-001 |
| M4-003 | 前端 | 列表与详情视图 | M3-004 |
| M4-004 | 前端 | 添加/编辑表单 | M4-003 |
| M4-005 | 前端 | 实时搜索组件 | M4-003 |
| M4-006 | 测试 | CRUD+搜索测试 | M4-001, M4-002 |
### M5 数据同步 (P1)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M5-001 | 桌面端 | CRDT 合并、Lamport Clock | M4-002 |
| M5-002 | 后端/桌面端 | 同步 push/pull/status API(跨模块) | M5-001 |
| M5-003 | 前端 | 同步状态 UI、离线模式 | M4-003 |
| M5-004 | 测试 | CRDT + 同步测试 | M5-001, M5-002 |
### M6 部署与打包 (P1)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M6-001 | 后端 | Dockerfile + docker-compose | M5-002 |
| M6-002 | 后端 | CLI 整合 + PyInstaller | M6-001 |
| M6-003 | 前端 | SvelteKit 构建 + PyInstaller | M5-003 |
| M6-004 | 测试 | Docker + 打包测试 | M6-001 |
| M6-005 | 测试 | E2E 集成测试(Playwright | M6-001~M6-003 |
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M7-001 | 桌面端 | 分类 CRUD + 层级管理 | M4-002 |
| M7-002 | 桌面端 | 数据恢复 API | M3-002 |
| M7-003 | 前端 | 生成器组件 | M4-004 |
| M7-004 | 前端 | 分类管理 UI | M4-003 |
| M7-005 | 前端 | 恢复 UI | M3-004 |
| M7-006 | 测试 | 增强功能测试 | M7-001, M7-002 |
### M8 运维功能 (P3)
| 编号 | 角色 | 内容 | 依赖 |
|------|------|------|------|
| M8-001 | 后端 | 日志管理 API | M5-002 |
| M8-002 | 后端 | 备份恢复 API | M5-002 |
| M8-003 | 前端 | 日志查看 UI | M4-003 |
| M8-004 | 前端 | 过期提醒 UI | M4-003 |
| M8-005 | 测试 | 运维功能测试 | M8-001, M8-002 |
---
## 4. 执行依赖关系图
> 按角色分色:后端 桌面端 前端 测试
```mermaid
flowchart TB
subgraph backend["后端"]
M1_001["M1-001<br/>FastAPI 项目结构"]
M2_001["M2-001<br/>设备注册/审批/禁用"]
M6_001["M6-001<br/>Dockerfile"]
M6_002["M6-002<br/>CLI+PyInstaller"]
M8_001["M8-001<br/>日志管理 API"]
end
subgraph desktop["桌面端"]
M4_001["M4-001<br/>核心引擎"]
M3_001["M3-001<br/>数据证书生成"]
M3_002["M3-002<br/>登录/锁定/验证"]
M4_002["M4-002<br/>条目 CRUD"]
M5_001["M5-001<br/>CRDT 合并"]
M5_002["M5-002<br/>同步 push/pull"]
M7_001["M7-001<br/>分类 CRUD"]
M7_002["M7-002<br/>数据恢复"]
end
subgraph frontend["前端"]
M1_002["M1-002<br/>PyWebView+Svelte"]
M2_002["M2-002<br/>设备注册 UI"]
M3_003["M3-003<br/>初始化向导"]
M3_004["M3-004<br/>登录/锁定界面"]
M4_003["M4-003<br/>列表视图"]
M4_004["M4-004<br/>编辑表单"]
M4_005["M4-005<br/>实时搜索"]
M5_003["M5-003<br/>同步状态 UI"]
M6_003["M6-003<br/>SvelteKit 构建"]
M7_003["M7-003<br/>生成器"]
M7_004["M7-004<br/>分类管理 UI"]
M7_005["M7-005<br/>恢复 UI"]
M8_003["M8-003<br/>日志查看 UI"]
M8_004["M8-004<br/>过期提醒 UI"]
end
subgraph test["测试"]
M1_003["M1-003<br/>测试基础设施"]
M2_003["M2-003<br/>设备管理测试"]
M3_005["M3-005<br/>初始化与认证测试"]
M4_006["M4-006<br/>CRUD+搜索测试"]
M5_004["M5-004<br/>CRDT+同步测试"]
M6_004["M6-004<br/>Docker+打包测试"]
M6_005["M6-005<br/>E2E 集成测试"]
M7_006["M7-006<br/>增强功能测试"]
M8_005["M8-005<br/>运维功能测试"]
end
M1_001 --> M1_003
M1_001 --> M2_001
M2_001 --> M8_001
M2_001 --> M6_001
M4_001 --> M3_001
M2_001 --> M3_001
M3_001 --> M3_002
M4_001 --> M3_002
M3_002 --> M4_002
M4_002 --> M5_001
M5_001 --> M5_002
M4_002 --> M7_001
M3_002 --> M7_002
M1_002 --> M2_002
M2_002 --> M3_003
M3_003 --> M3_004
M3_004 --> M4_003
M4_003 --> M4_004
M4_003 --> M4_005
M4_003 --> M5_003
M4_003 --> M7_004
M4_003 --> M8_003
M4_003 --> M8_004
M4_004 --> M7_003
M3_004 --> M7_005
M5_003 --> M6_003
M5_002 --> M6_001
M6_001 --> M6_002
M8_001 --> M8_005
M2_001 --> M2_003
M3_001 --> M3_005
M3_002 --> M3_005
M4_001 --> M4_006
M4_002 --> M4_006
M5_001 --> M5_004
M5_002 --> M5_004
M6_001 --> M6_004
M6_001 --> M6_005
M6_002 --> M6_005
M6_003 --> M6_005
M7_001 --> M7_006
M7_002 --> M7_006
```
---
## 5. 建议执行顺序
| Phase | 里程碑 | 时间 | 并行组 | 串行步骤 |
|-------|--------|------|--------|----------|
| 1 | M1 基础架构 | Day 1 | M1-001 + M1-002 | -> M1-003 |
| 2 | M2 核心功能 | Day 2-3 | M2-001 + M2-002(mock) | -> M2-003 |
| 3 | M3 初始化与认证 | Day 4-6 | M3-001 + M3-003 | -> M3-002 + M3-004 -> M3-005 |
| 4 | M4 核心业务 | Day 7-10 | M4-002 + M4-003(在M4-001后) | M4-001 -> M4-004 + M4-005 -> M4-006 |
| 5 | M5 同步 | Day 11-14 | M5-002 + M5-003(在M5-001后) | M5-001 -> M5-004 |
| 6 | M6 部署 | Day 15-16 | M6-001 + M6-003 | -> M6-002 -> M6-004 |
| 7 | M7 增强 | Day 17-20 | M7-001~005 全部并行 | -> M7-006 |
| 8 | M8 运维 | Day 21-24 | M8-001~004 全部并行 | -> M8-005 |
---
## 6. Agent Teams 任务分发协议
### 核心约束
1. **始终复用 `arno-team` session**,复用 `项目``后端``前端``测试` 四个 pane
2. **禁止新建** tmux session、window、pane
3. **每次任务前**,确保目标 pane 中是新启动的 `cc` 环境(`/exit` 后重启 `cc`,清除遗留上下文)
4. **使用 `scripts/tmux-send-prompt.sh`** 发送简短提示词,让目标 pane 自行读取任务文件,避免直接发送长文本
### 分发流程
```bash
# 步骤1: 确保目标 pane 是新 cc 环境(无遗留上下文)
# 检查目标 pane,如不是新 cc 则发送 /exit 后重新启动 cc
# 步骤2: 通过 tmux-send-prompt.sh 分发任务(发送文件路径,让 cc 自行读取)
scripts/tmux-send-prompt.sh {pane_id} /workspace/tasks/{任务文件}
```
### 完成报告
> 详细的提示词组装规则和模板映射参见 `任务提示词构建方法.md`。
任务完成后,执行 Agent 将结果写入 `/workspace/tasks/result/{{任务编号}}.md`,格式参见 `任务执行结果模板.md`
### 冲突解决
同一文件只允许一个 Agent 修改;后端改 `apps/server/`,前端改 `apps/desktop/`,测试可改两侧 `tests/`
---
## 7. 文档索引
### 任务文件
| 里程碑 | 任务文件 |
|--------|---------|
| M1 | M1-001, M1-002, M1-003 |
| M2 | M2-001, M2-002, M2-003 |
| M3 | M3-001, M3-002, M3-003, M3-004, M3-005 |
| M4 | M4-001, M4-002, M4-003, M4-004, M4-005, M4-006 |
| M5 | M5-001, M5-002, M5-003, M5-004 |
| M6 | M6-001, M6-002, M6-003, M6-004, M6-005 |
| M7 | M7-001, M7-002, M7-003, M7-004, M7-005, M7-006 |
| M8 | M8-001, M8-002, M8-003, M8-004, M8-005 |
### 模板文件
| 模板类型 | 文件 |
|---------|------|
| 脚手架搭建 | `任务提示词模板-脚手架搭建.md` |
| 后端API开发 | `任务提示词模板-后端API开发.md` |
| 桌面端服务开发 | `任务提示词模板-桌面端服务开发.md` |
| UI布局和开发 | `任务提示词模板-UI布局和开发.md` |
| 前端组件开发 | `任务提示词模板-前端组件开发.md` |
| 测试编写 | `任务提示词模板-测试编写.md` |
| 部署打包 | `任务提示词模板-部署打包.md` |
| E2E测试 | `任务提示词模板-E2E测试.md` |
### 方法与模板
| 文件 | 用途 |
|------|------|
| `任务提示词构建方法.md` | 提示词组装规则、模板映射、执行流程 |
| `任务执行结果模板.md` | 任务完成报告格式 |
| `result/` | 任务执行结果存储目录 |
---
## 版本历史
- v1.7.0 (2026-04-19): 初始版本