SimpleBoard — это многопользовательская SaaS-платформа корпоративного уровня для бизнес-аналитики и визуализации данных. Она позволяет организациям подключать несколько источников данных, создавать интерактивные дашборды, выполнять статистический анализ и обмениваться аналитическими данными между командами. Платформа поддерживает веб- и мобильные интерфейсы с надежным управлением пользователями, иерархиями организаций и интегрированными возможностями биллинга.
┌─────────────────────────────────────────────────────────────┐
│ Клиентский уровень │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Веб-браузер │ │ Приложение │ │ Приложение │ │
│ └──────────────┘ │ iOS │ │ Android │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Nginx (Обратный прокси) │
│ Завершение SSL/TLS │
└─────────────────────────────────────────────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ Приложение Django │ │ Микросервис Go │
│ (Uvicorn/ASGI) │ │ (Модуль высокой │
│ │ │ нагрузки) │
│ - Веб-интерфейс │ │ │
│ - REST API │ │ - API данных │
│ - Бизнес-логика │ │ диаграмм │
└─────────────────────┘ │ - API данных │
│ │ таблиц │
▼ │ - Высокая │
┌─────────────────────┐ │ производительность│
│ PostgreSQL │ └─────────────────────┘
│ (Основная БД) │ │
│ │ ▼
│ - Метаданные │ ┌─────────────────────┐
│ - Пользователи/Орг.│ │ PostgreSQL │
│ - Дашборды │ │ (Вторичная БД) │
└─────────────────────┘ │ │
│ │ - Аналитические │
▼ │ данные │
┌─────────────────────────────────────────────┐ │ - Большие наборы │
│ Инфраструктура очереди задач │ │ данных │
│ ┌──────────────┐ ┌──────────────┐ │ │ - Результаты │
│ │ Redis │◄─────┤ Celery │ │ │ анализа │
│ │ (Брокер) │ │ Воркеры │ │ └─────────────────────┘
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Мониторинг и наблюдаемость │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Prometheus│ │ Promtail │ │ Node │ │
│ │ │ │ │ │ Exporter │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────┘
Запрос пользователя → Nginx → Представление Django → Запрос к базе данных → Рендеринг шаблона → HTML-ответ
↓
(При высокой нагрузке)
↓
Микросервис Go → Вторичная БД → JSON-ответ
Загрузка файла → Представление Django → Очередь задач Celery → Обработка воркером
↓
Парсинг данных (Pandas)
↓
Хранение во вторичной БД
↓
Обновление метаданных (основная БД)
↓
Уведомление пользователя
После загрузки данных → Задача Celery → Обработка Pandas/Scikit-learn
↓
Статистические вычисления
↓
Хранение результатов (вторичная БД)
↓
Обновление элемента дашборда
| Компонент | Технология | Версия | Назначение |
|---|---|---|---|
| Веб-фреймворк | Django | 5.0.2 | Основной фреймворк приложения |
| API-фреймворк | Django REST Framework | 3.15.2 | REST API для мобильных устройств |
| Сервер приложений | Uvicorn | - | ASGI-сервер для Django |
| Очередь задач | Celery | 5.4.0 | Асинхронная обработка заданий |
| Брокер сообщений | Redis | 5.0.7 | Бэкенд Celery |
| База данных | PostgreSQL | 16 | Основная и вторичная базы данных |
| Микросервис | Go | 1.23 | Высокопроизводительные запросы данных |
| Обратный прокси | Nginx | - | SSL, маршрутизация, статические файлы |
| Библиотека | Назначение |
|---|---|
| Pandas | Манипуляции и анализ данных |
| Scikit-learn | Машинное обучение (регрессия, PCA) |
| SciPy | Статистические функции |
| NumPy | Численные вычисления |
| OpenPyXL | Обработка файлов Excel |
| BeautifulSoup4 | Парсинг HTML для веб-скрейпинга |
| Инструмент | Назначение |
|---|---|
| Docker | Контейнеризация |
| Docker Compose | Оркестрация нескольких контейнеров |
| Prometheus | Сбор метрик |
| Promtail | Агрегация логов |
| Node Exporter | Системные метрики |
| django-prometheus | Инструментарий метрик Django |
| Сервис | Назначение |
|---|---|
| Firebase Cloud Messaging | Push-уведомления |
| ЮKassa | Обработка платежей |
| qrcode | Генерация QR-кодов |
SimpleBoard/
│
├── Board/ # Конфигурация проекта Django
│ ├── settings.py # Основные настройки (базы данных, приложения, промежуточное ПО)
│ ├── urls.py # Корневая маршрутизация URL
│ ├── asgi.py # Точка входа ASGI-приложения
│ ├── wsgi.py # Точка входа WSGI-приложения
│ └── celery.py # Конфигурация Celery
│
├── dashboard_app/ # Основное приложение дашбордов
│ ├── models.py # Модели данных (Dashboard, DataSet, DashboardItem)
│ ├── views.py # Контроллеры представлений
│ ├── urls.py # Маршрутизация URL
│ ├── forms.py # Определения форм
│ ├── serializers.py # Сериализаторы REST API
│ ├── tasks.py # Асинхронные задачи Celery
│ ├── helpers.py # Утилиты для обработки данных
│ ├── decorators.py # Пользовательские декораторы аутентификации
│ ├── templates/main/ # HTML-шаблоны Django
│ ├── static/ # CSS, JavaScript, изображения
│ └── migrations/ # Миграции базы данных
│
├── users/ # Управление пользователями и организациями
│ ├── models.py # Модели Organization, Tariff, Payment
│ ├── views.py # Аутентификация, биллинг, управление пользователями
│ ├── urls.py # Маршрутизация, связанная с пользователями
│ ├── forms.py # Формы пользователей
│ ├── serializers.py # Сериализация пользовательских данных
│ └── migrations/ # Миграции базы данных
│
├── swift/ # Мобильный API
│ ├── views.py # REST-конечные точки для iOS/Android
│ ├── models.py # Регистрация устройств, уведомления
│ ├── urls.py # Маршрутизация мобильного API
│ ├── helpers.py # Утилиты для мобильных устройств
│ └── migrations/ # Миграции базы данных
│
├── highload/ # Микросервис Go
│ ├── main.go # Точка входа
│ ├── handlers/ # Обработчики HTTP-запросов
│ │ ├── chart_data.go # Конечные точки данных диаграмм
│ │ └── table_data.go # Конечные точки данных таблиц
│ ├── helpers/ # Вспомогательные функции для запросов к базе данных
│ └── Dockerfile # Контейнеризация сервиса Go
│
├── Documents/ # Хранилище загруженных пользователем файлов
│
├── certificates/ # SSL/TLS сертификаты
│ ├── simpleboard.crt
│ └── simpleboard.key
│
├── conf/ # Конфигурация Nginx
│ └── nginx.conf
│
├── docker-compose.yml # Оркестрация нескольких контейнеров (8 сервисов)
├── Dockerfile # Контейнер приложения Django
├── manage.py # CLI для управления Django
├── requirements.txt # Зависимости Python
├── promtail-config.yml # Конфигурация агрегации логов
└── .github/workflows/ # CI/CD конвейеры
Основные модели:
DataSet: Представляет подключенные источники данных (файлы, базы данных, API)Dashboard: Контейнер для элементов дашборда с конфигурацией макетаDashboardItem: Отдельные диаграммы/виджеты с настройками визуализацииDashboardHeader: Заголовки разделов для организации дашбордаPublicDashboard: Конфигурация публичного доступа с токенами/паролямиConnectionTypes.*Properties: Конфигурации подключений (PostgreSQL, API, WebLink, 1C)Основные представления (dashboard_app/views.py - 65 маршрутов):
/upload-page/, /upload-page-postgres/, /upload-page-api/: Пользовательский интерфейс подключения к источнику данных/dashboard/<id>: Просмотр и рендеринг дашборда/create-dashboard/: Создание дашборда/create-dashboard-item/<id>: Добавление визуализации на дашборд/public-dashboard/<token>: Публичный доступ к дашборду/dashboard-qr/<id>: Генерация QR-кодаАсинхронные задачи (dashboard_app/tasks.py):
process_dataset_file_upload_task: Асинхронная обработка файловrun_data_analysis: Выполнение статистического анализаsend_demo_request_email_task: Уведомления по электронной почтеupdate_airflow_01: Синхронизация конвейера данныхsave_foreign_postgres_table: Синхронизация таблиц PostgreSQLОсновные модели:
Organization: Сущность многопользовательской организацииDemo: Отслеживание запросов на демонстрациюTariffModel: Определения тарифных плановPaymentHistory: Платежные транзакцииDashboardComments: Обсуждения на уровне дашбордаDashboardItemComments: Комментарии на уровне диаграмм/виджетовFeedbackComments: Отзывы пользователейКонечные точки мобильного API:
Конечные точки микросервиса Go:
/get-chart-data/: Высокопроизводительный запрос данных диаграмм/get-table-data/: Оптимизированный запрос данных таблицСервисы:
web - Приложение Django (Uvicorn ASGI)db - Основная база данных PostgreSQLdb_secondary - Аналитическая база данных PostgreSQLredis - Брокер сообщений для Celerycelery - Процессы воркеров Celerynginx - Обратный прокси и завершение SSLprometheus - Сбор метрикpromtail - Пересылка логовnode-exporter - Системные метрикиhighload - Микросервис Goselect_related и prefetch_related для предотвращения проблемы N+1SimpleBoard — это готовая к производству платформа бизнес-аналитики корпоративного уровня, созданная с использованием современных веб-технологий. Она сочетает в себе надежный фреймворк Django с высокопроизводительными микросервисами Go, двумя базами данных PostgreSQL и асинхронной обработкой задач для предоставления масштабируемого многопользовательского SaaS-решения. Платформа поддерживает комплексное подключение к данным, расширенную аналитику и широкие возможности визуализации, обеспечивая при этом безопасность, производительность и операционное превосходство за счет контейнеризации и комплексного мониторинга.