This commit is contained in:
2026-04-23 13:57:56 -06:00
parent 0c6de0babe
commit 028ea6e5f9
93 changed files with 321 additions and 1454 deletions

View File

@@ -3,6 +3,7 @@ WebSocket consumers for flowchart evaluation updates
"""
import json
import logging
from channels.generic.websocket import AsyncWebsocketConsumer
logger = logging.getLogger(__name__)

View File

@@ -1,7 +1,8 @@
from django.db import models
from django.contrib.auth import get_user_model
from utils.shortcuts import rand_str
from django.db import models
from problem.models import Problem
from utils.shortcuts import rand_str
User = get_user_model()

View File

@@ -1,4 +1,5 @@
from rest_framework import serializers
from .models import FlowchartSubmission

View File

@@ -1,12 +1,16 @@
import dramatiq
import json
import time
import dramatiq
from django.db import transaction
from django.utils import timezone
from utils.openai import get_ai_client
from utils.shortcuts import DRAMATIQ_WORKER_ARGS
from .models import FlowchartSubmission, FlowchartSubmissionStatus
@dramatiq.actor(**DRAMATIQ_WORKER_ARGS(max_retries=3))
def evaluate_flowchart_task(submission_id):
"""异步AI评分任务"""

View File

@@ -1,10 +1,11 @@
from django.urls import path
from ..views.oj import (
FlowchartSubmissionAPI,
FlowchartSubmissionListAPI,
FlowchartSubmissionRetryAPI,
FlowchartSubmissionCurrentAPI,
FlowchartSubmissionDetailAPI,
FlowchartSubmissionListAPI,
FlowchartSubmissionRetryAPI,
)
urlpatterns = [

View File

@@ -1,3 +1,2 @@
from django.shortcuts import render
# Create your views here.

View File

@@ -1,13 +1,13 @@
from utils.api import APIView
from account.decorators import login_required
from flowchart.models import FlowchartSubmission, FlowchartSubmissionStatus
from flowchart.serializers import (
CreateFlowchartSubmissionSerializer,
FlowchartSubmissionSerializer,
FlowchartSubmissionListSerializer,
FlowchartSubmissionSerializer,
)
from flowchart.tasks import evaluate_flowchart_task
from problem.models import Problem
from utils.api import APIView
class FlowchartSubmissionAPI(APIView):