UI nova dentro do Construtor (Hermes) — TabBar com Chat e Verificação. Verificação roda HermesBuilder::Validator (DB+runtime) e exibe resultado agrupado por categoria, com botão Refazer inline em FAIL/WARN reparáveis. Backend (porta dos checks DB do CLI bin/hermes-validate): - HermesBuilder::Validator com 22+ checks: engine, profile, port, secret, parent, unit, Brand, CaptainInbox sync (o bug que travou Juliana), pricing dry-run, Inter creds, typing/response_delay, registry MCP completo. - HermesBuilder::Repairer com 4 handlers automáticos: set_engine_hermes, sync_captain_inbox_unit, set_default_typing_delay, set_default_response_delay. - Endpoints novos: GET assistants, GET validate?slug=, POST repair. Frontend: - builder/Index.vue: wrapper com TabBar. - builder/BuilderChat.vue: extraído do Index original. - builder/BuilderVerification.vue: dropdown + Conferir agora + lista agrupada por categoria com badges + botão Refazer inline. i18n: keys em pt_BR e en sob CAPTAIN_HERMES_BUILDER.VERIFY.*. Filesystem/systemd checks ficam pro CLI hermes-validate (Rails container não enxerga /root/.hermes/profiles do host). Validado HTTP: GET /validate?slug=juliana_qnn1 → 28 PASS / 0 FAIL / 1 WARN. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
940 lines
36 KiB
JSON
940 lines
36 KiB
JSON
{
|
||
"CAPTAIN_RESERVATIONS": {
|
||
"HEADER": "Reservas",
|
||
"EMPTY": "Nenhuma reserva encontrada.",
|
||
"CREATE_SUCCESS": "Reserva criada com sucesso.",
|
||
"CREATE_ERROR": "Erro ao criar reserva.",
|
||
"NEW_RESERVATION_MODAL": {
|
||
"TITLE": "Nova Reserva",
|
||
"CONFIRM": "Criar Reserva",
|
||
"CANCEL": "Cancelar",
|
||
"FIELDS": {
|
||
"CONTACT_ID": "ID do Contato",
|
||
"CONTACT_ID_PLACEHOLDER": "Digite o ID do contato",
|
||
"INBOX": "Canal (Caixa de Entrada)",
|
||
"INBOX_PLACEHOLDER": "Selecione a caixa de entrada",
|
||
"STATUS": "Status da Reserva",
|
||
"STATUS_PLACEHOLDER": "Selecione o status",
|
||
"SUITE_IDENTIFIER": "Identificador da Suíte (Ex: 101, Suíte Master)",
|
||
"CHECK_IN": "Check-in",
|
||
"CHECK_OUT": "Check-out",
|
||
"TOTAL_AMOUNT": "Valor Total"
|
||
}
|
||
},
|
||
"VIEW": {
|
||
"LIST": "Lista",
|
||
"KANBAN": "Kanban",
|
||
"REVENUE": "Faturamento"
|
||
},
|
||
"FILTERS": {
|
||
"SEARCH": "Buscar por nome, CPF ou telefone",
|
||
"STATUS": "Status",
|
||
"STATUS_ALL": "Todos os status",
|
||
"UNIT": "Unidade",
|
||
"UNIT_ALL": "Todas as unidades",
|
||
"SUITE": "Suíte",
|
||
"DATE_FROM": "De",
|
||
"DATE_TO": "Até",
|
||
"SORT": "Ordenação",
|
||
"SORT_DEFAULT": "Prioridade operacional",
|
||
"SORT_CHECK_IN": "Data de check-in",
|
||
"SORT_UPDATED": "Última atualização",
|
||
"SORT_CREATED": "Data de criação",
|
||
"APPLY": "Aplicar filtros",
|
||
"CLEAR": "Limpar filtros",
|
||
"HIDE": "Ocultar filtros"
|
||
},
|
||
"KPI": {
|
||
"TOTAL": "Total na página",
|
||
"PENDING_PIX": "Aguardando PIX",
|
||
"CHECKIN_TODAY": "Check-in hoje",
|
||
"REVENUE_TODAY": "Receita hoje"
|
||
},
|
||
"PILLS": {
|
||
"ALL": "Todas",
|
||
"DRAFT": "Rascunho",
|
||
"PENDING_PAYMENT": "Aguardando PIX",
|
||
"CONFIRMED": "Confirmadas",
|
||
"CANCELLED": "Canceladas"
|
||
},
|
||
"QUICK_DATE": {
|
||
"TODAY": "Hoje",
|
||
"TOMORROW": "Amanhã",
|
||
"WEEK": "7 dias",
|
||
"ALL": "Tudo"
|
||
},
|
||
"CARD": {
|
||
"CHECK_IN": "Check-in",
|
||
"AMOUNT": "Valor",
|
||
"TODAY": "Hoje",
|
||
"TOMORROW": "Amanhã",
|
||
"YESTERDAY": "Ontem",
|
||
"PIX_EXPIRED": "Expirado",
|
||
"PIX_EXPIRES_IN_MIN": "Expira em {minutes}min",
|
||
"PIX_EXPIRES_IN_HR": "Expira em {hours}h"
|
||
},
|
||
"TABLE": {
|
||
"CUSTOMER": "Cliente",
|
||
"UNIT": "Unidade",
|
||
"SUITE": "Suíte",
|
||
"CHECK_IN": "Check-in",
|
||
"AMOUNT": "Valor",
|
||
"STATUS": "Status",
|
||
"UPDATED_AT": "Atualização",
|
||
"ACTIONS": "Ações"
|
||
},
|
||
"STATUS": {
|
||
"SCHEDULED": "Agendado",
|
||
"PENDING_PAYMENT": "Aguardando pagamento",
|
||
"ACTIVE": "Ativa",
|
||
"CONFIRMED": "Confirmada",
|
||
"COMPLETED": "Concluída",
|
||
"CANCELLED": "Cancelada",
|
||
"DRAFT": "Rascunho"
|
||
},
|
||
"ACTIONS": {
|
||
"OPEN_CONVERSATION": "Abrir conversa",
|
||
"COPY_PIX": "Copiar Pix",
|
||
"MORE": "Mais",
|
||
"REGENERATE_PIX": "Reenviar PIX",
|
||
"MARK_AS_PAID": "Marcar como paga",
|
||
"MARK_AS_PAID_CONFIRM": "Marcar esta reserva como paga manualmente?",
|
||
"MARKED_AS_PAID": "Reserva marcada como paga.",
|
||
"MARK_AS_PAID_FAILED": "Falha ao marcar como paga.",
|
||
"CANCEL": "Cancelar reserva",
|
||
"CANCEL_REASON_PROMPT": "Motivo do cancelamento (opcional):",
|
||
"CANCELLED": "Reserva cancelada.",
|
||
"CANCEL_FAILED": "Falha ao cancelar.",
|
||
"PIX_REGENERATED": "Novo PIX gerado e enviado.",
|
||
"PIX_REGENERATE_FAILED": "Falha ao reenviar PIX."
|
||
},
|
||
"KANBAN": {
|
||
"EMPTY_COLUMN": "Nenhuma reserva neste status."
|
||
},
|
||
"REVENUE": {
|
||
"ONLY_CONFIRMED": "O faturamento considera apenas reservas com status confirmado.",
|
||
"SUMMARY": {
|
||
"TOTAL_REVENUE": "Faturamento total",
|
||
"CONFIRMED_COUNT": "Reservas confirmadas",
|
||
"AVERAGE_TICKET": "Ticket médio"
|
||
},
|
||
"CHARTS": {
|
||
"BY_UNIT": "Faturamento por unidade",
|
||
"BY_SUITE": "Faturamento por suíte"
|
||
},
|
||
"API": {
|
||
"ERROR": "Não foi possível carregar o faturamento."
|
||
}
|
||
},
|
||
"SIDEBAR": {
|
||
"NO_RESERVATION": "Nenhuma reserva vinculada a esta conversa.",
|
||
"LOADING": "Carregando detalhes da reserva...",
|
||
"STATUS": "Status",
|
||
"SUITE": "Suíte",
|
||
"CHECK_IN": "Check-in",
|
||
"CHECK_OUT": "Check-out",
|
||
"AMOUNT": "Valor",
|
||
"UPDATED_AT": "Atualizado em"
|
||
},
|
||
"API": {
|
||
"PIX_EXPIRED": "O Pix desta reserva expirou.",
|
||
"PIX_NOT_GENERATED": "O Pix ainda não foi gerado.",
|
||
"PIX_COPIED": "Pix copiado com sucesso.",
|
||
"PIX_COPY_FAILED": "Não foi possível copiar o Pix."
|
||
}
|
||
},
|
||
"CAPTAIN_ORCHESTRATOR_EDITOR": {
|
||
"MISSING_DELIMITER_PREFIX": "Este prompt foi salvo antes da separação em seções. Todo o conteúdo aparece no campo \"Prompt Base do Sistema\". Clique em",
|
||
"MISSING_DELIMITER_BUTTON": "Restaurar Padrão",
|
||
"MISSING_DELIMITER_SUFFIX": "para obter a separação automática, ou reorganize manualmente movendo o conteúdo do assistente para o campo correto."
|
||
},
|
||
"CAPTAIN_ROLETA": {
|
||
"HEADER": "Roleta da Sorte — Resgate",
|
||
"TAB_REDEEM": "Resgate",
|
||
"TAB_REPORT": "Relatório",
|
||
"REDEEM": {
|
||
"TITLE": "Entregar prêmio ao cliente",
|
||
"DESC": "Digite o código que o cliente mostrou no WhatsApp e confirme o resgate. A Jasmine manda automaticamente uma confirmação pro cliente.",
|
||
"CODE_LABEL": "Código do cupom",
|
||
"CODE_PLACEHOLDER": "Ex: ABC123",
|
||
"NOTES_LABEL": "Observação (opcional)",
|
||
"NOTES_PLACEHOLDER": "Qualquer detalhe sobre o resgate",
|
||
"SUBMIT": "Confirmar resgate",
|
||
"SUBMITTING": "Registrando...",
|
||
"SUCCESS_PREFIX": "{prize} entregue para ",
|
||
"SUCCESS_FULL": "✅ {prize} entregue para {name}.",
|
||
"ERROR_FULL": "⚠️ {message}",
|
||
"FALLBACK_CLIENT": "cliente",
|
||
"ERROR_EMPTY_CODE": "Digite o código impresso no cupom do cliente.",
|
||
"ERROR_NOT_FOUND": "Código não encontrado. Confere se digitou direito.",
|
||
"ERROR_ALREADY_REDEEMED": "Esse cupom já foi resgatado antes.",
|
||
"ERROR_NO_PRIZE": "Esse cupom caiu em \"Sem sorte\" — não tem nada pra entregar.",
|
||
"ERROR_NO_RECEPTIONIST": "Faz login de novo e tenta outra vez.",
|
||
"ERROR_RPC_FAILED": "Erro ao chamar o servidor de reservas.",
|
||
"ERROR_EXCEPTION": "Algo quebrou. Avisa o time técnico.",
|
||
"ERROR_DEFAULT": "Não foi registrado."
|
||
},
|
||
"HISTORY": {
|
||
"TITLE": "Cupons ativos (últimos 7 dias)",
|
||
"LOADING": "Carregando...",
|
||
"EMPTY": "Nenhum cupom ativo nos últimos dias.",
|
||
"LOAD_ERROR": "Erro ao carregar cupons pendentes",
|
||
"COL_CODE": "Código",
|
||
"COL_PRIZE": "Prêmio",
|
||
"COL_CLIENT": "Cliente",
|
||
"COL_GENERATED": "Gerado",
|
||
"COL_STATUS": "Resgate",
|
||
"STATUS_REDEEMED_PREFIX": "✅ ",
|
||
"STATUS_PENDING": "⏳ Aguardando"
|
||
},
|
||
"REPORT": {
|
||
"TITLE": "Relatório de resgates por recepcionista",
|
||
"DESC": "Anti-fraude: flaga quem resgatou muito acima da média da equipe.",
|
||
"PERIOD_7": "Últimos 7 dias",
|
||
"PERIOD_14": "Últimos 14 dias",
|
||
"PERIOD_30": "Últimos 30 dias",
|
||
"LOADING": "Carregando relatório...",
|
||
"EMPTY": "Nenhum resgate registrado nesse período.",
|
||
"LOAD_ERROR": "Erro ao carregar relatório",
|
||
"KPI_TOTAL": "Total resgates",
|
||
"KPI_AVG": "Média por pessoa",
|
||
"KPI_COUNT": "Recepcionistas ativas",
|
||
"KPI_THRESHOLD": "Limite de alerta",
|
||
"KPI_THRESHOLD_PREFIX": "≥ ",
|
||
"COL_RECEPTIONIST": "Recepcionista",
|
||
"COL_TOTAL": "Total",
|
||
"COL_BRINDES": "Brindes",
|
||
"COL_DESCONTOS": "Descontos",
|
||
"COL_SUM_DISCOUNT": "Σ % desconto",
|
||
"COL_STATUS": "Status",
|
||
"STATUS_ANOMALY": "⚠️ Acima da média",
|
||
"STATUS_NORMAL": "Normal",
|
||
"FOOTER_HINT": "Alerta dispara quando a recepcionista tem ≥ {threshold} resgates (mínimo 5, ou 2,5× a média da equipe). Investigue conversas do cliente no WhatsApp pra confirmar."
|
||
}
|
||
},
|
||
"CAPTAIN_FUNNEL": {
|
||
"HEADER": "Funil de Conversão",
|
||
"DESC": "Acompanhe a jornada do cliente da pergunta de preço até o Pix pago. Identifica onde os clientes mais desistem.",
|
||
"PERIOD_7": "7 dias",
|
||
"PERIOD_30": "30 dias",
|
||
"PERIOD_60": "60 dias",
|
||
"PERIOD_90": "90 dias",
|
||
"LOADING": "Carregando funil...",
|
||
"EMPTY": "Nenhuma conversa do Captain nesse período. Ajuste o intervalo.",
|
||
"LOAD_ERROR": "Erro ao carregar funil",
|
||
"INSIGHT_LABEL": "Maior ponto de abandono",
|
||
"INSIGHT_FULL": "{lost} clientes caíram entre \"{from}\" e \"{to}\" — isso é {pct} dos que chegaram na etapa anterior.",
|
||
"FUNNEL_TITLE": "Funil geral ({count} conversas analisadas)",
|
||
"BY_SUITE_TITLE": "Por categoria de suíte",
|
||
"BY_SUITE_HEADER": "Suíte",
|
||
"BY_SUITE_FOOTER": "Categoria detectada por menção no conteúdo da conversa. Conversas sem menção específica não aparecem nesse breakdown.",
|
||
"STAGES": {
|
||
"price_inquiry": "Perguntou preço",
|
||
"price_answered": "Recebeu cotação",
|
||
"reservation_drafted": "Reserva iniciada",
|
||
"pix_generated": "Pix gerado",
|
||
"pix_paid": "Pix pago"
|
||
}
|
||
},
|
||
"CAPTAIN_SETTINGS": {
|
||
"TITLE": "Configurações do Captain",
|
||
"UNITS": {
|
||
"TITLE": "Unidades Pix",
|
||
"DESC": "Gerencie as configurações de diferentes unidades Pix Integradas com Banco Inter.",
|
||
"ADD_UNIT": "Adicionar Unidade",
|
||
"EDIT_UNIT": "Editar Unidade",
|
||
"DELETE_UNIT": "Deletar Unidade",
|
||
"LIST": {
|
||
"TABLE_HEADER": [
|
||
"Pix Key",
|
||
"Conta",
|
||
"Certificados",
|
||
"Monitoramento",
|
||
"Ações"
|
||
],
|
||
"CERT": "Cert",
|
||
"KEY": "Key",
|
||
"PROACTIVE_ON": "Auto-check ligado",
|
||
"PROACTIVE_OFF": "Auto-check desligado",
|
||
"SEPARATOR": "|",
|
||
"ADD_NEW_UNIT": "Adicione uma Unidade Pix",
|
||
"NO_UNITS_MESSAGE": "Ainda não há nenhuma unidade pix inserida. Crie uma agora para começar a receber pelo pix do Banco Inter."
|
||
},
|
||
"DELETE": {
|
||
"BUTTON_TEXT": "Excluir",
|
||
"TITLE": "Excluir Unidade Pix",
|
||
"DESC": "Tem certeza de que deseja excluir esta unidade pix? Esta ação não pode ser desfeita.",
|
||
"CONFIRM": {
|
||
"TITLE": "Confirmar Exclusão",
|
||
"MESSAGE": "Tem certeza que deseja apagar a Unidade?",
|
||
"YES": "Excluir",
|
||
"NO": "Cancelar"
|
||
},
|
||
"API": {
|
||
"SUCCESS_MESSAGE": "Unidade excluída com sucesso.",
|
||
"ERROR_MESSAGE": "Houve um erro ao tentar excluir a unidade."
|
||
}
|
||
},
|
||
"ADD": {
|
||
"TITLE": "Nova Unidade Pix",
|
||
"DESC": "Adicione as credenciais do seu app Banco Inter",
|
||
"CANCEL_BUTTON_TEXT": "Cancelar",
|
||
"SUBMIT_BUTTON_TEXT": "Criar unidade",
|
||
"API": {
|
||
"SUCCESS_MESSAGE": "Unidade criada com sucesso!",
|
||
"ERROR_MESSAGE": "Houve um erro ao tentar criar a unidade."
|
||
}
|
||
},
|
||
"EDIT": {
|
||
"TITLE": "Editar Unidade Pix",
|
||
"DESC": "Atualize as credenciais do Banco Inter",
|
||
"CANCEL_BUTTON_TEXT": "Cancelar",
|
||
"SUBMIT_BUTTON_TEXT": "Salvar unidade",
|
||
"API": {
|
||
"SUCCESS_MESSAGE": "Unidade atualizada com sucesso!",
|
||
"ERROR_MESSAGE": "Houve um erro ao tentar atualizar."
|
||
}
|
||
},
|
||
"FORM": {
|
||
"NAME": {
|
||
"LABEL": "Nome da Unidade",
|
||
"PLACEHOLDER": "Ex: Matriz",
|
||
"ERROR": "O nome é obrigatório"
|
||
},
|
||
"INTER_PIX_KEY": {
|
||
"LABEL": "Chave Pix (do app Inter)",
|
||
"PLACEHOLDER": "Ex: 12.345.678/0001-90",
|
||
"ERROR": "A chave Pix é obrigatória",
|
||
"HELP_TEXT": "Sua chave Pix que receberá as cobranças"
|
||
},
|
||
"INTER_ACCOUNT_NUMBER": {
|
||
"LABEL": "Número da conta Inter",
|
||
"PLACEHOLDER": "Ex: 1234567-8",
|
||
"ERROR": "O número da conta é obrigatório"
|
||
},
|
||
"INTER_CLIENT_ID": {
|
||
"LABEL": "Client ID do App Inter",
|
||
"PLACEHOLDER": ""
|
||
},
|
||
"INTER_CLIENT_SECRET": {
|
||
"LABEL": "Client Secret do App Inter",
|
||
"PLACEHOLDER": ""
|
||
},
|
||
"INTER_CERT_CONTENT": {
|
||
"LABEL": "Conteúdo do Certificado (.crt)",
|
||
"PLACEHOLDER": "Cole o texto contido no arquivo .crt aqui...",
|
||
"UPLOAD_BUTTON": "Importar arquivo .crt"
|
||
},
|
||
"INTER_KEY_CONTENT": {
|
||
"LABEL": "Conteúdo da Chave (.key)",
|
||
"PLACEHOLDER": "Cole o texto contido no arquivo .key aqui...",
|
||
"UPLOAD_BUTTON": "Importar arquivo .key"
|
||
},
|
||
"PROACTIVE_PIX_POLLING": {
|
||
"LABEL": "Confirmação proativa de pagamento (Banco Inter)",
|
||
"CHECKBOX_LABEL": "Verificar pagamento automaticamente a cada 10 minutos por até 1 hora",
|
||
"HELP_TEXT": "Quando habilitado, o sistema consulta o Inter de forma proativa para confirmar pagamentos Pix pendentes.",
|
||
"DISABLED_HELP_TEXT": "Complete as credenciais do Banco Inter (Client ID/Secret, conta, chave Pix, certificado e chave) para habilitar."
|
||
},
|
||
"CERT_PRESENT_HELP": "Certificado já configurado.",
|
||
"CANCEL": "Cancelar",
|
||
"SAVE": "Salvar"
|
||
},
|
||
"INBOX": {
|
||
"LABEL": "Unidade Pix",
|
||
"PLACEHOLDER": "Selecione uma unidade",
|
||
"NO_UNIT": "Nenhuma unidade vinculada",
|
||
"CONNECT_UNIT_LABEL": "Vincular Unidade Pix",
|
||
"CONNECT_UNIT_PLACEHOLDER": "Escolha a unidade Inter para este inbox",
|
||
"CONNECT_UNIT_HELP": "Selecione qual Unidade Pix deve ser usada nesta caixa de entrada."
|
||
},
|
||
"TEST": {
|
||
"HEADER_TITLE": "Validação de Header",
|
||
"HEADER_DESCRIPTION": "Teste visual para validar carregamento da página.",
|
||
"BODY_TEXT": "Se esta tela abrir, o problema não está no layout base e sim na tabela ou no Vuex."
|
||
}
|
||
},
|
||
"GALLERY": {
|
||
"TITLE": "Galeria",
|
||
"DESC": "Gerencie as fotos de suítes que os subagentes podem enviar para os clientes.",
|
||
"ADD_ITEM": "Adicionar Foto",
|
||
"EDIT_ITEM": "Editar",
|
||
"DELETE_ITEM": "Excluir",
|
||
"LIST": {
|
||
"TABLE_HEADER": [
|
||
"Imagem",
|
||
"Caixa de entrada e descrição",
|
||
"Categoria",
|
||
"Suíte",
|
||
"Ações"
|
||
],
|
||
"ADD_NEW_ITEM": "Adicione fotos na galeria",
|
||
"NO_ITEMS_MESSAGE": "Ainda não há fotos cadastradas para envio automático aos clientes.",
|
||
"VIEW_URL": "URL da Imagem"
|
||
},
|
||
"DELETE": {
|
||
"CONFIRM": {
|
||
"TITLE": "Excluir foto",
|
||
"MESSAGE": "Tem certeza que deseja excluir esta foto da galeria?",
|
||
"YES": "Excluir"
|
||
},
|
||
"API": {
|
||
"SUCCESS_MESSAGE": "Foto excluída com sucesso.",
|
||
"ERROR_MESSAGE": "Não foi possível excluir a foto."
|
||
}
|
||
},
|
||
"ADD": {
|
||
"TITLE": "Nova foto da galeria",
|
||
"DESC": "Cadastre uma foto de suíte e os metadados para busca pelo agente.",
|
||
"SUBMIT_BUTTON_TEXT": "Salvar foto",
|
||
"API": {
|
||
"SUCCESS_MESSAGE": "Foto cadastrada com sucesso!",
|
||
"ERROR_MESSAGE": "Não foi possível cadastrar a foto."
|
||
}
|
||
},
|
||
"EDIT": {
|
||
"TITLE": "Editar foto da galeria",
|
||
"DESC": "Atualize os dados e a imagem da galeria.",
|
||
"SUBMIT_BUTTON_TEXT": "Salvar alterações",
|
||
"API": {
|
||
"SUCCESS_MESSAGE": "Foto atualizada com sucesso!",
|
||
"ERROR_MESSAGE": "Não foi possível atualizar a foto."
|
||
}
|
||
},
|
||
"FORM": {
|
||
"INBOX": {
|
||
"LABEL": "Caixa de entrada",
|
||
"GLOBAL_OPTION": "Global (todas as caixas)",
|
||
"HELP": "Selecione a caixa de entrada onde essas fotos podem ser usadas.",
|
||
"GLOBAL_HELP": "Essas fotos podem ser usadas por agentes em qualquer caixa de entrada.",
|
||
"SPECIFIC_HELP": "Essas fotos serão usadas somente na caixa de entrada {inbox}."
|
||
},
|
||
"SUITE_CATEGORY": {
|
||
"LABEL": "Categoria",
|
||
"PLACEHOLDER": "Ex: Hidromassagem",
|
||
"ERROR": "A categoria é obrigatória"
|
||
},
|
||
"SUITE_NUMBER": {
|
||
"LABEL": "Nome/identificador",
|
||
"PLACEHOLDER": "Ex: 101",
|
||
"ERROR": "O identificador é obrigatório"
|
||
},
|
||
"DESCRIPTION": {
|
||
"LABEL": "Descrição da foto",
|
||
"PLACEHOLDER": "Descreva rapidamente o que aparece na imagem",
|
||
"ERROR": "A descrição é obrigatória"
|
||
},
|
||
"IMAGE": {
|
||
"LABEL": "Imagem",
|
||
"HELP_TEXT": "Use imagens nítidas. Formatos recomendados: PNG/JPG.",
|
||
"ERROR": "A imagem é obrigatória",
|
||
"PREVIEW_ALT": "Pré-visualização da foto"
|
||
},
|
||
"ACTIVE": {
|
||
"LABEL": "Disponível para envio pelos agentes"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"CAPTAIN": {
|
||
"BANNER": {
|
||
"RESPONSES": "Você usou mais de 80% do seu limite de respostas. Para continuar usando o Capitão IA, faça um upgrade.",
|
||
"DOCUMENTS": "Limite de documentos atingido. Faça um upgrade para continuar usando o Capitão IA."
|
||
},
|
||
"FORM": {
|
||
"CANCEL": "Cancelar",
|
||
"CREATE": "Criar",
|
||
"EDIT": "Atualizar"
|
||
},
|
||
"RESPONSES": {
|
||
"HEADER": "FAQs",
|
||
"PENDING_FAQS": "FAQs Pendentes",
|
||
"ADD_NEW": "Criar nova FAQ",
|
||
"DOCUMENTABLE": {
|
||
"CONVERSATION": "Conversação #{id}"
|
||
},
|
||
"SELECTED": "{count} selecionado",
|
||
"SELECT_ALL": "Selecionar todos ({count})",
|
||
"UNSELECT_ALL": "Desmarcar todos ({count})",
|
||
"SEARCH_PLACEHOLDER": "Pesquisar FAQs...",
|
||
"BULK_APPROVE_BUTTON": "Aprovar",
|
||
"BULK_DELETE_BUTTON": "Excluir",
|
||
"BULK_APPROVE": {
|
||
"SUCCESS_MESSAGE": "Perguntas Frequentes aprovadas com sucesso",
|
||
"ERROR_MESSAGE": "Ocorreu um erro ao aproveitar as Perguntas Frequentes. Tente novamente."
|
||
},
|
||
"BULK_DELETE": {
|
||
"TITLE": "Excluir as Perguntas Frequentes?",
|
||
"DESCRIPTION": "Tem certeza que deseja excluir as Perguntas Frequentes selecionadas? Esta ação não pode ser desfeita.",
|
||
"CONFIRM": "Sim, excluir todas",
|
||
"SUCCESS_MESSAGE": "Perguntas Frequentes excluídas com sucesso",
|
||
"ERROR_MESSAGE": "Ocorreu um erro ao excluir as Perguntas Frequentes, por favor tente novamente."
|
||
},
|
||
"DELETE": {
|
||
"TITLE": "Tem certeza que deseja excluir o FAQ?",
|
||
"DESCRIPTION": "",
|
||
"CONFIRM": "Sim, excluir",
|
||
"SUCCESS_MESSAGE": "FAQ excluída com sucesso",
|
||
"ERROR_MESSAGE": "Ocorreu um erro ao excluir a FAQ, por favor tente novamente."
|
||
}
|
||
}
|
||
},
|
||
"CAPTAIN_REPORTS": {
|
||
"TITLE": "Relatórios IA",
|
||
"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",
|
||
"UNITS_GROUP": "Unidades Pix",
|
||
"INBOXES_GROUP": "Caixas de Entrada",
|
||
"TABS": {
|
||
"DASHBOARD": "Dashboard",
|
||
"INSIGHTS": "Insights IA",
|
||
"OPERATIONAL": "Operacional",
|
||
"EXECUTIVE": "Executivo",
|
||
"LANDING_PAGES": "Landing Pages",
|
||
"RETENTION": "Retenção"
|
||
},
|
||
"RETENTION": {
|
||
"PERIOD_LABEL": "Período",
|
||
"PERIOD_THIS_MONTH": "Este mês",
|
||
"PERIOD_LAST_30": "Últimos 30 dias",
|
||
"PERIOD_LAST_90": "Últimos 90 dias",
|
||
"PERIOD_CUSTOM": "Personalizado",
|
||
"APPLY": "Aplicar",
|
||
"NO_DATA": "Sem dados.",
|
||
"KPI": {
|
||
"ACTIVE": "Clientes ativos",
|
||
"ACTIVE_HINT": "última interação nos últimos 30 dias",
|
||
"RECURRING": "Recorrentes",
|
||
"RECURRING_HINT": "≥2 interações qualificadas em 90 dias",
|
||
"RETURN_30D": "Taxa de retorno 30d",
|
||
"RETURN_30D_HINT": "voltaram a interagir em 7 dias",
|
||
"PIX_CONVERSION": "Conversão Pix",
|
||
"PIX_CONVERSION_HINT": "{paid} pagos de {generated} gerados"
|
||
},
|
||
"FLOW": {
|
||
"TITLE": "Fluxo do período",
|
||
"NEW_IN_PERIOD": "novos no período",
|
||
"RETURNED_IN_PERIOD": "retornaram no período",
|
||
"TOTAL_TOUCHES": "interações totais",
|
||
"BASE_STATUS": "Situação atual da base",
|
||
"SLEEPING": "{count} adormecidos",
|
||
"SLEEPING_HINT": "30-90d sem contato",
|
||
"AT_RISK": "{count} em risco",
|
||
"AT_RISK_HINT": "90-180d sem contato",
|
||
"CHURNED": "{count} inativos",
|
||
"CHURNED_HINT": "180d+ sem contato"
|
||
},
|
||
"COHORT": {
|
||
"TITLE": "Matriz de cohort",
|
||
"SUBTITLE": "% de clientes de cada cohort que voltaram a interagir em M+N meses.",
|
||
"EXPORT_CSV": "Exportar CSV",
|
||
"EMPTY": "Ainda não há cohorts com dados.",
|
||
"COL_COHORT": "Cohort",
|
||
"COL_SIZE": "Tamanho",
|
||
"CELL_TITLE": "{count} contatos ativos ({rate}%)"
|
||
},
|
||
"BADGE": {
|
||
"STATUS_FIRST": "Primeiro contato",
|
||
"STATUS_INACTIVE": "Inativo",
|
||
"STATUS_AT_RISK": "Em risco",
|
||
"STATUS_SLEEPING": "Adormecido",
|
||
"STATUS_RECURRING": "Recorrente",
|
||
"STATUS_ACTIVE": "Ativo",
|
||
"LAST_INTERACTION": "última {days}",
|
||
"INTERACTIONS_LABEL": "interação | interações",
|
||
"INTERACTIONS_TITLE": "Interações qualificadas (≥2+2 mensagens)",
|
||
"ONE_SHOT_LABEL": "one-shot",
|
||
"ONE_SHOT_TITLE": "Consultas one-shot (≥1+1)",
|
||
"PIX_LABEL": "Pix pagos",
|
||
"PIX_TITLE": "Pix gerados / reservas pagas",
|
||
"DAYS_TODAY": "hoje",
|
||
"DAYS_YESTERDAY": "ontem",
|
||
"DAYS_RECENT": "há {days} dias",
|
||
"DAYS_ONE_MONTH": "há cerca de 1 mês",
|
||
"DAYS_MONTHS": "há {months} meses",
|
||
"DAYS_YEARS": "há {years} anos"
|
||
},
|
||
"ERRORS": {
|
||
"SUMMARY": "Falha ao carregar KPIs de retenção",
|
||
"COHORT": "Falha ao carregar cohort"
|
||
}
|
||
},
|
||
"EXECUTIVE": {
|
||
"LOADING": "Carregando digest executivo...",
|
||
"NO_DATA": "Sem insights gerados para o período. Rode a análise semanal pra ver os dados aqui.",
|
||
"TITLE": "Digest Executivo",
|
||
"SUBTITLE": "Mesmo relatório enviado ao Mattermost, com drill-down e filtros.",
|
||
"DELIVER_BUTTON": "Enviar ao Mattermost agora",
|
||
"DELIVER_SUCCESS": "Digest enfileirado. Vai chegar no Mattermost em instantes.",
|
||
"DELIVER_ERROR": "Falha ao disparar o digest. Veja o log do Rails.",
|
||
"CONVERSATIONS": "Conversas",
|
||
"MESSAGES": "Mensagens",
|
||
"UNITS_ANALYZED": "Unidades analisadas",
|
||
"INSIGHTS_COUNT": "Insights gerados",
|
||
"UNIT_TABLE": "Comparativo por unidade",
|
||
"COL_UNIT": "Unidade",
|
||
"COL_CONVS": "Conversas",
|
||
"COL_DELTA": "vs semana anterior",
|
||
"COL_AI_RATE": "Taxa de acerto IA",
|
||
"COL_FAILURES": "Falhas",
|
||
"AI_FAILURES": "Onde a Angelina errou (clique pra ver conversas)",
|
||
"OPPORTUNITIES": "Oportunidades — o que clientes pediram",
|
||
"OPPORTUNITIES_HINT": "Clique em uma oportunidade pra ver as conversas reais onde foi mencionada.",
|
||
"COMPLAINTS": "Reclamações recorrentes",
|
||
"PRAISES": "Elogios recorrentes",
|
||
"RECOMMENDATIONS": "Recomendações da IA",
|
||
"DRILLDOWN_TITLE": "Conversas relacionadas",
|
||
"NO_CONVERSATIONS_FOUND": "Nenhuma conversa encontrada com essas palavras no período.",
|
||
"NO_CONVERSATIONS_HINT": "A descrição do insight é uma abstração da IA. Se nenhuma palavra-chave bateu com o texto literal das conversas, nada é retornado. Tente clicar em outro item mais específico.",
|
||
"SEARCH_TOKENS": "Palavras buscadas",
|
||
"OPEN_CONVERSATION": "Abrir no Chatwoot"
|
||
},
|
||
"LP": {
|
||
"LOADING": "Carregando dados...",
|
||
"NO_DATA": "Nenhum clique registrado ainda. Integre o pixel na landing page para ver os dados aqui.",
|
||
"TOTAL_CLICKS": "Total de Cliques",
|
||
"TOTAL_CONVERSIONS": "Conversões (WhatsApp)",
|
||
"CONVERSION_RATE": "Taxa de Conversão",
|
||
"TOTAL_DROPOFF": "Perdas (sem conversa)",
|
||
"DROPOFF_RATE": "Taxa de Perda",
|
||
"UNIQUE_CONTACTS": "Contatos únicos convertidos",
|
||
"FUNNEL_TITLE": "Funil da landing page",
|
||
"DAILY_TREND": "Tendência diária de cliques vs conversões",
|
||
"BY_SOURCE": "Cliques por Origem",
|
||
"BY_CAMPAIGN": "Cliques por Campanha",
|
||
"BY_HOSTNAME": "Cliques por Landing Page",
|
||
"CLICKS": "cliques",
|
||
"CONV": "conv",
|
||
"REFRESH": "Atualizar",
|
||
"LEGEND_CLICKS": "Cliques",
|
||
"LEGEND_CONVERSIONS": "Conversões"
|
||
},
|
||
"FILTER_DATE": {
|
||
"LABEL": "Período:",
|
||
"START": "Data Início",
|
||
"END": "Data Fim",
|
||
"TODAY": "Hoje",
|
||
"YESTERDAY": "Ontem",
|
||
"LAST_7_DAYS": "Últimos 7 dias",
|
||
"LAST_30_DAYS": "Últimos 30 dias",
|
||
"THIS_WEEK": "Esta semana",
|
||
"LAST_WEEK": "Semana Passada",
|
||
"CURRENT_MONTH": "Mês Atual",
|
||
"LAST_MONTH": "Mês Passado",
|
||
"CUSTOM": "Personalizado",
|
||
"SEPARATOR": "-"
|
||
},
|
||
"INSIGHT": {
|
||
"CONVERSATIONS": "conversas",
|
||
"MESSAGES": "mensagens",
|
||
"TOP_TOPICS": "Principais tópicos",
|
||
"AI_FAILURES": "Falhas da IA",
|
||
"BULLET": "•",
|
||
"COUNT_PREFIX": "(",
|
||
"COUNT_SUFFIX": ")",
|
||
"TIMES": "x",
|
||
"SENTIMENT": "Sentimento",
|
||
"SENTIMENT_POSITIVE": "Positivo",
|
||
"SENTIMENT_NEGATIVE": "Negativo",
|
||
"SENTIMENT_NEUTRAL": "Neutro",
|
||
"PRAISES": "Elogios dos clientes",
|
||
"COMPLAINTS": "Reclamações",
|
||
"FAQ_GAPS": "Lacunas no FAQ",
|
||
"FAQ_GAPS_HINT": "Perguntas que os clientes fazem mas o agente não cobre",
|
||
"MOST_REQUESTED_SUITES": "Suítes mais pedidas",
|
||
"PRICE_REACTIONS": "Reação a preços",
|
||
"PRICE_OBJECTIONS": "objeções de preço",
|
||
"RECOMMENDATIONS": "Recomendações",
|
||
"SHOW_DETAILS": "Ver análise completa",
|
||
"HIDE_DETAILS": "Ocultar detalhes"
|
||
},
|
||
"EMPTY": {
|
||
"TITLE": "Nenhum relatório gerado",
|
||
"MESSAGE": "Gere um novo relatório para analisar o desempenho do atendimento."
|
||
},
|
||
"GENERATE": {
|
||
"BUTTON": "Gerar Análise",
|
||
"SUCCESS": "Relatório solicitado com sucesso! Pode levar alguns minutos.",
|
||
"ERROR": "Erro ao solicitar geração do relatório.",
|
||
"DATE_REQUIRED": "Por favor, selecione as datas de início e fim."
|
||
},
|
||
"STATUS": {
|
||
"PENDING": "Pendente",
|
||
"PROCESSING": "Processando",
|
||
"DONE": "Concluído",
|
||
"FAILED": "Falhou"
|
||
},
|
||
"OPERATIONAL": {
|
||
"LOADING": "Carregando dados operacionais...",
|
||
"NO_DATA": "Sem dados operacionais para o período selecionado.",
|
||
"CONVERSATIONS_SECTION": "Conversas",
|
||
"RESERVATIONS_SECTION": "Reservas",
|
||
"TOTAL": "Total",
|
||
"RESOLVED": "Resolvidas",
|
||
"OPEN": "Em aberto",
|
||
"AVG_RESOLUTION": "Tempo médio de resolução",
|
||
"RES_TOTAL": "Total de reservas",
|
||
"RES_PAID": "Pagas",
|
||
"RES_EXPIRED": "Expiradas",
|
||
"RES_REVENUE": "Receita paga",
|
||
"BY_INBOX": "Volume por canal",
|
||
"RESOLUTION_RATE_TOOLTIP": "Taxa de resolução",
|
||
"DAILY_DIST": "Distribuição por dia",
|
||
"HOURLY_DIST": "Distribuição por hora",
|
||
"PEAK": "Pico"
|
||
},
|
||
"DASHBOARD": {
|
||
"TOTAL_CONVERSATIONS": "Conversas analisadas",
|
||
"AVG_SENTIMENT": "Sentimento positivo médio",
|
||
"FAQ_GAPS_TOTAL": "Lacunas de FAQ identificadas",
|
||
"WEEKS_ANALYZED": "semanas analisadas",
|
||
"NO_DATA": "Dados insuficientes. Gere mais relatórios de IA para ver o dashboard.",
|
||
"SENTIMENT_TREND": "Tendência de sentimento por semana",
|
||
"FAILURES_RANKING": "Ranking de falhas do agente",
|
||
"FAILURES_RANKING_HINT": "Situações mais frequentes em que a IA não conseguiu responder bem",
|
||
"FAQ_PRIORITY": "FAQ prioritário para criar",
|
||
"FAQ_PRIORITY_HINT": "Perguntas que os clientes mais fazem e ainda não estão no FAQ",
|
||
"CUSTOMER_BEHAVIOR": "Comportamento dos clientes",
|
||
"TOP_TOPICS_TITLE": "Assuntos mais discutidos",
|
||
"SUITES_TITLE": "Suítes mais solicitadas",
|
||
"COMPLAINTS_TREND": "Volume de reclamações por semana",
|
||
"HANDOFFS_TITLE": "Estimativa de transferências para humano",
|
||
"HANDOFFS_HINT": "Baseado na frequência de falhas do agente. Rastreamento direto de transferências em breve.",
|
||
"TREND_UP": "em alta",
|
||
"TREND_DOWN": "em queda",
|
||
"TREND_STABLE": "estável",
|
||
"WEEKS": "semanas"
|
||
},
|
||
"FAQ_QUICK_ADD": {
|
||
"BUTTON": "Criar FAQ",
|
||
"TITLE": "Criar FAQ a partir da sugestão da IA",
|
||
"QUESTION_LABEL": "Pergunta (sugerida pela IA)",
|
||
"ANSWER_LABEL": "Resposta",
|
||
"ANSWER_PLACEHOLDER": "Escreva a resposta para esta pergunta...",
|
||
"ASSISTANT_LABEL": "Agente de IA",
|
||
"ASSISTANT_PLACEHOLDER": "Selecione o agente",
|
||
"CANCEL": "Cancelar",
|
||
"SAVE": "Salvar FAQ",
|
||
"SUCCESS": "FAQ criado com sucesso!",
|
||
"ERROR": "Erro ao criar FAQ. Tente novamente."
|
||
}
|
||
},
|
||
"CAPTAIN_LIFECYCLE": {
|
||
"HEADER": "Jornada do Cliente",
|
||
"SUBTITLE": "Automação de mensagens WhatsApp no ciclo de vida da reserva",
|
||
"TABS": {
|
||
"RULES": "Regras",
|
||
"SETTINGS": "Configurações",
|
||
"HISTORY": "Histórico"
|
||
},
|
||
"RULES": {
|
||
"EMPTY": "Nenhuma regra configurada ainda.",
|
||
"CREATE": "Nova regra",
|
||
"TEMPLATES_TITLE": "Templates prontos",
|
||
"COLUMNS": {
|
||
"NAME": "Nome",
|
||
"EVENT": "Evento",
|
||
"OFFSET": "Offset",
|
||
"FILTER": "Filtro",
|
||
"STATUS": "Status",
|
||
"ACTIONS": "Ações"
|
||
},
|
||
"STATUS": {
|
||
"ENABLED": "Ativo",
|
||
"DISABLED": "Desativado"
|
||
},
|
||
"ACTIONS": {
|
||
"EDIT": "Editar",
|
||
"DUPLICATE": "Duplicar",
|
||
"TOGGLE": "Ativar/Desativar",
|
||
"DELETE": "Excluir"
|
||
},
|
||
"DELETE_CONFIRM": "Tem certeza que deseja excluir esta regra?",
|
||
"TOAST": {
|
||
"CREATED": "Regra criada com sucesso.",
|
||
"UPDATED": "Regra atualizada.",
|
||
"DELETED": "Regra excluída."
|
||
},
|
||
"WIZARD": {
|
||
"TITLE_CREATE": "Nova regra",
|
||
"TITLE_EDIT": "Editar regra",
|
||
"STEP_WHEN": "Quando?",
|
||
"STEP_WHO": "Pra quem?",
|
||
"STEP_WHAT": "O quê?",
|
||
"STEP_REVIEW": "Revisão",
|
||
"NEXT": "Próximo",
|
||
"BACK": "Voltar",
|
||
"SAVE": "Salvar",
|
||
"CANCEL": "Cancelar",
|
||
"OFFSET_UNIT_LABEL": "min",
|
||
"STEP_LABELS": {
|
||
"WHEN": "1. Quando?",
|
||
"WHO": "2. Pra quem?",
|
||
"WHAT": "3. O quê?",
|
||
"REVIEW_TAB": "4. Revisão"
|
||
},
|
||
"REVIEW": {
|
||
"NAME": "Nome:",
|
||
"EVENT": "Evento:",
|
||
"OFFSET": "Offset (min):",
|
||
"UNITS": "Unidades:",
|
||
"MESSAGE": "Mensagem:"
|
||
},
|
||
"FIELDS": {
|
||
"NAME": "Nome da regra",
|
||
"DESCRIPTION": "Descrição",
|
||
"EVENT": "Evento gatilho",
|
||
"OFFSET_VALUE": "Valor",
|
||
"OFFSET_UNIT": "Unidade",
|
||
"OFFSET_DIRECTION": "Direção",
|
||
"UNITS": "Unidades",
|
||
"CATEGORIAS": "Categorias de suíte",
|
||
"PERMANENCIAS": "Tipos de permanência",
|
||
"MESSAGE_TYPE": "Tipo de mensagem",
|
||
"MESSAGE_BODY": "Texto da mensagem",
|
||
"PRIORITY": "Prioridade",
|
||
"ENABLED": "Regra ativa"
|
||
},
|
||
"OFFSET_UNITS": {
|
||
"MINUTES": "Minutos",
|
||
"HOURS": "Horas",
|
||
"DAYS": "Dias"
|
||
},
|
||
"OFFSET_DIRECTIONS": {
|
||
"BEFORE": "Antes",
|
||
"AFTER": "Depois"
|
||
},
|
||
"EVENTS": {
|
||
"RESERVATION_CONFIRMED": "Reserva confirmada (Pix pago)",
|
||
"CHECKIN_SCHEDULED_AT": "Horário de check-in",
|
||
"CHECKOUT_SCHEDULED_AT": "Horário de check-out",
|
||
"RESERVATION_CANCELLED": "Reserva cancelada",
|
||
"RESERVATION_NO_SHOW": "No-show"
|
||
},
|
||
"MESSAGE_TYPES": {
|
||
"TEXT": "Texto simples",
|
||
"BUTTONS": "Texto com botões",
|
||
"LIST": "Menu de lista",
|
||
"URL_BUTTON": "Botão de link"
|
||
}
|
||
}
|
||
},
|
||
"SETTINGS": {
|
||
"GUARDS_TITLE": "Guards anti-spam",
|
||
"QUIET_HOURS_ENABLED": "Ativar quiet hours",
|
||
"QUIET_HOURS_FROM": "De",
|
||
"QUIET_HOURS_TO": "Até",
|
||
"MIN_INTERVAL": "Intervalo mínimo entre mensagens (min)",
|
||
"MIN_INTERVAL_HELP": "0 desativa",
|
||
"PAUSE_ON_REPLY": "Pausar se o cliente respondeu",
|
||
"PAUSE_ON_REPLY_WINDOW": "Janela (min)",
|
||
"OPT_OUT_LABEL": "Label de opt-out",
|
||
"MAX_PER_RESERVATION_INFO": "Máximo de 5 mensagens por reserva (não configurável)",
|
||
"CONCIERGE_TITLE": "Concierge (Sofia) por Unidade",
|
||
"CONCIERGE_INBOX": "Inbox WhatsApp",
|
||
"CONCIERGE_PERSONA": "Nome da persona",
|
||
"CONCIERGE_KNOWLEDGE": "Base de conhecimento (markdown)",
|
||
"CONCIERGE_VARIABLES": "Variáveis da unidade",
|
||
"CONCIERGE_VARIABLE_KEY": "Chave",
|
||
"CONCIERGE_VARIABLE_VALUE": "Valor",
|
||
"CONCIERGE_ADD_VARIABLE": "Adicionar variável",
|
||
"CONCIERGE_CONFIGURED": "Configurado",
|
||
"CONCIERGE_NOT_CONFIGURED": "Não configurado",
|
||
"SAVE": "Salvar alterações",
|
||
"TOAST": {
|
||
"SAVED": "Configurações salvas.",
|
||
"CONCIERGE_SAVED": "Concierge da unidade atualizado."
|
||
}
|
||
},
|
||
"HISTORY": {
|
||
"EMPTY": "Nenhuma entrega registrada.",
|
||
"COLUMNS": {
|
||
"RULE": "Regra",
|
||
"CUSTOMER": "Cliente",
|
||
"RESERVATION": "Reserva",
|
||
"STATUS": "Status",
|
||
"FIRE_AT": "Disparado em",
|
||
"REASON": "Motivo",
|
||
"ACTIONS": ""
|
||
},
|
||
"STATUS": {
|
||
"SCHEDULED": "Agendada",
|
||
"SENT": "Enviada",
|
||
"SKIPPED": "Pulada",
|
||
"FAILED": "Falhou",
|
||
"CANCELLED": "Cancelada"
|
||
},
|
||
"FILTERS": {
|
||
"STATUS": "Status",
|
||
"RULE": "Regra",
|
||
"FROM": "De",
|
||
"TO": "Até",
|
||
"ALL": "Todas"
|
||
},
|
||
"PREVIEW": "Preview",
|
||
"TOTAL": "total",
|
||
"PAGINATION": {
|
||
"PREV": "Anterior",
|
||
"NEXT": "Próxima"
|
||
},
|
||
"MODAL": {
|
||
"TITLE": "Preview da mensagem",
|
||
"CLOSE": "Fechar",
|
||
"RULE": "Regra",
|
||
"STATUS": "Status",
|
||
"REASON": "Motivo",
|
||
"ERROR": "Erro",
|
||
"FIRE_AT": "Fire at",
|
||
"SENT_AT": "Sent at",
|
||
"RENDERED": "Rendered",
|
||
"RESERVATION_ID": "Reserva #"
|
||
}
|
||
}
|
||
},
|
||
"CAPTAIN_HERMES_BUILDER": {
|
||
"TITLE": "Construtor de Agentes",
|
||
"DESCRIPTION": "Crie novos agentes Hermes via chat guiado com o Construtor.",
|
||
"HEADER_TITLE": "Construtor de Agentes",
|
||
"HEADER_DESCRIPTION": "Converse com o Construtor pra criar um novo agente Hermes. Ele faz perguntas e ao final salva a especificação em JSON pra revisão.",
|
||
"RESET": "Limpar conversa",
|
||
"RESET_CONFIRM": "Limpar conversa atual com o Construtor?",
|
||
"EMPTY_STATE": "Pronto pra criar um novo agente Hermes? Clica em \"Iniciar criação\" e o Construtor te guia.",
|
||
"PLACEHOLDER": "Escreva e Enter pra enviar (Shift+Enter pula linha)",
|
||
"SEND": "Enviar",
|
||
"SESSION_LABEL": "Sessão:",
|
||
"SEND_FAILED": "Erro ao enviar: {message}",
|
||
"RESET_FAILED": "Falha ao limpar sessão.",
|
||
"START": "Iniciar criação",
|
||
"TAB_CHAT": "Chat (Construtor)",
|
||
"TAB_VERIFY": "Verificação",
|
||
"VERIFY": {
|
||
"TITLE": "Verificação de agente",
|
||
"DESCRIPTION": "Roda os checks de saúde (banco, roteamento, preços, MCP) de um agente Hermes. Para cada falha com botão Refazer, a UI tenta corrigir automaticamente. Demais falhas precisam de hermes-provision na VPS.",
|
||
"NO_ASSISTANTS": "Nenhum agente Hermes cadastrado",
|
||
"RUN": "Conferir agora",
|
||
"RUNNING": "Conferindo...",
|
||
"REPAIR": "Refazer",
|
||
"REPAIRING": "Reparando...",
|
||
"OK_LABEL": "OK",
|
||
"FAILS_LABEL": "falhas",
|
||
"WARN_LABEL": "atenção",
|
||
"OF_TOTAL": "de {total} checks",
|
||
"VERDICT_PASS": "Pode soltar",
|
||
"VERDICT_FAIL": "Há falhas críticas — corrija antes",
|
||
"EMPTY": "Selecione um agente e clique em Conferir agora pra rodar a verificação.",
|
||
"EMPTY_RESULTS": "Sem checks retornados — o agente foi removido?",
|
||
"REPAIR_FAILED": "Falha: {message}",
|
||
"REPAIR_OK": "Reparado: {message}",
|
||
"FETCH_FAILED": "Erro carregando assistentes: {message}",
|
||
"VALIDATE_FAILED": "Falha ao validar: {message}",
|
||
"CATEGORY_DB": "Banco de dados",
|
||
"CATEGORY_PRICING": "Preços",
|
||
"CATEGORY_ROUTING": "Roteamento Captain → Hermes",
|
||
"CATEGORY_HUMANIZATION": "Humanização (typing/delay/galeria)",
|
||
"CATEGORY_MCP": "Tools MCP registradas",
|
||
"CATEGORY_OTHER": "Outros"
|
||
}
|
||
}
|
||
} |