精简 Problem 模型:移除 rule_type / total_score / io_mode
系统只用 ACM 模式且题目固定标准 IO,这三列已无实际用途: - rule_type / total_score:OI 专用,删除后 judge/dispatcher 的 OI 分支全部塌缩为 ACM - io_mode:判题改为固定发送 Standard IO 常量;languages.py 的 seccomp_rule 保留 dict 形态但改用字面量 key,不改判题机 wire 契约 - prompt 字段保留(预留给未来 AI 分析) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import re
|
||||
|
||||
from django import forms
|
||||
|
||||
from utils.api import UsernameSerializer, serializers
|
||||
@@ -9,7 +7,7 @@ from utils.serializers import (
|
||||
LanguageNameMultiChoiceField,
|
||||
)
|
||||
|
||||
from .models import Problem, ProblemIOMode, ProblemRuleType, ProblemTag
|
||||
from .models import Problem, ProblemTag
|
||||
from .utils import parse_problem_template
|
||||
|
||||
|
||||
@@ -48,20 +46,6 @@ class SQLTestCasePreviewSerializer(serializers.Serializer):
|
||||
mode = serializers.ChoiceField(choices=["query", "modify"])
|
||||
|
||||
|
||||
class ProblemIOModeSerializer(serializers.Serializer):
|
||||
io_mode = serializers.ChoiceField(choices=ProblemIOMode.choices)
|
||||
input = serializers.CharField()
|
||||
output = serializers.CharField()
|
||||
|
||||
def validate(self, attrs):
|
||||
if attrs["input"] == attrs["output"]:
|
||||
raise serializers.ValidationError("Invalid io mode")
|
||||
for item in (attrs["input"], attrs["output"]):
|
||||
if not re.match("^[a-zA-Z0-9.]+$", item):
|
||||
raise serializers.ValidationError("Invalid io file name format")
|
||||
return attrs
|
||||
|
||||
|
||||
class CreateOrEditProblemSerializer(serializers.Serializer):
|
||||
_id = serializers.CharField(max_length=32, allow_blank=True, allow_null=True)
|
||||
title = serializers.CharField(max_length=1024)
|
||||
@@ -75,8 +59,6 @@ class CreateOrEditProblemSerializer(serializers.Serializer):
|
||||
memory_limit = serializers.IntegerField(min_value=1, max_value=1024)
|
||||
languages = LanguageNameMultiChoiceField()
|
||||
template = serializers.DictField(child=serializers.CharField(min_length=1))
|
||||
rule_type = serializers.ChoiceField(choices=ProblemRuleType.choices)
|
||||
io_mode = ProblemIOModeSerializer()
|
||||
visible = serializers.BooleanField()
|
||||
difficulty = serializers.ChoiceField(choices=Difficulty.choices)
|
||||
tags = serializers.ListField(child=serializers.CharField(max_length=32), allow_empty=False)
|
||||
|
||||
Reference in New Issue
Block a user