crypto.ai/cryptoai/routes/feed.py
2025-05-06 16:37:49 +08:00

110 lines
3.1 KiB
Python
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.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
AI Agent信息流API路由模块提供信息流的增删改查功能
"""
import logging
from fastapi import APIRouter, HTTPException, status, Query, Depends
from pydantic import BaseModel
from typing import Dict, Any, List, Optional
from datetime import datetime
from cryptoai.routes.user import get_current_user
from cryptoai.utils.db_manager import get_db_manager
# 配置日志
logger = logging.getLogger("feed_router")
# 创建路由
router = APIRouter()
# 请求模型
class AgentFeedCreate(BaseModel):
"""创建信息流请求模型"""
agent_name: str
content: str
avatar_url: Optional[str] = None
# 响应模型
class AgentFeedResponse(BaseModel):
"""信息流响应模型"""
id: int
agent_name: str
avatar_url: Optional[str] = None
content: str
create_time: datetime
@router.post("", response_model=Dict[str, Any], status_code=status.HTTP_201_CREATED)
async def create_feed(feed: AgentFeedCreate) -> Dict[str, Any]:
"""
创建新的AI Agent信息流
Args:
feed: 信息流创建请求
Returns:
创建成功的状态信息
"""
try:
# 获取数据库管理器
db_manager = get_db_manager()
# 保存信息流
success = db_manager.save_agent_feed(
agent_name=feed.agent_name,
content=feed.content,
avatar_url=feed.avatar_url
)
if not success:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail="保存信息流失败"
)
return {
"status": "success",
"message": "信息流创建成功"
}
except Exception as e:
logger.error(f"创建信息流失败: {str(e)}")
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"创建信息流失败: {str(e)}"
)
@router.get("", response_model=List[AgentFeedResponse])
async def get_feeds(
agent_name: Optional[str] = Query(None, description="AI Agent名称可选"),
limit: int = Query(20, description="返回的最大记录数默认20条"),
skip: int = Query(0, description="跳过的记录数默认0条"),
current_user: Dict[str, Any] = Depends(get_current_user)
) -> List[AgentFeedResponse]:
"""
获取AI Agent信息流列表
Args:
agent_name: 可选指定获取特定Agent的信息流
limit: 返回的最大记录数默认20条
Returns:
信息流列表
"""
try:
# 获取数据库管理器
db_manager = get_db_manager()
# 获取信息流
feeds = db_manager.get_agent_feeds(agent_name=agent_name, limit=limit, skip=skip)
return feeds
except Exception as e:
logger.error(f"获取信息流失败: {str(e)}")
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"获取信息流失败: {str(e)}"
)