This commit is contained in:
Timothy Jaeryang Baek
2026-04-02 02:50:05 -05:00
parent 4632f200a9
commit 60e4d75174
4 changed files with 379 additions and 221 deletions
+18
View File
@@ -215,6 +215,13 @@ class FeedbackTable:
query = db.query(Feedback, User).join(User, Feedback.user_id == User.id)
if filter:
# Apply model_id filter (exact match)
model_id = filter.get('model_id')
if model_id:
query = query.filter(
Feedback.data['model_id'].as_string() == model_id
)
order_by = filter.get('order_by')
direction = filter.get('direction')
@@ -288,6 +295,17 @@ class FeedbackTable:
.all()
]
def get_distinct_model_ids(self, db: Optional[Session] = None) -> list[str]:
"""Get distinct model_ids from feedback data for filter dropdowns."""
with get_db_context(db) as db:
rows = (
db.query(Feedback.data['model_id'].as_string())
.filter(Feedback.data['model_id'].as_string().isnot(None))
.distinct()
.all()
)
return sorted([row[0] for row in rows if row[0]])
def get_feedbacks_for_leaderboard(self, db: Optional[Session] = None) -> list[LeaderboardFeedbackData]:
"""Fetch only id and data for leaderboard computation (excludes snapshot/meta)."""
with get_db_context(db) as db:
+18 -1
View File
@@ -291,6 +291,11 @@ async def update_config(
}
@router.get('/feedbacks/models', response_model=list[str])
async def get_feedback_model_ids(user=Depends(get_admin_user), db: Session = Depends(get_session)):
return Feedbacks.get_distinct_model_ids(db=db)
@router.get('/feedbacks/all', response_model=list[FeedbackResponse])
async def get_all_feedbacks(user=Depends(get_admin_user), db: Session = Depends(get_session)):
feedbacks = Feedbacks.get_all_feedbacks(db=db)
@@ -309,8 +314,17 @@ async def delete_all_feedbacks(user=Depends(get_admin_user), db: Session = Depen
@router.get('/feedbacks/all/export', response_model=list[FeedbackModel])
async def export_all_feedbacks(user=Depends(get_admin_user), db: Session = Depends(get_session)):
async def export_all_feedbacks(
model_id: Optional[str] = None,
user=Depends(get_admin_user),
db: Session = Depends(get_session),
):
feedbacks = Feedbacks.get_all_feedbacks(db=db)
if model_id:
feedbacks = [
f for f in feedbacks
if f.data and f.data.get('model_id') == model_id
]
return feedbacks
@@ -334,6 +348,7 @@ async def get_feedbacks(
order_by: Optional[str] = None,
direction: Optional[str] = None,
page: Optional[int] = 1,
model_id: Optional[str] = None,
user=Depends(get_admin_user),
db: Session = Depends(get_session),
):
@@ -347,6 +362,8 @@ async def get_feedbacks(
filter['order_by'] = order_by
if direction:
filter['direction'] = direction
if model_id:
filter['model_id'] = model_id
result = Feedbacks.get_feedback_items(filter=filter, skip=skip, limit=limit, db=db)
return result