From dc3d1bbcf7f844d1cb2c5a8c69ce28b07a2effd2 Mon Sep 17 00:00:00 2001 From: Rodrigo Borba Date: Sun, 1 Mar 2026 15:40:10 -0300 Subject: [PATCH] =?UTF-8?q?Fix(Captain):=20Corre=C3=A7=C3=A3o=20na=20gera?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20relat=C3=B3rios=20de=20IA=20e=20adi=C3=A7?= =?UTF-8?q?=C3=A3o=20do=20status=20Confirmada=20nas=20Reservas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- .../v1/accounts/captain/reports/insights_controller.rb | 10 ++++++++-- app/javascript/dashboard/i18n/locale/en/captain.json | 8 +++++--- .../dashboard/i18n/locale/pt_BR/captain.json | 7 +++++-- .../reservations/components/NewReservationModal.vue | 4 ++-- .../dashboard/settings/captain/reports/Index.vue | 9 +++++++-- .../dashboard/store/modules/captainReports.js | 2 +- .../app/jobs/captain/reports/generate_insights_job.rb | 4 ++++ enterprise/app/models/captain/reservation.rb | 6 +++--- 9 files changed, 36 insertions(+), 16 deletions(-) diff --git a/Gemfile b/Gemfile index faec53f56..db3fd7c30 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -ruby '3.4.4' +ruby '>= 3.4.4' ##-- base gems for rails --## gem 'rack-cors', '2.0.0', require: 'rack/cors' diff --git a/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb b/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb index 2eb0f6746..bbf99a836 100644 --- a/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb +++ b/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb @@ -32,6 +32,10 @@ class Api::V1::Accounts::Captain::Reports::InsightsController < Api::V1::Account unit_id = params[:unit_id].present? ? params[:unit_id].to_i : nil inbox_id = params[:inbox_id].present? ? params[:inbox_id].to_i : nil + # Log parameters to help debugging + Rails.logger.info '[Captain::Reports::InsightsController] Generating insight ' \ + "for Unit: #{unit_id}, Inbox: #{inbox_id}, Period: #{period_start} to #{period_end}" + enqueue_insight(unit_id, inbox_id, period_start, period_end) end # rubocop:enable Metrics/AbcSize @@ -69,8 +73,10 @@ class Api::V1::Accounts::Captain::Reports::InsightsController < Api::V1::Account end def parse_date(param, default) - param.present? ? Date.parse(param) : default - rescue ArgumentError + return default if param.blank? + + Date.parse(param.to_s) + rescue ArgumentError, TypeError default end diff --git a/app/javascript/dashboard/i18n/locale/en/captain.json b/app/javascript/dashboard/i18n/locale/en/captain.json index 51c47a848..9df5e7e22 100644 --- a/app/javascript/dashboard/i18n/locale/en/captain.json +++ b/app/javascript/dashboard/i18n/locale/en/captain.json @@ -54,10 +54,12 @@ "ACTIONS": "Actions" }, "STATUS": { - "DRAFT": "Draft", + "SCHEDULED": "Scheduled", "PENDING_PAYMENT": "Awaiting payment", - "CONFIRMED": "Confirmed", - "CANCELLED": "Cancelled" + "ACTIVE": "Active", + "COMPLETED": "Completed", + "CANCELLED": "Cancelled", + "DRAFT": "Draft" }, "ACTIONS": { "OPEN_CONVERSATION": "Open conversation", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/captain.json b/app/javascript/dashboard/i18n/locale/pt_BR/captain.json index fcd34059c..bb43238c9 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/captain.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/captain.json @@ -54,10 +54,13 @@ "ACTIONS": "Ações" }, "STATUS": { - "DRAFT": "Rascunho", + "SCHEDULED": "Agendado", "PENDING_PAYMENT": "Aguardando pagamento", + "ACTIVE": "Ativa", "CONFIRMED": "Confirmada", - "CANCELLED": "Cancelada" + "COMPLETED": "Concluída", + "CANCELLED": "Cancelada", + "DRAFT": "Rascunho" }, "ACTIONS": { "OPEN_CONVERSATION": "Abrir conversa", diff --git a/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue b/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue index 3045c4b0d..b60fe1637 100644 --- a/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue +++ b/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue @@ -76,8 +76,8 @@ const statusOptions = computed(() => [ value: 'pending_payment', }, { - label: t('CAPTAIN_RESERVATIONS.STATUS.ACTIVE'), - value: 'active', + label: t('CAPTAIN_RESERVATIONS.STATUS.CONFIRMED'), + value: 'confirmed', }, ]); 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 1ade106f3..fdafc46bf 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue @@ -33,13 +33,16 @@ const onFilterChange = async event => { }; const onGenerateInsight = async () => { + if (uiFlags.value.isGenerating) return; try { await store.dispatch('captainReports/generateInsight', { inbox_id: selectedInboxId.value, }); useAlert(t('CAPTAIN_REPORTS.GENERATE.SUCCESS')); - } catch { - useAlert(t('CAPTAIN_REPORTS.GENERATE.ERROR')); + } catch (error) { + const errorMessage = + error?.response?.data?.message || t('CAPTAIN_REPORTS.GENERATE.ERROR'); + useAlert(errorMessage); } }; @@ -103,6 +106,7 @@ const periodLabel = insight =>