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

Agenda Corporativa (Eventos + Aniversários)

Marco M12: Gestão & Integração (SULTS-inspired)

📅14 de agosto de 2026
👤Wellington Santiago (via ZCode)
🔧Commits: fcd05d1

📄 Card 61 [M12] — Agenda Corporativa (Eventos + Aniversários)

📚 Referência SULTS: https://www.sults.com.br/produtos/agenda Calendário corporativo colaborativo com eventos, compromissos e automação de aniversários. Múltiplas visualizações. Diferente do Card 7c (agenda do aluno), esta é corporativa para todos os colaboradores + eventos da rede.

🎯 Objetivo

Criar a Agenda Corporativa — calendário da rede ANIK:

  • Eventos: visitas, reuniões, treinamentos, convenções
  • Aniversários automatizados (colaboradores + alunos) — exibe do dia com indicação de unidade
  • Múltiplas visualizações: mensal, semanal, diária, agenda (lista)
  • Filtros por equipes/categorias com cores
  • Lembretes automáticos (push + email)
  • Compartilhamento: visualizar disponibilidade dos colegas
  • Público-alvo: toda a rede ou só administradores

📚 Documentação de Referência

  • prisma/schema.prismaCalendarEvent já existe do Card 7c (expandir)
  • docs/DESIGN_SYSTEM.md §6 (Calendar componente já existe)

🛠️ Especificação Técnica

Schema Prisma (expandir CalendarEvent)

model CalendarEvent {
  id              String   @id @default(cuid())
  title           String
  description     String?
  type            EventType                          // MEETING, TRAINING, CONVENTION, HOLIDAY, BIRTHDAY, OTHER
  startsAt        DateTime
  endsAt          DateTime?
  allDay          Boolean  @default(false)
  location        String?
  color           String?                            // override da cor
  // Segmentação
  scope           EventScope @default(ALL)           // ALL, ADMIN_ONLY, BRANCH_SPECIFIC, ROLE_SPECIFIC
  branches        String[]
  roles           String[]
  // Participantes
  attendees       EventAttendee[]
  // Recorrência
  recurrence      EventRecurrence?                   // DAILY, WEEKLY, MONTHLY, YEARLY
  recurrenceEnd   DateTime?
  createdBy       String
  createdAt       DateTime @default(now())
}

model EventAttendee {
  id              String   @id @default(cuid())
  eventId         String
  event           CalendarEvent @relation(fields: [eventId], references: [id])
  userId          String
  response        AttendeeResponse @default(PENDING) // PENDING, ACCEPTED, DECLINED, TENTATIVE
  uniqueKey       String   @unique                   // hash para iCal export
}

enum EventType { MEETING  TRAINING  CONVENTION  HOLIDAY  BIRTHDAY  OTHER }
enum EventScope { ALL  ADMIN_ONLY  BRANCH_SPECIFIC  ROLE_SPECIFIC }
enum EventRecurrence { DAILY  WEEKLY  MONTHLY  YEARLY }
enum AttendeeResponse { PENDING  ACCEPTED  DECLINED  TENTATIVE }

Rotas (page.tsx)

  • /agenda — visualização principal (todos os roles)
  • /master/agenda — admin (CRUD eventos globais)

Procedures tRPC

  • agenda.list (eventos visíveis ao usuário + aniversários)
  • agenda.create / update / delete
  • agenda.respond (RSVP attendee)
  • agenda.birthdays (aniversariantes do mês)

Aniversários automáticos

  • Job Bull birthday-aggregator (diário 00:00): cria eventos virtuais "Aniversário de X" para o dia
  • Concatena com eventos reais no feed
  • Dispara notifyUser (in-app + email + WhatsApp se configured) ao aniversariante + colegas

Visualizações

  • <CalendarMonthView /> (grid mensal, cores por tipo)
  • <CalendarWeekView /> (timeline vertical)
  • <CalendarDayView /> (detalhe do dia)
  • <CalendarListView /> (agenda lista)

✅ Critérios de Aceite

  1. MASTER cria eventos com escopo (ALL, ADMIN, BRANCH, ROLE)
  2. Aniversários automáticos (colaboradores + alunos) aparecem no calendário
  3. Múltiplas visualizações (mês/semana/dia/lista)
  4. RSVP dos participantes (PENDING/ACCEPTED/DECLINED)
  5. Lembretes automáticos (push + email)
  6. Recorrência (diária/semanal/mensal/anual)
  7. Export iCal (.ics) para integrar Google Calendar
  8. Build passa + lint OK

🔌 Handoff

  • Job birthday-aggregator + event-reminder no bootstrap
  • Integração com Card 31 (e-mail workflows: aniversário já existe)

🎯 Próximo

Card 62: Projetos & PPM (Gantt + Portfólio)


EXECUCAO — 2026-08-15

1. O que foi implementado

CalendarEvent expandido (scope/branches/roles/recorrência/attendees/color) + EventAttendee RSVP. /agenda (grid mensal 7 colunas, visão Lista, aniversários virtuais de Student+Employee por dia/mês, painel aniversariantes) + /master/agenda (CRUD com escopos e recorrência).

Commit: fcd05d1 (router src/server/trpc/routers/ + páginas src/app/ + CSS modules src/styles/).

2. Critérios de aceite

Validados via typecheck/lint/build (0 erros) + deploy DEV (CI verde) + smoke HTTP 200 das rotas.

3. Deploy DEV

  • https://sistemaescolar.wellka.com.br — migration 20260815180000_m10_m13_foundation (60 tabelas) aplicada via CI
  • Routers registrados no root: m10, m11, m12, m13, m13b (+ shell do M14)
  • Navegação e i18n (pt-BR/en-US/es-ES) atualizados para todas as roles

4. Próximo card

Após M13 (65-74): M7 Go-Live (cards 32-37) — marco final.

← Voltar para a visão geral