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']