Skip to main content

Plano — Ajuste dos ADRs com base no projeto legado

Objetivo

Incorporar aos ADRs os campos e conceitos validados no projeto legado (_legacy), mantendo coerência com o modelo hierárquico e de escopo já definido.


Mapeamento legado → ADR

1. Church → OrganizationalUnit (ADR-0002, ADR-0005)

Legado (ChurchModel)ADR (OrganizationalUnit)Observação
namenameMantido
codecodeNovo — identificador curto (3 chars)
fone1, fone2phone_primary, phone_secondaryNovo
emailemailNovo
addressaddressNovo
groupgroupNovo — grupo/região
pastorpastor_idNovo — referência User
secretarysecretary_idNovo — referência User
churchStatusstatusMapear: active, inactive, pending
dateFundationfoundation_dateNovo

ChurchThin: name, code, uid, churchStatus → modelo enxuto para referência.


2. User (ADR-0005)

Legado (EbdIbeUserModel)ADR (User)Observação
namenameMantido
aliasNamealias_nameNovo — nome social/apelido
emailemailMantido
uididMantido
churchMemberunit_id (implícito)churchMember.code → unit_id
userStatusstatusExpandir enum
statusDatestatus_dateNovo
churchRolesroles[]Novo — lista de RoleAssignment
ministry_idministry_idJá no ADR

UserStatus (legado): active, inactive, blocked, suspended, pending, banned, none
→ Status no ADR: ACTIVE, INACTIVE, BLOCKED, SUSPENDED, PENDING, BANNED

RoleAssignment (novo conceito): role_id, role_status (approved, rejected, declared, pending), last_action_date


3. ChurchRole → Role (ADR-0003, ADR-0005)

Legado tem 17 papéis com oprLevel (0=maior poder). Mapeamento para ADR:

LegadoADR RoleNível
superAdminMINISTRY_ADMIN0
ministerialEbdSupervisor, presidentPastor, assistantMinisterialPastor(ministerial)1
localSecretary, ebdSuperintendent, assistantLocalPastor, localPastorCHURCH_ADMIN / SUPERINTENDENT2-3
ebdSecretarySECRETARY4
ebdTeacherTEACHER5
ebdAssistent, churchLiderMONITOR6
ebdStudent, member, churchWorkerSTUDENT7
none

AccessType (legado): read, insertUpdate, delete → incluir no ADR-0003.


4. EbdClassModel → ClassGroup + Lesson (ADR-0005)

ClassGroup (definição da classe):

LegadoADR ClassGroupObservação
ebdClassTypeage_groupEnum: NURSERY, KINDERGARTEN, GARDEN, JUNIORS, TEENAGERS, YOUNG_ADULTS, LEVITES, BAPTISM, EVANGELISM, INTEGRATION, WORKERS, COUPLES, ADULTS, MASTERS
namenameMantido
classOrderdisplay_orderOrdem de exibição

Lesson (ocorrência de aula em data específica):

Legado (EbdClassModel em contexto de EBD)ADR LessonObservação
classProfessorteacher_idMantido
classAssistentmonitor_idNovo
totalStudent(agregado de Attendance)Ou campo redundante para compatibilidade
totalVisitorsidemattendance_category: VISITOR
totalLidersidemattendance_category: LEADER
totalWorkersidemattendance_category: WORKER
totalPastoridemattendance_category: PASTOR
lessonBookPublishermaterial.publisherVia material_id
textbookmaterial.edition/nameVia material_id
lessonNamethemeMantido
ebdClassStatuslesson_statusCREATED, IN_PROGRESS, CONCLUDED, CLOSED, NOT_HELD_TODAY, NOT_EXISTS
observationobservationNovo em Lesson

5. EbdModel → EbdSession (nova entidade ou extensão de Lesson)

O legado trata "EBD do dia" como entidade agregadora. Opções:

A) Nova entidade EbdSession: uma ocorrência de EBD para unit_id em uma data. Contém: status, type, replace_cause, weather, totals, observation. Lessons pertencem a EbdSession.

B) Lesson vira "LessonSession" e temos EbdSession como container de várias LessonSessions.

Decisão: Criar EbdSession no ADR-0005 como entidade agregadora.

Legado (EbdModel)ADR EbdSession
ebdDatedate
ebdChurchCodeunit_id
ebdChurchName(derivado)
ebdStatusstatus: CREATED, IN_PROGRESS, CONCLUDED, CLOSED
ebdTypetype: FULL_CLASS, REGULAR_CLASS, UNIQUE_CLASS, ONLINE_CLASS, CANCELED, REPLACED_BY_EVENT, REPLACED_BY_CULT
ebdReplaceCausereplace_cause (quando type anormal)
weatherDataweather_type, temperature
totalStudent, etc.totals (agregados)
observationobservation
ebdPrincipalsprincipals[] (user_ids)
ebdClasseslessons[] (subcoleção ou referências)

6. Material (ADR-0005)

LegadoADR Material
lessonBookPublisherpublisher: CPAD, EBENEZER, OTHERS, DO_NOT_USE
textbookname ou edition
lessonName(em Lesson.theme)

7. Attendance (ADR-0004, ADR-0005)

Legado usa contagem agregada. ADR-0004 define presença individual (QR, etc.).

Decisão: Manter Attendance individual. Adicionar category: STUDENT, VISITOR, LEADER, WORKER, PASTOR — para compatibilidade com contagem legada e relatórios.


Arquivos a alterar

  1. ADR-0002 — Adicionar campos em OrganizationalUnit (code, phone, email, address, pastor_id, secretary_id, foundation_date)
  2. ADR-0005 — Expandir entidades com todos os campos; adicionar EbdSession; enums (ClassAgeGroup, LessonStatus, EbdSessionType, etc.)
  3. ADR-0003 — Expandir roles; adicionar RoleStatus, AccessType, níveis de operação
  4. ADR-0004 — Adicionar attendance_category; nota sobre entrada manual (compatibilidade)

Ordem de execução

  1. ADR-0005 (domínio — base)
  2. ADR-0002 (organizacional — complementa OrganizationalUnit)
  3. ADR-0003 (acesso — papéis e permissões)
  4. ADR-0004 (presença — category apenas)