iachat/app/javascript/dashboard/i18n/locale/pt_BR/captain.json
Rodribm10 6fa2f621fa feat(retention): UI layer — badge, filters, cohort matrix, KPI dashboard
- RetentionSummaryBadge in the "Previous conversations" sidebar:
  tiered status (First contact / Active / Recurring / Sleeping /
  At risk / Inactive) + counts of interactions, one-shots, Pix.

- Retention tab in Captain Reports: KpiCards, FlowCard, CohortMatrix
  (12x13 heatmap with CSV export).

- Five new filters on the contacts list: recurring, last interaction,
  days since, interactions count, reservations paid.

- Full pt_BR + en i18n under CAPTAIN_REPORTS.RETENTION.*

- Spec for InteractionCalculatorService covering gap behavior,
  one-shot classification, internal-label exclusion, multi-conversation
  grouping across the 30h window.

- Docs: docs/captain-retention-indicators.md with business rules,
  column reference, endpoint shape, and backup SQL queries.
2026-04-22 10:30:19 -03:00

938 lines
35 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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"
}
}
},
"NOTIFICATIONS": {
"TITLE": "Notificações Automáticas",
"DESCRIPTION": "Configure mensagens automáticas enviadas antes ou depois da chegada do hóspede.",
"LOADING": "Carregando notificações...",
"ADD": "Adicionar notificação",
"ACTIVE": "Ativo",
"INACTIVE": "Inativo",
"DIRECTION": {
"BEFORE": "antes",
"AFTER": "depois",
"OF_ARRIVAL": "da chegada"
},
"TIMING_LABEL": "da chegada",
"FORM": {
"LABEL_PLACEHOLDER": "Nome do template (ex: Orientações de Chegada)",
"CONTENT_PLACEHOLDER": "Mensagem a enviar... Use {{guest_name}}, {{check_in_time}}, {{suite_name}}",
"SEND": "Enviar",
"MINUTES": "min",
"CANCEL": "Cancelar",
"SAVE": "Salvar"
},
"CREATE": {
"SUCCESS": "Notificação criada com sucesso!",
"ERROR": "Erro ao criar notificação. Tente novamente."
},
"UPDATE": {
"SUCCESS": "Notificação atualizada!",
"ERROR": "Erro ao atualizar notificação."
},
"DELETE": {
"SUCCESS": "Notificação removida.",
"ERROR": "Erro ao remover notificação."
},
"INBOX_LABEL": "Selecione a caixa de entrada",
"NO_CAPTAIN_INBOXES": "Nenhuma caixa de entrada com Captain configurado.",
"SELECT_INBOX_HINT": "Clique em uma caixa de entrada acima para ver e configurar os templates.",
"EMPTY": {
"TITLE": "Nenhum template configurado",
"DESC": "Configure as permissões das informações que o sistema utiliza. Por ex.: Quais imagens enviar durante as aproximações."
}
}
},
"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 #"
}
}
}
}