## Summary - Closes [#67](#67) — new `PromptFeedback` model (unique on `(prompt, user)`) with `rating` (`up`|`down`), optional `reason` / `comment`, and timestamps via `TimeInfoBase`. - `POST /api/prompt_feedback` upserts `{ prompt_id, rating, reason?, comment? }`; `DELETE /api/prompt_feedback?prompt_id=` clears the caller's vote. - `GET conversation_details` now nests the caller's `feedback: { rating, reason, comment }` (or `null`) on each prompt so [chat_web_app#101](ai_ml_operations/chat_web_app#101) can rehydrate thumbs UI. - Auth required; users can only rate assistant prompts in their own non-deleted conversations. Distinct from app-wide `POST /feedbacks/`. - Joinable to `PromptMetric` via `prompt_id` for per-model accuracy slices. ## Test plan - [ ] `uv run python manage.py test chat_backend.tests.test_views_prompt_feedback` - [ ] Upsert thumbs up, then down with reason/comment — one row updated - [ ] DELETE clears vote; second DELETE → 404 - [ ] Rating another user's prompt → 404; rating a user message → 400 - [ ] Reload conversation details → assistant prompts show caller feedback only - [ ] Companion FE [chat_web_app#101](ai_ml_operations/chat_web_app#101) thumbs + reason popover against this APIReviewed-on: #70
This commit was merged in pull request #70.
This commit is contained in:
@@ -8,6 +8,7 @@ from .models import (
|
||||
Conversation,
|
||||
Prompt,
|
||||
Feedback,
|
||||
PromptFeedback,
|
||||
PromptMetric,
|
||||
DocumentWorkspace,
|
||||
Document,
|
||||
@@ -134,6 +135,14 @@ class FeedbackAdmin(admin.ModelAdmin):
|
||||
list_display = ("status", "get_user_email", "title", "category")
|
||||
|
||||
|
||||
class PromptFeedbackAdmin(admin.ModelAdmin):
|
||||
model = PromptFeedback
|
||||
list_display = ("id", "prompt", "user", "rating", "reason", "created")
|
||||
list_filter = ("rating", "reason")
|
||||
search_fields = ("user__email", "comment", "prompt__message")
|
||||
raw_id_fields = ("prompt", "user")
|
||||
|
||||
|
||||
class LLMModelsAdmin(admin.ModelAdmin):
|
||||
model = LLMModels
|
||||
list_display = ("name", "port", "description")
|
||||
@@ -259,6 +268,7 @@ admin.site.register(Conversation, ConversationAdmin)
|
||||
admin.site.register(Prompt, PromptAdmin)
|
||||
admin.site.register(PromptMetric, PromptMetricAdmin)
|
||||
admin.site.register(Feedback, FeedbackAdmin)
|
||||
admin.site.register(PromptFeedback, PromptFeedbackAdmin)
|
||||
|
||||
admin.site.register(DocumentWorkspace, DocumentWorkspaceAdmin)
|
||||
admin.site.register(Document, DocumentAdmin)
|
||||
|
||||
Reference in New Issue
Block a user