92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
from rest_framework import serializers
|
||
from .models import FlowchartSubmission
|
||
|
||
|
||
class CreateFlowchartSubmissionSerializer(serializers.Serializer):
|
||
problem_id = serializers.IntegerField()
|
||
mermaid_code = serializers.CharField()
|
||
flowchart_data = serializers.JSONField(required=False, default=dict)
|
||
|
||
def validate_mermaid_code(self, value):
|
||
if not value.strip():
|
||
raise serializers.ValidationError("Mermaid代码不能为空")
|
||
return value
|
||
|
||
|
||
class FlowchartSubmissionSerializer(serializers.ModelSerializer):
|
||
class Meta:
|
||
model = FlowchartSubmission
|
||
fields = [
|
||
"id",
|
||
"user",
|
||
"problem",
|
||
"mermaid_code",
|
||
"flowchart_data",
|
||
"status",
|
||
"create_time",
|
||
"ai_score",
|
||
"ai_grade",
|
||
"ai_feedback",
|
||
"ai_suggestions",
|
||
"ai_criteria_details",
|
||
"ai_provider",
|
||
"ai_model",
|
||
"processing_time",
|
||
"evaluation_time",
|
||
]
|
||
read_only_fields = ["id", "create_time", "evaluation_time"]
|
||
|
||
|
||
class FlowchartSubmissionListSerializer(serializers.ModelSerializer):
|
||
"""用于列表显示的简化序列化器"""
|
||
|
||
username = serializers.CharField(source="user.username")
|
||
problem = serializers.CharField(source="problem._id")
|
||
problem_title = serializers.CharField(source="problem.title")
|
||
class Meta:
|
||
model = FlowchartSubmission
|
||
fields = [
|
||
"id",
|
||
"username",
|
||
"problem_title",
|
||
"problem",
|
||
"status",
|
||
"create_time",
|
||
"ai_score",
|
||
"ai_grade",
|
||
"ai_provider",
|
||
"ai_model",
|
||
"processing_time",
|
||
"evaluation_time",
|
||
]
|
||
|
||
|
||
class FlowchartSubmissionSummarySerializer(serializers.ModelSerializer):
|
||
"""用于AI详情页面的极简序列化器,只包含必要字段"""
|
||
|
||
problem_title = serializers.CharField(source="problem.title")
|
||
problem__id = serializers.CharField(source="problem._id")
|
||
|
||
class Meta:
|
||
model = FlowchartSubmission
|
||
fields = [
|
||
"id",
|
||
"problem__id",
|
||
"problem_title",
|
||
"ai_score",
|
||
"ai_grade",
|
||
"create_time",
|
||
]
|
||
|
||
|
||
class FlowchartSubmissionMergedSerializer(serializers.Serializer):
|
||
"""合并后的流程图提交序列化器"""
|
||
|
||
problem__id = serializers.CharField()
|
||
problem_title = serializers.CharField()
|
||
submission_count = serializers.IntegerField()
|
||
best_score = serializers.FloatField()
|
||
best_grade = serializers.CharField()
|
||
latest_submission_time = serializers.DateTimeField()
|
||
avg_score = serializers.FloatField()
|