Add automatic skip detection for playlist playback
Background poller monitors HA media_player state during playlist sessions. When a track transition occurs and the previous track was played < 40% of its duration, automatically records "skip" feedback. Also includes the previously uncommitted delete_feedback endpoint. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ from sqlalchemy.orm import joinedload
|
||||
|
||||
from haunt_fm.db import get_session
|
||||
from haunt_fm.models.track import FeedbackEvent, Track
|
||||
from haunt_fm.services.feedback import compute_contextual_score, record_feedback
|
||||
from haunt_fm.services.feedback import compute_contextual_score, delete_feedback, record_feedback
|
||||
|
||||
router = APIRouter(prefix="/api/feedback")
|
||||
|
||||
@@ -41,6 +41,24 @@ async def submit_feedback(req: FeedbackRequest, session: AsyncSession = Depends(
|
||||
}
|
||||
|
||||
|
||||
@router.delete("/{event_id}")
|
||||
async def retract_feedback(event_id: int, session: AsyncSession = Depends(get_session)):
|
||||
"""Delete a feedback event entirely, removing its influence on scoring."""
|
||||
event = await delete_feedback(session, event_id)
|
||||
if event is None:
|
||||
raise HTTPException(status_code=404, detail=f"Feedback event {event_id} not found")
|
||||
|
||||
return {
|
||||
"id": event.id,
|
||||
"playlist_id": event.playlist_id,
|
||||
"track_id": event.track_id,
|
||||
"signal": event.signal,
|
||||
"signal_weight": event.signal_weight,
|
||||
"vibe_text": event.vibe_text,
|
||||
"created_at": event.created_at.isoformat(),
|
||||
}
|
||||
|
||||
|
||||
@router.post("/score")
|
||||
async def get_score(req: ScoreRequest, session: AsyncSession = Depends(get_session)):
|
||||
"""Compute the contextual feedback score for a track given a vibe description."""
|
||||
|
||||
Reference in New Issue
Block a user