Flowchart — Módulo: liturgia
Gerado pelo Archaeologist (Reversa) em 2026-05-11
Fluxo Geral
flowchart TD
A([App inicializa]) --> B[CalendarioLiturgicoService.getCalendariosLiturgicos]
B --> C{Cache em memória para o ano?}
C -- Sim --> D([Retorna do cache])
C -- Não --> E[romcal.generateCalendar ano atual]
E --> F[romcal.generateCalendar ano seguinte]
F --> G[Popula Map<ano, DiaLiturgico[]>]
G --> H([Calendário disponível em memória])
H --> I([Usuário acessa tela de liturgia])
I --> J[LiturgiaApi.getLiturgiaPorData RTK Query]
J --> K{Há cache SQLite para a data?}
K -- Sim, fresco --> L([Retorna do cache])
K -- Não --> M[GET DANCRF API /api/v3/data/YYYY-MM-DD]
M --> N{Status da resposta}
N -- 200 OK --> O[LiturgiaCacheRepository.save]
O --> P([Exibe leituras e celebrações])
N -- 404 --> Q([Exibe: sem liturgia para este dia])
N -- Erro --> R([Toast de erro de rede])
Fluxo: Geração do Calendário Romcal
flowchart TD
A([getCalendario ano]) --> B{Map.get ano}
B -- Hit --> C([DiaLiturgico[] cacheado])
B -- Miss --> D[romcal.generateCalendar ano]
D --> E[Para cada entrada: extrair campos]
E --> F[resolverNomeRomcal nome dados]
F --> G{Nome contém placeholder $(names:xxx)?}
G -- Sim --> H[Lookup recursivo com guard de ciclo]
H --> I([Nome resolvido])
G -- Não --> I
I --> J[extrairCicloLiturgico sundayCycle]
J --> K{Regex YEAR_A|B|C match?}
K -- Match --> L([CicloLiturgico: A, B ou C])
K -- Sem match --> M([CicloLiturgico: undefined])
L & M --> N[Map.set ano lista]
N --> O([Cache populado])
Fluxo: Busca de Leituras do Dia (DANCRF)
flowchart TD
A([data: YYYY-MM-DD]) --> B[LiturgiaCacheRepository.findByData]
B --> C{Cache SQLite existe e fresco?}
C -- Sim --> D([LiturgiaDia do cache])
C -- Não --> E[fetch DANCRF /api/v3/data/data]
E --> F{Response status}
F -- 200 --> G[Parse JSON → LiturgiaDiaApiResponse]
G --> H[Mapear celebracoes[]]
H --> I[Para cada celebracao: mapear leituras]
I --> J[LiturgiaCacheRepository.upsert data + payload + timestamp]
J --> K([LiturgiaDia completo])
F -- 404 --> L([null: dia sem liturgia])
F -- Erro --> M([throw Error])
Fluxo: Mapeamento Cor DANCRF → CorLiturgica
flowchart LR
A[verde] --> B[GREEN]
C[vermelho] --> D[RED]
E[roxo / violeta] --> F[PURPLE]
G[rosa] --> H[ROSE]
I[branco] --> J[WHITE]
K[dourado / ouro] --> L[GOLD]
M[preto] --> N[BLACK]
O[outros] --> P[DESCONHECIDO]