[ { "_id": "sub001", "id": "sub001", "user": { "_id": "user001", "id": "user001", "nickname": "alex_student", "createdAt": "2024-10-15T08:30:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439011", "id": "507f1f77bcf86cd799439011", "title": "Реализовать сортировку массива", "description": "# Задание: Сортировка массива\n\nНапишите функцию `sortArray(arr)`, которая сортирует массив чисел по возрастанию.", "createdAt": "2024-11-01T10:00:00.000Z", "updatedAt": "2024-11-01T10:00:00.000Z" }, "result": "function sortArray(arr) {\n return arr.sort((a, b) => a - b);\n}", "status": "needs_revision", "queueId": "q001", "feedback": "Ваше решение изменяет исходный массив. Необходимо создать копию массива перед сортировкой. Используйте spread оператор или Array.from().", "submittedAt": "2024-11-01T15:30:00.000Z", "checkedAt": "2024-11-01T15:30:03.500Z", "attemptNumber": 1 }, { "_id": "sub002", "id": "sub002", "user": { "_id": "user001", "id": "user001", "nickname": "alex_student", "createdAt": "2024-10-15T08:30:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439011", "id": "507f1f77bcf86cd799439011", "title": "Реализовать сортировку массива", "description": "# Задание: Сортировка массива", "createdAt": "2024-11-01T10:00:00.000Z", "updatedAt": "2024-11-01T10:00:00.000Z" }, "result": "function sortArray(arr) {\n return [...arr].sort((a, b) => a - b);\n}", "status": "accepted", "queueId": "q002", "feedback": "Отлично! Ваше решение корректно создаёт копию массива и сортирует её. Сложность O(n log n) соответствует требованиям.", "submittedAt": "2024-11-01T15:45:00.000Z", "checkedAt": "2024-11-01T15:45:02.800Z", "attemptNumber": 2 }, { "_id": "sub003", "id": "sub003", "user": { "_id": "user002", "id": "user002", "nickname": "maria_dev", "createdAt": "2024-10-16T10:15:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439013", "id": "507f1f77bcf86cd799439013", "title": "Компонент React формы", "description": "# Задание: Форма регистрации", "createdAt": "2024-11-03T09:15:00.000Z", "updatedAt": "2024-11-03T09:15:00.000Z" }, "result": "import React, { useState } from 'react';\n\nfunction RegistrationForm() {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [errors, setErrors] = useState({});\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const newErrors = {};\n if (!email.includes('@')) newErrors.email = 'Invalid email';\n if (password.length < 6) newErrors.password = 'Too short';\n if (password !== confirmPassword) newErrors.confirmPassword = 'Passwords do not match';\n \n if (Object.keys(newErrors).length === 0) {\n console.log('Form submitted');\n } else {\n setErrors(newErrors);\n }\n };\n\n return (\n
\n setEmail(e.target.value)} />\n {errors.email && {errors.email}}\n setPassword(e.target.value)} />\n {errors.password && {errors.password}}\n setConfirmPassword(e.target.value)} />\n {errors.confirmPassword && {errors.confirmPassword}}\n \n
\n );\n}", "status": "accepted", "queueId": "q003", "feedback": "Превосходно! Использованы controlled components, есть валидация, обработка ошибок и правильное управление state. Всё соответствует требованиям.", "submittedAt": "2024-11-03T16:20:00.000Z", "checkedAt": "2024-11-03T16:20:04.200Z", "attemptNumber": 1 }, { "_id": "sub004", "id": "sub004", "user": { "_id": "user003", "id": "user003", "nickname": "ivan_coder", "createdAt": "2024-10-17T14:20:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439012", "id": "507f1f77bcf86cd799439012", "title": "Создать REST API endpoint", "description": "# Задание: REST API для пользователей", "createdAt": "2024-11-02T12:30:00.000Z", "updatedAt": "2024-11-02T12:30:00.000Z" }, "result": "app.get('/api/users', async (req, res) => {\n const users = await User.find();\n res.json({ users });\n});", "status": "needs_revision", "queueId": "q004", "feedback": "В решении отсутствует пагинация, обработка ошибок и валидация параметров. Необходимо добавить параметры page и limit, обернуть код в try-catch и валидировать входные данные.", "submittedAt": "2024-11-02T17:00:00.000Z", "checkedAt": "2024-11-02T17:00:03.100Z", "attemptNumber": 1 }, { "_id": "sub005", "id": "sub005", "user": { "_id": "user004", "id": "user004", "nickname": "olga_js", "createdAt": "2024-10-18T09:00:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439015", "id": "507f1f77bcf86cd799439015", "title": "Валидация формы", "description": "# Задание: Валидация email", "createdAt": "2024-11-05T11:00:00.000Z", "updatedAt": "2024-11-05T11:00:00.000Z" }, "result": "function validateEmail(email) {\n if (!email || email.trim() === '') return false;\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}", "status": "accepted", "queueId": "q005", "feedback": "Отлично! Функция обрабатывает все edge cases: пустая строка, отсутствие @, отсутствие домена. Regex валидация корректная.", "submittedAt": "2024-11-05T14:10:00.000Z", "checkedAt": "2024-11-05T14:10:02.500Z", "attemptNumber": 1 }, { "_id": "sub006", "id": "sub006", "user": { "_id": "user005", "id": "user005", "nickname": "dmitry_react", "createdAt": "2024-10-20T11:45:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439011", "id": "507f1f77bcf86cd799439011", "title": "Реализовать сортировку массива", "description": "# Задание: Сортировка массива", "createdAt": "2024-11-01T10:00:00.000Z", "updatedAt": "2024-11-01T10:00:00.000Z" }, "result": "function sortArray(arr) {\n const result = [];\n for (let i = 0; i < arr.length; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n if (arr[i] > arr[j]) {\n [arr[i], arr[j]] = [arr[j], arr[i]];\n }\n }\n result.push(arr[i]);\n }\n return result;\n}", "status": "needs_revision", "queueId": "q006", "feedback": "Ваше решение использует bubble sort с сложностью O(n²), что не соответствует требованиям. Необходимо использовать алгоритм с сложностью O(n log n), например, встроенный метод sort().", "submittedAt": "2024-11-01T18:30:00.000Z", "checkedAt": "2024-11-01T18:30:03.900Z", "attemptNumber": 1 }, { "_id": "sub007", "id": "sub007", "user": { "_id": "user006", "id": "user006", "nickname": "anna_frontend", "createdAt": "2024-10-22T16:30:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439014", "id": "507f1f77bcf86cd799439014", "title": "SQL запрос с JOIN", "description": "# Задание: SQL запрос", "createdAt": "2024-11-04T14:20:00.000Z", "updatedAt": "2024-11-04T14:20:00.000Z" }, "result": "SELECT users.name, users.email, orders.id as order_id, orders.created_at,\n products.name as product_name, products.price, order_items.quantity\nFROM users\nINNER JOIN orders ON users.id = orders.user_id\nINNER JOIN order_items ON orders.id = order_items.order_id\nINNER JOIN products ON order_items.product_id = products.id\nWHERE orders.status = 'active'\nORDER BY orders.created_at DESC;", "status": "accepted", "queueId": "q007", "feedback": "Отличный запрос! Использованы правильные JOIN'ы, добавлена фильтрация по активным заказам и сортировка по дате. Всё соответствует требованиям.", "submittedAt": "2024-11-04T20:15:00.000Z", "checkedAt": "2024-11-04T20:15:02.700Z", "attemptNumber": 1 }, { "_id": "sub008", "id": "sub008", "user": { "_id": "user007", "id": "user007", "nickname": "sergey_backend", "createdAt": "2024-10-25T13:00:00.000Z" }, "task": { "_id": "507f1f77bcf86cd799439012", "id": "507f1f77bcf86cd799439012", "title": "Создать REST API endpoint", "description": "# Задание: REST API для пользователей", "createdAt": "2024-11-02T12:30:00.000Z", "updatedAt": "2024-11-02T12:30:00.000Z" }, "result": "app.get('/api/users', async (req, res) => {\n try {\n const page = parseInt(req.query.page) || 1;\n const limit = parseInt(req.query.limit) || 10;\n \n if (page < 1 || limit < 1 || limit > 100) {\n return res.status(400).json({ error: 'Invalid pagination parameters' });\n }\n \n const skip = (page - 1) * limit;\n const users = await User.find().skip(skip).limit(limit);\n const total = await User.countDocuments();\n \n res.json({\n users,\n total,\n page,\n limit\n });\n } catch (error) {\n res.status(500).json({ error: 'Internal server error' });\n }\n});", "status": "accepted", "queueId": "q008", "feedback": "Превосходная работа! Есть пагинация, валидация параметров, обработка ошибок. Код чистый и следует best practices.", "submittedAt": "2024-11-02T21:30:00.000Z", "checkedAt": "2024-11-02T21:30:04.100Z", "attemptNumber": 1 } ]