8.1 KiB
8.1 KiB
План доработок конструктора курса
📊 Текущее состояние
✅ Реализовано:
- Форма создания курса (название, описание, уровень)
- Vditor редактор с русской локализацией и поддержкой KaTeX
- Структура модулей (добавление, редактирование, удаление)
- Автосохранение в localStorage
- Загрузка файлов на бэкенд
- Рендеринг markdown на сервере
❌ Не реализовано:
- Создание/сохранение курсов через API (publishCourse — демо)
- Загрузка существующего курса для редактирования
- Синхронизация модулей с БД (только localStorage)
- API для создания модулей, уроков, шагов
- Валидация контента перед публикацией
- Управление черновиками (несколько курсов)
- Восстановление черновиков
🎯 ЭТАП 1: Базовый функционал создания курсов (ПРИОРИТЕТ)
Задачи:
1.1 API для создания курса
POST /api/course-builder/create
- title, description, level, content (markdown)
- response: Course с id
| Backend | Схема | Priority |
|---|---|---|
Создать endpoint в routes/course_builder.py |
CourseCreateRequest schema |
P0 |
Реализовать CRUD операции в crud.py |
create_course_with_content() |
P0 |
- Связать с автором (current_user.id)
1.2 Фронтенд: Реализовать publishCourse
- Заменить демо на API вызов
- Сохранение структуры модулей
- Очистка формы после успеха
| Компонент | Функция | Priority |
|---|---|---|
courseBuilder.js, publishCourse() |
API вызов на /api/course-builder/create |
P0 |
| Отправка structure.modules | P0 |
- Обработка ошибок (ошибки валидации)
1.3 API для сохранения черновика
POST /api/course-builder/save-draft
- content (markdown)
- structure (modules, lessons, steps)
- duration
- response: { draft_id, saved_at }
| Endpoint | CRUD | Priority |
|---|---|---|
Добавить в course_builder.py |
save_draft() |
P1 |
- Связать с current_user
1.4 API для загрузки черновика
GET /api/course-builder/drafts
GET /api/course-builder/drafts/{draft_id}
🔗 ЭТАП 2: Управление структурой курса
Задачи:
2.1 API для создания модулей
POST /api/course-builder/modules
- course_id, title, description, duration, order_index
- response: Module
2.2 API для создания уроков
POST /api/course-builder/lessons
- module_id, title, description, order_index
- response: Lesson
2.3 API для создания шагов
POST /api/course-builder/steps
- lesson_id, step_type, title, content, order_index
- response: Step
2.4 Frontend: Синхронизация с БД
- Сохранять module/lesson после создания
- Обновлять courseStructure при редактировании
- Удалять из БД при удалении модуля
📋 ЭТАП 3: Редактирование существующих курсов
Задачи:
3.1 API для загрузки курса для редактирования
GET /api/course-builder/courses/{course_id}/edit
- return: { title, description, level, content, structure }
3.2 Frontend: Загрузка существующего курса
- Добавить параметр ?course_id=123 в route
- Запрос данных при входе
- Заполнять форму и редактор
- Отображать структуру
3.3 API для обновления курса
PUT /api/course-builder/courses/{course_id}
- обновление: title, description, level, content
- response: Course
3.4 API для обновления модулей/уроков
PUT /api/course-builder/modules/{module_id}
PUT /api/course-builder/lessons/{lesson_id}
PUT /api/course-builder/steps/{step_id}
DELETE /api/{modules|lessons|steps}/{id}
🔍 ЭТАП 4: Валидация и безопасность
Задачи:
4.1 Валидация на бэкенде
- Схемы Pydantic для всех API запросов
- Проверка обязательных полей
- Ограничение длины полей
- Валидация содержимого markdown (размер)
4.2 Проверки доступа
- Проверка авторства курса при редактировании
- Доступ только к своим的课程
- Проверка авторизации при всех операциях
4.3 Rate limiting
- Ограничение количества создаваемых курсов
- Ограничение размера загружаемых файлов
- Ограничение количества модулей/уроков
💾 ЭТАП 5: Улучшения UX
Задачи:
5.1 Управление черновиками
DELETE /api/course-builder/drafts/{id}
GET /api/course-builder/drafts (с пагинацией)
- Фронтенд: список черновиков
5.2 Автосохранение с индикацией
- Индикатор сохранения (last saved at...)
- Лайв preview контента
- Быстрая вставка модулей (drag & drop)
5.3 Медиа библиотека
- Список загруженных файлов
- Вставка в редактор по клику
- Управление файлами (удаление)
🚀 ЭТАП 6: Продвинутые функции (опционально)
Задачи:
6.1 Клонирование курсов
POST /api/course-builder/courses/{id}/clone
- Создает копию курса
6.2 Импорт/экспорт
- Экспорт курса в JSON/ZIP
- Импорт курса из файла
6.3 Коллаборация (будущее)
- Совместная редактирование
- История изменений
- Версионирование контента
📝 Рекомендуемый порядок реализации
| Этап | Приоритет | Сложность | Ожидаемое время |
|---|---|---|---|
| Этап 1.1 | P0 | Низкая | 2-3 часа |
| Этап 1.2 | P0 | Средняя | 2-3 часа |
| Этап 1.3 | P1 | Низкая | 1-2 часа |
| Этап 1.4 | P1 | Низкая | 1 час |
| Этап 2 | P1 | Средняя | 3-4 часа |
| Этап 3 | P2 | Средняя | 4-5 часов |
| Этап 4 | P2 | Средняя | 2-3 часа |
| Этап 5 | P3 | Средняя | 4-5 часов |
| Этап 6 | P4 | Высокая | TBD |
❓ Вопросы для уточнения
-
С приоритетом хотите начать?
- С минимального функционала (быстро, базовое)
- С полного функционала (медленно, полноценно)
-
Нужно ли:
- Версионирование редакций курса?
- Автосохранение с откатом?
- Публикация без модерации?
Соблюдение одного этапа за один раз или сразу запускать полную разработку?