{{ faixaModo.txt }} | 🚀 SUPERVISÃO ATIVA | 🚀 SUPERATENDENTE INATIVO (Aguardando Autorização)

Atendente-IA · plantão supervisionado

{{ c.txt }}
Identificação do atendimento ATENDENTE — online 🤖
{{ fila.length }} atendimento(s) na fila · {{ estado.flags && estado.flags.dry_run ? 'modo simulado (nada é enviado)' : '⚠ ENVIO REAL ATIVO' }}
{{ a.icone }}{{ a.txt }}
✅ Tudo tranquilo — nenhum alerta agora.
🟢 Esperando
{{ briefing.resumo.esperando }}
leads aguardando resposta
🔥 Quentes
{{ briefing.resumo.quentes }}
sinal de compra na última msg
💰 Vendas hoje
{{ briefing.vendas.hoje.n }}
{{ briefing.vendas.hoje.fmt }} · TMB bruto + Eduzz líq
📆 Mês · {{ briefing.vendas.mes.n }} vendas
{{ briefing.vendas.mes.fmt }}
TMB (bruto) + Eduzz (líq) · Tíquete {{ briefing.vendas.mes.ticket }}
🛍️ Eduzz (líquido)
{{ briefing.vendas.mes.eduzz.fmt }}
{{ briefing.vendas.mes.eduzz.n }} venda(s) no mês
⚡ TMB (bruto)
{{ briefing.vendas.mes.tmb.fmt }}
{{ briefing.vendas.mes.tmb.n }} venda(s) no mês
🔑 JWT
{{ briefing.resumo.jwt_horas != null ? briefing.resumo.jwt_horas + 'h' : '—' }}
{{ briefing.resumo.wts_ok ? 'WTS respondendo' : '⚠ WTS sem resposta' }}
📨 Templates
{{ briefing.resumo.templates_problema }}
com problema de canal/saúde

Telemetria da operação

⚡ resposta do cérebro: {{ fmtMs(latCerebro.p50) }} (p50) · {{ fmtMs(latCerebro.p95) }} (p95) ⚡ resposta do cérebro: sem chamada hoje
⚡ Cérebro (Cerebras + Groq)
• Chave configurada: {{ estado && estado.groq_ok ? 'sim' : 'não' }}
• Primário: {{ modeloPrimario || '—' }}
• Fallback: {{ modeloFallback || '—' }}
• Chamadas hoje: {{ estado && estado.uso ? fmtInt(estado.uso.cerebras_chamadas) + ' Cerebras · ' + fmtInt(estado.uso.groq_chamadas) + ' Groq' : '—' }}
• Consumo do teto local do Groq: {{ groqPct }}%
📡 Canal WhatsApp (WTS)
• API respondendo: {{ estado && estado.wts_ok ? 'sim' : 'não' }}
• JWT: {{ briefing && briefing.resumo && briefing.resumo.jwt_horas != null ? briefing.resumo.jwt_horas + 'h restantes' : '—' }}
• Catálogo: {{ estado && estado.catalogo ? fmtInt(estado.catalogo.total) + ' cursos' : '—' }}
• Requisições ao WTS hoje: {{ estado && estado.uso ? fmtInt(estado.uso.wts_chamadas) : '—' }} ({{ estado.uso.wts_429 }} rate-limit)
• Modo de ingestão: {{ estado ? estado.ingest_mode : '—' }}
🧠 Qualidade das sugestões
• Aprovadas sem edição: {{ fmtPct(bi.decisao.taxa_aceite_pct) }} ({{ fmtInt(bi.decisao.aceitas) }} de {{ fmtInt(bi.decisao.base_avaliada) }} decididas)
• Editadas antes de enviar: {{ fmtPct(bi.decisao.taxa_edicao_pct) }}
• Rejeitadas como erradas: {{ fmtPct(bi.decisao.taxa_rejeicao_pct) }}
• Resolvidas sem gastar modelo: {{ fmtPct(bi.decisao.economia_atalho_pct) }}
• Guard-rail pegou fato divergente: {{ fmtInt(bi.decisao.fato_divergente) }}
carregando…
Varredura {{ estado.flags && estado.flags.ingest_live ? 'ligada' : 'desligado' }} Envio {{ estado.flags.dry_run ? 'SIMULADO' : 'REAL' }} Automação {{ estado.flags.autopilot ? 'ATIVO' : 'desligado' }} Aprendiz {{ estado.flags.aprendiz ? 'ligado' : 'desligado' }} {{ estado.horario.em_plantao ? 'Plantão' : 'Comercial' }} · {{ estado.horario.agora }} 🔔 Ativar alertas

📈 Sugestões por dia · últimos {{ biDias }} dias

Criadas pelo robô × efetivamente enviadas ao cliente
● {{ bi.serie_dias && bi.serie_dias.length ? 'dados de hoje incluídos' : 'sem dados' }}
{{ g.v }} {{ p.lbl }}: {{ p.v }} criadas {{ x.t }}
Sem sugestões gravadas na janela.
criadas enviadas

⚡ Saúde da operação

{{ bi.vendas.mes.n }}
vendas no mês
anel = meta 50
{{ fmtPct(bi.decisao.taxa_aceite_pct) }}
aprovadas sem edição
{{ fmtInt(bi.decisao.base_avaliada) }} decididas
{{ briefing.resumo.esperando }}
esperando resposta
anel = 20 leads
📊 Funil operacional de agora
{{ e.lbl }}
{{ e.n }}

Escala relativa ao maior valor da linha ({{ funilMax }}). Vendas de hoje vêm do Eduzz/TMB; o resto, do WTS.

{{ jvConversa.nome }} {{ jvConversa.fone }}
💰 Venda {{ jvConversa.venda.status }}: {{ jvConversa.venda.produto }} — R$ {{ (jvConversa.venda.valor_liquido || jvConversa.venda.valor || 0).toLocaleString('pt-BR', { minimumFractionDigits: 2 }) }}
🔎 Sem venda registrada p/ este telefone
carregando conversa…
{{ jvConversa.erro }}
{{ m.quem === 'cliente' ? '👤' : (m.quem === 'bot' ? '🤖' : '🧑‍💼') }} {{ m.texto }}

📇 Carteira ao vivo

Seus atendimentos (Novos + Meus) atualizando sozinhos. 🔴 = cliente aguardando SUA resposta · 🟡 = aguardando o cliente.

📇 {{ carteira.total }} na carteira ⏱ {{ carteira.ts }}

⚠️ {{ carteira.erro }}

  • {{ c.unread > 0 ? '📩' : c.aguardando ? '🔴' : '🟡' }}
    {{ c.contato || 'Sem nome' }} ↗ {{ c.fone }} {{ c.guia }} janela fechada {{ c.unread }} não lida(s) 🤖 só o bot respondeu {{ c.urgencia }}
    {{ c.ultima || '—' }}
    {{ c.motivos.slice(0, 3).join(' · ') }}

Nada na carteira agora.

🚀 SuperAtendente {{ superStatus.pendentes }}

{{ superStatus.ativo ? '🟢 Monitor ativo' : '🔴 Monitor pausado' }} ciclo a cada {{ superStatus.intervalo_ms / 1000 }}s · máx {{ superStatus.max_por_ciclo }}/ciclo último: {{ superStatus.ultimo_ciclo.gerados }} gerado(s) em {{ superStatus.ultimo_ciclo.duracao_ms }}ms {{ superStatus.total_gerados || 0 }} total gerado(s)
📇 Carteira (Novos + Meus) {{ superLista.length }}
Nenhuma resposta pendente agora.
O monitor gera sugestões a cada 60s quando detecta leads aguardando na sua carteira.
Não consegui ler a carteira do WTS agora.
Aguarde o próximo ciclo ou use a aba 📇 Carteira pra diagnosticar.
Nenhuma sessão da carteira com esse filtro.
  • {{ s.contato_nome || s.sid }} 📩 {{ s.nao_lidos }} ⏳ aguardando
    {{ s.guia === 'Novo' ? '🆕 Novo' : '📌 Meu' }} ✍️ resposta pronta {{ superEtapaLabel(s.etapa_def) }} {{ familiaLabel(s.familia) }} ⚠ humano
    {{ superIdade(s) }} · {{ s.tem_sug ? s.status : 'sem resposta' }} WTS ↗
    ⚠️ {{ s.alerta }}
💬 Conversa
← selecione um lead para ver o histórico
{{ superSelecionado.contato_nome || 'Lead' }} · {{ superSelecionado.contato_fone }}
{{ superEtapaLabel(superSelecionado.etapa_def) }} intent: {{ superSelecionado.intent }} {{ familiaLabel(superSelecionado.familia) }} {{ superSelecionado.curso }}
  • {{ m.quem === 'cliente' ? '👤' : (m.quem === 'bot' ? '🤖' : '🧑‍💼') }} {{ m.texto }} {{ (m.at || '').slice(11,16) }}
  • Sem histórico carregado ainda.
    Aparece junto com a 1ª resposta gerada — ou leia a conversa no WTS.
💬 {{ superSelecionado.observacao }}
✍️ Resposta semi-pronta (edite antes de copiar)
← selecione um lead
⚠️ Alerta do verificador: {{ superSelecionado.alerta }}
🔒 Esta aba nunca envia nada. Copie, cole no WTS, ajuste e envie você mesmo.

📊 Kanban do pipeline

Os leads da carteira do WTS organizados por estágio de atendimento.

{{ col.titulo }}

{{ col.itens.length }}
{{ item.contato || 'Sem nome' }} {{ item.guia }}
{{ item.fone }}
{{ item.ultima || '—' }}
{{ item.janela_aberta ? '⚡ janela aberta' : '⏳ janela fechada' }} Abrir WTS ↗
Nenhum lead nesta coluna

Carteira vazia ou ainda não lida — clique em Atualizar.

⚡ Radar de janelas de 24h

Leads com a janela do WhatsApp aberta — dá pra mandar texto livre, sem gastar template.

{{ lead.contato || 'Sem nome' }}

{{ lead.fone }}
● janela ativa
{{ lead.ultima || '(sem mensagem registrada)' }}
⏱ aberta no WTS Atender no WTS ↗
Nenhum lead com janela aberta aguardando agora.

🏆 Metas e comissão

Faturamento realizado no mês × meta que você definir. Comissão é cálculo direto do percentual informado.

🎯 Hoje
{{ metasDiarias.vendasHojeCount }} / {{ metasDiarias.metaVendasDia }}
matrículas hoje × meta diária
💰 Faturado no mês
{{ fmtBRL(metasDiarias.faturamentoMesAtual) }}
TMB (bruto) + Eduzz (líquido)
🛍️ Eduzz (líquido)
{{ fmtBRL(metasDiarias.eduzzFaturamentoMes) }}
{{ metasDiarias.eduzzVendasCountMes }} venda(s) ativa(s)
⚡ TMB (bruto)
{{ fmtBRL(metasDiarias.tmbFaturamentoMes) }}
{{ metasDiarias.tmbVendasCountMes }} venda(s) ativa(s)
💵 Comissão a {{ metasDiarias.comissaoPct }}%
{{ fmtBRL(comissaoMes) }}
cálculo sobre o faturado — confirme sua taxa real
📊 Tíquete médio
{{ fmtBRL(metasDiarias.ticketMedio) }}
faturado ÷ nº de vendas do mês
Progresso da meta do mês {{ progressoMeta }}%

{{ fmtBRL(metasDiarias.faturamentoMesAtual) }} de {{ fmtBRL(metasDiarias.metaFaturamentoMes) }} — meta batida.

🧪 Calculadora de condições

Monta o texto das formas de pagamento a partir dos valores que você digitar. Confira o preço na fonte oficial antes de enviar.

🧮 Parâmetros

💬 Texto para o WhatsApp

{{ calcularCondicoesPagamento() }}

Boleto sempre com entrada (regra da operação). O valor é o que você digitou aqui — não vem do catálogo.

📜 Credenciamento e-MEC / SISTEC

Texto de prova de reconhecimento para enviar ao lead. Confira o código na consulta oficial antes de afirmar.

{{ item.faculdade }}

e-MEC nº {{ item.codigoEmec }}
✅ {{ item.status }}
Cursos principais: {{ item.cursosPrincipais }}
{{ item.textoCopia }}
Consulta e-MEC ↗

💡 Copys e gerador de link

Textos prontos e checkout com a sua UTM. Sempre confira preço e prazo na fonte oficial antes de mandar.

🔗 Gerador de link + UTM

Checkout com a sua UTM — é o que credita a venda pra você.

Link pronto
{{ gerarLinkUtm() }}

{{ copy.titulo }}

{{ copy.descricao }}
{{ copy.categoria }}
{{ copy.texto }}
Nenhuma copy para esse filtro.

Fila de aprovação

💀 {{ mortos }} de {{ fila.length }} card(s) sem resposta — o cérebro falhou neles (o motivo está em cada card).
🧠 {{ avisoSaude.titulo }} — {{ avisoSaude.txt }}
{{ s.contato_nome || 'Sem nome' }} {{ s.contato_fone || '' }} {{ guia(s) === 'Novo' ? '✦ Novo' : '★ Meu' }} {{ metaCanal(s) }} {{ s.origem }} 💀 cérebro caiu {{ s.intent || '—' }} 🕐 {{ idade(s) }} {{ familiaLabel(s.familia) }} ↩ {{ s.lead.contagem_sessoes }}ª sessão link: {{ s.link_status }} ⚡ sem Groq ⚠ fato divergente ⚠ revisar
💬 cliente disse
{{ s.mensagem_cliente || '(lead novo — sem mensagem ainda)' }}
lendo a conversa no WTS…
⚠ {{ s._conv.erro }}
💀 {{ diagFalha(s).titulo }}
{{ diagFalha(s).detalhe }}
erro técnico do servidor
{{ diagFalha(s).raw }}
💡 {{ s.observacao }}
{{ falhaCerebro(s) ? '✍️ sem sugestão — escreva a resposta' : '✍️ sugestão da IA · edite se quiser' }}
{{ temGrave(s) ? '⛔ confira antes de enviar' : '⚠️ atenção' }} {{ alertasDe(s).length }}
“{{ a.trecho }}” {{ a.motivo }}

Nenhuma sugestão pendente. Gere uma no Testar ou varra o WTS.

Nenhum card neste filtro — ver todos ({{ fila.length }}).

📜 Regras aprendidas (prioridade máxima)

{{ apr.ligado ? 'aprendiz ligado ●' : 'aprendiz desligado' }}

O que você ensinou vence as suposições do robô. Edite e salve — vale na próxima resposta.

💬 Exemplos aprendidos {{ apr.exemplos.length }}

Suas respostas reais + vendas vencedoras. O robô imita este jeito.

cliente: {{ e.cliente || '(contexto)' }}
{{ e.marcos }}
{{ e.fonte || '' }}

Nenhum exemplo ainda. Capture suas msgs ou adicione.

✨ Candidatos a regra {{ candidatos.length }}

O robô estuda seus exemplos e propõe regras novas. Aprove pra virarem regra de prioridade máxima.

{{ c.tipo }}
{{ c.regra }}
📎 {{ c.evidencia }}

Nenhum candidato pendente. Clique "Destilar agora" pra o robô estudar seus exemplos.

⚠️ Conflitos de regra {{ candidatosConflito.length }}

Estas regras NÃO foram gravadas — contradizem uma regra que já existe (mesmo assunto, número/prazo diferente). Decida abaixo.

{{ c.tipo }} ⚠ conflito — não gravada
Regra nova proposta:
{{ c.regra }}
📎 {{ c.evidencia }}
Contradiz regra(s) já existente(s){{ (c.conflitos || []).length }}
{{ cf.regra_existente }} sobreposição {{ Math.round((cf.overlap || 0) * 100) }}% · {{ cf.numeros_divergentes ? 'números/prazos DIVERGEM' : 'mesmo assunto (sem número claro pra comparar)' }}

As duas ações acima exigem uma rota nova no servidor (ainda não existe) — reportado ao Marcos, aguardando aprovação pra criar.

🧪 Simular mensagem do cliente

Testa o cérebro ponta a ponta sem tocar em ninguém real (fica na Fila).

🔗 Testar link de matrícula

Valida a ferramenta de link (UTM do Marcos embutida).

{{ cat.out }}

⚡ Abatimento de matérias (técnico → tecnólogo)

Consulta se o técnico do aluno consta na lista que abate prazo. Só afirma o que está na base — sem lista, escala pra confirmação.

🎓 {{ abatSim.cursoResult.curso }}
✅ Consta na lista de abatimento. Técnicos aceitos: {{ abatSim.cursoResult.tecnicos_que_abatem.join(', ') }}
ℹ️ Não consta na lista — precisa de análise pedagógica antes de prometer prazo.
{{ abatSim.cursoResult.preco.mensagem }}

🎓 Dossiê do curso · o que o cérebro sabe

Preço, duração, estágio/TCC, e-MEC/SISTEC, técnicos que abatem e grade.

{{ dossie.r.curso }} {{ dossie.r.familia }}
{{ dossie.r.preco.mensagem }}
💰 preço: não resolvido ({{ dossie.r.preco && dossie.r.preco.motivo || '—' }})
✅ {{ dossie.r.reconhecimento.texto }} abrir e-MEC ↗
🎓 e-MEC: {{ dossie.r.emec.certificadora }} · carga {{ dossie.r.emec.carga || '—' }} · estágio {{ fmtB(dossie.r.emec.estagio) }} · TCC {{ fmtB(dossie.r.emec.tcc) }}
🏫 SISTEC: cód {{ dossie.r.sistec.codigo }} · {{ dossie.r.sistec.escola }}/{{ dossie.r.sistec.cidade }} · estágio {{ fmtB(dossie.r.sistec.estagio) }} · TCC {{ fmtB(dossie.r.sistec.tcc) }}
🔧 técnicos que abatem (12m): {{ dossie.r.tecnicos_que_abatem.join(', ') }}
📄 grade: abrir ↗
{{ dossie.r.fatos_familia.rotulo }} · {{ dossie.r.fatos_familia.orgao }}

⏰ Follow-up de leads parados

Leads que não responderam à sua última mensagem (cadência {{ fu.cadencia.join('h → ') }}h, máx {{ fu.cadencia.length }} tentativas). Janela de 24h fechada = só template aprovado da Meta entrega; aberta = texto livre. Nada é enviado sem você aprovar.

Nenhum follow-up pendente. Use a varredura acima (ou ligue a detecção automática nos Controles).

{{ f.contato_nome || '(sem nome)' }} {{ f.contato_fone || 'sem fone' }} {{ f.janela_fechada ? '🔒 janela fechada → template' : '🟢 janela aberta' }} tentativa {{ f.tentativa }}/{{ fu.cadencia.length }}
{{ f.motivo }}
última msg sua: “{{ f.ultima_msg }}”
Histórico recente ({{ fu.historico.length }})
{{ f.contato_nome || f.conversa_id.slice(0,8) }} · t{{ f.tentativa }} · {{ f.status }} — {{ f.detalhe }}

📊 BI da operação

Sugestões, decisões, leads, cursos procurados e vendas — do banco do robô e do Eduzz/TMB. Sem estimativa.

⚠️ {{ biErro }}

Carregando dados de BI…

📡 Atendimentos do WTS (leitura)

Lê as guias reais do painel (Novos/Meus/Outros). Envio continua em dry-run.

{{ wtsOut }}

🤝 Copiloto — lê tudo que o atendente vê. Não envia nada a cliente.

Fale como falaria com um colega.
Ele consulta a fila do WTS, preços oficiais, dossiês, links com sua UTM,
auditoria de pagamento e as regras antes de responder.
{{ copFase }} {{ copSeg }}s

📊 Consumo de hoje

⚡ Cerebras (cérebro primário) {{ Math.round((estado.uso.cerebras_tokens||0)/1000) }}k tok
{{ estado.uso.cerebras_chamadas }} chamadas OK · {{ estado.uso.cerebras_429_quota||0 }} bloqueio(s) de cota · {{ estado.uso.cerebras_429_fila||0 }} de fila (infra, não é nossa cota). Toda falha cai pro Groq na hora.
🧠 Groq (fallback) {{ Math.round((estado.uso.groq_tokens||0)/1000) }}k / {{ Math.round((estado.uso.groq_token_cap||0)/1000) }}k tok
{{ estado.uso.groq_chamadas }}/{{ estado.uso.groq_cap }} chamadas · {{ estado.uso.groq_429 }} bloqueios (429). Cap protege a cota diária.
📡 WTS (WhatsApp) {{ estado.uso.wts_chamadas }} req
{{ estado.uso.wts_429 }} rate-limit (429) hoje. Zerado = saudável.

⚙️ Controles do robô

Ligue/desligue cada função. Vale na hora, sem reiniciar o servidor.

📨 Envio ao cliente {{ estado.flags.dry_run ? 'SIMULADO' : 'REAL' }}
{{ estado.flags.dry_run ? 'Nada é enviado de verdade (modo seguro pra testar).' : '⚠️ As mensagens aprovadas vão DE VERDADE pro cliente.' }}
🌐 Liberar todos os números {{ estado.flags.allow_real_all ? 'TODOS' : 'só whitelist' }}
{{ estado.flags.allow_real_all ? 'Qualquer número recebe.' : 'Só os números da whitelist (TEST_PHONE) recebem.' }}
🔎 Varredura automática {{ estado.flags.ingest_live ? 'LIGADA' : 'desligada' }}
Robô lê o WTS no plantão e gera sugestões sozinho (você só aprova).
📷 Meta — Instagram/Messenger {{ estado.meta_poller_ativo ? 'LIGADO' : 'desligado' }}
Loop lê a caixa do Business Suite por CDP (~3min): capta respostas e não lidas do IG/Messenger e vira card. Envio SEMPRE por aprovação. Precisa do Chrome de debug de pé.
🤖 Piloto automático {{ estado.flags.autopilot ? 'LIGADO' : 'desligado' }}
{{ estado.flags.autopilot ? '⚠️ Envia sozinho os intents seguros, sem sua aprovação.' : 'Off — tudo passa pela sua aprovação na Fila.' }}
⏰ Detecção de follow-up {{ estado.flags.followup ? 'LIGADA' : 'desligada' }}
Detecta sozinho (1×/h, só leitura) leads que pararam de responder e põe na aba Follow-up. O envio continua 100% na sua aprovação.
🧠 Aprendiz {{ estado.flags.aprendiz ? 'LIGADO' : 'desligado' }}
Raspa as suas mensagens reais no WTS pra o robô aprender seu jeito.

Carregando estado…

📟 Eventos do painel
{{ cyberLogs.length }} eventos
[{{ log.time }}] {{ log.tag }} {{ log.msg }}
{{ toast.msg }}