- 新增faqs.py常见问题路由 - 新增feedback.py反馈路由 - 新增orders.py订单路由 - 新增plans.py套餐路由 - 新增quota.py配额路由 - 新增user.py用户路由 - 更新main.py注册新路由 - 更新requirements.txt添加依赖
77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
"""
|
|
反馈相关 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="提交反馈失败,请稍后重试"
|
|
)
|