64 lines
2.7 KiB
Markdown
64 lines
2.7 KiB
Markdown
# Web Application Settings Mechanism
|
|
|
|
This document describes the settings management system for the Superset Tools application.
|
|
|
|
## Overview
|
|
|
|
The settings mechanism allows users to configure multiple Superset environments and global application settings (like backup storage) via the web UI.
|
|
|
|
## Backend Architecture
|
|
|
|
### Data Models
|
|
|
|
Configuration is structured using Pydantic models in `backend/src/core/config_models.py`:
|
|
|
|
- `Environment`: Represents a Superset instance (URL, credentials). The `base_url` is automatically normalized to include the `/api/v1` suffix if missing.
|
|
- `GlobalSettings`: Global application parameters (e.g., `storage.root_path`).
|
|
- `AppConfig`: The root configuration object.
|
|
|
|
### Configuration Manager
|
|
|
|
The `ConfigManager` (`backend/src/core/config_manager.py`) handles:
|
|
- Persistence to `config.json`.
|
|
- CRUD operations for environments.
|
|
- Validation and logging.
|
|
|
|
### API Endpoints
|
|
|
|
The settings API is available at `/settings`:
|
|
|
|
- `GET /settings`: Retrieve all settings (passwords are masked).
|
|
- `PATCH /settings/global`: Update global settings.
|
|
- `GET /settings/environments`: List environments.
|
|
- `POST /settings/environments`: Add environment.
|
|
- `PUT /settings/environments/{id}`: Update environment.
|
|
- `DELETE /settings/environments/{id}`: Remove environment.
|
|
- `POST /settings/environments/{id}/test`: Test connection.
|
|
|
|
## Frontend Implementation
|
|
|
|
The settings page is located at `frontend/src/pages/Settings.svelte`. It provides forms for managing global settings and Superset environments.
|
|
|
|
## Reports Center
|
|
|
|
Unified reports are available at [`/reports`](frontend/src/routes/reports/+page.svelte) and use the backend API at [`/api/reports`](backend/src/api/routes/reports.py) and [`/api/reports/{report_id}`](backend/src/api/routes/reports.py).
|
|
|
|
### What operators can do
|
|
|
|
- View all task outcomes (LLM verification, backup, migration, documentation) in one list.
|
|
- Filter by type and status.
|
|
- Open report detail with diagnostics and recommended next actions.
|
|
- Continue working even for unknown task types and partial payloads (explicit placeholders are shown instead of hidden data).
|
|
|
|
### Troubleshooting
|
|
|
|
- If report list is empty, verify tasks exist and clear filters.
|
|
- If report detail is not found (404), confirm the selected report still exists in task history.
|
|
- If report API tests fail during local execution with database connectivity errors, ensure the configured DB is reachable or run in an environment with available test DB services.
|
|
|
|
## Integration
|
|
|
|
Existing plugins and utilities use the `ConfigManager` to fetch configuration:
|
|
- `superset_tool/utils/init_clients.py`: Dynamically initializes Superset clients from the configured environments.
|
|
- `BackupPlugin`: Uses the configured `storage.root_path` as the default storage location.
|