Инструмент для автоматической выгрузки дашбордов и датасетов из Visiology через API с сохранением в JSON-файлы. Предоставляет четыре интерфейса: CLI, TUI (whiptail), веб-панель (Flask) и REST API.
- Экспорт дашбордов — выгрузка всех дашбордов из всех рабочих областей через dashboard-service API
- Экспорт датасетов — выгрузка всех датасетов через formula-engine API
- Авторизация — Keycloak password grant с поддержкой refresh токена
- Три интерфейса:
- CLI (python3 export_all.py)
- TUI (bash run.sh, whiptail)
- Веб-панель (Flask, http://localhost:5000)
- Docker — готовый Dockerfile + docker-compose
- Прогресс-бар — отображение прогресса экспорта в реальном времени (SSE)
- Расписание — автоматическая выгрузка по cron-выражению
- Архивация — автоматическое удаление старых выгрузок (MAX_ARCHIVE_COPIES, по умолчанию 30)
- Папки с таймстемпом — каждая выгрузка сохраняется в
YYYY-MM-DD_HH-MM-SS, поддержка множественных экспортов в день - Безопасность — поддержка самоподписанных сертификатов (VISIOLOGY_VERIFY_SSL=false)
visiology_dump/
├── .env # конфигурация (логин, пароль, базовый путь)
├── .gitignore
├── auth.py # аутентификация через Keycloak
├── dashboard_exporter/ # выгрузка дашбордов (dashboard-service)
│ ├── __init__.py
│ ├── client.py # API клиент
│ └── cli.py # CLI
├── dataset_exporter/ # выгрузка датасетов (formula-engine)
│ ├── __init__.py
│ ├── client.py # API клиент
│ └── cli.py # CLI
├── export_all.py # массовая выгрузка (--type all/dashboards/datasets)
├── export_all_dashboards.py # быстрый запуск: только дашборды
├── export_all_datasets.py # быстрый запуск: только датасеты
├── run.sh # TUI-скрипт (whiptail)
├── webapp/ # Flask веб-интерфейс
│ ├── __init__.py
│ ├── __main__.py # точка входа
│ ├── app.py # Flask приложение (API + SSE + планировщик)
│ └── templates/
│ └── index.html # HTML-шаблон
├── Dockerfile # сборка Docker-образа
├── docker-compose.yml # запуск Docker
├── dashboards/ # выгруженные дашборды (игнорируется git)
│ └── YYYY-MM-DD_HH-MM-SS/
│ └── Workspace__id/
│ └── Dashboard Name.json
├── datasets/ # выгруженные датасеты (игнорируется git)
│ └── YYYY-MM-DD_HH-MM-SS/
│ └── Workspace__id/
│ └── Dataset Name.json
└── README.md
git clone https://github.com/rufoss/visiology_dump.git
cd visiology_dump
# Установка зависимостей
pip install requests python-dotenv croniter
# Настройка
cp .env.example .env
# отредактировать .env
# Запуск
python3 export_all.pydocker compose up -d
# Открыть http://localhost:5000VISIOLOGY_BASE_URL=https://visiology.udigit.ru
VISIOLOGY_USERNAME=логин
VISIOLOGY_PASSWORD=пароль
VISIOLOGY_CLIENT_ID=visiology_designer
VISIOLOGY_SCOPE=openid profile email data_management_service forms_service ai_agent_service formula_engine dashboard_service edge_service groups workspace_service
VISIOLOGY_VERIFY_SSL=false
DUMP_BASE_PATH=/home/Visiology_dump
CRON_SCHEDULE=0 2 * * *
MAX_ARCHIVE_COPIES=30# Массовая выгрузка
python3 export_all.py
# Выборочно
python3 export_all.py --type dashboards
python3 export_all.py --type datasets
# С параметрами
python3 export_all.py --verbose --delay 0.5 --insecure
# Быстрые скрипты
python3 export_all_dashboards.py
python3 export_all_datasets.pybash run.shИнтерактивное меню с выбором действия и настройками.
# Локально
python3 -m webapp
# Docker
docker compose up -d
# http://localhost:5000Порт можно изменить: WEB_PORT=8080 docker compose up -d
| Вкладка | Описание |
|---|---|
| Экспорт | Кнопки Export All / Dashboards / Datasets, прогресс-бар, лог в реальном времени (SSE) |
| Расписание | Настройка cron-выражения для автоматической выгрузки, статус и время следующего запуска |
| Настройки | Редактирование .env: URL, логин/пароль, scope, SSL, путь сохранения, MAX_ARCHIVE_COPIES |
| Выгрузки | Просмотр сохранённых дашбордов и датасетов по датам, раскрытие деталей, удаление |
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/env |
Получить настройки |
| POST | /api/env |
Сохранить настройки |
| POST | /api/export/{all,dashboards,datasets} |
Запустить экспорт |
| GET | /api/export/stream/{job_id} |
SSE-поток (лог + прогресс) |
| GET | /api/schedule |
Статус расписания |
| POST | /api/schedule |
Установить/отключить cron |
| GET | /api/dumps |
Список выгрузок |
| GET | /api/dumps/{type}/{date} |
Детали выгрузки |
| DELETE | /api/dumps/{type}/{date} |
Удалить выгрузку |
python3 -m dashboard_exporter.cli list-workspaces
python3 -m dashboard_exporter.cli list-dashboards <workspace_id>
python3 -m dashboard_exporter.cli download-all
python3 -m dataset_exporter.cli list-datasets <workspace_id>
python3 -m dataset_exporter.cli download-allФайлы сохраняются в:
{DUMP_BASE_PATH}/dashboards/YYYY-MM-DD_HH-MM-SS/Workspace__id/Dashboard Name.json
{DUMP_BASE_PATH}/datasets/YYYY-MM-DD_HH-MM-SS/Workspace__id/Dataset Name.json
Пример:
/home/Visiology_dump/dashboards/2026-07-13_13-02-33/05. Финансовая служба__ca87efd6/Холдинг Сводные данные по ДДС.json
/home/Visiology_dump/datasets/2026-07-13_13-03-31/05. Финансовая служба__ca87efd6/План_факт_Финансы_Холдинг.json
Автоматическая выгрузка настраивается через веб-интерфейс (вкладка Расписание) или через .env:
CRON_SCHEDULE=0 2 * * *Формат: минута час день месяц день_недели
Примеры:
0 2 * * *— ежедневно в 2:000 */2 * * *— каждые 2 часа30 6 * * 1-5— будни в 6:30
Параметр MAX_ARCHIVE_COPIES (по умолчанию 30) контролирует максимальное количество хранимых выгрузок. Старые выгрузки автоматически удаляются после каждого экспорта. Работает отдельно для дашбордов и датасетов.
- Python 3.10+
- requests, python-dotenv, croniter (для планировщика)
- Docker (опционально)
- whiptail (для TUI, обычно предустановлен)