Backend: - dashboard_outcomes module: per-dashboard new/overwrite/identical outcome, composite-key drift prediction with desired-vs-live values, read-only - dry-run: single cached live dataset-contract fetch (was O(dashboards)), literal_find/literal_replace reach every transform_zip call - catalog read failures degrade to warnings (target_database/dataset_catalog_ unavailable, risk_analysis_unavailable) instead of fabricated blockers - MigrationDryRunResult + dashboards[]; MigrationRiskItem + dataset_uuid Frontend: - MigrationReviewPanel: sorted outcomes (blocked -> overwrite -> new -> identical), show-all toggle, risk assessment separated from technical details, full en/ru localization - execute failure preserves dry-run and returns to step 3; submit guard hides Back while POST is in flight; confirm dialog before migration start - task logs: dense one-line rows with expand chevron, compact toolbar (filters/debug/errors/autoscroll/count in one row) - migration dashboard grid timestamps truncated to seconds via formatDateTimeSeconds Tests: +6 backend regression (literal kwargs, outcomes, drift severity, missing-db blocker, catalog degradation, single live fetch), +4 frontend (sorting, legacy fallback, execute recovery). 116 pytest + 261 vitest passed.
Superset Tools Frontend (SvelteKit)
This is the frontend for the Superset Tools application, built with SvelteKit in SPA mode.
Development
-
Install dependencies:
npm install -
Run development server:
npm run devThe frontend will be available at
http://localhost:5173. It is configured to proxy API requests tohttp://localhost:8000.
Production Build
-
Build the static SPA:
npm run buildThis generates a static SPA in the
build/directory. -
Serve with Backend: The Python backend is configured to serve the files from
frontend/build/. Ensure the backend is running:cd ../backend python src/app.py
Architecture
- Routing: File-based routing in
src/routes/. - Layouts: Shared UI in
src/routes/+layout.svelte. - Data Loading:
loadfunctions in+page.tsfor efficient data fetching. - API Client: Centralized API logic in
src/lib/api.js. - Styling: Tailwind CSS.