📄 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:
- Salva o comunicado no banco (
Announcement+ClassAnnouncement) com status PUBLISHED - Define
targetRoles= [STUDENT, PARENT] (alunos e responsáveis) - Notifica cada aluno e cada responsável das turmas selecionadas via
Notification - 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:newbroadcast) readStats(estatística de leitura — UI futura)- Anexos no comunicado (imagens/PDF)
- Editar após publicado + soft delete
🚀 5. Deploy DEV
- URL: https://sistemaescolar.wellka.com.br/professor/comunicados
- Login:
carla.prof@genioon.com.br/Prof@2026 - Commit:
68cdecd
🎯 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).