"""反馈统计 API""" from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from ..database import get_db from ..models import SignalFeedback router = APIRouter(prefix="/feedbacks", tags=["feedbacks"]) @router.get("/stats") async def get_feedback_stats(db: AsyncSession = Depends(get_db)): """获取反馈统计""" result = await db.execute(select(SignalFeedback)) all_feedbacks = result.scalars().all() total = len(all_feedbacks) if total == 0: return { "total_feedbacks": 0, "accuracy": 0.0, "true_positives": 0, "false_positives": 0, "true_negatives": 0, "false_negatives": 0, } correct = sum( 1 for f in all_feedbacks if f.ai_predicted_strategic == f.was_strategic ) true_positives = sum( 1 for f in all_feedbacks if f.ai_predicted_strategic and f.was_strategic ) false_positives = sum( 1 for f in all_feedbacks if f.ai_predicted_strategic and not f.was_strategic ) true_negatives = sum( 1 for f in all_feedbacks if not f.ai_predicted_strategic and not f.was_strategic ) false_negatives = sum( 1 for f in all_feedbacks if not f.ai_predicted_strategic and f.was_strategic ) return { "total_feedbacks": total, "accuracy": correct / total, "true_positives": true_positives, "false_positives": false_positives, "true_negatives": true_negatives, "false_negatives": false_negatives, }