Files
ss-tools/frontend/src/lib/i18n/locales/en/migration.json
busya 20071b8c7a security: fullstack hardening — task ownership, mapping validation, API-key scoping, test fixes
Backend:
- Add validate_mapping_database_ownership() to verify source/target UUIDs
  belong to declared environments before persisting mappings (mappings.py)
- Add API-key environment scoping to get_mappings (filter) and
  suggest_mappings_api (enforce) (mappings.py)
- Add user_id Column to TaskRecord model + Alembic migration (task.py)
- Persist task.user_id on save, restore on load (persistence.py)
- Wire current_user.id into migrate_dashboards + backup_dashboards
  task creation (_action_routes.py)
- Fix test_migration_routes.py: module-level patch leak → autouse fixture,
  SupersetClient→AsyncSupersetClient, AsyncMock for sync_environment/run
- Fix 7 Pydantic serializer warnings: 'PENDING'→TaskStatus.PENDING
  in test_tasks.py + import TaskStatus

Frontend:
- Deepen isDryRunResult(): validate selection field, risk.items entries
  (all 5 fields), and diff object uuids individually (ExecutorModel.svelte.ts)

Prior work included: task password redaction, resume ownership checks,
canonical dry-run DTO alignment, migration UI callback fixes, credential
exposure reduction, assistant dry-run await fix.
2026-07-15 23:02:23 +03:00

65 lines
3.7 KiB
JSON

{
"source_env": "Source Environment",
"target_env": "Target Environment",
"loading_envs": "Loading environments...",
"loading_envs_failed": "Failed to load environments",
"select_both_envs": "Please select both source and target environments.",
"different_envs": "Source and target environments must be different.",
"select_dashboards": "Please select at least one dashboard to migrate.",
"select_dashboards_title": "Select Dashboards",
"replace_db": "Replace Database (Apply Mappings)",
"database_mappings": "Database Mappings",
"select_target_database": "Select target database",
"mapping_custom_selection": "Selected manually",
"loading_dbs": "Loading databases and suggestions...",
"refresh_dbs": "Refresh Databases & Suggestions",
"start": "Start Migration",
"resume_failed": "Failed to resume task",
"mapping_saved": "Mapping saved successfully",
"mapping_management": "Database Mapping Management",
"fetch_dbs": "Fetch Databases & Suggestions",
"mapping_hint": "Select environments and click \"Fetch Databases\" to start mapping.",
"help_source_env": "Select the source environment — where dashboards will be migrated from. Databases from this environment will be mapped to target environment databases.",
"help_target_env": "Select the target environment — where dashboards will be migrated to. Each source database needs to be mapped to a target database.",
"help_fetch_dbs": "Loads the list of databases from both environments and automatically suggests matches based on database name similarity.",
"help_mapping_status": "Database mapping status: «Saved» — mapping confirmed, «Suggested X%» — automatic name-based recommendation, «Not mapped» — no mapping set.",
"instructions_title": "How It Works",
"instructions_step1": "Select environments",
"instructions_step1_desc": "Source environment — where dashboards are migrated from, target — where they go. Environments must be different.",
"instructions_step2": "Click \"Fetch Databases & Suggestions\"",
"instructions_step2_desc": "Databases from both environments, existing mappings, and automatic suggestions based on name similarity will be loaded.",
"instructions_step3": "Map databases",
"instructions_step3_desc": "Use the dropdown to select the corresponding target database for each source database. Rows with auto-suggestions are highlighted in green.",
"instructions_step4": "Save mappings",
"instructions_step4_desc": "Mapping is saved automatically when you select a database in the dropdown. The status will change to «Saved».",
"task_placeholder_warn": "Could not fetch task details immediately, using placeholder.",
"dry_run": "Dry Run",
"calculating_dry_run": "Running pre-flight analysis...",
"starting": "Starting...",
"step_environments": "Environments",
"step_dashboards": "Dashboards",
"step_review": "Review",
"step_migrate": "Migrate",
"options": "Options",
"review_validate": "Review & Validate",
"selected_dashboards": "Selected Dashboards",
"dashboards": "Dashboards",
"charts": "Charts",
"datasets": "Datasets",
"create": "Create",
"update": "Update",
"delete": "Delete",
"risk_assessment": "Risk Assessment",
"risk_score": "Score",
"risk_level_low": "Low",
"risk_level_medium": "Medium",
"risk_level_high": "High",
"no_issues": "No issues detected.",
"no_dry_run": "Run a dry-run to see the migration summary here.",
"get_started": "Get Started",
"select_environment_prompt": "Select environments to start",
"diff_json": "Diff JSON",
"migration_starting": "Starting Migration...",
"dry_run_summary": "Dry-run report: {total} items will be changed (Dashboards: {dashboards}, Charts: {charts}, Datasets: {datasets})"
}