Commit 33cc3d86 authored by Yechang's avatar Yechang
Browse files

feat(feedback): carp testcases

parent e7c58cbc
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@
		"prettier-plugin-svelte": "^3.1.2",
		"prettier-plugin-tailwindcss": "^0.5.9",
		"prism-themes": "^1.9.0",
		"prisma": "^5.11.0",
		"prisma": "^5.12.1",
		"prismjs": "^1.29.0",
		"refractor": "^4.8.1",
		"sass": "^1.71.1",
@@ -87,7 +87,7 @@
		"@milkdown/prose": "^7.3.5",
		"@milkdown/theme-nord": "^7.3.5",
		"@milkdown/transformer": "^7.3.5",
		"@prisma/client": "5.11.0",
		"@prisma/client": "5.12.1",
		"@sentry/sveltekit": "^7.109.0",
		"@tiptap/core": "^2.2.4",
		"@tiptap/extension-collaboration": "^2.2.4",
+31 −31
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ dependencies:
    version: 3.5.2
  '@lucia-auth/adapter-prisma':
    specifier: ^4.0.0
    version: 4.0.0(@prisma/client@5.11.0)(lucia@3.0.1)
    version: 4.0.0(@prisma/client@5.12.1)(lucia@3.0.1)
  '@milkdown/core':
    specifier: ^7.3.5
    version: 7.3.5(@milkdown/ctx@7.3.5)(@milkdown/prose@7.3.5)(@milkdown/transformer@7.3.5)
@@ -48,8 +48,8 @@ dependencies:
    specifier: ^7.3.5
    version: 7.3.5(@milkdown/prose@7.3.5)
  '@prisma/client':
    specifier: 5.11.0
    version: 5.11.0(prisma@5.11.0)
    specifier: 5.12.1
    version: 5.12.1(prisma@5.12.1)
  '@sentry/sveltekit':
    specifier: ^7.109.0
    version: 7.109.0(@sveltejs/kit@2.5.2)(svelte@4.2.12)
@@ -239,8 +239,8 @@ devDependencies:
    specifier: ^1.9.0
    version: 1.9.0
  prisma:
    specifier: ^5.11.0
    version: 5.11.0
    specifier: ^5.12.1
    version: 5.12.1
  prismjs:
    specifier: ^1.29.0
    version: 1.29.0
@@ -1129,13 +1129,13 @@ packages:
      '@jridgewell/resolve-uri': 3.1.2
      '@jridgewell/sourcemap-codec': 1.4.15

  /@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.11.0)(lucia@3.0.1):
  /@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.12.1)(lucia@3.0.1):
    resolution: {integrity: sha512-TJg4/U1K1slS4A/OzDYCgmHTrIArntIynue14zGIEaMDu+OD+tGyq9WwQWqOabpx2Gm9xtDsoK+tTokAY3Up7A==}
    peerDependencies:
      '@prisma/client': ^4.2.0 || ^5.0.0
      lucia: 3.x
    dependencies:
      '@prisma/client': 5.11.0(prisma@5.11.0)
      '@prisma/client': 5.12.1(prisma@5.12.1)
      lucia: 3.0.1
    dev: false

@@ -2016,8 +2016,8 @@ packages:
    requiresBuild: true
    optional: true

  /@prisma/client@5.11.0(prisma@5.11.0):
    resolution: {integrity: sha512-SWshvS5FDXvgJKM/a0y9nDC1rqd7KG0Q6ZVzd+U7ZXK5soe73DJxJJgbNBt2GNXOa+ysWB4suTpdK5zfFPhwiw==}
  /@prisma/client@5.12.1(prisma@5.12.1):
    resolution: {integrity: sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA==}
    engines: {node: '>=16.13'}
    requiresBuild: true
    peerDependencies:
@@ -2026,35 +2026,35 @@ packages:
      prisma:
        optional: true
    dependencies:
      prisma: 5.11.0
      prisma: 5.12.1
    dev: false

  /@prisma/debug@5.11.0:
    resolution: {integrity: sha512-N6yYr3AbQqaiUg+OgjkdPp3KPW1vMTAgtKX6+BiB/qB2i1TjLYCrweKcUjzOoRM5BriA4idrkTej9A9QqTfl3A==}
  /@prisma/debug@5.12.1:
    resolution: {integrity: sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A==}

  /@prisma/engines-version@5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102:
    resolution: {integrity: sha512-WXCuyoymvrS4zLz4wQagSsc3/nE6CHy8znyiMv8RKazKymOMd5o9FP5RGwGHAtgoxd+aB/BWqxuP/Ckfu7/3MA==}
  /@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab:
    resolution: {integrity: sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g==}

  /@prisma/engines@5.11.0:
    resolution: {integrity: sha512-gbrpQoBTYWXDRqD+iTYMirDlF9MMlQdxskQXbhARhG6A/uFQjB7DZMYocMQLoiZXO/IskfDOZpPoZE8TBQKtEw==}
  /@prisma/engines@5.12.1:
    resolution: {integrity: sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA==}
    requiresBuild: true
    dependencies:
      '@prisma/debug': 5.11.0
      '@prisma/engines-version': 5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102
      '@prisma/fetch-engine': 5.11.0
      '@prisma/get-platform': 5.11.0
      '@prisma/debug': 5.12.1
      '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab
      '@prisma/fetch-engine': 5.12.1
      '@prisma/get-platform': 5.12.1

  /@prisma/fetch-engine@5.11.0:
    resolution: {integrity: sha512-994viazmHTJ1ymzvWugXod7dZ42T2ROeFuH6zHPcUfp/69+6cl5r9u3NFb6bW8lLdNjwLYEVPeu3hWzxpZeC0w==}
  /@prisma/fetch-engine@5.12.1:
    resolution: {integrity: sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA==}
    dependencies:
      '@prisma/debug': 5.11.0
      '@prisma/engines-version': 5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102
      '@prisma/get-platform': 5.11.0
      '@prisma/debug': 5.12.1
      '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab
      '@prisma/get-platform': 5.12.1

  /@prisma/get-platform@5.11.0:
    resolution: {integrity: sha512-rxtHpMLxNTHxqWuGOLzR2QOyQi79rK1u1XYAVLZxDGTLz/A+uoDnjz9veBFlicrpWjwuieM4N6jcnjj/DDoidw==}
  /@prisma/get-platform@5.12.1:
    resolution: {integrity: sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ==}
    dependencies:
      '@prisma/debug': 5.11.0
      '@prisma/debug': 5.12.1

  /@remirror/core-constants@2.0.2:
    resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
@@ -7166,13 +7166,13 @@ packages:
    resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==}
    dev: true

  /prisma@5.11.0:
    resolution: {integrity: sha512-KCLiug2cs0Je7kGkQBN9jDWoZ90ogE/kvZTUTgz2h94FEo8pczCkPH7fPNXkD1sGU7Yh65risGGD1HQ5DF3r3g==}
  /prisma@5.12.1:
    resolution: {integrity: sha512-SkMnb6wyIxTv9ACqiHBI2u9gD6y98qXRoCoLEnZsF6yee5Qg828G+ARrESN+lQHdw4maSZFFSBPPDpvSiVTo0Q==}
    engines: {node: '>=16.13'}
    hasBin: true
    requiresBuild: true
    dependencies:
      '@prisma/engines': 5.11.0
      '@prisma/engines': 5.12.1

  /prismjs@1.29.0:
    resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
+2 −0
Original line number Diff line number Diff line
-- AlterTable
ALTER TABLE `Task` ADD COLUMN `ioj` VARCHAR(191) NULL;
+2 −0
Original line number Diff line number Diff line
@@ -300,6 +300,8 @@ model Task {
  testdataKey String
  args        Json

  ioj String?

  // output
  result String? @db.Text

+53 −33
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ import { z } from 'zod';
import { redis } from '../redis';
import { judgementArgsSchema } from '../oj/args';
import moment from 'moment';
import axios from 'axios';
import { createJudgementByHTTP, SlotType } from '../oj';

type CreateSubmissionSchema = {
	problemId: number;
@@ -63,9 +65,26 @@ export const createSubmission = async ({
		}
	});

	const language = file.filename.endsWith("cpp") ? "cpp" : "java"
	const judgementArgs = judgementArgsSchema.parse(submission.problem.judgementArgs)
	if ("program" in judgementArgs) {
		const { program } = judgementArgs
		const id = await createJudgementByHTTP(program, [{
			type: SlotType.S3_FILE,
			key: submission.volumeId
		}])

		const task = await db.task.create({
			data: {
				fileKey: volumeId,
				language: "",
				testdataKey: "",
				ioj: id,
				args: {},
				submissionId: submission.id,
			}
		})
	} else {
		const language = file.filename.endsWith("cpp") ? "cpp" : "java"
		let { memoryLimit, timeLimit } = judgementArgs
		const spec = judgementArgs[language]
		if (!_.isNil(spec)) {
@@ -102,6 +121,7 @@ export const createSubmission = async ({
		const hash = nanoid()
		await redis.hset(`lms:task:hash`, hash, `${task.id}`)
		await redis.rpush(`lms:task:queue`, hash)
	}

	return submission;
};
Loading