""" 会议管理 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}