196 lines
5.8 KiB
Python
196 lines
5.8 KiB
Python
"""
|
||
会议管理 API 路由
|
||
"""
|
||
from fastapi import APIRouter
|
||
from pydantic import BaseModel
|
||
from typing import List, Optional
|
||
from datetime import datetime
|
||
import time
|
||
|
||
router = APIRouter()
|
||
|
||
meetings_db = []
|
||
|
||
|
||
class Meeting(BaseModel):
|
||
meeting_id: str
|
||
title: str
|
||
status: str
|
||
attendees: List[str]
|
||
agenda: str
|
||
progress_summary: str
|
||
created_at: float
|
||
|
||
|
||
class MeetingCreate(BaseModel):
|
||
title: str
|
||
agenda: str
|
||
meeting_type: str = "design_review"
|
||
attendees: List[str] = []
|
||
|
||
|
||
@router.get("")
|
||
@router.get("/")
|
||
async def list_meetings():
|
||
"""获取所有会议列表"""
|
||
return {
|
||
"meetings": [
|
||
{
|
||
"meeting_id": "meeting-001",
|
||
"title": "架构设计评审",
|
||
"status": "in_progress",
|
||
"attendees": ["claude-001", "kimi-001"],
|
||
"agenda": "讨论系统架构设计",
|
||
"progress_summary": "50%",
|
||
"created_at": time.time() - 7200
|
||
},
|
||
{
|
||
"meeting_id": "meeting-002",
|
||
"title": "代码审查会议",
|
||
"status": "completed",
|
||
"attendees": ["claude-001"],
|
||
"agenda": "审查前端组件代码",
|
||
"progress_summary": "100%",
|
||
"created_at": time.time() - 86400
|
||
}
|
||
]
|
||
}
|
||
|
||
|
||
@router.get("/today")
|
||
async def list_today_meetings():
|
||
"""获取今日会议"""
|
||
today = datetime.now().strftime("%Y-%m-%d")
|
||
return {
|
||
"meetings": [
|
||
{
|
||
"meeting_id": "meeting-001",
|
||
"title": "架构设计评审",
|
||
"date": today,
|
||
"status": "in_progress",
|
||
"attendees": ["claude-001", "kimi-001"],
|
||
"steps": [
|
||
{"step_id": "step-1", "label": "收集想法", "status": "completed"},
|
||
{"step_id": "step-2", "label": "讨论迭代", "status": "active"},
|
||
{"step_id": "step-3", "label": "生成共识", "status": "pending"}
|
||
],
|
||
"discussions": [
|
||
{
|
||
"agent_id": "claude-001",
|
||
"agent_name": "Claude Code",
|
||
"content": "建议采用微服务架构",
|
||
"timestamp": datetime.now().isoformat(),
|
||
"step": "讨论迭代"
|
||
}
|
||
],
|
||
"progress_summary": "50%",
|
||
"consensus": ""
|
||
},
|
||
{
|
||
"meeting_id": "meeting-002",
|
||
"title": "代码审查会议",
|
||
"date": today,
|
||
"status": "completed",
|
||
"attendees": ["claude-001"],
|
||
"steps": [
|
||
{"step_id": "step-1", "label": "代码检查", "status": "completed"},
|
||
{"step_id": "step-2", "label": "问题讨论", "status": "completed"}
|
||
],
|
||
"discussions": [],
|
||
"progress_summary": "100%",
|
||
"consensus": "代码质量良好,可以合并"
|
||
}
|
||
]
|
||
}
|
||
|
||
|
||
@router.post("/")
|
||
async def create_meeting(meeting: MeetingCreate):
|
||
"""创建新会议"""
|
||
meeting_id = f"meeting-{int(time.time())}"
|
||
meeting_data = {
|
||
"meeting_id": meeting_id,
|
||
"title": meeting.title,
|
||
"status": "waiting",
|
||
"attendees": meeting.attendees,
|
||
"agenda": meeting.agenda,
|
||
"progress_summary": "0%",
|
||
"created_at": time.time()
|
||
}
|
||
meetings_db.append(meeting_data)
|
||
return meeting_data
|
||
|
||
|
||
@router.get("/{meeting_id}")
|
||
async def get_meeting(meeting_id: str):
|
||
"""获取会议详情"""
|
||
for meeting in meetings_db:
|
||
if meeting["meeting_id"] == meeting_id:
|
||
return meeting
|
||
# 返回模拟数据
|
||
return {
|
||
"meeting_id": meeting_id,
|
||
"title": "测试会议",
|
||
"status": "in_progress",
|
||
"attendees": ["claude-001"],
|
||
"agenda": "测试议程",
|
||
"progress_summary": "50%",
|
||
"created_at": time.time()
|
||
}
|
||
|
||
|
||
@router.post("/create")
|
||
async def create_meeting_api(meeting: MeetingCreate):
|
||
"""创建会议 API(前端使用的端点)"""
|
||
return await create_meeting(meeting)
|
||
|
||
|
||
@router.post("/{meeting_id}/join")
|
||
async def join_meeting(meeting_id: str, data: dict):
|
||
"""Agent 加入会议"""
|
||
agent_id = data.get("agent_id", "")
|
||
return {"success": True, "meeting_id": meeting_id, "agent_id": agent_id}
|
||
|
||
|
||
@router.post("/{meeting_id}/discuss")
|
||
async def add_discussion(meeting_id: str, data: dict):
|
||
"""添加讨论内容"""
|
||
return {"success": True, "meeting_id": meeting_id}
|
||
|
||
|
||
@router.post("/{meeting_id}/finish")
|
||
async def finish_meeting(meeting_id: str, data: dict):
|
||
"""完成会议"""
|
||
return {"success": True, "meeting_id": meeting_id}
|
||
|
||
|
||
@router.post("/{meeting_id}/progress")
|
||
async def update_progress(meeting_id: str, data: dict):
|
||
"""更新进度"""
|
||
return {"success": True, "meeting_id": meeting_id}
|
||
|
||
|
||
@router.post("/record/create")
|
||
async def create_meeting_record(data: dict):
|
||
"""创建会议记录(前端使用的端点)"""
|
||
meeting_id = f"meeting-{int(time.time())}"
|
||
meeting_data = {
|
||
"meeting_id": meeting_id,
|
||
"title": data.get("title", "未命名会议"),
|
||
"agenda": data.get("agenda", ""),
|
||
"attendees": data.get("attendees", []),
|
||
"status": "waiting",
|
||
"progress_summary": "0%",
|
||
"steps": data.get("steps", []),
|
||
"discussions": [],
|
||
"created_at": time.time()
|
||
}
|
||
meetings_db.append(meeting_data)
|
||
return meeting_data
|
||
|
||
|
||
@router.post("/record/{meeting_id}/discussion")
|
||
async def add_meeting_discussion(meeting_id: str, data: dict):
|
||
"""添加会议讨论(前端使用的端点)"""
|
||
return {"success": True, "meeting_id": meeting_id, "discussion": data}
|