84 lines
3.4 KiB
Python
84 lines
3.4 KiB
Python
from rest_framework import serializers
|
|
from .models import (
|
|
Conversation, Message, Feedback, FeedbackTag, DetailedFeedback,
|
|
ConversationSubmission, ConversationEvaluation, SystemConfig
|
|
)
|
|
from apps.user.serializers import UserSerializer
|
|
|
|
|
|
class ConversationSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Conversation
|
|
fields = ['id', 'user', 'is_submitted', 'created_at']
|
|
read_only_fields = ['id', 'created_at', 'user']
|
|
|
|
|
|
class MessageSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Message
|
|
fields = ['id', 'conversation', 'role', 'content', 'timestamp']
|
|
read_only_fields = ['id', 'timestamp']
|
|
|
|
|
|
class FeedbackSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Feedback
|
|
fields = ['id', 'message', 'conversation', 'user', 'feedback_value', 'timestamp']
|
|
read_only_fields = ['id', 'timestamp']
|
|
|
|
|
|
class FeedbackTagSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = FeedbackTag
|
|
fields = ['id', 'tag_name', 'tag_type', 'description', 'created_at']
|
|
read_only_fields = ['id', 'created_at']
|
|
|
|
|
|
class DetailedFeedbackSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = DetailedFeedback
|
|
fields = ['id', 'message', 'conversation', 'user', 'feedback_type', 'feedback_tags', 'custom_tags', 'custom_content', 'is_inline', 'created_at', 'updated_at']
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class ConversationSubmissionSerializer(serializers.ModelSerializer):
|
|
user_details = UserSerializer(source='user', read_only=True)
|
|
reviewer_details = UserSerializer(source='reviewer', read_only=True)
|
|
|
|
class Meta:
|
|
model = ConversationSubmission
|
|
fields = ['id', 'conversation', 'user', 'user_details', 'title', 'description', 'status', 'quality_score', 'reviewer', 'reviewer_details', 'reviewer_notes', 'submitted_at', 'reviewed_at', 'created_at', 'updated_at']
|
|
read_only_fields = ['id', 'submitted_at', 'reviewed_at', 'created_at', 'updated_at']
|
|
|
|
|
|
class ConversationEvaluationSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ConversationEvaluation
|
|
fields = ['id', 'conversation', 'user', 'overall_feeling', 'has_logical_issues', 'needs_satisfied', 'created_at', 'updated_at']
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class SystemConfigSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = SystemConfig
|
|
fields = ['id', 'config_key', 'config_value', 'config_type', 'description', 'created_at', 'updated_at']
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class ConversationWithMessagesSerializer(serializers.ModelSerializer):
|
|
messages = MessageSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = Conversation
|
|
fields = ['id', 'user', 'is_submitted', 'created_at', 'messages']
|
|
read_only_fields = ['id', 'created_at']
|
|
|
|
|
|
class MessageWithFeedbackSerializer(serializers.ModelSerializer):
|
|
feedback = FeedbackSerializer(many=True, read_only=True)
|
|
detailed_feedback = DetailedFeedbackSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = Message
|
|
fields = ['id', 'conversation', 'role', 'content', 'timestamp', 'feedback', 'detailed_feedback']
|
|
read_only_fields = ['id', 'timestamp'] |