Spotix-API / backend /app /api /feedback_routes.py
Anish-530
Added email code verif
c041d0d
from fastapi import APIRouter, Depends, HTTPException, BackgroundTasks
from sqlalchemy.orm import Session
from app.db.session import get_db
from app.models.feedback_model import Feedback
from app.core.auth_dependancy import get_current_user
from app.schemas.feedback_schema import FeedbackCreate
from app.ai.meta_classifier import retrain_from_feedback
from app.api.file_routes import decode_id
router = APIRouter(prefix="/feedback", tags=["Feedback"])
@router.post("/")
def submit_feedback(
payload: FeedbackCreate,
background_tasks: BackgroundTasks,
db: Session = Depends(get_db),
user = Depends(get_current_user)
):
try:
real_file_id = decode_id(payload.file_id)
except HTTPException:
raise HTTPException(status_code=400, detail="Invalid file ID")
# Check if user already submitted feedback for this file
existing = db.query(Feedback).filter(Feedback.file_id == real_file_id, Feedback.user_id == user.id).first()
if existing:
raise HTTPException(status_code=400, detail="Feedback already submitted for this file.")
fb = Feedback(
file_id=real_file_id,
user_id=user.id,
label=payload.label,
confidence=payload.confidence,
freq_score=payload.freq_score,
cnn_score=payload.cnn_score
)
db.add(fb)
db.commit()
# Trigger async retraining check
background_tasks.add_task(retrain_from_feedback)
return {"message": "Feedback saved"}