Ir para o conteúdo

Visão geral

Quatro componentes deployados separadamente, conectados por HTTP, fila SQS e invocações Lambda. O diagrama abaixo mostra quem fala com quem.

flowchart LR
    Cliente[Carbon_Free_Cliente
React] API[api-carbon-free
FastAPI] SQS[(SQS
FormSubmissions)] S3[(S3
submissions bucket)] Worker[lambda_chunk_processor
Python Lambda] GHG[calculo_automatizado_ghg
Python Lambda] DB[(MySQL)] Auth0[Auth0] Cliente -- HTTPS --> API Cliente -. login .-> Auth0 API -. JWT verify .-> Auth0 API --> DB API --> S3 API --> SQS API --> GHG SQS --> Worker Worker --> S3 Worker --> GHG Worker --> DB

Responsabilidades

Componente É dono de Não cuida de
Carbon_Free_Cliente UI, navegação, formulários de submissão, dashboards client-side Cálculo, persistência, autenticação real (delega ao Auth0)
api-carbon-free Domínios de negócio, autenticação JWT, orquestração de submissões, contratos HTTP públicos Cálculo GEE (delega), processamento async pesado (delega à SQS)
lambda_chunk_processor Consumir SQS, baixar chunks do S3, chamar GHG Lambda em loop, gravar resultados Decidir regra de negócio, expor HTTP
calculo_automatizado_ghg Cálculo de emissões dado um payload normalizado Conhecer o domínio Carbon Free, persistir nada

Contratos entre componentes

Origem Destino Como Onde está documentado
Carbon_Free_Clienteapi-carbon-free HTTP REST Swagger em /docs api-carbon-free
api-carbon-freecalculo_automatizado_ghg Invocação Lambda síncrona Payload normalizado (question_mapping.py) api-carbon-free
api-carbon-freeSQSlambda_chunk_processor Mensagem SQS com chunk_id + metadados Schema da mensagem api-carbon-free + lambda_chunk_processor
lambda_chunk_processorcalculo_automatizado_ghg Invocação Lambda síncrona Mesmo payload da API api-carbon-free
lambda_chunk_processorMySQL Upsert direto na tabela de respostas Schema do banco api-carbon-free (migrations)

Mudou um desses contratos? Cria ADR no repo dono e avisa o repo consumidor.

Documentação por componente

Mais profundidade