linter + новые таски
This commit is contained in:
@@ -7,17 +7,52 @@ Alex manages dozens of dashboards across Dev, Staging, and Prod. Alex needs to q
|
||||
## Context
|
||||
The current UI is "Tool-Centric" (Go to Migration Tool -> Select Dashboard). The new UI is "Resource-Centric" (Go to Dashboards -> Find "Sales" -> Click Migrate).
|
||||
|
||||
## Happy Path: Migrating a Dashboard
|
||||
## Happy Path: Migrating Dashboards (Bulk)
|
||||
|
||||
1. **Discovery**: Alex opens the app and lands on the **Dashboard Hub**.
|
||||
2. **Selection**: Alex selects "Production" from the environment dropdown. The grid populates with production dashboards.
|
||||
3. **Status Check**: Alex sees that "Sales Overview" has a "Diff" status in the Git column.
|
||||
4. **Action**: Alex clicks the `[...]` menu on the "Sales Overview" row and selects **Migrate**.
|
||||
5. **Configuration**: A small modal appears asking for the **Target Environment**. Alex selects "Staging" and clicks "Start".
|
||||
6. **Monitoring**: The modal closes. The "Last Task" column for "Sales Overview" changes to a **Spinner**.
|
||||
7. **Contextual Logs**: Alex clicks the Spinner. The **Task Drawer** slides out from the right.
|
||||
8. **Interaction**: The logs show the migration is paused because a database password is required. A password field appears *inside* the drawer.
|
||||
9. **Completion**: Alex enters the password. The migration finishes. The drawer shows a green "Success" message. Alex closes the drawer and is still looking at the Dashboard Hub list.
|
||||
3. **Bulk Selection**: Alex clicks "Select Visible" to select all 10 dashboards on the current page, then manually unchecks 2 dashboards.
|
||||
4. **Action**: A floating panel appears at the bottom: "[✓ 8 selected] [Migrate] [Backup]". Alex clicks **Migrate**.
|
||||
5. **Configuration**: A modal appears showing:
|
||||
- Source: Production (read-only)
|
||||
- Target Environment dropdown: Alex selects "Staging"
|
||||
- Database Mappings table showing existing mappings with match percentages
|
||||
- Selected dashboards list (8 items)
|
||||
6. **Mapping Review**: Alex sees one database has 85% match and clicks "Edit" to adjust the mapping.
|
||||
7. **Start**: Alex clicks "Start Migration". The modal closes.
|
||||
8. **Monitoring**: The **Task Drawer** slides out from the right automatically, showing 8 migration tasks starting.
|
||||
9. **Interaction**: One migration is paused because a database password is required. A password field appears *inside* the drawer.
|
||||
10. **Completion**: Alex enters the password. All 8 migrations finish. The drawer shows green "Success" messages. Alex closes the drawer and is still looking at the Dashboard Hub list.
|
||||
|
||||
## Happy Path: Backing Up Dashboards (Scheduled)
|
||||
|
||||
1. **Discovery**: Alex opens the app and lands on the **Dashboard Hub**.
|
||||
2. **Selection**: Alex selects "Production" from the environment dropdown.
|
||||
3. **Bulk Selection**: Alex manually checks 3 critical dashboards: "Sales Overview", "HR Analytics", "Finance Dashboard".
|
||||
4. **Action**: The floating panel appears: "[✓ 3 selected] [Migrate] [Backup]". Alex clicks **Backup**.
|
||||
5. **Configuration**: A modal appears showing:
|
||||
- Environment: Production (read-only)
|
||||
- Selected dashboards list (3 items)
|
||||
- Schedule options: "One-time backup" or "Schedule backup"
|
||||
6. **Schedule Setup**: Alex selects "Schedule backup" and enters cron expression "0 2 * * *" for daily 2 AM backups.
|
||||
7. **Start**: Alex clicks "Start Backup". The modal closes.
|
||||
8. **Monitoring**: The **Task Drawer** slides out showing the backup task running.
|
||||
9. **Completion**: The backup finishes successfully. The drawer confirms the schedule is set up. Alex closes the drawer.
|
||||
|
||||
## Happy Path: Mapping Dataset Columns
|
||||
|
||||
1. **Discovery**: Alex navigates to **Datasets** in the sidebar.
|
||||
2. **Selection**: Alex selects "Production" environment. The grid shows all datasets.
|
||||
3. **Search**: Alex types "sales" in the search box to filter to sales-related datasets.
|
||||
4. **Selection**: Alex checks 2 datasets: "Sales Data" and "Sales Summary".
|
||||
5. **Action**: The floating panel appears: "[✓ 2 selected] [Map Columns] [Generate Docs]". Alex clicks **Map Columns**.
|
||||
6. **Configuration**: A modal appears:
|
||||
- Source selection: "PostgreSQL Comments" or "Upload XLSX"
|
||||
- Connection dropdown: Alex selects "Prod_PG_Readonly"
|
||||
7. **Preview**: The modal shows a preview of current vs new column names based on PostgreSQL comments.
|
||||
8. **Apply**: Alex clicks "Apply Mapping". The modal closes.
|
||||
9. **Monitoring**: The **Task Drawer** slides out showing the mapping progress.
|
||||
10. **Completion**: Both datasets are updated with verbose names from PostgreSQL comments. Alex closes the drawer and sees the "Mapped" column updated to 100% for both datasets.
|
||||
|
||||
## Mockups
|
||||
|
||||
@@ -68,18 +103,256 @@ The current UI is "Tool-Centric" (Go to Migration Tool -> Select Dashboard). The
|
||||
+---+
|
||||
```
|
||||
|
||||
### Dataset Hub Grid
|
||||
```text
|
||||
+-----------------------------------------------------------------------+
|
||||
| Env: [ Production (v) ] [🔍 Search...] [ Refresh ] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| [☑] Select All [☐] Select Visible (5) |
|
||||
+-----------------------------------------------------------------------+
|
||||
| ☐ | Name | Database | Schema | Tables | Columns | Mapped | Updated By | Actions |
|
||||
|----|-----------------|---------------|--------|--------|---------|--------|------------|---------|
|
||||
| ☑ | Sales Data | Prod_CH | sales | 3 | 45/50 | 90% | john.doe | [...] |
|
||||
| ☐ | HR Analytics | Prod_PG | hr | 5 | 32/40 | 80% | jane.smith | [...] |
|
||||
| ☐ | Finance Metrics | Prod_CH | fin | 2 | 28/28 | 100% | admin | [...] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Showing 1-10 of 120 | [<] 1 2 3 4 5 [>] | Rows per page: [10 (v)] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| [✓ 1 selected] [Map Columns] [Generate Docs] [Validate] |
|
||||
+-----------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Columns:**
|
||||
- **Name**: Dataset name (clickable to view details)
|
||||
- **Database**: Source database name (e.g., Prod_CH, Prod_PG)
|
||||
- **Schema**: Database schema name
|
||||
- **Tables**: Count of SQL tables extracted from dataset's SQL scripts
|
||||
- **Columns**: Total column count (X/Y where Y = total, X = mapped)
|
||||
- **Mapped**: Percentage of columns with verbose_name filled
|
||||
- **Updated By**: User who last modified the dataset
|
||||
- **Actions**: Dropdown with individual actions
|
||||
|
||||
**Bulk Actions Panel (appears when datasets are selected):**
|
||||
- Shows count of selected datasets
|
||||
- **Map Columns**: Opens modal to configure column mappings from external source (PostgreSQL comments or XLSX)
|
||||
- **Generate Docs**: Uses LLM to generate documentation for selected datasets
|
||||
- **Validate**: Validates dataset structure and data integrity
|
||||
|
||||
**Selection Controls:**
|
||||
- **Select All**: Selects all datasets across all pages
|
||||
- **Select Visible**: Selects only datasets on current page
|
||||
- Individual checkboxes for granular selection
|
||||
|
||||
**Search:**
|
||||
- Real-time search by dataset name, schema, or table names
|
||||
- Filters the list immediately as user types
|
||||
|
||||
### Dataset Detail View
|
||||
```text
|
||||
+-----------------------------------------------------------------------+
|
||||
| ← Back to Datasets Sales Data [ Refresh ] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Database: Prod_CH | Schema: sales | Updated: 2024-01-15 14:30 |
|
||||
| Updated By: john.doe | Owner: john.doe |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Tables (3): |
|
||||
| +-----------------------------------------------------------------+ |
|
||||
| | Table: sales_transactions | |
|
||||
| | Columns: 25 (22 mapped - 88%) | |
|
||||
| | [View Columns] [Map Columns] | |
|
||||
| +-----------------------------------------------------------------+ |
|
||||
| | Table: sales_summary | |
|
||||
| | Columns: 15 (15 mapped - 100%) | |
|
||||
| | [View Columns] [Map Columns] | |
|
||||
| +-----------------------------------------------------------------+ |
|
||||
| | Table: sales_by_region | |
|
||||
| | Columns: 10 (10 mapped - 100%) | |
|
||||
| | [View Columns] [Map Columns] | |
|
||||
| +-----------------------------------------------------------------+ |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Linked Dashboards (5): |
|
||||
| • Sales Overview • Sales Trends • Regional Sales • ... [+More] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Actions: |
|
||||
| [Generate Documentation] [Validate Structure] [Export Metadata] |
|
||||
+-----------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Features:**
|
||||
- Shows dataset metadata at top
|
||||
- Lists all SQL tables extracted from dataset
|
||||
- For each table: column count, mapping percentage, quick actions
|
||||
- Shows linked dashboards (requires dataset-to-dashboard relationship algorithm)
|
||||
- Bulk actions for the entire dataset
|
||||
|
||||
### Column Mapping Modal
|
||||
```text
|
||||
+---------------------------------------------------------------+
|
||||
| Map Columns: sales_transactions (Sales Data) [X] |
|
||||
+---------------------------------------------------------------+
|
||||
| |
|
||||
| Source: [ PostgreSQL Comments (v) ] |
|
||||
| Connection: [ Prod_PG_Readonly (v) ] [Test] |
|
||||
| |
|
||||
| Or upload file: [ Choose XLSX file... ] |
|
||||
| |
|
||||
| Mapping Preview: |
|
||||
| +-----------------------------------------------------------+ |
|
||||
| | Column Name | Current Verbose | New Verbose | |
|
||||
| |-------------------|-----------------|----------------| |
|
||||
| | id | ID | Transaction ID | |
|
||||
| | transaction_date | Date | Transaction Date| |
|
||||
| | amount | Amount | Amount ($) | |
|
||||
| | customer_id | Customer ID | Customer ID | |
|
||||
| +-----------------------------------------------------------+ |
|
||||
| |
|
||||
| [ Cancel ] [ Apply Mapping ] |
|
||||
+---------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Features:**
|
||||
- Choose between PostgreSQL comments or XLSX file as source
|
||||
- Select connection for PostgreSQL
|
||||
- Upload XLSX file with column mappings
|
||||
- Preview of current vs new verbose names
|
||||
- Applies mapping to Superset dataset via MapperPlugin
|
||||
|
||||
### Documentation Generation Modal
|
||||
```text
|
||||
+---------------------------------------------------------------+
|
||||
| Generate Documentation: Sales Data [X] |
|
||||
+---------------------------------------------------------------+
|
||||
| |
|
||||
| Selected datasets (2): |
|
||||
| ☑ Sales Data |
|
||||
| ☑ HR Analytics |
|
||||
| |
|
||||
| LLM Provider: [ OpenAI GPT-4 (v) ] |
|
||||
| |
|
||||
| Options: |
|
||||
| ☐ Include column descriptions |
|
||||
| ☑ Generate usage examples |
|
||||
| ☐ Add business context |
|
||||
| |
|
||||
| Language: [ English (v) ] |
|
||||
| |
|
||||
| [ Cancel ] [ Generate ] |
|
||||
+---------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Features:**
|
||||
- Lists selected datasets
|
||||
- Select LLM provider for generation
|
||||
- Options for documentation scope
|
||||
- Language selection
|
||||
- Task Drawer opens to show generation progress
|
||||
|
||||
### Dashboard Hub Grid
|
||||
```text
|
||||
+-----------------------------------------------------------------------+
|
||||
| Env: [ Production (v) ] [ Refresh ] |
|
||||
| Env: [ Production (v) ] [🔍 Search...] [ Refresh ] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Title | Git Status | Last Task | Actions |
|
||||
|-----------------|---------------|-----------|-------------------------|
|
||||
| Sales Report | [v] main | [v] Done | [ Migrate ] [ Backup ] |
|
||||
| HR Analytics | [!] Diff | [@] Run.. | [ Commit ] [ ... ] |
|
||||
| [☑] Select All [☐] Select Visible (5) |
|
||||
+-----------------------------------------------------------------------+
|
||||
| ☐ | Title | Git Status | Last Task | Actions |
|
||||
|----|-----------------|---------------|-----------|-----------------------|
|
||||
| ☑ | Sales Report | [v] main | [v] Done | [...] |
|
||||
| ☐ | HR Analytics | [!] Diff | [@] Run.. | [...] |
|
||||
| ☐ | Finance Overview| [v] main | [v] Done | [...] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Showing 1-10 of 45 | [<] 1 2 3 4 5 [>] | Rows per page: [10 (v)] |
|
||||
+-----------------------------------------------------------------------+
|
||||
| [✓ 1 selected] [Migrate] [Backup] |
|
||||
+-----------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Bulk Actions Panel (appears when dashboards are selected):**
|
||||
- Shows count of selected dashboards
|
||||
- **Migrate** button: Opens modal for target environment selection and database mapping configuration
|
||||
- **Backup** button: Opens modal for backup configuration (with optional cron schedule setup)
|
||||
- Panel slides up from bottom or appears as floating bar at bottom
|
||||
|
||||
**Selection Controls:**
|
||||
- **Select All**: Selects all dashboards across all pages (shows total count)
|
||||
- **Select Visible**: Selects only dashboards on current page (shows visible count)
|
||||
- Individual checkboxes in each row for granular selection
|
||||
|
||||
**Pagination:**
|
||||
- Classic pagination with page numbers
|
||||
- "Rows per page" dropdown (10, 25, 50, 100)
|
||||
- Shows "Showing X-Y of Z total"
|
||||
|
||||
**Search:**
|
||||
- Real-time search by dashboard title/slug
|
||||
- Filters the list immediately as user types
|
||||
|
||||
### Bulk Migration Modal
|
||||
```text
|
||||
+---------------------------------------------------------------+
|
||||
| Migrate 3 Dashboards [X] |
|
||||
+---------------------------------------------------------------+
|
||||
| |
|
||||
| Source Environment: Production (read-only) |
|
||||
| |
|
||||
| Target Environment: [ Staging (v) ] |
|
||||
| |
|
||||
| Database Mappings: |
|
||||
| +-----------------------------------------------------------+ |
|
||||
| | Source Database | Target Database | Match % | |
|
||||
| |------------------------|-----------------|----------| |
|
||||
| | Prod_Clickhouse_10 | Staging_CH_10 | 95% | [Edit]|
|
||||
| | Prod_Postgres_5 | Staging_PG_5 | 100% | [Edit]|
|
||||
| +-----------------------------------------------------------+ |
|
||||
| |
|
||||
| Selected dashboards: |
|
||||
| ☑ Sales Report |
|
||||
| ☑ HR Analytics |
|
||||
| ☑ Finance Overview |
|
||||
| |
|
||||
| [ Cancel ] [ Start Migration ] |
|
||||
+---------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Features:**
|
||||
- Shows source environment (read-only, from current hub view)
|
||||
- Dropdown to select target environment
|
||||
- Displays database mappings between source and target
|
||||
- Shows match confidence percentage (from fuzzy matching)
|
||||
- "Edit" button to modify mappings if needed
|
||||
- Lists all selected dashboards
|
||||
- Task Drawer opens automatically after starting migration
|
||||
|
||||
### Bulk Backup Modal
|
||||
```text
|
||||
+---------------------------------------------------------------+
|
||||
| Backup 3 Dashboards [X] |
|
||||
+---------------------------------------------------------------+
|
||||
| |
|
||||
| Environment: Production (read-only) |
|
||||
| |
|
||||
| Selected dashboards: |
|
||||
| ☑ Sales Report |
|
||||
| ☑ HR Analytics |
|
||||
| ☑ Finance Overview |
|
||||
| |
|
||||
| Schedule: |
|
||||
| ○ One-time backup |
|
||||
| ○ Schedule backup: |
|
||||
| Cron expression: [ 0 2 * * * ] (daily at 2 AM) |
|
||||
| [ Help with cron syntax ] |
|
||||
| |
|
||||
| [ Cancel ] [ Start Backup ] |
|
||||
+---------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Features:**
|
||||
- Shows environment (read-only, from current hub view)
|
||||
- Lists all selected dashboards
|
||||
- Option for one-time backup or scheduled backup
|
||||
- Cron expression input for scheduling
|
||||
- Link to cron syntax help
|
||||
- Task Drawer opens automatically after starting backup
|
||||
|
||||
### Settings Page (Consolidated)
|
||||
```text
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
Reference in New Issue
Block a user