feat: AI聊天室多Agent协作讨论平台
- 实现Agent管理,支持AI辅助生成系统提示词 - 支持多个AI提供商(OpenRouter、智谱、MiniMax等) - 实现聊天室和讨论引擎 - WebSocket实时消息推送 - 前端使用React + Ant Design - 后端使用FastAPI + MongoDB Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
126
backend/models/discussion_result.py
Normal file
126
backend/models/discussion_result.py
Normal file
@@ -0,0 +1,126 @@
|
||||
"""
|
||||
讨论结果数据模型
|
||||
定义讨论结果的结构
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import Optional, Dict, Any, List
|
||||
from pydantic import Field
|
||||
from beanie import Document
|
||||
|
||||
|
||||
class DiscussionResult(Document):
|
||||
"""
|
||||
讨论结果文档模型
|
||||
存储讨论的最终结果
|
||||
"""
|
||||
discussion_id: str = Field(..., description="讨论唯一标识")
|
||||
room_id: str = Field(..., description="聊天室ID")
|
||||
objective: str = Field(..., description="讨论目标")
|
||||
|
||||
# 共识结果
|
||||
consensus_reached: bool = Field(default=False, description="是否达成共识")
|
||||
confidence: float = Field(default=0.0, ge=0, le=1, description="共识置信度")
|
||||
|
||||
# 结果摘要
|
||||
summary: str = Field(default="", description="讨论结果摘要")
|
||||
action_items: List[str] = Field(default_factory=list, description="行动项列表")
|
||||
unresolved_issues: List[str] = Field(default_factory=list, description="未解决的问题")
|
||||
key_decisions: List[str] = Field(default_factory=list, description="关键决策")
|
||||
|
||||
# 统计信息
|
||||
total_rounds: int = Field(default=0, description="总轮数")
|
||||
total_messages: int = Field(default=0, description="总消息数")
|
||||
participating_agents: List[str] = Field(default_factory=list, description="参与的Agent列表")
|
||||
agent_contributions: Dict[str, int] = Field(
|
||||
default_factory=dict,
|
||||
description="各Agent发言次数统计"
|
||||
)
|
||||
|
||||
# 状态
|
||||
status: str = Field(default="in_progress", description="状态: in_progress, completed, failed")
|
||||
end_reason: str = Field(default="", description="结束原因")
|
||||
|
||||
# 时间戳
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
completed_at: Optional[datetime] = Field(default=None, description="完成时间")
|
||||
|
||||
class Settings:
|
||||
name = "discussions"
|
||||
indexes = [
|
||||
[("room_id", 1)],
|
||||
[("created_at", -1)],
|
||||
]
|
||||
|
||||
def mark_completed(
|
||||
self,
|
||||
consensus_reached: bool,
|
||||
confidence: float,
|
||||
summary: str,
|
||||
action_items: List[str] = None,
|
||||
unresolved_issues: List[str] = None,
|
||||
end_reason: str = "consensus"
|
||||
) -> None:
|
||||
"""
|
||||
标记讨论为已完成
|
||||
|
||||
Args:
|
||||
consensus_reached: 是否达成共识
|
||||
confidence: 置信度
|
||||
summary: 结果摘要
|
||||
action_items: 行动项
|
||||
unresolved_issues: 未解决问题
|
||||
end_reason: 结束原因
|
||||
"""
|
||||
self.consensus_reached = consensus_reached
|
||||
self.confidence = confidence
|
||||
self.summary = summary
|
||||
self.action_items = action_items or []
|
||||
self.unresolved_issues = unresolved_issues or []
|
||||
self.status = "completed"
|
||||
self.end_reason = end_reason
|
||||
self.completed_at = datetime.utcnow()
|
||||
self.updated_at = datetime.utcnow()
|
||||
|
||||
def update_stats(
|
||||
self,
|
||||
total_rounds: int,
|
||||
total_messages: int,
|
||||
agent_contributions: Dict[str, int]
|
||||
) -> None:
|
||||
"""
|
||||
更新统计信息
|
||||
|
||||
Args:
|
||||
total_rounds: 总轮数
|
||||
total_messages: 总消息数
|
||||
agent_contributions: Agent贡献统计
|
||||
"""
|
||||
self.total_rounds = total_rounds
|
||||
self.total_messages = total_messages
|
||||
self.agent_contributions = agent_contributions
|
||||
self.participating_agents = list(agent_contributions.keys())
|
||||
self.updated_at = datetime.utcnow()
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"discussion_id": "disc-001",
|
||||
"room_id": "product-design-room",
|
||||
"objective": "设计用户登录系统",
|
||||
"consensus_reached": True,
|
||||
"confidence": 0.85,
|
||||
"summary": "团队一致同意采用OAuth2.0 + 手机验证码的混合认证方案...",
|
||||
"action_items": [
|
||||
"设计OAuth2.0集成方案",
|
||||
"开发短信验证服务",
|
||||
"编写安全测试用例"
|
||||
],
|
||||
"unresolved_issues": [
|
||||
"第三方登录的优先级排序"
|
||||
],
|
||||
"total_rounds": 15,
|
||||
"total_messages": 45,
|
||||
"status": "completed"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user