Merge branch 'master' of gitlab.prodcontest.ru:team-15/project

This commit is contained in:
ITQ
2025-03-04 02:25:41 +03:00
5 changed files with 35 additions and 31 deletions
+1
View File
@@ -68,3 +68,4 @@ class TaskStatusSchema(Schema):
task_name: str task_name: str
result: int result: int
max_points: int max_points: int
position: int
+1
View File
@@ -210,6 +210,7 @@ def get_competition_results(request, competition_id: UUID):
task_name=task.title, task_name=task.title,
result=result, result=result,
max_points=task.points, max_points=task.points,
position=task.in_competition_positions
)) ))
return status.OK, data return status.OK, data
@@ -1,4 +1,3 @@
// src/components/competition/CompetitionResultsModal.tsx
import React from 'react'; import React from 'react';
import { import {
Dialog, Dialog,
@@ -12,7 +11,8 @@ import { Loader2 } from 'lucide-react';
export interface CompetitionResult { export interface CompetitionResult {
task_name: string; task_name: string;
result: number; result: number;
max_points: number max_points: number;
position: number;
} }
interface CompetitionResultsModalProps { interface CompetitionResultsModalProps {
@@ -111,17 +111,19 @@ export const CompetitionResultsModal: React.FC<CompetitionResultsModalProps> = (
Произошла ошибка при загрузке результатов Произошла ошибка при загрузке результатов
</div> </div>
) : results && results.length > 0 ? ( ) : results && results.length > 0 ? (
results.map((result, index) => ( [...results]
<div .sort((a, b) => a.position - b.position)
key={index} .map((result, index) => (
className="flex flex-col md:flex-row justify-between items-start md:items-center p-4 bg-gray-50 rounded-lg border" <div
> key={index}
<div className="font-medium mb-2 md:mb-0">{result.task_name}</div> className="flex flex-col md:flex-row justify-between items-start md:items-center p-4 bg-gray-50 rounded-lg border"
<div className="text-right"> >
{renderResultValue(result.result, result.max_points)} <div className="font-medium mb-2 md:mb-0">{result.task_name}</div>
<div className="text-right">
{renderResultValue(result.result, result.max_points)}
</div>
</div> </div>
</div> ))
))
) : ( ) : (
<div className="text-center py-6 text-gray-500"> <div className="text-center py-6 text-gray-500">
Нет доступных результатов Нет доступных результатов
@@ -116,29 +116,29 @@ const CodeSolution: React.FC<CodeSolutionProps> = ({
<div className="mt-4 space-y-6"> <div className="mt-4 space-y-6">
<div> <div>
<h3 className="text-lg font-semibold mb-3 text-indigo-700 border-b pb-2">Ограничения</h3> <h3 className="text-lg font-semibold mb-3 border-b pb-2">Ограничение ресурсов</h3>
<ul className="space-y-3 text-gray-700"> <ul className="space-y-3 text-gray-700">
<li className="flex items-start"> <li className="flex items-start">
<div className="bg-indigo-100 p-1.5 rounded-full mr-3 mt-0.5"> <div className="bg-yellow-100 p-1.5 rounded-full mr-3 mt-0.5">
<div className="w-1.5 h-1.5 bg-indigo-500 rounded-full"></div> <div className="w-1.5 h-1.5 bg-yellow-500 rounded-full"></div>
</div> </div>
Максимум 1 посылка в 10 секунд Максимум 1 посылка в 10 секунд
</li> </li>
<li className="flex items-start"> <li className="flex items-start">
<div className="bg-indigo-100 p-1.5 rounded-full mr-3 mt-0.5"> <div className="bg-yellow-100 p-1.5 rounded-full mr-3 mt-0.5">
<div className="w-1.5 h-1.5 bg-indigo-500 rounded-full"></div> <div className="w-1.5 h-1.5 bg-yellow-500 rounded-full"></div>
</div> </div>
Максимальный размер решения 4MB Максимальный размер решения 4MB
</li> </li>
<li className="flex items-start"> <li className="flex items-start">
<div className="bg-indigo-100 p-1.5 rounded-full mr-3 mt-0.5"> <div className="bg-yellow-100 p-1.5 rounded-full mr-3 mt-0.5">
<div className="w-1.5 h-1.5 bg-indigo-500 rounded-full"></div> <div className="w-1.5 h-1.5 bg-yellow-500 rounded-full"></div>
</div> </div>
Максимальное время работы программы 1 минута Максимальное время работы программы 1 минута
</li> </li>
<li className="flex items-start"> <li className="flex items-start">
<div className="bg-indigo-100 p-1.5 rounded-full mr-3 mt-0.5"> <div className="bg-yellow-100 p-1.5 rounded-full mr-3 mt-0.5">
<div className="w-1.5 h-1.5 bg-indigo-500 rounded-full"></div> <div className="w-1.5 h-1.5 bg-yellow-500 rounded-full"></div>
</div> </div>
Выделяется 512MB на решение Выделяется 512MB на решение
</li> </li>
@@ -146,35 +146,35 @@ const CodeSolution: React.FC<CodeSolutionProps> = ({
</div> </div>
<div> <div>
<h3 className="text-lg font-semibold mb-3 text-indigo-700 border-b pb-2">Доступные библиотеки</h3> <h3 className="text-lg font-semibold mb-3 border-b pb-2">Доступные библиотеки</h3>
<div className="bg-gray-50 p-4 rounded-md font-mono text-sm"> <div className="bg-gray-50 p-4 rounded-md font-mono text-sm">
<div className="grid grid-cols-1 md:grid-cols-2 gap-2"> <div className="grid grid-cols-1 md:grid-cols-2 gap-2">
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">pandas</span> <span className="text-yellow-600 font-semibold">pandas</span>
<span className="text-gray-500 ml-2">2.2.3</span> <span className="text-gray-500 ml-2">2.2.3</span>
</div> </div>
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">numpy</span> <span className="text-yellow-600 font-semibold">numpy</span>
<span className="text-gray-500 ml-2">2.2.3</span> <span className="text-gray-500 ml-2">2.2.3</span>
</div> </div>
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">matplotlib</span> <span className="text-yellow-600 font-semibold">matplotlib</span>
<span className="text-gray-500 ml-2">3.10.1</span> <span className="text-gray-500 ml-2">3.10.1</span>
</div> </div>
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">scipy</span> <span className="text-yellow-600 font-semibold">scipy</span>
<span className="text-gray-500 ml-2">1.15.2</span> <span className="text-gray-500 ml-2">1.15.2</span>
</div> </div>
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">scikit-learn</span> <span className="text-yellow-600 font-semibold">scikit-learn</span>
<span className="text-gray-500 ml-2">1.6.1</span> <span className="text-gray-500 ml-2">1.6.1</span>
</div> </div>
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">seaborn</span> <span className="text-yellow-600 font-semibold">seaborn</span>
<span className="text-gray-500 ml-2">0.13.2</span> <span className="text-gray-500 ml-2">0.13.2</span>
</div> </div>
<div className="flex items-center"> <div className="flex items-center">
<span className="text-indigo-600 font-semibold">statsmodels</span> <span className="text-yellow-600 font-semibold">statsmodels</span>
<span className="text-gray-500 ml-2">0.14.4</span> <span className="text-gray-500 ml-2">0.14.4</span>
</div> </div>
</div> </div>
@@ -155,10 +155,10 @@ const TaskSolution: React.FC<TaskSolutionProps> = ({
? 'bg-blue-50 text-blue-700' ? 'bg-blue-50 text-blue-700'
: 'bg-red-50 text-red-700'}`} : 'bg-red-50 text-red-700'}`}
> >
{hasSubmissionsLeft ? ( {maxAttempts === -1 || hasSubmissionsLeft ? (
<> <>
<span className="font-medium"> <span className="font-medium">
Осталось посылок: {submissionsLeft === Infinity ? '∞' : submissionsLeft} Осталось посылок: {maxAttempts === -1 ? '∞' : submissionsLeft}
</span> </span>
{maxAttempts !== -1 && ( {maxAttempts !== -1 && (
<span className="text-blue-500 ml-1"> <span className="text-blue-500 ml-1">