284 lines
10 KiB
Markdown
284 lines
10 KiB
Markdown
# Техническое задание: Веб-приложение «Умный планировщик учёбы»
|
||
|
||
## 1. Общие сведения
|
||
|
||
**Название:** Умный планировщик учёбы (Study Planner)
|
||
|
||
**Целевая аудитория:** школьники (5-11 классы), студенты колледжей и вузов
|
||
|
||
**Основная цель:** помочь учащимся организовывать учебные задания, контролировать сроки и видеть прогресс обучения
|
||
|
||
**Тип приложения:** одностраничное веб-приложение (SPA) с серверным хранением данных
|
||
|
||
---
|
||
|
||
## 2. Функциональные требования
|
||
|
||
### 2.1. Расписание
|
||
|
||
**Назначение:** отображение уроков/пар по дням недели
|
||
|
||
**Функции:**
|
||
- Просмотр расписания на текущую неделю
|
||
- Добавление занятия (предмет, время, день недели, кабинет/ссылка)
|
||
- Редактирование и удаление занятий
|
||
- Цветовая индикация типов предметов (лекции, практики, лабораторные)
|
||
|
||
**Данные занятия:**
|
||
```js
|
||
{
|
||
id: number,
|
||
subject: string, // название предмета
|
||
day: string, // "mon", "tue", "wed", "thu", "fri", "sat", "sun"
|
||
time: string, // "14:00"
|
||
location: string, // кабинет или ссылка
|
||
type: string, // "lesson" | "lecture" | "practice" | "lab"
|
||
color: string // цветовой акцент
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 2.2. Список заданий
|
||
|
||
**Назначение:** управление домашними заданиями и проектными работами
|
||
|
||
**Функции:**
|
||
- Добавление задания с названием, предметом, дедлайном и приоритетом
|
||
- Отметка о выполнении
|
||
- Сортировка по дедлайну и приоритету
|
||
- Фильтрация (все / активные / выполненные / просроченные)
|
||
- Удаление заданий
|
||
|
||
**Данные задания:**
|
||
```js
|
||
{
|
||
id: number,
|
||
title: string, // название задания
|
||
subject: string, // предмет
|
||
dueDate: string, // "2026-08-25"
|
||
priority: string, // "high" | "medium" | "low"
|
||
status: string, // "pending" | "completed" | "overdue"
|
||
description: string, // описание (опционально)
|
||
createdAt: string // дата создания
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 2.3. Календарь
|
||
|
||
**Назначение:** визуальное отображение сроков и событий
|
||
|
||
**Функции:**
|
||
- Просмотр месяца с индикацией дедлайнов
|
||
- Отображение количества заданий на каждый день
|
||
- Быстрый переход к текущему месяцу
|
||
- Цветовые метки по приоритетам
|
||
|
||
---
|
||
|
||
### 2.4. Прогресс
|
||
|
||
**Назначение:** статистика и мотивация пользователя
|
||
|
||
**Метрики:**
|
||
- Всего заданий выполнено
|
||
- Процент выполнения за неделю/месяц
|
||
- Текущая серия (дней подряд с выполненными задачами)
|
||
- Распределение по предметам
|
||
- График активности (7 дней)
|
||
|
||
**Визуализация:**
|
||
- Круговая диаграмма (выполнено / в процессе / просрочено)
|
||
- Столбчатый график по дням недели
|
||
- Список достижений (gamification)
|
||
|
||
---
|
||
|
||
### 2.5. Напоминания
|
||
|
||
**Назначение:** уведомление о приближающихся дедлайнах
|
||
|
||
**Функции:**
|
||
- Автоматический расчёт дедлайнов (за 24 часа, за 2 часа, за 30 минут)
|
||
- Визуальные уведомления в интерфейсе
|
||
- Список предстоящих событий на сегодня
|
||
|
||
**Данные напоминания:**
|
||
```js
|
||
{
|
||
id: number,
|
||
taskId: number, // ссылка на задание
|
||
message: string, // текст напоминания
|
||
time: string, // время напоминания
|
||
isShown: boolean // показано ли уже
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Технические требования
|
||
|
||
### 3.1. Архитектура
|
||
|
||
**Фронтенд:**
|
||
- HTML5 + CSS3 + Vanilla JavaScript (ES6+)
|
||
- Без фреймворков (React/Vue) — для быстродействия
|
||
- Адаптивная вёрстка (mobile-first)
|
||
- LocalStorage для кэширования
|
||
|
||
**Бэкенд:**
|
||
- Node.js (стандартная библиотека `http`)
|
||
- REST-like API для CRUD операций
|
||
- Хранение данных в `data.json`
|
||
|
||
**Структура данных (`data.json`):**
|
||
```json
|
||
{
|
||
"tasks": [],
|
||
"schedule": [],
|
||
"reminders": [],
|
||
"settings": {
|
||
"theme": "light",
|
||
"notifications": true
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.2. API endpoints
|
||
|
||
| Метод | Путь | Описание |
|
||
|-------|------|----------|
|
||
| GET | `/api/tasks` | Получить все задания |
|
||
| POST | `/api/tasks` | Создать задание |
|
||
| PUT | `/api/tasks/:id` | Обновить задание |
|
||
| DELETE | `/api/tasks/:id` | Удалить задание |
|
||
| GET | `/api/schedule` | Получить расписание |
|
||
| POST | `/api/schedule` | Добавить занятие |
|
||
| DELETE | `/api/schedule/:id` | Удалить занятие |
|
||
| GET | `/api/stats` | Получить статистику |
|
||
|
||
---
|
||
|
||
### 3.3. Интерфейс
|
||
|
||
**Структура страниц:**
|
||
|
||
1. **Главная (Dashboard)**
|
||
- Сводка на сегодня
|
||
- Ближайшие дедлайны (3-5 шт.)
|
||
- Быстрое добавление задания
|
||
|
||
2. **Задания (Tasks)**
|
||
- Полный список с фильтрами
|
||
- Форма добавления/редактирования
|
||
- Чекбоксы выполнения
|
||
|
||
3. **Расписание (Schedule)**
|
||
- Недельный вид
|
||
- Карточки занятий по дням
|
||
|
||
4. **Календарь (Calendar)**
|
||
- Месячный вид
|
||
- Индикаторы дедлайнов
|
||
|
||
5. **Прогресс (Progress)**
|
||
- Диаграммы и графики
|
||
- Статистика по предметам
|
||
|
||
---
|
||
|
||
### 3.4. Дизайн-система
|
||
|
||
**Цветовая палитра:**
|
||
```css
|
||
--primary: #4F46E5 /* индиго — основной */
|
||
--success: #10B981 /* зелёный — выполнено */
|
||
--warning: #F59E0B /* жёлтый — среднее */
|
||
--danger: #EF4444 /* красный — срочно/просрочено */
|
||
--background: #F9FAFB /* светлый фон */
|
||
--surface: #FFFFFF /* карточки */
|
||
--text: #111827 /* тёмный текст */
|
||
--text-secondary: #6B7280
|
||
```
|
||
|
||
**Типографика:**
|
||
- Шрифт: `-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif`
|
||
- Заголовки: 32px / 24px / 18px
|
||
- Текст: 16px, line-height 1.5
|
||
|
||
**Компоненты:**
|
||
- Карточки с тенью `box-shadow: 0 1px 3px rgba(0,0,0,0.1)`
|
||
- Кнопки с `border-radius: 8px`
|
||
- Анимации: `transition: all 0.2s ease`
|
||
|
||
---
|
||
|
||
## 4. Требования к безопасности
|
||
|
||
- Валидация всех входящих данных на бэкенде
|
||
- Защита от XSS (экранирование вывода)
|
||
- CORS заголовки для API
|
||
- Нет чувствительных данных (пароли, персональные данные)
|
||
|
||
---
|
||
|
||
## 5. Критерии приёмки
|
||
|
||
### 5.1. Функциональность
|
||
|
||
- [ ] Все 5 блоков работают независимо
|
||
- [ ] Задания сохраняются между сессиями
|
||
- [ ] Расписание отображается корректно
|
||
- [ ] Статистика считается верно
|
||
- [ ] Уведомления появляются вовремя
|
||
|
||
### 5.2. Юзабилити
|
||
|
||
- [ ] Интерфейс понятен без инструкций
|
||
- [ ] Мобильная версия удобна
|
||
- [ ] Добавление задания ≤ 3 кликов
|
||
- [ ] Нет «битых» состояний
|
||
|
||
### 5.3. Производительность
|
||
|
||
- [ ] Первая загрузка < 2 сек
|
||
- [ ] Отклик на действия < 100 мс
|
||
- [ ] Нет утечек памяти
|
||
|
||
---
|
||
|
||
## 6. Этапы разработки
|
||
|
||
| Этап | Срок | Результат |
|
||
|------|------|-----------|
|
||
| 1. Вёрстка главной | 1 день | Dashboard с мок-данными |
|
||
| 2. Бэкенд для задач | 1 день | CRUD заданий + data.json |
|
||
| 3. Расписание | 0.5 дня | Недельный вид |
|
||
| 4. Календарь | 0.5 дня | Месячный вид |
|
||
| 5. Прогресс | 0.5 дня | Графики и статистика |
|
||
| 6. Напоминания | 0.5 дня | Уведомления |
|
||
| 7. Тестирование | 0.5 дня | Фикс багов |
|
||
|
||
**Итого:** ~4-5 дней на полноценную разработку
|
||
|
||
---
|
||
|
||
## 7. Будущие улучшения (не в MVP)
|
||
|
||
- Авторизация и синхронизация между устройствами
|
||
- Экспорт в Google Calendar
|
||
- Совместные проекты (групповые задания)
|
||
- Интеграция с LMS (Moodle, Canvas)
|
||
- Умные рекомендации (когда лучше учиться)
|
||
- Мобильное приложение (PWA)
|
||
|
||
---
|
||
|
||
## 8. Контакты и поддержка
|
||
|
||
Проект учебный, обратная связь через платформу Vibe42.
|