From a67d164e8fd411d322bce70f1a4f2252eedaf2b9 Mon Sep 17 00:00:00 2001 From: Rodrigo Borba Date: Fri, 27 Feb 2026 07:31:32 -0300 Subject: [PATCH] fix(captain-reports): remove units filter, keep inbox-only filter Replace unit+inbox combined dropdown with inbox-only select. Add ALL_INBOXES i18n key in pt_BR and en. Units (Pix) are unrelated to conversation reports. Co-Authored-By: Claude Sonnet 4.6 --- .../dashboard/i18n/locale/en/settings.json | 3 +- .../dashboard/i18n/locale/pt_BR/settings.json | 1 + .../settings/captain/reports/Index.vue | 67 ++++++------------- 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/en/settings.json b/app/javascript/dashboard/i18n/locale/en/settings.json index e299342ba..559399f08 100644 --- a/app/javascript/dashboard/i18n/locale/en/settings.json +++ b/app/javascript/dashboard/i18n/locale/en/settings.json @@ -1024,9 +1024,10 @@ }, "CAPTAIN_REPORTS": { "TITLE": "AI Reports", - "DESC": "Weekly AI-generated insights based on conversations from each unit.", + "DESC": "Weekly AI-generated insights based on conversations from each inbox.", "LOADING": "Loading reports...", "ALL_UNITS": "All units", + "ALL_INBOXES": "All inboxes", "TABS": { "INSIGHTS": "AI Insights", "OPERATIONAL": "Operational" diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json index e50562fd7..95fea843a 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json @@ -824,6 +824,7 @@ "DESC": "Análises semanais geradas por IA com base nas conversas de cada unidade.", "LOADING": "Carregando relatórios...", "ALL_UNITS": "Todas as unidades", + "ALL_INBOXES": "Todas as caixas de entrada", "TABS": { "INSIGHTS": "Insights IA", "OPERATIONAL": "Operacional" diff --git a/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue b/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue index 29428220a..1ade106f3 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue @@ -10,53 +10,33 @@ import Button from 'dashboard/components-next/button/Button.vue'; const { t } = useI18n(); const store = useStore(); -const units = useMapGetter('captainUnits/getUnits'); const inboxes = useMapGetter('inboxes/getInboxes'); const insights = useMapGetter('captainReports/getInsights'); const uiFlags = useMapGetter('captainReports/getUIFlags'); const activeTab = ref('insights'); -const selectedFilter = ref({ type: 'unit', id: null }); +const selectedInboxId = ref(null); const tabs = [{ key: 'insights' }, { key: 'operational' }]; onMounted(async () => { - await store.dispatch('captainUnits/get'); await store.dispatch('inboxes/get'); - await store.dispatch('captainReports/fetchInsights', { - unit_id: null, - }); + await store.dispatch('captainReports/fetchInsights', {}); }); const onFilterChange = async event => { const value = event.target.value; - if (!value) { - selectedFilter.value = { type: 'unit', id: null }; - } else { - const [type, id] = value.split(':'); - selectedFilter.value = { type, id: Number(id) }; - } - - const params = {}; - if (selectedFilter.value.type === 'unit') { - params.unit_id = selectedFilter.value.id; - } else { - params.inbox_id = selectedFilter.value.id; - } - - await store.dispatch('captainReports/fetchInsights', params); + selectedInboxId.value = value ? Number(value) : null; + await store.dispatch('captainReports/fetchInsights', { + inbox_id: selectedInboxId.value, + }); }; const onGenerateInsight = async () => { - const params = {}; - if (selectedFilter.value.type === 'unit') { - params.unit_id = selectedFilter.value.id; - } else { - params.inbox_id = selectedFilter.value.id; - } - try { - await store.dispatch('captainReports/generateInsight', params); + await store.dispatch('captainReports/generateInsight', { + inbox_id: selectedInboxId.value, + }); useAlert(t('CAPTAIN_REPORTS.GENERATE.SUCCESS')); } catch { useAlert(t('CAPTAIN_REPORTS.GENERATE.ERROR')); @@ -108,25 +88,16 @@ const periodLabel = insight => class="rounded-lg border border-n-weak bg-n-alpha-1 px-3 py-2 text-sm text-n-slate-12 focus:outline-none focus:ring-2 focus:ring-n-brand" @change="onFilterChange" > - - - - - - - + +