Entrar como:FuncionalidadesDoc
Pular para o conteúdo
← Voltar para a visão geral
✅ ConcluídoCard #16 · M3

Comunicados para Turma

Marco M3: Painel do Professor (PROFESSOR)

📅04 de agosto de 2026
👤Wellington Santiago (via ZCode)
🔧Commits: 68cdecd

📄 Documento de Execução — Card 16: [M3] Comunicados para Turma

Campo Valor
Card Trello [16] [M3] Comunicados para Turma
URL Trello https://trello.com/c/qwZweIRR
Marco M3 — Painel do Professor (último card!)
Data execução 05/08/2026
Responsável Wellington Santiago (via ZCode)
Doc anterior Card 15: Plano de Aula & Materiais (M3)
Próximo card Card 17: Dashboard da Unidade (M4)
Commits 68cdecd

🎯 1. O que foi implementado

Substituído o protótipo mock da página /professor/comunicados (que só mostrava um toast.success sem salvar nada) por uma implementação real e completa.

O professor agora pode criar comunicados para suas turmas, selecionando quais turmas receberão o aviso. Ao enviar, o sistema:

  1. Salva o comunicado no banco (Announcement + ClassAnnouncement) com status PUBLISHED
  2. Define targetRoles = [STUDENT, PARENT] (alunos e responsáveis)
  3. Notifica cada aluno e cada responsável das turmas selecionadas via Notification
  4. Permite fixar comunicados importantes (aparecem no topo)

A página também lista o histórico de comunicados enviados pelo professor, mostrando título, conteúdo, turmas destinatárias, data e badge de fixado.

Validação de segurança: o professor só pode enviar comunicados para turmas onde foi formalmente vinculado (ClassTeacher).

✅ Critérios de aceite validados

# Critério Status
1 Criar aviso
2 Selecionar turma(s)
3 Push para pais/alunos (notificação in-app)
4 Confirmação de leitura ⏳ Parcial (modelo existe, UI de stats futura)

📁 2. Arquivos criados/modificados

Modificados

Arquivo Mudança
src/server/trpc/routers/professor.ts +sub-router announcement (list, create) com validação ClassTeacher + notificação alunos/pais
src/app/(dashboard)/professor/comunicados/page.tsx Reescrita total: removeu mock, agora lista comunicados reais + modal de criação

🗄️ 3. Schema do banco (mudanças)

Nenhuma — reutilizado Announcement + ClassAnnouncement (relação N:N) + AnnouncementRead.

🔌 4. Handoff

Procedures disponíveis (professor.announcement.*)

  • list(){ announcements: [{ id, title, content, status, isPinned, publishedAt, classes[] }] }
  • create({ title, content, classIds[], isPinned }){ id, notified } (salva + notifica alunos e pais)

Defaults adotados (decisões do cliente já respondidas)

  • Professor envia para turma (não escola toda — isso é Card 21 da direção)
  • Confirmação de leitura opcional (sem obrigatoriedade)
  • Pais só leem (não respondem — chat separado no Card 11)
  • Comunicado não precisa aprovação da direção (professor envia direto)
  • Sem templates predefinidos (livre)

Não implementados (refinamento futuro)

  • Job Bull de push/email/WhatsApp (notificação in-app já funciona)
  • Socket.io live (announcement:new broadcast)
  • readStats (estatística de leitura — UI futura)
  • Anexos no comunicado (imagens/PDF)
  • Editar após publicado + soft delete

🚀 5. Deploy DEV

🎯 6. Próximo card

Card 17 [M4] Dashboard da Unidade — muda de marco! Sai do Painel do Professor (M3 completo 🎉) e entra no Painel da Direção/Unidade (LOCAL).

← Voltar para a visão geral