# 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**

## **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.