SimpleDemo - Платформа для создания интерактивных демонстраций

Обзор

SimpleDemo — это веб-приложение на базе Django, которое позволяет пользователям создавать интерактивные демонстрации продуктов и пошаговые руководства (обучающие материалы). Платформа дает возможность пользователям записывать свои действия на экране с помощью расширения для браузера, которые затем автоматически обрабатываются в пошаговые интерактивные демонстрации с кликабельными горячими точками и видеосегментами.

Бизнес-функциональность

Основные возможности

1. Создание и воспроизведение интерактивных демонстраций

2. Управление пользователями и аутентификация

3. Управление организациями

4. Система подписки и оплаты

5. Интеграция с расширением для браузера

6. Конвейер обработки демонстраций

7. Дополнительные возможности

Архитектура кода

Стек технологий

Структура проекта

SimpleDemo/
├── Demo/                    # Основная конфигурация проекта
│   ├── settings.py         # Настройки Django, промежуточное ПО, логирование
│   ├── urls.py             # Корневая конфигурация URL
│   ├── wsgi.py / asgi.py   # WSGI/ASGI приложение
│
├── demo_app/               # Основная функциональность демонстраций
│   ├── models.py           # Demo, Screenshot, VideoSegment, Hotspot, Step
│   ├── views.py            # Рендеринг демонстраций, редактирование, представления кабинета
│   ├── urls.py             # Маршруты, связанные с демонстрациями
│   ├── management/
│   │   └── commands/
│   │       └── process_demo.py  # Команда обработки видео
│   └── templates/          # Шаблоны отображения демонстраций
│
├── users/                  # Управление пользователями и организациями
│   ├── models.py           # Organization, TariffModel, PaymentHistory, FeedbackComments
│   ├── views.py            # Аутентификация, управление организациями, представления платежей
│   ├── urls.py             # Маршруты, связанные с пользователями
│   ├── forms.py            # Формы пользователей/организаций
│   ├── helpers.py          # Вспомогательные функции для платежей
│   └── decorators.py       # Пользовательские декораторы (доступ на основе ролей)
│
├── extension/              # Бэкенд расширения для браузера
│   ├── views.py            # Обработчик загрузки файлов
│   ├── tasks.py            # Задача Celery для обработки демонстраций
│   └── urls.py             # Маршруты API расширения
│
├── static/                 # Статические файлы (CSS, JS, изображения)
├── Documents/              # Медиафайлы, логи, загрузки
├── docker-compose.yml      # Оркестрация контейнеров
├── Dockerfile              # Контейнер приложения
├── requirements.txt        # Зависимости Python
└── manage.py               # Скрипт управления Django

Модели базы данных

Модели demo_app

Demo

Screenshot

VideoSegment

Hotspot

Step

Модели users

Organization

TariffModel

PaymentHistory

FeedbackComments

Ключевые архитектурные компоненты

1. Поток запросов

Браузер пользователя → Nginx (HTTPS) → Приложение Django 
                                      ↓
                                 Статические файлы / Медиа

2. Поток обработки демонстраций

Расширение браузера → Загрузка (video.webm + interactions.json)
                     ↓
                Задача Celery (асинхронно)
                     ↓
           Конвертация FFmpeg (WebM→MP4)
                     ↓
        Обработка MoviePy (извлечение кадров, сегментация)
                     ↓
      Записи в базе данных (Demo, Screenshots, Segments, Steps)

3. Сервисы Docker

4. Аутентификация и авторизация

5. Архитектура логирования

6. Обработка видео

FFmpeg для преобразования формата с оптимизированными настройками:

MoviePy для:

Вопросы безопасности

Функции масштабируемости

Разработка и развертывание

Ключевые команды управления

# Обработать демонстрацию вручную
python manage.py process_demo <folder_name> <user_id>

Эта архитектура поддерживает масштабируемую, поддерживаемую платформу для создания и предоставления интерактивных демонстраций продуктов с функциями корпоративного уровня, включая мультиарендность, обработку платежей и комплексный мониторинг.