Files
task-board/API-V2.md
T
work-1 6134a443a8 添加全局协作规约功能
新功能:
- 新增 global_collaboration_rules 表
- POST /api/rules/global - 设置全局规约
- GET /api/rules/global - 获取全局规约
- 智能体领取任务时同时收到全局规约和项目规约

规约层级:
1. 全局规约 - 适用于所有项目和智能体
2. 项目规约 - 仅适用于特定项目

智能体领取任务时的响应示例:
{
  "collaboration_rules": {
    "global_rules": "全局规约内容",
    "project_rules": "项目规约内容"
  }
}
2026-02-15 21:06:22 +08:00

423 lines
8.7 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.
# API v2 升级说明
## 🎉 新功能概览
### 1. 项目管理
- 所有任务必须隶属于项目
- 项目由人类创建和管理
### 2. 协作规约
- 每个项目可设置协作规约
- 智能体领取任务时会收到规约提醒
- 智能体必须严格遵守规约内容
### 3. 信息共享清单
- 每个项目维护共享笔记列表
- 人类和智能体都可以添加/编辑
- 支持 CRUD 操作
### 4. 任务增强
- **Markdown 支持**: 任务描述使用 Markdown 格式
- **附件管理**: 支持文件上传(最大 10MB)
- **子任务**: 支持父子任务关系
- **任务类型**: requirement(需求)| design(设计)| development(开发)| testing(测试)| deployment(部署)
- **新状态流**: initial(初始)→ in_progress(进行中)→ testing_pending(待测试)→ testing(测试中)→ completed(完成)
## 📡 API 端点
### 项目管理
#### 创建项目
```http
POST /api/projects
Content-Type: application/json
{
"name": "项目名称",
"description": "项目描述",
"created_by": "human"
}
```
#### 获取所有项目
```http
GET /api/projects
```
#### 获取项目详情
```http
GET /api/projects/:id
```
#### 更新项目
```http
PUT /api/projects/:id
Content-Type: application/json
{
"name": "新名称",
"description": "新描述",
"status": "active" | "archived"
}
```
### 协作规约
#### 设置全局协作规约
```http
POST /api/rules/global
Content-Type: application/json
{
"content": "# 全局协作规约\n\n适用于所有项目...",
"created_by": "human"
}
```
#### 获取全局协作规约
```http
GET /api/rules/global
响应:
{
"id": "xxx",
"content": "规约内容(Markdown",
"created_by": "human",
"created_at": 1234567890,
"updated_at": 1234567890
}
```
#### 设置项目协作规约
```http
POST /api/projects/:projectId/rules
Content-Type: application/json
{
"content": "协作规约内容(Markdown",
"created_by": "human"
}
```
#### 获取协作规约
```http
GET /api/projects/:projectId/rules
```
### 信息共享清单
#### 添加共享笔记
```http
POST /api/projects/:projectId/notes
Content-Type: application/json
{
"content": "笔记内容(Markdown",
"created_by": "human" | "agent_id"
}
```
#### 获取共享笔记列表
```http
GET /api/projects/:projectId/notes
```
#### 更新共享笔记
```http
PUT /api/projects/:projectId/notes/:noteId
Content-Type: application/json
{
"content": "更新后的内容"
}
```
#### 删除共享笔记
```http
DELETE /api/projects/:projectId/notes/:noteId
```
### 任务管理(增强)
#### 创建任务
```http
POST /api/tasks
Content-Type: application/json
{
"project_id": "项目ID", // 必填
"parent_task_id": "父任务ID", // 可选,创建子任务时使用
"title": "任务标题",
"description": "# 任务描述\n\n使用 **Markdown** 格式",
"task_type": "development", // requirement | design | development | testing | deployment
"priority": "normal", // low | normal | high
"created_by": "human"
}
```
#### 获取任务列表
```http
GET /api/tasks?project_id=xxx&status=initial&root=true
参数:
- project_id: 按项目过滤
- status: initial | in_progress | testing_pending | testing | completed
- parent_task_id: 获取某任务的子任务
- root=true: 只获取根任务(无父任务)
```
#### 获取任务详情(含子任务和附件)
```http
GET /api/tasks/:id
响应:
{
"id": "xxx",
"title": "...",
...
"subtasks": [ ... ], // 子任务列表
"attachments": [ ... ] // 附件列表
}
```
#### 领取任务(智能体会同时收到全局规约和项目规约)
```http
POST /api/tasks/:id/claim
Content-Type: application/json
{
"agent_id": "智能体ID"
}
响应(如果有规约):
{
"message": "任务领取成功",
"collaboration_rules": {
"global_rules": "全局协作规约内容",
"project_rules": "项目协作规约内容"
},
"notice": "⚠️ 请严格遵守协作规约"
}
```
#### 更新任务
```http
PUT /api/tasks/:id
Content-Type: application/json
{
"status": "in_progress",
"description": "更新描述",
"task_type": "testing",
"priority": "high",
"result": "任务结果"
}
```
### 附件管理
#### 上传附件
```http
POST /api/tasks/:taskId/attachments
Content-Type: multipart/form-data
file: [文件]
uploaded_by: "human" | "agent_id"
限制:单文件最大 10MB
```
#### 获取任务附件列表
```http
GET /api/tasks/:taskId/attachments
响应:
[
{
"id": "xxx",
"filename": "...",
"original_name": "原始文件名",
"file_size": 12345,
"mime_type": "image/png",
"url": "/uploads/xxx",
...
}
]
```
#### 删除附件
```http
DELETE /api/tasks/:taskId/attachments/:attachmentId
```
### 统计信息(增强)
```http
GET /api/stats
响应:
{
"total_agents": 5,
"active_agents": 2,
"total_projects": 3,
"total_tasks": 20,
"tasks_by_status": {
"initial": 5,
"in_progress": 3,
"testing_pending": 2,
"testing": 1,
"completed": 9
},
"tasks_by_type": {
"requirement": 4,
"design": 3,
"development": 8,
"testing": 3,
"deployment": 2
}
}
```
## 🗄️ 数据库变更
### 新增表
1. **projects** - 项目表
- id, name, description, created_by, created_at, updated_at, status
2. **collaboration_rules** - 协作规约表
- id, project_id, content, created_by, created_at, updated_at
3. **project_notes** - 项目共享笔记表
- id, project_id, content, created_by, created_at, updated_at
4. **attachments** - 附件表
- id, task_id, filename, original_name, file_path, file_size, mime_type, uploaded_by, uploaded_at
### 修改表
**tasks** 表新增字段:
- `project_id` - 所属项目(外键,必填)
- `parent_task_id` - 父任务ID(外键,可选)
- `task_type` - 任务类型(requirement/design/development/testing/deployment
- 状态值更新为:initial | in_progress | testing_pending | testing | completed
## 🔧 使用示例
### Python 客户端示例
```python
import requests
API_BASE = "http://localhost:3000/api"
# 1. 创建项目
project = requests.post(f"{API_BASE}/projects", json={
"name": "智能客服系统",
"description": "基于 AI 的客服系统开发项目"
}).json()
project_id = project['id']
# 2. 设置协作规约
requests.post(f"{API_BASE}/projects/{project_id}/rules", json={
"content": """
# 协作规约
1. **代码规范**: 严格遵循 PEP 8
2. **提交规范**: 每次提交必须包含测试
3. **沟通规范**: 遇到问题及时在共享清单记录
4. **测试要求**: 覆盖率不低于 80%
"""
})
# 3. 创建任务
task = requests.post(f"{API_BASE}/tasks", json={
"project_id": project_id,
"title": "设计数据库架构",
"description": "## 需求\n\n设计用户、会话、消息三张表",
"task_type": "design",
"priority": "high"
}).json()
task_id = task['id']
# 4. 智能体注册并领取任务
agent = requests.post(f"{API_BASE}/agents/register", json={
"name": "数据库设计专家",
"type": "design",
"capabilities": ["database_design", "sql"]
}).json()
response = requests.post(f"{API_BASE}/tasks/{task_id}/claim", json={
"agent_id": agent['id']
}).json()
# 智能体会收到协作规约
if 'collaboration_rules' in response:
print("收到协作规约:")
print(response['collaboration_rules'])
# 5. 添加共享笔记
requests.post(f"{API_BASE}/projects/{project_id}/notes", json={
"content": "数据库已选择 PostgreSQL 15",
"created_by": agent['id']
})
# 6. 上传附件(设计图)
with open('database_schema.png', 'rb') as f:
requests.post(
f"{API_BASE}/tasks/{task_id}/attachments",
files={'file': f},
data={'uploaded_by': agent['id']}
)
# 7. 完成任务
requests.put(f"{API_BASE}/tasks/{task_id}", json={
"status": "completed",
"result": "数据库架构设计完成,详见附件"
})
```
## 📝 迁移指南
如果你有使用 v1 版本的数据,需要:
1. **备份数据库**
```bash
pg_dump agent_tasks > backup.sql
```
2. **运行 v2 服务**(会自动创建新表)
```bash
node server-v2.js
```
3. **手动迁移任务**
- 创建一个默认项目
- 将所有 v1 任务关联到该项目
## 🚀 部署
使用 `server-v2.js` 替代 `server-postgres.js`:
```bash
DB_HOST=localhost DB_PORT=5433 DB_PASSWORD=postgres node server-v2.js
```
或更新 `package.json`:
```json
{
"scripts": {
"start": "node server-v2.js"
}
}
```
## ⚠️ 重要变更
1. **所有任务必须属于项目** - 创建任务时 `project_id` 为必填
2. **任务状态变更** - 从 3 个状态扩展到 5 个状态
3. **新增任务类型** - 必须指定任务类型
4. **协作规约强制推送** - 智能体领取任务时自动获取规约