Alliance Vila Madalena · Como funciona
← Central
Documentação viva

Reconhecimento facial → Presença → Graduação

Da foto que o professor tira na aula até a presença do aluno contar para a faixa. Como cada peça funciona hoje — e como evitamos contar a mesma aula duas vezes.

Atualizado em 05/07/2026 · mantido pela The Mat Society

1 · O fluxo completo

Fluxo do reconhecimento facial e da presença Do professor que tira a foto da turma até a presença contar para a graduação. presença a identificar cadastro robô sugere 1 · Professor tira a foto da turma e envia 2 · A IA detecta os rostos e busca na basecada rosto é comparado com os que já foram ensinados 3 · Cada rosto dá um de dois resultados: reconhecido → presença marcada na hora não reconhecido → fica pendente («a identificar») 4 · Você vê em Pag. Professores › Fotos das Turmascaixas verde/laranja · o contador «a identificar» cai ao vivo A · Confirmar na horaclica no rosto laranja e diz quem é→ vira presença ✅ B · Cadastrar Rostosrecorta e ENSINA o rosto à IAmelhora o reconhecimento (sem presença) aprende 5 · Robô da madrugada — a ponte cadastro↔presençare-tenta os pendentes do mês com os rostos que você cadastrouSÓ SUGERE — nunca marca sozinho 6 · Você revisa com zoom (tela do robô)✓ É [nome] confirma · ✗ não é dispensa ✅ Presença registrada 7 · Conta para a graduaçãoregida por «facial_desde» (ver seção 4) Extra · Auditar Rostos confere a basemostra a foto antes de você apagar um rosto errado

2 · Os dois mundos: Cadastro × Presença

São coisas diferentes, e é a distinção mais importante do sistema:

Quando você ensina um rosto novo, os alunos antigos que apareciam como «a identificar» passam a ser reconhecíveis. A ponte entre os dois mundos é o robô (seção 3).

3 · O robô da madrugada

Toda madrugada (~04:00), o robô reprocessa as fotos das aulas do mês corrente que ainda têm rostos «a identificar», usando os rostos que você cadastrou. Para cada acerto ele deixa uma sugestão (caixa roxa com o nome).

Ele nunca marca presença sozinho. Só sugere. Você revisa e confirma na tela revisar-robo (com zoom na foto). Decisão registrada: sempre haverá revisão humana.

4 · ⚠️ Contagem e fonte da verdade (evitando dupla contagem)

Hoje existem duas fontes de presença: o OneGym (onde os alunos se inscrevem e recebem presença) e o nosso sistema (reconhecimento facial). O risco é a mesma aula ser contada duas vezes. Uma única chave controla isso: config.facial_desde.

Agora (julho) — fase paralela · SEM duplicação

facial_desde = NULL. O OneGym é a verdade absoluta. As presenças faciais do nosso sistema são apenas observadas — ficam gravadas, mas NÃO somam na graduação. A contagem da faixa vem de aulas_na_faixa (número do OneGym). Está no código: o app_progresso só soma uma presença facial se facial_desde estiver setado e a data da aula for ≥ facial_desde. Como é NULL, nenhuma soma acontece. Zero risco de contar duas vezes.

Futuro (agosto) — o app vira a verdade · o corte é uma data de costura

Quando o app assumir, viramos a chave: facial_desde = 2026-08-01. A partir daí a contagem passa a ser:

base histórica (até 31/jul, do OneGym)  +  presenças faciais de 01/ago em diante

Como o facial só conta a partir da data de costura e a base histórica é de antes dela, nenhuma data é contada pelos dois — a duplicação é impossível por construção. Para blindar de vez, já deixei no código: assim que facial_desde for setado, o sync do OneGym para de sobrescrever aulas_na_faixa (congela a base histórica). Sem isso, o OneGym continuaria empurrando o número de agosto e aí sim duplicaria.

Passo a passo do corte (quando decidir virar)

  1. Rodar um último sync do OneGym para capturar a aulas_na_faixa histórica de cada aluno.
  2. Definir config.facial_desde = 1º dia do mês do corte.
  3. A partir daí, os alunos passam a marcar presença pelo nosso app (ou pela foto da aula). O OneGym deixa de ser a fonte de contagem.
  4. A base fica congelada automaticamente; o facial soma por cima. Sem duplicar.
«OneGym puxa as minhas infos» é possível? Depende do OneGym expor uma API de entrada (hoje nós só puxamos dele, não escrevemos nele). O que é 100% nosso: o app vira a verdade da contagem na data de costura. Fazer o OneGym espelhar os nossos dados exige que o app oficial aceite receber — a confirmar com eles. Se não aceitar, o caminho é o app assumir a chamada e o OneGym sair da contagem.

Regra de ouro (sempre): uma única fonte por data. Antes da costura, OneGym. Depois da costura, o app. Nunca as duas contando a mesma data. A chave facial_desde é essa costura.

Agosto — os dois juntos (app = verdade, OneGym = espelho)

A partir de 01/08/2026 o app passa a ser a fonte da verdade — mas o OneGym não é desligado: vira um espelho, alimentado só pelo app. Os dois mostram os mesmos números, sem duplicar.

Coexistência em agosto O aluno marca presença no app (única entrada); o app é a verdade e empurra os totais para o OneGym, que vira um espelho read-only; o freeze impede o OneGym de reescrever a base, então não há duplicação. Aluno marca presençaNO APP (facial / foto)— única entrada APP = verdadefacial_desde ligadobase congelada(freeze) push · updateUserRank OneGym = espelhomesmos números (read-only)aulas de agostoapagadas freeze: o OneGym NÃO reescreve a nossa base → sem duplicação

5 · Segurança e reversibilidade

6 · Onde fica cada coisa

O quêOnde
Marcar presença (fotos da turma)Professores e Presenças → Fotos das Turmas
Ensinar rostos à IACentral Admin → Cadastrar Rostos
Revisar sugestões do robô (com zoom)/presenca/revisar-robo.html
Conferir a base de rostosCentral Admin → Auditar Rostos
Chave da fonte da verdadeconfig.facial_desde (banco)
The Mat Society · documentação viva — se algo do sistema mudar, esta página é atualizada.