Camada Itens Prioridade Backend Domain 9 entidades Alta Backend Application Use cases e serviços Alta Backend Infrastructure Repositórios, Firestore Alta Frontend Domain 9 entidades Alta Frontend Presentation Home, presença, aulas Média Migração/Planejamento ADR-0017 (config/data) Média
Referência: ADR-0005, plano-adr-legacy-fields.md
Entidade Status Observação Ministry Ausente id, name, created_at, status (ACTIVE | INACTIVE) OrganizationalUnit (completa)Parcial Existe apenas SignupChurchOption (unitId, label). Falta entidade com ministry_id, parent_unit_id, code, phone_primary, phone_secondary, email, address, group, pastor_id, secretary_id, foundation_date, status ClassGroup Ausente id, ministry_id, unit_id, name, age_group, display_order, status EbdSession Ausente id, ministry_id, unit_id, date, status, type, replace_cause, weather_type, temperature, totals, principals[], observation Lesson Ausente id, ministry_id, unit_id, ebd_session_id, class_group_id, date, theme, material_id, teacher_id, monitor_id, status, contagens, observation. Subcoleção em EbdSession; inclusão pelo criador; sugestão domingo anterior (data-model-ebd) Attendance Ausente id, ministry_id, unit_id, lesson_id, user_id, category, timestamp, method (QR | WIFI | GEO), validated_by_backend Material Ausente id, ministry_id, name, publisher, edition, reference_period
Entidade Campo/Regra faltante ADR UserAccount Já alinhado em grande parte ADR-0005, ADR-0013 Person Mapear como extensão de User (dados pessoais) ADR-0005 Role / MinistryRoleCatalog Verificar enums vs ADR-0005 (EbdReplaceCause, ClassAgeGroup, EbdSessionType, etc.) ADR-0005 OrganizationNodeRef Incluir parent_unit_id explícito; validar pathIds/pathNames vs ADR-0016 ADR-0016
ClassAgeGroup (NURSERY, KINDERGARTEN, GARDEN, JUNIORS, TEENAGERS, YOUNG_ADULTS, LEVITES, BAPTISM, EVANGELISM, INTEGRATION, WORKERS, COUPLES, ADULTS, MASTERS, NONE)
EbdSessionType (FULL_CLASS, REGULAR_CLASS, UNIQUE_CLASS, ONLINE_CLASS, CANCELED, REPLACED_BY_EVENT, REPLACED_BY_CULT)
EbdReplaceCause (LOCAL_EVENT, MINISTERIAL_EVENT, BAPTISM, WEATHER_CONDITION, etc.)
LessonStatus (CREATED, IN_PROGRESS, CONCLUDED, CLOSED, NOT_HELD_TODAY, NOT_EXISTS)
AttendanceCategory (STUDENT, VISITOR, LEADER, WORKER, PASTOR)
AttendanceMethod (QR, WIFI, GEO) — ADR-0004
Referências: ADR-0004, ADR-0013, ADR-0014
Funcionalidade Status Responsável Gerar QR Code dinâmico para Lesson (unit_id, lesson_id, janela temporal) Ausente Use case + handler Validar scan QR e registrar Attendance Ausente Handler USER_ATTENDANCE_REGISTER ou equivalente Validação por Wi-Fi (faixa IP cadastrada, confirmação explícita) Ausente Use case Geolocalização opcional (confirmação explícita) Ausente Use case BLE Fora da Fase 1 Não implementar
Funcionalidade Status Observação Matriz de transição de status (backend como autoridade) Parcial Verificar se todas as transições estão validadas Auditoria de mudança de status (actor_id, from_status, to_status, reason, timestamp) Verificar AuditLogRepository existe Onboarding pós-autenticação (dados obrigatórios pendentes) Verificar Backend restringir operações não essenciais até conclusão Preferências segmentadas (notifications, appearance, usage) Parcial UserPreferences em UserAccount
Ação sugerida Status USER_ATTENDANCE_REGISTER (QR) Ausente USER_ATTENDANCE_REGISTER (WIFI) Ausente USER_ATTENDANCE_REGISTER (GEO) Ausente USER_LESSONS_LIST / USER_MY_LESSONS Ausente USER_ATTENDANCE_HISTORY Ausente
Referências: ADR-0005, ADR-0017
platform/ministrys/{domain}/
├── config/ ← apenas configuração
│ └── classes/ ← ClassGroup
│ └── ebd_sessions/ ← EbdSession
│ └── attendances/ ← Attendance
Item Status Migração config/churchs → data/churchs Pendente Fallback de leitura (config → data) Verificar repo atual Coleções: ministrys, churchs (data), classes, ebd_sessions, lessons, attendances, materials Parcial (churchs em config)
Repositório Status FirestoreOrganizationalUnitRepository Existe; retorna SignupChurchOption. Adicionar getById, listByParent, campos completos MinistryRepository Ausente ClassGroupRepository Ausente EbdSessionRepository Ausente LessonRepository Ausente AttendanceRepository Ausente MaterialRepository Ausente
Referência: ADR-0005
Entidade Status Ministry Ausente OrganizationalUnit Parcial (SignupChurchOption é referência leve) ClassGroup Ausente EbdSession Ausente Lesson Ausente Attendance Ausente Material Ausente
Entidade Ajuste UserProfile Verificar campos vs ADR-0013: avatar_source, avatar_updated_at, last_login_at, deletion_requested_at, preferences segmentadas RoleCatalogItem Verificar conformidade com enum de papéis do ADR-0005
Referências: docs/ui/pages/home.md, docs/ui/components/action-card.md, ADR-0009
Componente Status Ajuste _NavTabs (Início, Frequência, Aulas) Existe As abas Frequência e Aulas exibem o mesmo conteúdo que Início. Implementar conteúdo distinto: — Frequência: histórico/resumo de presenças, ou lista de aulas com status de presença — Aulas: lista “Minhas aulas” (classes do usuário, próximas sessões) ActionCard “Registrar presença” Existe onTap: () {} — placeholder. Implementar navegação para tela de scan QR (ou fluxo WIFI/GEO)ActionCard “Minhas aulas” Existe onTap: () {} — placeholder. Implementar navegação para lista de aulas do usuário_Footer Ok ”Fiel a todo momento” + versão
Tela/Fluxo Status Tela de scan QR Ausente Tela de confirmação WIFI (quando em rede da unidade) Ausente Tela de confirmação GEO (opcional) Ausente Feedback de sucesso/falha no registro Ausente
Tela/Fluxo Status Lista de classes do usuário (como aluno/professor/monitor) Ausente Detalhes de aula (Lesson) com opção de registrar presença Ausente Histórico de presença Ausente
Referências: ADR-0002, ADR-0003, ADR-0016
Regra Onde validar Toda entidade com ministry_id Domain + backend validation Entidades com unit_id validam escopo (SAME, ANCESTOR, DESCENDANT, UNRELATED) Backend handlers Backend como autoridade de autorização Todos os handlers Escopo hierárquico por parent_unit_id (ADR-0016) Repositórios e use cases Firestore somente em infrastructure ADR-0007
Criar entidades backend: Ministry, OrganizationalUnit (completa), ClassGroup, EbdSession, Lesson, Attendance, Material
Criar entidades frontend correspondentes
Repositórios Firestore conforme ADR-0017
Use case de geração de QR dinâmico (professor/responsável)
Use case de registro de presença (aluno escaneia QR)
Handler USER_ATTENDANCE_REGISTER no gateway
Telas: scan QR, confirmação, feedback
Conectar ActionCard “Registrar presença” ao fluxo
Use case USER_LESSONS_LIST / USER_MY_LESSONS
Tela lista de aulas
Conectar ActionCard “Minhas aulas” e aba Aulas
Aba Frequência com histórico de presença
Migração config/churchs → data/churchs (ADR-0017)
WIFI e GEO como mecanismos complementares de presença
Onboarding pós-autenticação (ADR-0013)
Preferências segmentadas completas