SimpleDemo — это веб-приложение на базе Django, которое позволяет пользователям создавать интерактивные демонстрации продуктов и пошаговые руководства (обучающие материалы). Платформа дает возможность пользователям записывать свои действия на экране с помощью расширения для браузера, которые затем автоматически обрабатываются в пошаговые интерактивные демонстрации с кликабельными горячими точками и видеосегментами.
org_admin - Администратор организации.data_contributor - Создатель контента.viewer - Доступ только для чтения.dashboard_creator - Создатель демонстраций.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
user (FK к User) - Владелец демонстрацииtitle - Название демонстрацииvideo - Оригинальный видеофайлactions_file - JSON-файл с пользовательскими взаимодействиямиcreated_at - Временная меткаScreenshot
image - Файл изображения скриншотаtime - Временная метка в видеоdescription - Дополнительное описаниеVideoSegment
video - Файл видеосегментаstart_time / end_time - Границы сегментаHotspot
x / y - Координатыdescription - Метка горячей точкиStep
demo (FK) - Родительская демонстрацияorder - Последовательный порядокstep_type - 'screenshot' или 'video'screenshot / video_segment / hotspot - Связанные объектыusers Organization
org - Название организацииcorporate_email - Домен электронной почтыuser (FK) - Владелец организацииpayment - Статус оплатыTariffModel
duration - Период подпискиuser_count - Уровень пользователейprice_per_user - Цена за пользователяPaymentHistory
user (FK) - Платящий пользовательpayment_id - Внешняя ссылка на платежFeedbackComments
email / company / comment - Детали обратной связиcomment_date - Временная метка отправкиБраузер пользователя → Nginx (HTTPS) → Приложение Django
↓
Статические файлы / Медиа
Расширение браузера → Загрузка (video.webm + interactions.json)
↓
Задача Celery (асинхронно)
↓
Конвертация FFmpeg (WebM→MP4)
↓
Обработка MoviePy (извлечение кадров, сегментация)
↓
Записи в базе данных (Demo, Screenshots, Segments, Steps)
@allowed_users, @organization_payment_required).FFmpeg для преобразования формата с оптимизированными настройками:
MoviePy для:
# Обработать демонстрацию вручную
python manage.py process_demo <folder_name> <user_id>
Эта архитектура поддерживает масштабируемую, поддерживаемую платформу для создания и предоставления интерактивных демонстраций продуктов с функциями корпоративного уровня, включая мультиарендность, обработку платежей и комплексный мониторинг.