daren/apps/rlhf/admin.py
2025-06-10 18:18:28 +08:00

88 lines
3.7 KiB
Python

from django.contrib import admin
from .models import (
RLHFConversation, NegotiationChat, ChatHistory, Feedback, FeedbackTag, DetailedFeedback,
ConversationSubmission, ConversationEvaluation, SystemConfig
)
@admin.register(RLHFConversation)
class RLHFConversationAdmin(admin.ModelAdmin):
list_display = ('negotiation_chat', 'id', 'user', 'is_submitted', 'created_at')
list_filter = ('is_submitted',)
search_fields = ('negotiation_chat__conversation_id', 'negotiation_chat__negotiation__user__username')
def id(self, obj):
return obj.negotiation_chat.conversation_id
def user(self, obj):
return obj.negotiation_chat.negotiation.user
def created_at(self, obj):
return obj.negotiation_chat.created_at
@admin.register(NegotiationChat)
class NegotiationChatAdmin(admin.ModelAdmin):
list_display = ('conversation_id', 'negotiation', 'creator', 'product', 'created_at', 'updated_at')
list_filter = ('created_at', 'updated_at')
search_fields = ('conversation_id', 'negotiation__user__username', 'creator__name', 'product__name')
date_hierarchy = 'created_at'
@admin.register(ChatHistory)
class ChatHistoryAdmin(admin.ModelAdmin):
list_display = ('id', 'conversation_id', 'user', 'role', 'short_content', 'created_at')
list_filter = ('role', 'created_at')
search_fields = ('id', 'conversation_id', 'content')
date_hierarchy = 'created_at'
def short_content(self, obj):
return obj.content[:50] + '...' if len(obj.content) > 50 else obj.content
short_content.short_description = '内容'
@admin.register(Feedback)
class FeedbackAdmin(admin.ModelAdmin):
list_display = ('id', 'message', 'conversation_id', 'user', 'feedback_value', 'timestamp')
list_filter = ('feedback_value', 'timestamp')
search_fields = ('id', 'message__id', 'conversation_id', 'user__username')
date_hierarchy = 'timestamp'
@admin.register(FeedbackTag)
class FeedbackTagAdmin(admin.ModelAdmin):
list_display = ('id', 'tag_name', 'tag_type', 'description', 'created_at')
list_filter = ('tag_type', 'created_at')
search_fields = ('id', 'tag_name', 'description')
@admin.register(DetailedFeedback)
class DetailedFeedbackAdmin(admin.ModelAdmin):
list_display = ('id', 'message', 'conversation_id', 'user', 'feedback_type', 'is_inline', 'created_at')
list_filter = ('feedback_type', 'is_inline', 'created_at')
search_fields = ('id', 'message__id', 'conversation_id', 'user__username', 'custom_content')
date_hierarchy = 'created_at'
@admin.register(ConversationSubmission)
class ConversationSubmissionAdmin(admin.ModelAdmin):
list_display = ('id', 'conversation_id', 'user', 'title', 'status', 'quality_score', 'reviewer', 'submitted_at', 'reviewed_at')
list_filter = ('status', 'quality_score', 'submitted_at', 'reviewed_at')
search_fields = ('id', 'conversation_id', 'user__username', 'title', 'description', 'reviewer__username')
date_hierarchy = 'submitted_at'
@admin.register(ConversationEvaluation)
class ConversationEvaluationAdmin(admin.ModelAdmin):
list_display = ('id', 'conversation_id', 'user', 'has_logical_issues', 'needs_satisfied', 'created_at')
list_filter = ('has_logical_issues', 'needs_satisfied', 'created_at')
search_fields = ('id', 'conversation_id', 'user__username', 'overall_feeling')
date_hierarchy = 'created_at'
@admin.register(SystemConfig)
class SystemConfigAdmin(admin.ModelAdmin):
list_display = ('id', 'config_key', 'config_value', 'config_type', 'description', 'updated_at')
list_filter = ('config_type', 'updated_at')
search_fields = ('id', 'config_key', 'config_value', 'description')
date_hierarchy = 'updated_at'