Старт

This commit is contained in:
2026-03-13 14:39:43 +08:00
commit a2cc480644
88 changed files with 18526 additions and 0 deletions

254
plan130226.md Normal file
View File

@@ -0,0 +1,254 @@
# План доработок конструктора курса
---
## 📊 Текущее состояние
### ✅ Реализовано:
- Форма создания курса (название, описание, уровень)
- 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 |
---
## ❓ Вопросы для уточнения
1. **С приоритетом хотите начать?**
- С минимального функционала (быстро, базовое)
- С полного функционала (медленно, полноценно)
2. **Нужно ли:**
- Версионирование редакций курса?
- Автосохранение с откатом?
- Публикация без модерации?
Соблюдение одного этапа за один раз или сразу запускать полную разработку?