Files
ss-tools/specs/project_map.md

981 lines
57 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Project Semantic Map
> Compressed view for AI Context. Generated automatically.
- 📦 **generate_semantic_map** (`Module`)
- 📝 Scans the codebase to generate a Semantic Map and Compliance Report based on the System Standard.
- 🏗️ Layer: DevOps/Tooling
- **SemanticEntity** (`Class`)
- 📝 Represents a code entity (Module, Function, Component) found during parsing.
- ƒ **to_dict** (`Function`)
- 📝 Serializes the entity to a dictionary for JSON output.
- ƒ **validate** (`Function`)
- 📝 Checks for semantic compliance (closure, mandatory tags).
- ƒ **get_score** (`Function`)
- 📝 Calculates a compliance score (0.0 to 1.0).
- ƒ **get_patterns** (`Function`)
- 📝 Returns regex patterns for a specific language.
- ƒ **parse_file** (`Function`)
- 📝 Parses a single file to extract semantic entities.
- **SemanticMapGenerator** (`Class`)
- 📝 Orchestrates the mapping process.
- ƒ **run** (`Function`)
- 📝 Main execution flow.
- 🔗 CALLS -> `_walk_and_parse`
- 🔗 CALLS -> `_generate_artifacts`
- ƒ **_walk_and_parse** (`Function`)
- 📝 Recursively walks directories and triggers parsing.
- ƒ **_process_file_results** (`Function`)
- 📝 Validates entities and calculates file scores.
- ƒ **_generate_artifacts** (`Function`)
- 📝 Writes output files.
- ƒ **_generate_report** (`Function`)
- 📝 Generates the Markdown compliance report.
- ƒ **_collect_issues** (`Function`)
- 📝 Helper to collect issues for a specific file from the entity tree.
- ƒ **_generate_compressed_map** (`Function`)
- 📝 Generates the token-optimized project map.
- ƒ **_write_entity_md** (`Function`)
- 📝 Recursive helper to write entity tree to Markdown.
- 📦 **search_script** (`Module`)
- 📝 Предоставляет утилиты для поиска по текстовым паттернам в метаданных датасетов Superset.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- ƒ **search_datasets** (`Function`)
- 📝 Выполняет поиск по строковому паттерну в метаданных всех датасетов.
- 🔗 CALLS -> `client.get_datasets`
- ƒ **save_results_to_file** (`Function`)
- 📝 Сохраняет результаты поиска в текстовый файл.
- ƒ **print_search_results** (`Function`)
- 📝 Форматирует результаты поиска для читаемого вывода в консоль.
- ƒ **main** (`Function`)
- 📝 Основная точка входа для запуска скрипта поиска.
- 🔗 CALLS -> `setup_clients`
- 🔗 CALLS -> `search_datasets`
- 🔗 CALLS -> `print_search_results`
- 🔗 CALLS -> `save_results_to_file`
- 📦 **get_dataset_structure** (`Module`)
- 📝 Этот модуль предназначен для получения и сохранения структуры данных датасета из Superset. Он используется для отладки и анализа данных, возвращаемых API.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils.init_clients`
- 🔗 DEPENDS_ON -> `superset_tool.utils.logger`
- ƒ **get_and_save_dataset** (`Function`)
- 📝 Получает структуру датасета из Superset и сохраняет ее в JSON-файл.
- 🔗 CALLS -> `setup_clients`
- 🔗 CALLS -> `superset_client.get_dataset`
- 📦 **debug_db_api** (`Module`)
- 📝 Скрипт для отладки структуры ответа API баз данных.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- ƒ **debug_database_api** (`Function`)
- 📝 Отладка структуры ответа API баз данных.
- 🔗 CALLS -> `setup_clients`
- 🔗 CALLS -> `client.get_databases`
- 📦 **run_mapper** (`Module`)
- 📝 Этот модуль является CLI-точкой входа для запуска процесса меппинга метаданных датасетов.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.utils.dataset_mapper`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- ƒ **main** (`Function`)
- 📝 Парсит аргументы командной строки и запускает процесс меппинга.
- 🔗 CALLS -> `setup_clients`
- 🔗 CALLS -> `DatasetMapper.run_mapping`
- 📦 **migration_script** (`Module`)
- 📝 Предоставляет интерактивный CLI для миграции дашбордов Superset между окружениями с возможностью восстановления после ошибок.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- **Migration** (`Class`)
- 📝 Инкапсулирует логику интерактивной миграции дашбордов с возможностью «удалить‑и‑перезаписать» при ошибке импорта.
- ƒ **Migration.__init__** (`Function`)
- 📝 Инициализирует сервис миграции, настраивает логгер и начальные состояния.
- ƒ **Migration.run** (`Function`)
- 📝 Точка входа последовательный запуск всех шагов миграции.
- 🔗 CALLS -> `self.ask_delete_on_failure`
- 🔗 CALLS -> `self.select_environments`
- 🔗 CALLS -> `self.select_dashboards`
- 🔗 CALLS -> `self.confirm_db_config_replacement`
- 🔗 CALLS -> `self.execute_migration`
- ƒ **Migration.ask_delete_on_failure** (`Function`)
- 📝 Запрашивает у пользователя, следует ли удалять дашборд при ошибке импорта.
- 🔗 CALLS -> `yesno`
- ƒ **Migration.select_environments** (`Function`)
- 📝 Позволяет пользователю выбрать исходное и целевое окружения Superset.
- 🔗 CALLS -> `setup_clients`
- 🔗 CALLS -> `menu`
- ƒ **Migration.select_dashboards** (`Function`)
- 📝 Позволяет пользователю выбрать набор дашбордов для миграции.
- 🔗 CALLS -> `self.from_c.get_dashboards`
- 🔗 CALLS -> `checklist`
- ƒ **Migration.confirm_db_config_replacement** (`Function`)
- 📝 Запрашивает у пользователя, требуется ли заменить имена БД в YAML-файлах.
- 🔗 CALLS -> `yesno`
- 🔗 CALLS -> `self._select_databases`
- ƒ **Migration._select_databases** (`Function`)
- 📝 Позволяет пользователю выбрать исходную и целевую БД через API.
- 🔗 CALLS -> `self.from_c.get_databases`
- 🔗 CALLS -> `self.to_c.get_databases`
- 🔗 CALLS -> `self.from_c.get_database`
- 🔗 CALLS -> `self.to_c.get_database`
- 🔗 CALLS -> `menu`
- ƒ **Migration._batch_delete_by_ids** (`Function`)
- 📝 Удаляет набор дашбордов по их ID единым запросом.
- 🔗 CALLS -> `self.to_c.network.request`
- ƒ **Migration.execute_migration** (`Function`)
- 📝 Выполняет экспорт-импорт дашбордов, обрабатывает ошибки и, при необходимости, выполняет процедуру восстановления.
- 🔗 CALLS -> `self.from_c.export_dashboard`
- 🔗 CALLS -> `create_temp_file`
- 🔗 CALLS -> `update_yamls`
- 🔗 CALLS -> `create_dashboard_export`
- 🔗 CALLS -> `self.to_c.import_dashboard`
- 🔗 CALLS -> `self._batch_delete_by_ids`
- 📦 **backup_script** (`Module`)
- 📝 Этот модуль отвечает за автоматизированное резервное копирование дашбордов Superset.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- 📦 **BackupConfig** (`DataClass`)
- 📝 Хранит конфигурацию для процесса бэкапа.
- ƒ **backup_dashboards** (`Function`)
- 📝 Выполняет бэкап всех доступных дашбордов для заданного клиента и окружения, пропуская ошибки экспорта.
- 🔗 CALLS -> `client.get_dashboards`
- 🔗 CALLS -> `client.export_dashboard`
- 🔗 CALLS -> `save_and_unpack_dashboard`
- 🔗 CALLS -> `archive_exports`
- 🔗 CALLS -> `consolidate_archive_folders`
- 🔗 CALLS -> `remove_empty_directories`
- ƒ **main** (`Function`)
- 📝 Основная точка входа для запуска процесса резервного копирования.
- 🔗 CALLS -> `setup_clients`
- 🔗 CALLS -> `backup_dashboards`
- 📦 **superset_tool.exceptions** (`Module`)
- 📝 Определяет иерархию пользовательских исключений для всего инструмента, обеспечивая единую точку обработки ошибок.
- 🏗️ Layer: Infra
- **SupersetToolError** (`Class`)
- 📝 Базовый класс для всех ошибок, генерируемых инструментом.
- 🔗 INHERITS_FROM -> `Exception`
- **AuthenticationError** (`Class`)
- 📝 Ошибки, связанные с аутентификацией или авторизацией.
- 🔗 INHERITS_FROM -> `SupersetToolError`
- **PermissionDeniedError** (`Class`)
- 📝 Ошибка, возникающая при отказе в доступе к ресурсу.
- 🔗 INHERITS_FROM -> `AuthenticationError`
- **SupersetAPIError** (`Class`)
- 📝 Общие ошибки при взаимодействии с Superset API.
- 🔗 INHERITS_FROM -> `SupersetToolError`
- **ExportError** (`Class`)
- 📝 Ошибки, специфичные для операций экспорта.
- 🔗 INHERITS_FROM -> `SupersetAPIError`
- **DashboardNotFoundError** (`Class`)
- 📝 Ошибка, когда запрошенный дашборд или ресурс не найден (404).
- 🔗 INHERITS_FROM -> `SupersetAPIError`
- **DatasetNotFoundError** (`Class`)
- 📝 Ошибка, когда запрашиваемый набор данных не существует (404).
- 🔗 INHERITS_FROM -> `SupersetAPIError`
- **InvalidZipFormatError** (`Class`)
- 📝 Ошибка, указывающая на некорректный формат или содержимое ZIP-архива.
- 🔗 INHERITS_FROM -> `SupersetToolError`
- **NetworkError** (`Class`)
- 📝 Ошибки, связанные с сетевым соединением.
- 🔗 INHERITS_FROM -> `SupersetToolError`
- **FileOperationError** (`Class`)
- 📝 Общие ошибки файловых операций (I/O).
- 🔗 INHERITS_FROM -> `SupersetToolError`
- **InvalidFileStructureError** (`Class`)
- 📝 Ошибка, указывающая на некорректную структуру файлов или директорий.
- 🔗 INHERITS_FROM -> `FileOperationError`
- **ConfigurationError** (`Class`)
- 📝 Ошибки, связанные с неверной конфигурацией инструмента.
- 🔗 INHERITS_FROM -> `SupersetToolError`
- 📦 **superset_tool** (`Module`)
- 📝 Root package for superset_tool.
- 🏗️ Layer: Domain
- 📦 **superset_tool.client** (`Module`)
- 📝 Предоставляет высокоуровневый клиент для взаимодействия с Superset REST API, инкапсулируя логику запросов, обработку ошибок и пагинацию.
- 🏗️ Layer: Domain
- 🔗 DEPENDS_ON -> `superset_tool.models`
- 🔗 DEPENDS_ON -> `superset_tool.exceptions`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- **SupersetClient** (`Class`)
- 📝 Класс-обёртка над Superset REST API, предоставляющий методы для работы с дашбордами и датасетами.
- ƒ **SupersetClient.__init__** (`Function`)
- 📝 Инициализирует клиент, проверяет конфигурацию и создает сетевой клиент.
- ƒ **SupersetClient._validate_config** (`Function`)
- 📝 Проверяет, что переданный объект конфигурации имеет корректный тип.
- ƒ **SupersetClient.headers** (`Function`)
- 📝 Возвращает базовые HTTP-заголовки, используемые сетевым клиентом.
- ƒ **SupersetClient.get_dashboards** (`Function`)
- 📝 Получает полный список дашбордов, автоматически обрабатывая пагинацию.
- 🔗 CALLS -> `self._fetch_total_object_count`
- 🔗 CALLS -> `self._fetch_all_pages`
- ƒ **SupersetClient.export_dashboard** (`Function`)
- 📝 Экспортирует дашборд в виде ZIP-архива.
- 🔗 CALLS -> `self.network.request`
- ƒ **SupersetClient.import_dashboard** (`Function`)
- 📝 Импортирует дашборд из ZIP-файла с возможностью автоматического удаления и повторной попытки при ошибке.
- 🔗 CALLS -> `self._do_import`
- 🔗 CALLS -> `self.delete_dashboard`
- 🔗 CALLS -> `self.get_dashboards`
- ƒ **SupersetClient._resolve_target_id_for_delete** (`Function`)
- 📝 Определяет ID дашборда для удаления, используя ID или slug.
- ƒ **SupersetClient._do_import** (`Function`)
- 📝 Выполняет один запрос на импорт без обработки исключений.
- ƒ **SupersetClient.delete_dashboard** (`Function`)
- 📝 Удаляет дашборд по его ID или slug.
- 🔗 CALLS -> `self.network.request`
- ƒ **SupersetClient._extract_dashboard_id_from_zip** (`Function`)
- 📝 Извлекает ID дашборда из `metadata.yaml` внутри ZIP-архива.
- ƒ **SupersetClient._extract_dashboard_slug_from_zip** (`Function`)
- 📝 Извлекает slug дашборда из `metadata.yaml` внутри ZIP-архива.
- ƒ **SupersetClient._validate_export_response** (`Function`)
- 📝 Проверяет, что HTTP-ответ на экспорт является валидным ZIP-архивом.
- ƒ **SupersetClient._resolve_export_filename** (`Function`)
- 📝 Определяет имя файла для экспорта из заголовков или генерирует его.
- ƒ **SupersetClient._validate_query_params** (`Function`)
- 📝 Формирует корректный набор параметров запроса с пагинацией.
- ƒ **SupersetClient._fetch_total_object_count** (`Function`)
- 📝 Получает общее количество объектов по указанному эндпоинту для пагинации.
- ƒ **SupersetClient._fetch_all_pages** (`Function`)
- 📝 Итерируется по всем страницам пагинированного API и собирает все данные.
- ƒ **SupersetClient._validate_import_file** (`Function`)
- 📝 Проверяет, что файл существует, является ZIP-архивом и содержит `metadata.yaml`.
- ƒ **SupersetClient.get_datasets** (`Function`)
- 📝 Получает полный список датасетов, автоматически обрабатывая пагинацию.
- 🔗 CALLS -> `self._fetch_total_object_count`
- 🔗 CALLS -> `self._fetch_all_pages`
- ƒ **SupersetClient.get_databases** (`Function`)
- 📝 Получает полный список баз данных, автоматически обрабатывая пагинацию.
- 🔗 CALLS -> `self._fetch_total_object_count`
- 🔗 CALLS -> `self._fetch_all_pages`
- ƒ **SupersetClient.get_dataset** (`Function`)
- 📝 Получает информацию о конкретном датасете по его ID.
- 🔗 CALLS -> `self.network.request`
- ƒ **SupersetClient.get_database** (`Function`)
- 📝 Получает информацию о конкретной базе данных по её ID.
- 🔗 CALLS -> `self.network.request`
- ƒ **SupersetClient.update_dataset** (`Function`)
- 📝 Обновляет данные датасета по его ID.
- 🔗 CALLS -> `self.network.request`
- 📦 **superset_tool.models** (`Module`)
- 📝 Определяет Pydantic-модели для конфигурации инструмента, обеспечивая валидацию данных.
- 🏗️ Layer: Infra
- 🔗 DEPENDS_ON -> `pydantic`
- 🔗 DEPENDS_ON -> `superset_tool.utils.logger`
- **SupersetConfig** (`Class`)
- 📝 Модель конфигурации для подключения к одному экземпляру Superset API.
- 🔗 INHERITS_FROM -> `pydantic.BaseModel`
- ƒ **SupersetConfig.validate_auth** (`Function`)
- 📝 Проверяет, что словарь `auth` содержит все необходимые для аутентификации поля.
- ƒ **SupersetConfig.normalize_base_url** (`Function`)
- 📝 Нормализует `base_url`, добавляя `/api/v1`, если он отсутствует.
- **DatabaseConfig** (`Class`)
- 📝 Модель для параметров трансформации баз данных при миграции дашбордов.
- 🔗 INHERITS_FROM -> `pydantic.BaseModel`
- ƒ **DatabaseConfig.validate_config** (`Function`)
- 📝 Проверяет, что словарь `database_config` содержит ключи 'old' и 'new'.
- 📦 **superset_tool.utils.logger** (`Module`)
- 📝 Предоставляет универсальную обёртку над стандартным `logging.Logger` для унифицированного создания и управления логгерами с выводом в консоль и/или файл.
- 🏗️ Layer: Infra
- **SupersetLogger** (`Class`)
- 📝 Обёртка над `logging.Logger`, которая упрощает конфигурацию и использование логгеров.
- ƒ **SupersetLogger.__init__** (`Function`)
- 📝 Конфигурирует и инициализирует логгер, добавляя обработчики для файла и/или консоли.
- ƒ **SupersetLogger._log** (`Function`)
- 📝 (Helper) Универсальный метод для вызова соответствующего уровня логирования.
- ƒ **SupersetLogger.info** (`Function`)
- 📝 Записывает сообщение уровня INFO.
- ƒ **SupersetLogger.debug** (`Function`)
- 📝 Записывает сообщение уровня DEBUG.
- ƒ **SupersetLogger.warning** (`Function`)
- 📝 Записывает сообщение уровня WARNING.
- ƒ **SupersetLogger.error** (`Function`)
- 📝 Записывает сообщение уровня ERROR.
- ƒ **SupersetLogger.critical** (`Function`)
- 📝 Записывает сообщение уровня CRITICAL.
- ƒ **SupersetLogger.exception** (`Function`)
- 📝 Записывает сообщение уровня ERROR вместе с трассировкой стека текущего исключения.
- 📦 **superset_tool.utils.network** (`Module`)
- 📝 Инкапсулирует низкоуровневую HTTP-логику для взаимодействия с Superset API, включая аутентификацию, управление сессией, retry-логику и обработку ошибок.
- 🏗️ Layer: Infra
- 🔗 DEPENDS_ON -> `superset_tool.exceptions`
- 🔗 DEPENDS_ON -> `superset_tool.utils.logger`
- 🔗 DEPENDS_ON -> `requests`
- **APIClient** (`Class`)
- 📝 Инкапсулирует HTTP-логику для работы с API, включая сессии, аутентификацию, и обработку запросов.
- ƒ **APIClient.__init__** (`Function`)
- 📝 Инициализирует API клиент с конфигурацией, сессией и логгером.
- ƒ **APIClient._init_session** (`Function`)
- 📝 Создает и настраивает `requests.Session` с retry-логикой.
- ƒ **APIClient.authenticate** (`Function`)
- 📝 Выполняет аутентификацию в Superset API и получает access и CSRF токены.
- ƒ **APIClient.headers** (`Function`)
- 📝 Возвращает HTTP-заголовки для аутентифицированных запросов.
- ƒ **APIClient.request** (`Function`)
- 📝 Выполняет универсальный HTTP-запрос к API.
- ƒ **APIClient._handle_http_error** (`Function`)
- 📝 (Helper) Преобразует HTTP ошибки в кастомные исключения.
- ƒ **APIClient._handle_network_error** (`Function`)
- 📝 (Helper) Преобразует сетевые ошибки в `NetworkError`.
- ƒ **APIClient.upload_file** (`Function`)
- 📝 Загружает файл на сервер через multipart/form-data.
- ƒ **APIClient._perform_upload** (`Function`)
- 📝 (Helper) Выполняет POST запрос с файлом.
- ƒ **APIClient.fetch_paginated_count** (`Function`)
- 📝 Получает общее количество элементов для пагинации.
- ƒ **APIClient.fetch_paginated_data** (`Function`)
- 📝 Автоматически собирает данные со всех страниц пагинированного эндпоинта.
- 📦 **superset_tool.utils.whiptail_fallback** (`Module`)
- 📝 Предоставляет плотный консольный UI-fallback для интерактивных диалогов, имитируя `whiptail` для систем, где он недоступен.
- 🏗️ Layer: UI
- ƒ **menu** (`Function`)
- 📝 Отображает меню выбора и возвращает выбранный элемент.
- ƒ **checklist** (`Function`)
- 📝 Отображает список с возможностью множественного выбора.
- ƒ **yesno** (`Function`)
- 📝 Задает вопрос с ответом да/нет.
- ƒ **msgbox** (`Function`)
- 📝 Отображает информационное сообщение.
- ƒ **inputbox** (`Function`)
- 📝 Запрашивает у пользователя текстовый ввод.
- **_ConsoleGauge** (`Class`)
- 📝 Контекстный менеджер для имитации `whiptail gauge` в консоли.
- ƒ **gauge** (`Function`)
- 📝 Создает и возвращает экземпляр `_ConsoleGauge`.
- 📦 **superset_tool.utils.dataset_mapper** (`Module`)
- 📝 Этот модуль отвечает за обновление метаданных (verbose_map) в датасетах Superset, извлекая их из PostgreSQL или XLSX-файлов.
- 🏗️ Layer: Domain
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `pandas`
- 🔗 DEPENDS_ON -> `psycopg2`
- **DatasetMapper** (`Class`)
- 📝 Класс для меппинга и обновления verbose_map в датасетах Superset.
- ƒ **DatasetMapper.get_postgres_comments** (`Function`)
- 📝 Извлекает комментарии к колонкам из системного каталога PostgreSQL.
- ƒ **DatasetMapper.load_excel_mappings** (`Function`)
- 📝 Загружает меппинги 'column_name' -> 'column_comment' из XLSX файла.
- ƒ **DatasetMapper.run_mapping** (`Function`)
- 📝 Основная функция для выполнения меппинга и обновления verbose_map датасета в Superset.
- 🔗 CALLS -> `self.get_postgres_comments`
- 🔗 CALLS -> `self.load_excel_mappings`
- 🔗 CALLS -> `superset_client.get_dataset`
- 🔗 CALLS -> `superset_client.update_dataset`
- 📦 **superset_tool.utils** (`Module`)
- 📝 Utility package for superset_tool.
- 🏗️ Layer: Infra
- 📦 **superset_tool.utils.init_clients** (`Module`)
- 📝 Централизованно инициализирует клиенты Superset для различных окружений (DEV, PROD, SBX, PREPROD), используя `keyring` для безопасного доступа к паролям.
- 🏗️ Layer: Infra
- 🔗 DEPENDS_ON -> `superset_tool.models`
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `keyring`
- ƒ **setup_clients** (`Function`)
- 📝 Инициализирует и возвращает словарь клиентов `SupersetClient`.
- 📦 **superset_tool.utils.fileio** (`Module`)
- 📝 Предоставляет набор утилит для управления файловыми операциями, включая работу с временными файлами, архивами ZIP, файлами YAML и очистку директорий.
- 🏗️ Layer: Infra
- 🔗 DEPENDS_ON -> `superset_tool.exceptions`
- 🔗 DEPENDS_ON -> `superset_tool.utils.logger`
- 🔗 DEPENDS_ON -> `pyyaml`
- ƒ **create_temp_file** (`Function`)
- 📝 Контекстный менеджер для создания временного файла или директории с гарантированным удалением.
- ƒ **remove_empty_directories** (`Function`)
- 📝 Рекурсивно удаляет все пустые поддиректории, начиная с указанного пути.
- ƒ **read_dashboard_from_disk** (`Function`)
- 📝 Читает бинарное содержимое файла с диска.
- ƒ **calculate_crc32** (`Function`)
- 📝 Вычисляет контрольную сумму CRC32 для файла.
- 📦 **RetentionPolicy** (`DataClass`)
- 📝 Определяет политику хранения для архивов (ежедневные, еженедельные, ежемесячные).
- ƒ **archive_exports** (`Function`)
- 📝 Управляет архивом экспортированных файлов, применяя политику хранения и дедупликацию.
- 🔗 CALLS -> `apply_retention_policy`
- 🔗 CALLS -> `calculate_crc32`
- ƒ **apply_retention_policy** (`Function`)
- 📝 (Helper) Применяет политику хранения к списку файлов, возвращая те, что нужно сохранить.
- ƒ **save_and_unpack_dashboard** (`Function`)
- 📝 Сохраняет бинарное содержимое ZIP-архива на диск и опционально распаковывает его.
- ƒ **update_yamls** (`Function`)
- 📝 Обновляет конфигурации в YAML-файлах, заменяя значения или применяя regex.
- 🔗 CALLS -> `_update_yaml_file`
- ƒ **_update_yaml_file** (`Function`)
- 📝 (Helper) Обновляет один YAML файл.
- ƒ **create_dashboard_export** (`Function`)
- 📝 Создает ZIP-архив из указанных исходных путей.
- ƒ **sanitize_filename** (`Function`)
- 📝 Очищает строку от символов, недопустимых в именах файлов.
- ƒ **get_filename_from_headers** (`Function`)
- 📝 Извлекает имя файла из HTTP заголовка 'Content-Disposition'.
- ƒ **consolidate_archive_folders** (`Function`)
- 📝 Консолидирует директории архивов на основе общего слага в имени.
- 🧩 **App** (`Component`)
- 📝 The root component of the frontend application. Manages navigation and layout.
- 🏗️ Layer: UI
- ƒ **handleFormSubmit** (`Function`)
- 📝 Handles form submission for task creation.
- ƒ **navigate** (`Function`)
- 📝 Changes the current page and resets state.
- 📦 **main** (`Module`)
- 📝 Entry point for the Svelte application.
- 🏗️ Layer: UI-Entry
- 📦 **app_instance** (`Data`)
- 📝 Initialized Svelte app instance.
- 🧩 **DashboardGrid** (`Component`)
- 📝 Displays a grid of dashboards with selection and pagination.
- 🏗️ Layer: Component
- ƒ **handleSort** (`Function`)
- 📝 Toggles sort direction or changes sort column.
- ƒ **handleSelectionChange** (`Function`)
- 📝 Handles individual checkbox changes.
- ƒ **handleSelectAll** (`Function`)
- 📝 Handles select all checkbox.
- ƒ **goToPage** (`Function`)
- 📝 Changes current page.
- 🧩 **TaskHistory** (`Component`)
- 📝 Displays a list of recent tasks with their status and allows selecting them for viewing logs.
- 🏗️ Layer: UI
- ƒ **fetchTasks** (`Function`)
- 📝 Fetches the list of recent tasks from the API.
- ƒ **clearTasks** (`Function`)
- 📝 Clears tasks from the history, optionally filtered by status.
- ƒ **selectTask** (`Function`)
- 📝 Selects a task and fetches its full details.
- ƒ **getStatusColor** (`Function`)
- 📝 Returns the CSS color class for a given task status.
- ƒ **onMount** (`Function`)
- 📝 Initializes the component by fetching tasks and starting polling.
- ƒ **onDestroy** (`Function`)
- 📝 Cleans up the polling interval when the component is destroyed.
- 🧩 **MappingTable** (`Component`)
- 📝 Displays and allows editing of database mappings.
- 🏗️ Layer: Feature
- ƒ **updateMapping** (`Function`)
- 📝 Updates a mapping for a specific source database.
- ƒ **getSuggestion** (`Function`)
- 📝 Finds a suggestion for a source database.
- 🧩 **EnvSelector** (`Component`)
- 📝 Provides a UI component for selecting source and target environments.
- 🏗️ Layer: Feature
- ƒ **handleSelect** (`Function`)
- 📝 Dispatches the selection change event.
- 🧩 **TaskList** (`Component`)
- 📝 Displays a list of tasks with their status and execution details.
- 🏗️ Layer: Component
- ƒ **getStatusColor** (`Function`)
- 📝 Returns the CSS color class for a given task status.
- ƒ **formatTime** (`Function`)
- 📝 Formats a date string using date-fns.
- ƒ **handleTaskClick** (`Function`)
- 📝 Dispatches a select event when a task is clicked.
- 🧩 **DynamicForm** (`Component`)
- 📝 Generates a form dynamically based on a JSON schema.
- 🏗️ Layer: UI
- ƒ **handleSubmit** (`Function`)
- 📝 Dispatches the submit event with the form data.
- ƒ **initializeForm** (`Function`)
- 📝 Initialize form data with default values from the schema.
- 🧩 **Footer** (`Component`)
- 📝 Displays the application footer with copyright information.
- 🏗️ Layer: UI
- 🧩 **Navbar** (`Component`)
- 📝 Main navigation bar for the application.
- 🏗️ Layer: UI
- 🧩 **TaskRunner** (`Component`)
- 📝 Connects to a WebSocket to display real-time logs for a running task.
- 🏗️ Layer: UI
- ƒ **connect** (`Function`)
- 📝 Establishes WebSocket connection with exponential backoff.
- ƒ **fetchTargetDatabases** (`Function`)
- 📝 Fetches the list of databases in the target environment.
- ƒ **handleMappingResolve** (`Function`)
- 📝 Handles the resolution of a missing database mapping.
- ƒ **handlePasswordResume** (`Function`)
- 📝 Handles the submission of database passwords to resume a task.
- ƒ **startDataTimeout** (`Function`)
- 📝 Starts a timeout to detect when the log stream has stalled.
- ƒ **resetDataTimeout** (`Function`)
- 📝 Resets the data stall timeout.
- ƒ **onMount** (`Function`)
- 📝 Initializes the component and subscribes to task selection changes.
- ƒ **onDestroy** (`Function`)
- 📝 Close WebSocket connection when the component is destroyed.
- 🧩 **TaskLogViewer** (`Component`)
- 📝 Displays detailed logs for a specific task in a modal.
- 🏗️ Layer: UI
- ƒ **fetchLogs** (`Function`)
- 📝 Fetches logs for the current task.
- ƒ **scrollToBottom** (`Function`)
- 📝 Scrolls the log container to the bottom.
- ƒ **handleScroll** (`Function`)
- 📝 Updates auto-scroll preference based on scroll position.
- ƒ **close** (`Function`)
- 📝 Closes the log viewer modal.
- ƒ **getLogLevelColor** (`Function`)
- 📝 Returns the CSS color class for a given log level.
- ƒ **onDestroy** (`Function`)
- 📝 Cleans up the polling interval.
- 🧩 **PasswordPrompt** (`Component`)
- 📝 A modal component to prompt the user for database passwords when a migration task is paused.
- 🏗️ Layer: UI
- ƒ **handleSubmit** (`Function`)
- 📝 Validates and dispatches the passwords to resume the task.
- ƒ **handleCancel** (`Function`)
- 📝 Cancels the password prompt.
- 🧩 **MissingMappingModal** (`Component`)
- 📝 Prompts the user to provide a database mapping when one is missing during migration.
- 🏗️ Layer: Feature
- ƒ **resolve** (`Function`)
- 📝 Dispatches the resolution event with the selected mapping.
- ƒ **cancel** (`Function`)
- 📝 Cancels the mapping resolution modal.
- 🧩 **Toast** (`Component`)
- 📝 Displays transient notifications (toasts) in the bottom-right corner.
- 🏗️ Layer: UI
- 🧩 **Settings** (`Component`)
- 📝 The main settings page for the application, allowing management of environments and global settings.
- 🏗️ Layer: UI
- ƒ **loadSettings** (`Function`)
- 📝 Loads settings from the backend.
- ƒ **handleSaveGlobal** (`Function`)
- 📝 Saves global settings to the backend.
- ƒ **handleAddOrUpdateEnv** (`Function`)
- 📝 Adds or updates an environment.
- ƒ **handleDeleteEnv** (`Function`)
- 📝 Deletes an environment.
- ƒ **handleTestEnv** (`Function`)
- 📝 Tests the connection to an environment.
- ƒ **editEnv** (`Function`)
- 📝 Sets the form to edit an existing environment.
- ƒ **resetEnvForm** (`Function`)
- 📝 Resets the environment form.
- 🧩 **Dashboard** (`Component`)
- 📝 Displays the list of available plugins and allows selecting one.
- 🏗️ Layer: UI
- ƒ **onMount** (`Function`)
- 📝 Fetch plugins when the component mounts.
- ƒ **selectPlugin** (`Function`)
- 📝 Selects a plugin to display its form.
- 📦 **stores_module** (`Module`)
- 📝 Global state management using Svelte stores.
- 🏗️ Layer: UI-State
- 📦 **plugins** (`Data`)
- 📝 Store for the list of available plugins.
- 📦 **tasks** (`Data`)
- 📝 Store for the list of tasks.
- 📦 **selectedPlugin** (`Data`)
- 📝 Store for the currently selected plugin.
- 📦 **selectedTask** (`Data`)
- 📝 Store for the currently selected task.
- 📦 **currentPage** (`Data`)
- 📝 Store for the current page.
- 📦 **taskLogs** (`Data`)
- 📝 Store for the logs of the currently selected task.
- ƒ **fetchPlugins** (`Function`)
- 📝 Fetches plugins from the API and updates the plugins store.
- ƒ **fetchTasks** (`Function`)
- 📝 Fetches tasks from the API and updates the tasks store.
- 📦 **toasts_module** (`Module`)
- 📝 Manages toast notifications using a Svelte writable store.
- 🏗️ Layer: UI-State
- 📦 **toasts** (`Data`)
- 📝 Writable store containing the list of active toasts.
- ƒ **addToast** (`Function`)
- 📝 Adds a new toast message.
- ƒ **removeToast** (`Function`)
- 📝 Removes a toast message by ID.
- 📦 **api_module** (`Module`)
- 📝 Handles all communication with the backend API.
- 🏗️ Layer: Infra-API
- ƒ **getWsUrl** (`Function`)
- 📝 Returns the WebSocket URL for a specific task, with fallback logic.
- ƒ **fetchApi** (`Function`)
- 📝 Generic GET request wrapper.
- ƒ **postApi** (`Function`)
- 📝 Generic POST request wrapper.
- ƒ **requestApi** (`Function`)
- 📝 Generic request wrapper.
- 📦 **api** (`Data`)
- 📝 API client object with specific methods.
- 🧩 **MigrationDashboard** (`Component`)
- 📝 Main dashboard for configuring and starting migrations.
- 🏗️ Layer: Page
- ƒ **fetchEnvironments** (`Function`)
- 📝 Fetches the list of environments from the API.
- ƒ **fetchDashboards** (`Function`)
- 📝 Fetches dashboards for the selected source environment.
- ƒ **fetchDatabases** (`Function`)
- 📝 Fetches databases from both environments and gets suggestions.
- ƒ **handleMappingUpdate** (`Function`)
- 📝 Saves a mapping to the backend.
- ƒ **handleViewLogs** (`Function`)
- 📝 Opens the log viewer for a specific task.
- ƒ **handlePasswordPrompt** (`Function`)
- 📝 Reactive logic to show password prompt when a task is awaiting input.
- ƒ **handleResumeMigration** (`Function`)
- 📝 Resumes a migration task with provided passwords.
- ƒ **startMigration** (`Function`)
- 📝 Starts the migration process.
- 🧩 **MappingManagement** (`Component`)
- 📝 Page for managing database mappings between environments.
- 🏗️ Layer: Page
- ƒ **fetchEnvironments** (`Function`)
- 📝 Fetches the list of environments.
- ƒ **fetchDatabases** (`Function`)
- 📝 Fetches databases from both environments and gets suggestions.
- ƒ **handleUpdate** (`Function`)
- 📝 Saves a mapping to the backend.
- 📦 **Dependencies** (`Module`)
- 📝 Manages the creation and provision of shared application dependencies, such as the PluginLoader and TaskManager, to avoid circular imports.
- 🏗️ Layer: Core
- 📦 **AppModule** (`Module`)
- 📝 The main entry point for the FastAPI application. It initializes the app, configures CORS, sets up dependencies, includes API routers, and defines the WebSocket endpoint for log streaming.
- 🏗️ Layer: UI (API)
- 📦 **App** (`Global`)
- 📝 The global FastAPI application instance.
- 📦 **WebSocketEndpoint** (`Endpoint`)
- 📝 Provides a WebSocket endpoint for clients to connect to and receive real-time log entries for a specific task.
- 📦 **StaticFiles** (`Mount`)
- 📝 Mounts the frontend build directory to serve static assets.
- 📦 **RootEndpoint** (`Endpoint`)
- 📝 A simple root endpoint to confirm that the API is running.
- 📦 **backend.src.models.mapping** (`Module`)
- 📝 Defines the database schema for environment metadata and database mappings using SQLAlchemy.
- 🏗️ Layer: Domain
- 🔗 DEPENDS_ON -> `sqlalchemy`
- **MigrationStatus** (`Class`)
- 📝 Enumeration of possible migration job statuses.
- **Environment** (`Class`)
- 📝 Represents a Superset instance environment.
- **DatabaseMapping** (`Class`)
- 📝 Represents a mapping between source and target databases.
- **MigrationJob** (`Class`)
- 📝 Represents a single migration execution job.
- 📦 **backend.src.models.dashboard** (`Module`)
- 📝 Defines data models for dashboard metadata and selection.
- 🏗️ Layer: Model
- **DashboardMetadata** (`Class`)
- 📝 Represents a dashboard available for migration.
- **DashboardSelection** (`Class`)
- 📝 Represents the user's selection of dashboards to migrate.
- 📦 **backend.src.models.task** (`Module`)
- 📝 Defines the database schema for task execution records.
- 🏗️ Layer: Domain
- 🔗 DEPENDS_ON -> `sqlalchemy`
- **TaskRecord** (`Class`)
- 📝 Represents a persistent record of a task execution.
- 📦 **backend.src.services.mapping_service** (`Module`)
- 📝 Orchestrates database fetching and fuzzy matching suggestions.
- 🏗️ Layer: Service
- 🔗 DEPENDS_ON -> `backend.src.core.superset_client`
- 🔗 DEPENDS_ON -> `backend.src.core.utils.matching`
- **MappingService** (`Class`)
- 📝 Service for handling database mapping logic.
- ƒ **MappingService.__init__** (`Function`)
- 📝 Initializes the mapping service with a config manager.
- ƒ **MappingService._get_client** (`Function`)
- 📝 Helper to get an initialized SupersetClient for an environment.
- ƒ **MappingService.get_suggestions** (`Function`)
- 📝 Fetches databases from both environments and returns fuzzy matching suggestions.
- 📦 **ConfigManagerModule** (`Module`)
- 📝 Manages application configuration, including loading/saving to JSON and CRUD for environments.
- 🏗️ Layer: Core
- 🔗 DEPENDS_ON -> `ConfigModels`
- 🔗 CALLS -> `logger`
- **ConfigManager** (`Class`)
- 📝 A class to handle application configuration persistence and management.
- ƒ **__init__** (`Function`)
- 📝 Initializes the ConfigManager.
- ƒ **_load_config** (`Function`)
- 📝 Loads the configuration from disk or creates a default one.
- ƒ **_save_config_to_disk** (`Function`)
- 📝 Saves the provided configuration object to disk.
- ƒ **save** (`Function`)
- 📝 Saves the current configuration state to disk.
- ƒ **get_config** (`Function`)
- 📝 Returns the current configuration.
- ƒ **update_global_settings** (`Function`)
- 📝 Updates the global settings and persists the change.
- ƒ **validate_path** (`Function`)
- 📝 Validates if a path exists and is writable.
- ƒ **get_environments** (`Function`)
- 📝 Returns the list of configured environments.
- ƒ **has_environments** (`Function`)
- 📝 Checks if at least one environment is configured.
- ƒ **add_environment** (`Function`)
- 📝 Adds a new environment to the configuration.
- ƒ **update_environment** (`Function`)
- 📝 Updates an existing environment.
- ƒ **delete_environment** (`Function`)
- 📝 Deletes an environment by ID.
- 📦 **backend.src.core.superset_client** (`Module`)
- 📝 Extends the base SupersetClient with database-specific metadata fetching.
- 🏗️ Layer: Core
- 🔗 INHERITS_FROM -> `superset_tool.client.SupersetClient`
- **SupersetClient** (`Class`)
- 📝 Extended SupersetClient for migration-specific operations.
- ƒ **SupersetClient.get_databases_summary** (`Function`)
- 📝 Fetch a summary of databases including uuid, name, and engine.
- ƒ **SupersetClient.get_database_by_uuid** (`Function`)
- 📝 Find a database by its UUID.
- ƒ **SupersetClient.get_dashboards_summary** (`Function`)
- 📝 Fetches dashboard metadata optimized for the grid.
- 📦 **backend.src.core.migration_engine** (`Module`)
- 📝 Handles the interception and transformation of Superset asset ZIP archives.
- 🏗️ Layer: Core
- 🔗 DEPENDS_ON -> `PyYAML`
- **MigrationEngine** (`Class`)
- 📝 Engine for transforming Superset export ZIPs.
- ƒ **MigrationEngine.transform_zip** (`Function`)
- 📝 Extracts ZIP, replaces database UUIDs in YAMLs, and re-packages.
- ƒ **MigrationEngine._transform_yaml** (`Function`)
- 📝 Replaces database_uuid in a single YAML file.
- 📦 **LoggerModule** (`Module`)
- 📝 Configures the application's logging system, including a custom handler for buffering logs and streaming them over WebSockets.
- 🏗️ Layer: Core
- **BeliefFormatter** (`Class`)
- 📝 Custom logging formatter that adds belief state prefixes to log messages.
- **LogEntry** (`Class`)
- 📝 A Pydantic model representing a single, structured log entry. This is a re-definition for consistency, as it's also defined in task_manager.py.
- ƒ **BeliefScope** (`Function`)
- 📝 Context manager for structured Belief State logging.
- ƒ **ConfigureLogger** (`Function`)
- 📝 Configures the logger with the provided logging settings.
- **WebSocketLogHandler** (`Class`)
- 📝 A custom logging handler that captures log records into a buffer. It is designed to be extended for real-time log streaming over WebSockets.
- 📦 **Logger** (`Global`)
- 📝 The global logger instance for the application, configured with both a console handler and the custom WebSocket handler.
- 📦 **backend.src.core.database** (`Module`)
- 📝 Configures the SQLite database connection and session management.
- 🏗️ Layer: Core
- 🔗 DEPENDS_ON -> `sqlalchemy`
- 📦 **DATABASE_URL** (`Constant`)
- 📦 **TASKS_DATABASE_URL** (`Constant`)
- 📦 **engine** (`Variable`)
- 📦 **tasks_engine** (`Variable`)
- **SessionLocal** (`Class`)
- 📝 A session factory for the main mappings database.
- **TasksSessionLocal** (`Class`)
- 📝 A session factory for the tasks execution database.
- ƒ **init_db** (`Function`)
- 📝 Initializes the database by creating all tables.
- ƒ **get_db** (`Function`)
- 📝 Dependency for getting a database session.
- ƒ **get_tasks_db** (`Function`)
- 📝 Dependency for getting a tasks database session.
- 📦 **ConfigModels** (`Module`)
- 📝 Defines the data models for application configuration using Pydantic.
- 🏗️ Layer: Core
- 📦 **Schedule** (`DataClass`)
- 📝 Represents a backup schedule configuration.
- 📦 **Environment** (`DataClass`)
- 📝 Represents a Superset environment configuration.
- 📦 **LoggingConfig** (`DataClass`)
- 📝 Defines the configuration for the application's logging system.
- 📦 **GlobalSettings** (`DataClass`)
- 📝 Represents global application settings.
- 📦 **AppConfig** (`DataClass`)
- 📝 The root configuration model containing all application settings.
- 📦 **SchedulerModule** (`Module`)
- 📝 Manages scheduled tasks using APScheduler.
- 🏗️ Layer: Core
- **SchedulerService** (`Class`)
- 📝 Provides a service to manage scheduled backup tasks.
- ƒ **SchedulerService.start** (`Function`)
- 📝 Starts the background scheduler and loads initial schedules.
- ƒ **SchedulerService.stop** (`Function`)
- 📝 Stops the background scheduler.
- ƒ **SchedulerService.load_schedules** (`Function`)
- 📝 Loads backup schedules from configuration and registers them.
- ƒ **SchedulerService.add_backup_job** (`Function`)
- 📝 Adds a scheduled backup job for an environment.
- ƒ **SchedulerService._trigger_backup** (`Function`)
- 📝 Triggered by the scheduler to start a backup task.
- **PluginLoader** (`Class`)
- 📝 Scans a specified directory for Python modules, dynamically loads them, and registers any classes that are valid implementations of the PluginBase interface.
- 🏗️ Layer: Core
- ƒ **PluginLoader.__init__** (`Function`)
- 📝 Initializes the PluginLoader with a directory to scan.
- ƒ **PluginLoader._load_plugins** (`Function`)
- 📝 Scans the plugin directory and loads all valid plugins.
- ƒ **PluginLoader._load_module** (`Function`)
- 📝 Loads a single Python module and discovers PluginBase implementations.
- ƒ **PluginLoader._register_plugin** (`Function`)
- 📝 Registers a PluginBase instance and its configuration.
- ƒ **PluginLoader.get_plugin** (`Function`)
- 📝 Retrieves a loaded plugin instance by its ID.
- ƒ **PluginLoader.get_all_plugin_configs** (`Function`)
- 📝 Returns a list of all registered plugin configurations.
- ƒ **PluginLoader.has_plugin** (`Function`)
- 📝 Checks if a plugin with the given ID is registered.
- **PluginBase** (`Class`)
- 📝 Defines the abstract base class that all plugins must implement to be recognized by the system. It enforces a common structure for plugin metadata and execution.
- 🏗️ Layer: Core
- **PluginConfig** (`Class`)
- 📝 A Pydantic model used to represent the validated configuration and metadata of a loaded plugin. This object is what gets exposed to the API layer.
- 🏗️ Layer: Core
- 📦 **backend.src.core.utils.matching** (`Module`)
- 📝 Provides utility functions for fuzzy matching database names.
- 🏗️ Layer: Core
- 🔗 DEPENDS_ON -> `rapidfuzz`
- ƒ **suggest_mappings** (`Function`)
- 📝 Suggests mappings between source and target databases using fuzzy matching.
- 📦 **TaskManagerModule** (`Module`)
- 📝 Manages the lifecycle of tasks, including their creation, execution, and state tracking. It uses a thread pool to run plugins asynchronously.
- 🏗️ Layer: Core
- **TaskManager** (`Class`)
- 📝 Manages the lifecycle of tasks, including their creation, execution, and state tracking.
- ƒ **TaskManager.__init__** (`Function`)
- 📝 Initialize the TaskManager with dependencies.
- ƒ **TaskManager.create_task** (`Function`)
- 📝 Creates and queues a new task for execution.
- ƒ **TaskManager._run_task** (`Function`)
- 📝 Internal method to execute a task.
- ƒ **TaskManager.resolve_task** (`Function`)
- 📝 Resumes a task that is awaiting mapping.
- ƒ **TaskManager.wait_for_resolution** (`Function`)
- 📝 Pauses execution and waits for a resolution signal.
- ƒ **TaskManager.wait_for_input** (`Function`)
- 📝 Pauses execution and waits for user input.
- ƒ **TaskManager.get_task** (`Function`)
- 📝 Retrieves a task by its ID.
- ƒ **TaskManager.get_all_tasks** (`Function`)
- 📝 Retrieves all registered tasks.
- ƒ **TaskManager.get_tasks** (`Function`)
- 📝 Retrieves tasks with pagination and optional status filter.
- ƒ **TaskManager.get_task_logs** (`Function`)
- 📝 Retrieves logs for a specific task.
- ƒ **TaskManager._add_log** (`Function`)
- 📝 Adds a log entry to a task and notifies subscribers.
- ƒ **TaskManager.subscribe_logs** (`Function`)
- 📝 Subscribes to real-time logs for a task.
- ƒ **TaskManager.unsubscribe_logs** (`Function`)
- 📝 Unsubscribes from real-time logs for a task.
- ƒ **TaskManager.load_persisted_tasks** (`Function`)
- 📝 Load persisted tasks using persistence service.
- ƒ **TaskManager.await_input** (`Function`)
- 📝 Transition a task to AWAITING_INPUT state with input request.
- ƒ **TaskManager.resume_task_with_password** (`Function`)
- 📝 Resume a task that is awaiting input with provided passwords.
- ƒ **TaskManager.clear_tasks** (`Function`)
- 📝 Clears tasks based on status filter.
- 📦 **TaskManagerPackage** (`Module`)
- 📝 Exports the public API of the task manager package.
- 🏗️ Layer: Core
- 📦 **TaskCleanupModule** (`Module`)
- 📝 Implements task cleanup and retention policies.
- 🏗️ Layer: Core
- **TaskCleanupService** (`Class`)
- 📝 Provides methods to clean up old task records.
- ƒ **TaskCleanupService.run_cleanup** (`Function`)
- 📝 Deletes tasks older than the configured retention period.
- 📦 **TaskManagerModels** (`Module`)
- 📝 Defines the data models and enumerations used by the Task Manager.
- 🏗️ Layer: Core
- 📦 **TaskStatus** (`Enum`)
- 📝 Defines the possible states a task can be in during its lifecycle.
- **LogEntry** (`Class`)
- 📝 A Pydantic model representing a single, structured log entry associated with a task.
- **Task** (`Class`)
- 📝 A Pydantic model representing a single execution instance of a plugin, including its status, parameters, and logs.
- ƒ **Task.__init__** (`Function`)
- 📝 Initializes the Task model and validates input_request for AWAITING_INPUT status.
- 📦 **TaskPersistenceModule** (`Module`)
- 📝 Handles the persistence of tasks using SQLAlchemy and the tasks.db database.
- 🏗️ Layer: Core
- **TaskPersistenceService** (`Class`)
- 📝 Provides methods to save and load tasks from the tasks.db database using SQLAlchemy.
- ƒ **TaskPersistenceService.persist_task** (`Function`)
- 📝 Persists or updates a single task in the database.
- ƒ **TaskPersistenceService.persist_tasks** (`Function`)
- 📝 Persists multiple tasks.
- ƒ **TaskPersistenceService.load_tasks** (`Function`)
- 📝 Loads tasks from the database.
- ƒ **TaskPersistenceService.delete_tasks** (`Function`)
- 📝 Deletes specific tasks from the database.
- 📦 **BackupPlugin** (`Module`)
- 📝 A plugin that provides functionality to back up Superset dashboards.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- **BackupPlugin** (`Class`)
- 📝 Implementation of the backup plugin logic.
- 📦 **MigrationPlugin** (`Module`)
- 📝 A plugin that provides functionality to migrate Superset dashboards between environments.
- 🏗️ Layer: App
- 🔗 DEPENDS_ON -> `superset_tool.client`
- 🔗 DEPENDS_ON -> `superset_tool.utils`
- **MigrationPlugin** (`Class`)
- 📝 Implementation of the migration plugin logic.
- 📦 **MigrationPlugin.execute** (`Action`)
- 📝 Execute the migration logic with proper task logging.
- 📦 **AuthModule** (`Module`)
- 📝 Implements ADFS authentication using Authlib for FastAPI. It provides a dependency to protect endpoints.
- 🏗️ Layer: UI (API)
- 📦 **SettingsRouter** (`Module`)
- 📝 Provides API endpoints for managing application settings and Superset environments.
- 🏗️ Layer: UI (API)
- 🔗 DEPENDS_ON -> `ConfigManager`
- 🔗 DEPENDS_ON -> `ConfigModels`
- ƒ **get_settings** (`Function`)
- 📝 Retrieves all application settings.
- ƒ **update_global_settings** (`Function`)
- 📝 Updates global application settings.
- ƒ **get_environments** (`Function`)
- 📝 Lists all configured Superset environments.
- ƒ **add_environment** (`Function`)
- 📝 Adds a new Superset environment.
- ƒ **update_environment** (`Function`)
- 📝 Updates an existing Superset environment.
- ƒ **delete_environment** (`Function`)
- 📝 Deletes a Superset environment.
- ƒ **test_environment_connection** (`Function`)
- 📝 Tests the connection to a Superset environment.
- ƒ **validate_backup_path** (`Function`)
- 📝 Validates if a backup path exists and is writable.
- 📦 **TasksRouter** (`Module`)
- 📝 Defines the FastAPI router for task-related endpoints, allowing clients to create, list, and get the status of tasks.
- 🏗️ Layer: UI (API)
- 📦 **backend.src.api.routes.environments** (`Module`)
- 📝 API endpoints for listing environments and their databases.
- 🏗️ Layer: API
- 🔗 DEPENDS_ON -> `backend.src.dependencies`
- 🔗 DEPENDS_ON -> `backend.src.core.superset_client`
- 📦 **ScheduleSchema** (`DataClass`)
- 📦 **EnvironmentResponse** (`DataClass`)
- 📦 **DatabaseResponse** (`DataClass`)
- ƒ **get_environments** (`Function`)
- 📝 List all configured environments.
- ƒ **update_environment_schedule** (`Function`)
- 📝 Update backup schedule for an environment.
- ƒ **get_environment_databases** (`Function`)
- 📝 Fetch the list of databases from a specific environment.
- 📦 **PluginsRouter** (`Module`)
- 📝 Defines the FastAPI router for plugin-related endpoints, allowing clients to list available plugins.
- 🏗️ Layer: UI (API)
- 📦 **backend.src.api.routes.migration** (`Module`)
- 📝 API endpoints for migration operations.
- 🏗️ Layer: API
- 🔗 DEPENDS_ON -> `backend.src.dependencies`
- 🔗 DEPENDS_ON -> `backend.src.models.dashboard`
- ƒ **get_dashboards** (`Function`)
- 📝 Fetch all dashboards from the specified environment for the grid.
- ƒ **execute_migration** (`Function`)
- 📝 Execute the migration of selected dashboards.
- 📦 **backend.src.api.routes.mappings** (`Module`)
- 📝 API endpoints for managing database mappings and getting suggestions.
- 🏗️ Layer: API
- 🔗 DEPENDS_ON -> `backend.src.dependencies`
- 🔗 DEPENDS_ON -> `backend.src.core.database`
- 🔗 DEPENDS_ON -> `backend.src.services.mapping_service`
- 📦 **MappingCreate** (`DataClass`)
- 📦 **MappingResponse** (`DataClass`)
- 📦 **SuggestRequest** (`DataClass`)
- ƒ **get_mappings** (`Function`)
- 📝 List all saved database mappings.
- ƒ **create_mapping** (`Function`)
- 📝 Create or update a database mapping.
- ƒ **suggest_mappings_api** (`Function`)
- 📝 Get suggested mappings based on fuzzy matching.