From cd7721fb03de490717542821eaf94e801a1606dc Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 15 May 2026 07:57:42 -0400 Subject: [PATCH] feat(fc2b): Settings Maintenance tab MaintenancePanel hosts: backfill + centroid recompute trigger cards, the five suggestion-threshold sliders (autosave on slider release), the allowlist table (inline editable min_confidence, delete), and the alias table (mapping display, delete). Wired as a third Settings tab, ML settings loaded lazily when the tab opens. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/components/settings/AliasTable.vue | 43 +++++++++++++++++ .../components/settings/AllowlistTable.vue | 48 +++++++++++++++++++ .../settings/CentroidRecomputeCard.vue | 30 ++++++++++++ .../components/settings/MLBackfillCard.vue | 29 +++++++++++ .../settings/MLThresholdSliders.vue | 40 ++++++++++++++++ .../components/settings/MaintenancePanel.vue | 32 +++++++++++++ frontend/src/views/SettingsView.vue | 10 ++++ 7 files changed, 232 insertions(+) create mode 100644 frontend/src/components/settings/AliasTable.vue create mode 100644 frontend/src/components/settings/AllowlistTable.vue create mode 100644 frontend/src/components/settings/CentroidRecomputeCard.vue create mode 100644 frontend/src/components/settings/MLBackfillCard.vue create mode 100644 frontend/src/components/settings/MLThresholdSliders.vue create mode 100644 frontend/src/components/settings/MaintenancePanel.vue diff --git a/frontend/src/components/settings/AliasTable.vue b/frontend/src/components/settings/AliasTable.vue new file mode 100644 index 0000000..d21f08d --- /dev/null +++ b/frontend/src/components/settings/AliasTable.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/frontend/src/components/settings/AllowlistTable.vue b/frontend/src/components/settings/AllowlistTable.vue new file mode 100644 index 0000000..9448125 --- /dev/null +++ b/frontend/src/components/settings/AllowlistTable.vue @@ -0,0 +1,48 @@ + + + diff --git a/frontend/src/components/settings/CentroidRecomputeCard.vue b/frontend/src/components/settings/CentroidRecomputeCard.vue new file mode 100644 index 0000000..22bf4bd --- /dev/null +++ b/frontend/src/components/settings/CentroidRecomputeCard.vue @@ -0,0 +1,30 @@ + + + diff --git a/frontend/src/components/settings/MLBackfillCard.vue b/frontend/src/components/settings/MLBackfillCard.vue new file mode 100644 index 0000000..4380971 --- /dev/null +++ b/frontend/src/components/settings/MLBackfillCard.vue @@ -0,0 +1,29 @@ + + + diff --git a/frontend/src/components/settings/MLThresholdSliders.vue b/frontend/src/components/settings/MLThresholdSliders.vue new file mode 100644 index 0000000..34304d3 --- /dev/null +++ b/frontend/src/components/settings/MLThresholdSliders.vue @@ -0,0 +1,40 @@ + + + diff --git a/frontend/src/components/settings/MaintenancePanel.vue b/frontend/src/components/settings/MaintenancePanel.vue new file mode 100644 index 0000000..e6e963d --- /dev/null +++ b/frontend/src/components/settings/MaintenancePanel.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index a0b854f..df49b72 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -5,6 +5,7 @@ Overview Import + Maintenance @@ -26,6 +27,10 @@ + + + + @@ -38,10 +43,13 @@ import SystemStatsCards from '../components/settings/SystemStatsCards.vue' import ImportTriggerPanel from '../components/settings/ImportTriggerPanel.vue' import ImportFiltersForm from '../components/settings/ImportFiltersForm.vue' import ImportTaskList from '../components/settings/ImportTaskList.vue' +import MaintenancePanel from '../components/settings/MaintenancePanel.vue' +import { useMLStore } from '../stores/ml.js' const tab = ref('overview') const system = useSystemStore() const importStore = useImportStore() +const mlStore = useMLStore() let pollId = null @@ -72,6 +80,8 @@ watch(tab, (t) => { if (t === 'import') { importStore.refreshStatus() importStore.loadTasks(true) + } else if (t === 'maintenance') { + mlStore.loadSettings() } })