Variable attendanceFeedEventSchemaConst
attendanceFeedEventSchema: ZodObject<
{
eventType: ZodEnum<
{
CHECK_IN: "CHECK_IN";
CHECK_OUT: "CHECK_OUT";
EMERGENCY_CHECKOUT: "EMERGENCY_CHECKOUT";
},
>;
sessionId: ZodString;
slotId: ZodString;
studentId: ZodString;
timestamp: ZodString;
},
$strip,
> = ...
Evento do feed
attendance— o evento É o payload (kind: "data").slotIdentrou em 2026-09-12, ao CONSTRUIR o primeiro consumidor (telão de lotação, #759). O consumidor precisa dizer EM QUE SALA a movimentação aconteceu, e nemsessionIdnemstudentIdrespondem isso: quem liga sessão → sala éclass_sessions.slot_id. Sem o campo, o telão só mostraria "alguém entrou" — informação que não sustenta a tela.É a IDENTIDADE da sala, não o rótulo: o rótulo continua vindo do snapshot de capacidade (
capacitySnapshotSchema), que já é a definição única de rótulos (ADR-0043 decisão 6). Renomear uma sala não deixa texto velho preso aqui.Obrigatório (não nullable):
class_sessions.slot_idé NOT NULL, então toda sessão válida tem sala. Um evento sem sala não é um evento válido — o produtor não publica, em vez de emitir um payload que o schema rejeita.Privacidade (LGPD): o evento NÃO carrega o nome da criança. O telão é tela PÚBLICA — o consumidor não deve juntar
studentIdcom nome algum.