From 3182002bd9025ca77d42abbd3a56004fcf9fa2d0 Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Sat, 2 May 2026 07:54:01 -0300 Subject: [PATCH] feat(captain): engine column + DB-driven Hermes routing + Express pricing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Marca cada Captain::Assistant com engine ('captain_interno' | 'hermes') e move o roteamento Hermes do env var pro banco — admin troca engine re-apontando a inbox no painel, sem deploy. Mantém fallback pras env vars antigas (CAPTAIN_HERMES_INBOX_IDS etc) durante a migração gradual, pra não quebrar Valentina antes da re-associação. Frontend: badge "Hermes" (âmbar) ou "Interno" (cinza) ao lado de cada assistant no dropdown switcher e no card da listagem, com chaves i18n em en + pt_BR. Tabela de preço (pricing_tables.rb): adiciona unit Express (id=5) e estende a estrutura pra aceitar preço por dia da semana (mon_wed/thu_sun) — necessário pro Express, retrocompatível com Dolce Amore (preço único). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../captain/assistant/AssistantCard.vue | 30 ++++- .../switcher/AssistantSwitcher.vue | 14 ++ .../i18n/locale/en/integrations.json | 6 +- .../i18n/locale/pt_BR/integrations.json | 6 +- ...033000_add_engine_to_captain_assistants.rb | 8 ++ .../accounts/captain/assistants_controller.rb | 1 + enterprise/app/models/captain/assistant.rb | 16 +++ enterprise/app/services/captain/hermes.rb | 84 ++++++++---- .../services/captain/mcp/pricing_tables.rb | 124 ++++++++++++++++-- .../models/captain/_assistant.json.jbuilder | 3 + 10 files changed, 244 insertions(+), 48 deletions(-) create mode 100644 db/migrate/20260502033000_add_engine_to_captain_assistants.rb diff --git a/app/javascript/dashboard/components-next/captain/assistant/AssistantCard.vue b/app/javascript/dashboard/components-next/captain/assistant/AssistantCard.vue index 7e80cd32c..f6b366a4d 100644 --- a/app/javascript/dashboard/components-next/captain/assistant/AssistantCard.vue +++ b/app/javascript/dashboard/components-next/captain/assistant/AssistantCard.vue @@ -26,6 +26,10 @@ const props = defineProps({ type: Number, required: true, }, + engine: { + type: String, + default: 'captain_interno', + }, }); const emit = defineEmits(['action']); @@ -76,11 +80,27 @@ const handleAction = ({ action, value }) => {