Skip to main content

Mapa de Ajustes para Conformidade com os Documentos

Objetivo: alinhar integralmente o código às definições contidas em docs/ (vision, ADRs, PRD, UI).

Última atualização: 2025-03-01


Visão geral

CamadaItensPrioridade
Backend Domain9 entidadesAlta
Backend ApplicationUse cases e serviçosAlta
Backend InfrastructureRepositórios, FirestoreAlta
Frontend Domain9 entidadesAlta
Frontend PresentationHome, presença, aulasMédia
Migração/PlanejamentoADR-0017 (config/data)Média

1. Backend — Entidades de Domínio

Referência: ADR-0005, plano-adr-legacy-fields.md

1.1 Entidades inexistentes (criar)

EntidadeStatusObservação
MinistryAusenteid, name, created_at, status (ACTIVE | INACTIVE)
OrganizationalUnit (completa)ParcialExiste 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
ClassGroupAusenteid, ministry_id, unit_id, name, age_group, display_order, status
EbdSessionAusenteid, ministry_id, unit_id, date, status, type, replace_cause, weather_type, temperature, totals, principals[], observation
LessonAusenteid, ministry_id, unit_id, ebd_session_id, class_group_id, date, theme, material_id, teacher_id, monitor_id, status, contagens, observation
AttendanceAusenteid, ministry_id, unit_id, lesson_id, user_id, category, timestamp, method (QR | WIFI | GEO), validated_by_backend
MaterialAusenteid, ministry_id, name, publisher, edition, reference_period

1.2 Entidades existentes — ajustes

EntidadeCampo/Regra faltanteADR
UserAccountJá alinhado em grande parteADR-0005, ADR-0013
PersonMapear como extensão de User (dados pessoais)ADR-0005
Role / MinistryRoleCatalogVerificar enums vs ADR-0005 (EbdReplaceCause, ClassAgeGroup, EbdSessionType, etc.)ADR-0005
OrganizationNodeRefIncluir parent_unit_id explícito; validar pathIds/pathNames vs ADR-0016ADR-0016

1.3 Enums a implementar

  • 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

2. Backend — Application (Use Cases e Serviços)

Referências: ADR-0004, ADR-0013, ADR-0014

2.1 Presença (ADR-0004)

FuncionalidadeStatusResponsável
Gerar QR Code dinâmico para Lesson (unit_id, lesson_id, janela temporal)AusenteUse case + handler
Validar scan QR e registrar AttendanceAusenteHandler USER_ATTENDANCE_REGISTER ou equivalente
Validação por Wi-Fi (faixa IP cadastrada, confirmação explícita)AusenteUse case
Geolocalização opcional (confirmação explícita)AusenteUse case
BLEFora da Fase 1Não implementar

2.2 Perfil e ciclo de vida (ADR-0013)

FuncionalidadeStatusObservação
Matriz de transição de status (backend como autoridade)ParcialVerificar se todas as transições estão validadas
Auditoria de mudança de status (actor_id, from_status, to_status, reason, timestamp)VerificarAuditLogRepository existe
Onboarding pós-autenticação (dados obrigatórios pendentes)VerificarBackend restringir operações não essenciais até conclusão
Preferências segmentadas (notifications, appearance, usage)ParcialUserPreferences em UserAccount

2.3 Gateway único (ADR-0014)

Ação sugeridaStatus
USER_ATTENDANCE_REGISTER (QR)Ausente
USER_ATTENDANCE_REGISTER (WIFI)Ausente
USER_ATTENDANCE_REGISTER (GEO)Ausente
USER_LESSONS_LIST / USER_MY_LESSONSAusente
USER_ATTENDANCE_HISTORYAusente

3. Backend — Infrastructure

Referências: ADR-0005, ADR-0017

3.1 Firestore — Estrutura alvo (ADR-0017)

platform/ministrys/{domain}/
├── config/ ← apenas configuração
└── data/
├── churchs/{unit_id}/
│ └── classes/ ← ClassGroup
│ └── ebd_sessions/ ← EbdSession
│ └── lessons/ ← Lesson
│ └── attendances/ ← Attendance
└── users/
ItemStatus
Migração config/churchs → data/churchsPendente
Fallback de leitura (config → data)Verificar repo atual
Coleções: ministrys, churchs (data), classes, ebd_sessions, lessons, attendances, materialsParcial (churchs em config)

3.2 Repositórios

RepositórioStatus
FirestoreOrganizationalUnitRepositoryExiste; retorna SignupChurchOption. Adicionar getById, listByParent, campos completos
MinistryRepositoryAusente
ClassGroupRepositoryAusente
EbdSessionRepositoryAusente
LessonRepositoryAusente
AttendanceRepositoryAusente
MaterialRepositoryAusente

4. Frontend — Entidades de Domínio

Referência: ADR-0005

4.1 Entidades inexistentes

EntidadeStatus
MinistryAusente
OrganizationalUnitParcial (SignupChurchOption é referência leve)
ClassGroupAusente
EbdSessionAusente
LessonAusente
AttendanceAusente
MaterialAusente

4.2 Ajustes em entidades existentes

EntidadeAjuste
UserProfileVerificar campos vs ADR-0013: avatar_source, avatar_updated_at, last_login_at, deletion_requested_at, preferences segmentadas
RoleCatalogItemVerificar conformidade com enum de papéis do ADR-0005

5. Frontend — Presentation (UI)

Referências: docs/ui/pages/home.md, docs/ui/components/action-card.md, ADR-0009

5.1 Home Page (docs/ui/pages/home.md)

ComponenteStatusAjuste
_NavTabs (Início, Frequência, Aulas)ExisteAs 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"ExisteonTap: () {} — placeholder. Implementar navegação para tela de scan QR (ou fluxo WIFI/GEO)
ActionCard "Minhas aulas"ExisteonTap: () {} — placeholder. Implementar navegação para lista de aulas do usuário
_FooterOk"Fiel a todo momento" + versão

5.2 Fluxo de presença (ADR-0004)

Tela/FluxoStatus
Tela de scan QRAusente
Tela de confirmação WIFI (quando em rede da unidade)Ausente
Tela de confirmação GEO (opcional)Ausente
Feedback de sucesso/falha no registroAusente

5.3 Fluxo "Minhas aulas"

Tela/FluxoStatus
Lista de classes do usuário (como aluno/professor/monitor)Ausente
Detalhes de aula (Lesson) com opção de registrar presençaAusente
Histórico de presençaAusente

6. Governança e Regras Cross-Cutting

Referências: ADR-0002, ADR-0003, ADR-0016

RegraOnde validar
Toda entidade com ministry_idDomain + backend validation
Entidades com unit_id validam escopo (SAME, ANCESTOR, DESCENDANT, UNRELATED)Backend handlers
Backend como autoridade de autorizaçãoTodos os handlers
Escopo hierárquico por parent_unit_id (ADR-0016)Repositórios e use cases
Firestore somente em infrastructureADR-0007

7. Priorização sugerida

Fase 1 — Fundação de domínio

  1. Criar entidades backend: Ministry, OrganizationalUnit (completa), ClassGroup, EbdSession, Lesson, Attendance, Material
  2. Criar entidades frontend correspondentes
  3. Repositórios Firestore conforme ADR-0017

Fase 2 — Presença (core do produto)

  1. Use case de geração de QR dinâmico (professor/responsável)
  2. Use case de registro de presença (aluno escaneia QR)
  3. Handler USER_ATTENDANCE_REGISTER no gateway
  4. Telas: scan QR, confirmação, feedback
  5. Conectar ActionCard "Registrar presença" ao fluxo

Fase 3 — Minhas aulas

  1. Use case USER_LESSONS_LIST / USER_MY_LESSONS
  2. Tela lista de aulas
  3. Conectar ActionCard "Minhas aulas" e aba Aulas
  4. Aba Frequência com histórico de presença

Fase 4 — Refinamentos

  1. Migração config/churchs → data/churchs (ADR-0017)
  2. WIFI e GEO como mecanismos complementares de presença
  3. Onboarding pós-autenticação (ADR-0013)
  4. Preferências segmentadas completas

8. Checklist de conformidade (resumo)

  • Entidades ADR-0005 implementadas em backend e frontend
  • Estrutura Firestore data/churchs (ADR-0017)
  • Presença por QR implementada (ADR-0004)
  • ActionCards "Registrar presença" e "Minhas aulas" funcionais
  • Abas Frequência e Aulas com conteúdo distinto
  • Ciclo de vida de usuário (ADR-0013) e matriz de transição no backend
  • Escopo hierárquico (parent_unit_id, ANCESTOR/DESCENDANT) validado
  • Gateway único (ADR-0014) com handlers de presença e aulas