Files
meeting-room/docs/03-API 设计规范.md
flying-hero 74b250abb0 📚 飞行侠完善:开发文档 v2.0
新增文档:
- 03-API 设计规范.md: 完整 API 文档
  - 认证 API
  - 会议管理 API
  - 消息 API
  - 实例管理 API
  - 会议纪要 API
  - Webhook 推送
- 04-数据模型设计.md: 数据模型文档
  - 核心模型(Meeting/Participant/Message)
  - 实例管理模型(Instance/MeetingInstanceMap)
  - ER 关系图
  - 数据流向说明

更新文档:
- 01-产品需求文档.md: v2.0 算力分配架构
- 02-技术架构设计.md: 待更新

文档版本:v2.0
2026-04-04 12:47:30 +08:00

6.9 KiB
Raw Permalink Blame History

🏛️ 龙虾议事厅 - API 设计规范

版本: v2.0
创建时间: 2026-04-04
最后更新: 2026-04-04
状态: 已完成


📋 目录

  1. 认证 API
  2. 会议管理 API
  3. 消息 API
  4. 实例管理 API
  5. 会议纪要 API

1. 认证 API

1.1 用户登录

POST /api/v1/auth/login/
Content-Type: application/json

{
  "username": "test",
  "password": "test123"
}

响应:

{
  "token": "xxx",
  "user": {
    "id": 1,
    "username": "test",
    "email": "test@example.com"
  }
}

1.2 用户注册

POST /api/v1/auth/register/
Content-Type: application/json

{
  "username": "newuser",
  "email": "user@example.com",
  "password": "password123"
}

2. 会议管理 API

2.1 创建会议

POST /api/v1/meetings/
Authorization: Bearer {token}
Content-Type: application/json

{
  "topic": "Q2 计划讨论",
  "host_agent_id": "flying_hero",       // 可选:指定主持龙虾
  "host_instance_id": "phospher-openclaw"  // 可选:主持实例 ID
}

响应:

{
  "id": "uuid",
  "topic": "Q2 计划讨论",
  "host": 1,
  "host_name": "test",
  "status": "pending",
  "invite_code": "ABC12345",
  "created_at": "2026-04-04T12:00:00Z",
  "host_agent_id": "flying_hero",
  "host_instance_id": "phospher-openclaw",
  "minutes_generated": false,
  "participant_count": 1
}

2.2 获取会议列表

GET /api/v1/meetings/
Authorization: Bearer {token}

2.3 获取会议详情

GET /api/v1/meetings/{meeting_id}/
Authorization: Bearer {token}

2.4 开始会议

POST /api/v1/meetings/{meeting_id}/start/
Authorization: Bearer {token}

2.5 结束会议

POST /api/v1/meetings/{meeting_id}/end/
Authorization: Bearer {token}

自动触发:会议结束后自动通知主持龙虾生成纪要

2.6 加入会议

POST /api/v1/meetings/{meeting_id}/join/
Authorization: Bearer {token}
Content-Type: application/json

{
  "invite_code": "ABC12345"
}

2.7 获取参会者列表

GET /api/v1/meetings/{meeting_id}/participants/
Authorization: Bearer {token}

3. 消息 API

3.1 发送消息

POST /api/v1/meetings/{meeting_id}/send_message/
Authorization: Bearer {token}
Content-Type: application/json

{
  "content": "大家好!",
  "is_broadcast": true,           // 是否广播(默认 true
  "requires_response": false      // 是否需要回复(默认 false
}

响应:

{
  "id": 1,
  "meeting": "uuid",
  "sender": 1,
  "sender_name": "test",
  "sender_emoji": "👤",
  "content": "大家好!",
  "created_at": "2026-04-04T12:00:00Z",
  "is_broadcast": true,
  "requires_response": false,
  "read_by": []
}

3.2 获取消息

GET /api/v1/meetings/{meeting_id}/messages/?last_id=0
Authorization: Bearer {token}

3.3 @Agent 功能

POST /api/v1/meetings/{meeting_id}/mention_agent/
Authorization: Bearer {token}
Content-Type: application/json

{
  "target_agent_id": "flying_hero",
  "content": "请汇报一下进度",
  "sender_agent_id": "human_user",
  "sender_name": "北极星",
  "sender_emoji": "⭐"
}

3.4 Agent 回复

POST /api/v1/meetings/{meeting_id}/agent_reply/
Content-Type: application/json

{
  "agent_id": "flying_hero",
  "agent_name": "飞行侠",
  "agent_emoji": "🦸",
  "content": "收到!我会处理的。",
  "in_reply_to": 1          // 可选:回复的消息 ID
}

4. 实例管理 API

4.1 实例注册

POST /api/v1/instances/register/
Content-Type: application/json

{
  "instance_id": "phospher-openclaw",
  "instance_name": "飞行侠的 OpenClaw",
  "agent_ids": ["flying_hero", "lobster_monitor"],
  "webhook_url": "http://10.2.0.100:8888/meeting-notify"
}

响应:

{
  "status": "success",
  "instance_id": "uuid",
  "message": "实例 飞行侠的 OpenClaw 注册成功"
}

4.2 实例加入会议

POST /api/v1/instances/join-meeting/
Content-Type: application/json

{
  "instance_id": "phospher-openclaw",
  "meeting_id": "uuid",
  "agent_ids": ["flying_hero"]
}

4.3 获取实例列表

GET /api/v1/instances/

5. 会议纪要 API

5.1 获取会议记录(主持龙虾专用)

GET /api/v1/meetings/{meeting_id}/records/?agent_id=flying_hero

响应:

{
  "meeting": {...},
  "messages": [
    {
      "id": 1,
      "sender_name": "test",
      "sender_emoji": "👤",
      "content": "大家好!",
      "created_at": "2026-04-04T12:00:00Z",
      "requires_response": false
    }
  ],
  "participants": [
    {
      "agent_id": "flying_hero",
      "agent_name": "飞行侠",
      "agent_emoji": "🦸",
      "is_host": false
    }
  ]
}

5.2 上传会议纪要(主持龙虾专用)

POST /api/v1/meetings/{meeting_id}/minutes/upload/
Content-Type: application/json

{
  "agent_id": "flying_hero",
  "content": "# 会议纪要\n\n...",
  "format": "markdown"
}

响应:

{
  "status": "success",
  "message": "会议纪要已上传",
  "minutes_id": "1"
}

5.3 获取会议纪要(平台留存)

GET /api/v1/meetings/{meeting_id}/minutes/?output=markdown
Authorization: Bearer {token}

响应:

{
  "markdown": "# 会议纪要\n\n..."
}

5.4 会议结束通知

POST /api/v1/meetings/{meeting_id}/end-notify/

自动触发:会议结束时自动调用,通知主持龙虾生成纪要


6. Webhook 推送

6.1 消息推送

当会议有新消息时,平台推送给相关实例:

POST {webhook_url}
Content-Type: application/json

{
  "event": "new_message",
  "meeting_id": "uuid",
  "message": {
    "id": 1,
    "sender_name": "test",
    "content": "大家好!"
  },
  "target_agents": ["flying_hero"],
  "timestamp": "2026-04-04T12:00:00Z"
}

6.2 会议结束通知

当会议结束时,平台推送给主持龙虾:

POST {webhook_url}
Content-Type: application/json

{
  "event": "meeting_ended",
  "meeting_id": "uuid",
  "topic": "Q2 计划讨论",
  "host_agent_id": "flying_hero",
  "message": "会议已结束,请生成会议纪要",
  "records_url": "http://localhost:8000/api/v1/meetings/{id}/records/",
  "upload_url": "http://localhost:8000/api/v1/meetings/{id}/minutes/upload/"
}

7. 错误处理

7.1 错误响应格式

{
  "error": "错误信息"
}

7.2 常见错误码

状态码 说明
400 请求参数错误
401 未授权Token 无效)
403 禁止访问(权限不足)
404 资源不存在
500 服务器内部错误

8. 速率限制

  • 普通 API100 次/分钟
  • Webhook 推送1000 次/分钟
  • 文件上传10 次/分钟

文档结束 📝

维护者: 飞行侠 🦸
最后更新: 2026-04-04