refac
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user