feat(assistant): add multi-dialog UX, task-aware llm settings, and i18n cleanup

This commit is contained in:
2026-02-23 23:45:01 +03:00
parent 4106542da2
commit 33179ce4c2
30 changed files with 1145 additions and 221 deletions

View File

@@ -202,7 +202,7 @@
// Task status update will be handled by store/websocket
} catch (e) {
console.error("Failed to resume task:", e);
passwordPromptErrorMessage = e.message;
passwordPromptErrorMessage = e.message || ($t.migration?.resume_failed || "Failed to resume task");
// Keep prompt open
}
}
@@ -216,15 +216,15 @@
*/
async function startMigration() {
if (!sourceEnvId || !targetEnvId) {
error = "Please select both source and target environments.";
error = $t.migration?.select_both_envs || "Please select both source and target environments.";
return;
}
if (sourceEnvId === targetEnvId) {
error = "Source and target environments must be different.";
error = $t.migration?.different_envs || "Source and target environments must be different.";
return;
}
if (selectedDashboardIds.length === 0) {
error = "Please select at least one dashboard to migrate.";
error = $t.migration?.select_dashboards || "Please select at least one dashboard to migrate.";
return;
}
@@ -249,7 +249,7 @@
selectedTask.set(task);
} catch (fetchErr) {
// Fallback: create a temporary task object to switch view immediately
console.warn("Could not fetch task details immediately, using placeholder.");
console.warn($t.migration?.task_placeholder_warn || "Could not fetch task details immediately, using placeholder.");
selectedTask.set({
id: result.task_id,
plugin_id: 'superset-migration',
@@ -283,7 +283,7 @@
</div>
{:else}
{#if loading}
<p>Loading environments...</p>
<p>{$t.migration?.loading_envs || "Loading environments..."}</p>
{:else if error}
<div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded mb-4">
{error}
@@ -292,12 +292,12 @@
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
<EnvSelector
label="Source Environment"
label={$t.migration?.source_env || "Source Environment"}
bind:selectedId={sourceEnvId}
{environments}
/>
<EnvSelector
label="Target Environment"
label={$t.migration?.target_env || "Target Environment"}
bind:selectedId={targetEnvId}
{environments}
/>
@@ -305,7 +305,7 @@
<!-- [DEF:DashboardSelectionSection:Component] -->
<div class="mb-8">
<h2 class="text-lg font-medium mb-4">Select Dashboards</h2>
<h2 class="text-lg font-medium mb-4">{$t.migration?.select_dashboards_title || "Select Dashboards"}</h2>
{#if sourceEnvId}
<DashboardGrid
@@ -314,7 +314,7 @@
environmentId={sourceEnvId}
/>
{:else}
<p class="text-gray-500 italic">Select a source environment to view dashboards.</p>
<p class="text-gray-500 italic">{$t.dashboard?.select_source || "Select a source environment to view dashboards."}</p>
{/if}
</div>
<!-- [/DEF:DashboardSelectionSection:Component] -->
@@ -329,15 +329,15 @@
class="h-4 w-4 text-indigo-600 focus:ring-indigo-500 border-gray-300 rounded"
/>
<label for="replace-db" class="ml-2 block text-sm text-gray-900">
Replace Database (Apply Mappings)
{$t.migration?.replace_db || "Replace Database (Apply Mappings)"}
</label>
</div>
{#if replaceDb}
<div class="mb-8 p-4 border rounded-md bg-gray-50">
<h3 class="text-md font-medium mb-4">Database Mappings</h3>
<h3 class="text-md font-medium mb-4">{$t.migration?.database_mappings || "Database Mappings"}</h3>
{#if fetchingDbs}
<p>Loading databases and suggestions...</p>
<p>{$t.migration?.loading_dbs || "Loading databases and suggestions..."}</p>
{:else if sourceDatabases.length > 0}
<MappingTable
{sourceDatabases}
@@ -351,7 +351,7 @@
on:click={fetchDatabases}
class="text-indigo-600 hover:text-indigo-500 text-sm font-medium"
>
Refresh Databases & Suggestions
{$t.migration?.refresh_dbs || "Refresh Databases & Suggestions"}
</button>
{/if}
</div>
@@ -361,7 +361,7 @@
on:click={startMigration}
disabled={!sourceEnvId || !targetEnvId || sourceEnvId === targetEnvId || selectedDashboardIds.length === 0}
>
Start Migration
{$t.migration?.start || "Start Migration"}
</Button>
{/if}
</div>