""" 反馈相关 API 路由 """ import logging import uuid from datetime import datetime, timezone from typing import Optional from fastapi import APIRouter, Depends, HTTPException, status from pydantic import BaseModel, Field from sqlalchemy.ext.asyncio import AsyncSession from database import get_async_db from middleware.auth import get_current_user from database.models import User logger = logging.getLogger(__name__) router = APIRouter(prefix="/api/feedback", tags=["feedback"]) class SubmitFeedbackRequest(BaseModel): """提交反馈请求""" content: str = Field(..., min_length=1, max_length=2000, description="反馈内容") contact: Optional[str] = Field(None, max_length=100, description="联系方式(可选)") class FeedbackResponse(BaseModel): """反馈响应""" id: str message: str @router.post("", response_model=FeedbackResponse, status_code=status.HTTP_201_CREATED) async def submit_feedback( request: SubmitFeedbackRequest, current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_async_db) ): """ 提交用户反馈 用户可以通过此接口提交反馈意见或联系客服 """ try: feedback_id = str(uuid.uuid4()) # 记录反馈(这里可以保存到数据库,目前先记录日志) logger.info( f"用户反馈 - ID: {feedback_id}, " f"用户ID: {current_user.id}, " f"内容: {request.content[:100]}..., " f"联系方式: {request.contact or '未提供'}" ) # TODO: 保存反馈到数据库 # feedback = Feedback( # id=feedback_id, # user_id=current_user.id, # content=request.content, # contact=request.contact, # created_at=datetime.now(timezone.utc) # ) # db.add(feedback) # await db.commit() return FeedbackResponse( id=feedback_id, message="反馈已提交,我们会尽快处理" ) except Exception as e: logger.error(f"提交反馈失败: {e}") raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="提交反馈失败,请稍后重试" )