Skip to content

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]