challenge-admin-pl/stubs/api/data/submissions.json
Primakov Alexandr Alexandrovich e777b57991 init + api use
2025-11-03 17:59:08 +03:00

204 lines
11 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[
{
"_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 <form onSubmit={handleSubmit}>\n <input value={email} onChange={e => setEmail(e.target.value)} />\n {errors.email && <span>{errors.email}</span>}\n <input type=\"password\" value={password} onChange={e => setPassword(e.target.value)} />\n {errors.password && <span>{errors.password}</span>}\n <input type=\"password\" value={confirmPassword} onChange={e => setConfirmPassword(e.target.value)} />\n {errors.confirmPassword && <span>{errors.confirmPassword}</span>}\n <button type=\"submit\">Register</button>\n </form>\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
}
]