# Novo fluxo de statement ## **Motivação**: Hoje o fluxo de captura do extrato bancário duplica nosso custo de infraestrutra por transação e sua manutenção não é simples, uma vez que a lógica está espalhada em cada adapter. Com isso a idéia é montar um fluxo simplficado, de baixo custo e fácil manutenção. ## **Fluxo Atual** :::info **OBS.:** Cada adapter implementa o fluxo de uma forma devido às particularidades de integração com a APÌ externa. Vou exemplificar aqui usando a implementação **BS2**. ::: 1. A cada 30 min, o *adapter* chama o endpoint de statatement da API bancária que retorna todas as transações consolidadas (payin, payout, taxas) de cada conta bancária. 1. O *adapter* salva essas transações no seu próprio banco de dados. 1. As transações salvas são migradas para o *openbanking*, relacionadas a uma *Account* destinada ao Transfero FinOps. 1. Após o processamento dessas transações no *openbanking*, elas são notificadas via fila para o time do Maynard 1. Como fallback, essas transações podem ser consultadas via endpoint **(NÃO RECOMENDADO)**. ## **Fluxo Proposto** 1. Cada adapter possui um endpoint que recebe como parâmetro um *AccountNumber* e um *timerange* para retornar as transações de extrato. 1. O **BankingService** possui um único endpoint de extrato que mapeia o endpoint descrito acima de todos os adapters. 1. Um novo serviço roda a cada 30min, acessa o endpoint do **BankingService** e recupera todas as transações de extrato para cada conta bancária cadastrada, em cada banco. 1. Todas as **transações de extrato** recuperadas são salvas no banco de dados ***caasbackoffice***. 1. O time do Maynard acessa um endpoint do ***caasbackoffice-api***, que acessa diretamente essa tabela no banco de dados. ## **Diagrama** ![](https://hackmd.io/_uploads/S1EM8CMH2.png) ## **Tarefas/Cards** - [BS2] Criar endpoint de extrato padronizado; - [Genial (legacy)] Criar endpoint de extrato padronizado; - [BIND] Criar endpoint de extrato padronizado; - [Topázio] Criar endpoint de extrato padronizado; - [Fitbank] Criar endpoint de extrato padronizado; - [BankingService] Criar novo endpoint de extrato unificado; - [ETL] Criar função para extrair extratos periódicamente; - [API] Criar endpoint para expor extratos para o TMO.