Instrução Técnica Completa — Implantação do eCosif em Produção
Destinatário: Equipe de implantação / DevOps / SRE (ex.: Banco Itaú)
Objetivo: Documento técnico único com toda a informação necessária para implantar o ecossistema eCosif em ambiente de produção, incluindo criação do banco de dados, variáveis de ambiente, passos de deploy e diagramas.
Modelo de entrega ao cliente
O cliente (banco) não recebe os fontes do projeto. A entrega é feita exclusivamente através de imagens Docker. O cliente obtém essas imagens a partir do registo de imagens e implanta-as no seu ambiente. Não há passos de build de aplicação (sem mvn, npm run build, pip install, etc.) no lado do cliente — apenas configuração de variáveis de ambiente, execução dos contentores e integração com API Gateway, base de dados e rede.
Índice
- Introdução e versões
- Arquitetura geral e diagramas
- Pré-requisitos e criação do banco de dados
- Variáveis de ambiente
- ecosif-angular (frontend)
- ecosif-auth
- ecosif-masterdata
- ecosif-moviments
- ecosif-querys
- ecosif-reports
- ecosif-compliance
- ecosif-automations
- Checklist pós-implantação
1. Introdução e versões
O eCosif é um ecossistema de aplicações para gestão contábil, composto por um frontend (SPA Angular) e vários serviços backend (Spring Boot e Python). A implantação em produção pressupõe um único domínio (ex.: https://app.ecosif.banco.com.br) com o frontend na raiz e cada backend num path (/ecosif-auth, /ecosif-masterdata, etc.).
1.1 Versões dos módulos (referência)
| Módulo | Versão |
|---|---|
| ecosif-angular | 0.7.01.202601282 |
| ecosif-auth | 0.7.01.202601280 |
| ecosif-masterdata | 0.7.01.202601280 |
| ecosif-moviments | 0.7.01.202601280 |
| ecosif-querys | 0.7.01.202601280 |
| ecosif-reports | 0.7.01.202601282 |
| ecosif-compliance | 0.1.02.202509121 |
| ecosif-automations | 0.7.01.202601280 |
2. Arquitetura geral e diagramas
2.1 Diagrama de alto nível (fluxo utilizador e APIs)
flowchart LR
subgraph Browser
A[Utilizador]
B[SPA Angular]
end
subgraph "API Gateway / Load Balancer"
GW["/ → Frontend\n/ecosif-auth → Auth\n/ecosif-masterdata → Masterdata\n/ecosif-moviments → Moviments\n/ecosif-querys → Querys\n/ecosif-reports → Reports\n/ecosif-compliance → Compliance"]
end
subgraph Backends
Auth[ecosif-auth]
MD[ecosif-masterdata]
Mov[ecosif-moviments]
Q[ecosif-querys]
R[ecosif-reports]
C[ecosif-compliance]
end
subgraph PostgreSQL
DB[(ecosif)]
end
A --> B
B --> GW
GW --> Auth
GW --> MD
GW --> Mov
GW --> Q
GW --> R
GW --> C
Auth --> DB
MD --> DB
Mov --> DB
Q --> DB
R --> DB
C --> DB
2.2 Diagrama de dependências entre módulos
flowchart TD
Angular[ecosif-angular] --> Auth[ecosif-auth]
Angular --> MD[ecosif-masterdata]
Angular --> Mov[ecosif-moviments]
Angular --> Q[ecosif-querys]
Angular --> R[ecosif-reports]
Angular --> C[ecosif-compliance]
Auth --> DB[(PostgreSQL)]
MD --> DB
Mov --> DB
Q --> DB
R --> DB
C --> DB
Auto[ecosif-automations] --> API[APIs moviments/masterdata]
API --> Mov
API --> MD
2.3 Mapeamento de URLs (produção)
| Path | Serviço | Porta interna (exemplo) |
|---|---|---|
/ |
ecosif-angular (Nginx) | 80 |
/ecosif-auth |
ecosif-auth | 8080 |
/ecosif-masterdata |
ecosif-masterdata | 8080 |
/ecosif-moviments |
ecosif-moviments | 8080 |
/ecosif-querys |
ecosif-querys | 8080 |
/ecosif-reports |
ecosif-reports | 8080 |
/ecosif-compliance |
ecosif-compliance | 8021 |
/ecosif-automations |
ecosif-automations (se HTTP) | conforme deploy |
3. Pré-requisitos e criação do banco de dados
3.1 Pré-requisitos gerais
- PostgreSQL 12 ou superior (uma instância; uma base de dados
ecosif; utilizadores por serviço recomendados). - Domínio e certificado TLS (ex.:
https://app.ecosif.banco.com.br). - Chave JWT única e segura (
AUTH_TOKEN_SECRET), partilhada por auth, masterdata, moviments, querys e reports. - Docker (ou plataforma que consuma imagens Docker, ex.: ECS, Kubernetes) para executar as imagens entregues.
- Acesso ao registo de imagens de onde o cliente faz pull das imagens Docker (URL do registo e credenciais são fornecidas com o release/tag).
3.2 Passo a passo: criação do banco de dados PostgreSQL
Passo 1. Instalar/configurar o servidor PostgreSQL (ou usar serviço gerido, ex.: RDS).
Passo 2. Criar a base de dados e os utilizadores (executar como superuser, ex.: postgres):
-- Criar a base de dados
CREATE DATABASE ecosif
WITH ENCODING = 'UTF8'
LC_COLLATE = 'pt_BR.UTF-8'
LC_CTYPE = 'pt_BR.UTF-8'
TEMPLATE = template0;
-- Conectar à base: \c ecosif
-- Utilizador para ecosif-auth (com permissões para criar schema e tabelas via Flyway)
CREATE USER ecosif_auth WITH PASSWORD 'senha_segura_auth';
GRANT ALL PRIVILEGES ON DATABASE ecosif TO ecosif_auth;
GRANT ALL ON SCHEMA public TO ecosif_auth;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO ecosif_auth;
-- Utilizador para ecosif-masterdata
CREATE USER ecosif_masterdata WITH PASSWORD 'senha_segura_masterdata';
GRANT CONNECT ON DATABASE ecosif TO ecosif_masterdata;
GRANT USAGE ON SCHEMA public TO ecosif_masterdata;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ecosif_masterdata;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_masterdata;
-- Utilizador para ecosif-moviments
CREATE USER ecosif_moviments WITH PASSWORD 'senha_segura_moviments';
GRANT CONNECT ON DATABASE ecosif TO ecosif_moviments;
GRANT USAGE ON SCHEMA public TO ecosif_moviments;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ecosif_moviments;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_moviments;
-- Utilizador para ecosif-querys
CREATE USER ecosif_querys WITH PASSWORD 'senha_segura_querys';
GRANT CONNECT ON DATABASE ecosif TO ecosif_querys;
GRANT USAGE ON SCHEMA public TO ecosif_querys;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ecosif_querys;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_querys;
-- Utilizador para ecosif-reports
CREATE USER ecosif_reports WITH PASSWORD 'senha_segura_reports';
GRANT CONNECT ON DATABASE ecosif TO ecosif_reports;
GRANT USAGE ON SCHEMA public TO ecosif_reports;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ecosif_reports;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_reports;
-- Utilizador para ecosif-compliance
CREATE USER ecosif_compliance WITH PASSWORD 'senha_segura_compliance';
GRANT CONNECT ON DATABASE ecosif TO ecosif_compliance;
GRANT USAGE ON SCHEMA public TO ecosif_compliance;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ecosif_compliance;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_compliance;
Passo 3. O ecosif-auth é o primeiro serviço a subir com Flyway ativo; ele criará as tabelas do schema (gr_user, roles, etc.). Os restantes serviços utilizam o mesmo schema (lib ecosif-database). Garantir que o utilizador ecosif_auth tem permissão para criar tabelas na primeira execução.
Passo 4. Documentar em local seguro: host, porta, nome da base, cada utilizador e respectiva senha, para configurar as variáveis de ambiente de cada módulo.
4. Variáveis de ambiente
As variáveis de ambiente são definidas na task definition (ECS), no docker run / docker-compose ou no orquestrador (Kubernetes). As imagens Docker leem-nas em tempo de execução. A lista completa está no arquivo ecosif-structure/env.template. Abaixo segue a tabela de referência de todas as variáveis (obrigatórias e opcionais) por módulo, tipo e obrigatoriedade. O detalhe de como utilizar e o que cada uma faz está na secção de cada serviço (itens 5 a 12).
4.1 Tabela de referência — todas as variáveis
| Variável | Módulo(s) | Tipo | Obrigatório |
|---|---|---|---|
| AUTH_TOKEN_SECRET | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| AUTH2_CLIENT_ID | ecosif-auth | texto | N |
| AUTH2_SECRET | ecosif-auth | texto | N |
| AWS_ACCESS_KEY_ID | ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports | texto | N |
| AWS_DEFAULT_REGION | ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports | texto | N |
| AWS_SECRET_ACCESS_KEY | ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports | texto | N |
| AWS_S3_BUCKET | ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports | texto | N |
| AWS_S3_ERROR_FOLDER | ecosif-automations | texto | N |
| AWS_S3_IMPORTED_FOLDER | ecosif-automations | texto | N |
| AWS_S3_REPORTS_FOLDER | ecosif-automations | texto | N |
| AWS_SQS_ENTRIES_QUEUE_URL | ecosif-automations | texto | N |
| AWS_SQS_QUEUE_URL | ecosif-automations | texto | N |
| ECOSIF_ANGULAR_API_AUTH_URL | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_API_COMPLIANCE_URL | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_API_MASTERDATA_URL | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_API_MOVIMENTS_URL | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_API_QUERYS_URL | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_API_REPORTS_URL | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_AUTH_TOKEN | ecosif-angular | texto | N |
| ECOSIF_ANGULAR_DEBUG | ecosif-angular | boolean | N |
| ECOSIF_ANGULAR_HIDE_ADMIN_MENU | ecosif-angular | boolean | N |
| ECOSIF_ANGULAR_PORT | ecosif-angular | número | N |
| ECOSIF_ANGULAR_PRODUCTION | ecosif-angular | boolean | N |
| ECOSIF_API_BASE_URL | ecosif-angular, ecosif-automations | texto | S (automations em prod) |
| ECOSIF_AUTH_PORT | ecosif-auth | número | S |
| ECOSIF_AUTH_CONTEXT_PATH | ecosif-auth | texto | S |
| ECOSIF_AUTOMATIONS_CONTEXT_PATH | ecosif-automations | texto | N |
| ECOSIF_AUTOMATIONS_PORT | ecosif-automations | número | N |
| ECOSIF_AZURE_AUTHORITY | ecosif-angular, ecosif-auth | texto | N |
| ECOSIF_AZURE_CLIENT_ID | ecosif-angular, ecosif-auth | texto | N |
| ECOSIF_AZURE_TENANT_ID | ecosif-angular, ecosif-auth | texto | N |
| ECOSIF_COMPLIANCE_CONTEXT_PATH | ecosif-compliance | texto | N |
| ECOSIF_COMPLIANCE_PORT | ecosif-compliance | número | N |
| ECOSIF_CORS | ecosif-auth, ecosif-compliance, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| ECOSIF_FLYWAY_ENABLED | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys | boolean | N |
| ECOSIF_LOGMODE_HIBERNATE | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | N |
| ECOSIF_LOGMODE_HIBERNATE_SQL | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | N |
| ECOSIF_LOGMODE_ROOT | ecosif-auth, ecosif-compliance, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | N |
| ECOSIF_LOGMODE_SPRING | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | N |
| ECOSIF_LOGSHOW | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | boolean | N |
| ECOSIF_LOCAL_MODE | ecosif-automations | boolean | N |
| ECOSIF_MASTERDATA_CONTEXT_PATH | ecosif-masterdata | texto | S |
| ECOSIF_MASTERDATA_PORT | ecosif-masterdata | número | S |
| ECOSIF_MOVIMENTS_CONTEXT_PATH | ecosif-moviments | texto | S |
| ECOSIF_MOVIMENTS_PORT | ecosif-moviments | número | S |
| ECOSIF_PAGINATION_SIZE | ecosif-angular | número | N |
| ECOSIF_QUERYS_CONTEXT_PATH | ecosif-querys | texto | S |
| ECOSIF_QUERYS_PORT | ecosif-querys | número | S |
| ECOSIF_REPORTS_CONTEXT_PATH | ecosif-reports | texto | S |
| ECOSIF_REPORTS_PORT | ecosif-reports | número | S |
| HIBERNATE_DDL_AUTO | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys | texto | S |
| LAMBDA_MEMORY_SIZE | ecosif-automations | número | N |
| LAMBDA_RUNTIME | ecosif-automations | texto | N |
| LAMBDA_TIMEOUT | ecosif-automations | número | N |
| LOG_FORMAT | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | N |
| POSTGRES_DB | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| POSTGRES_HOST | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| POSTGRES_PASSWORD | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| POSTGRES_PORT | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | número | S |
| POSTGRES_USER | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| SERVER_SERVLET_CONTEXT_PATH | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | texto | S |
| SPRING_AUTOCONFIGURE_EXCLUDE | ecosif-auth | texto | N |
| TOKEN_EXPIRATION | ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports | número | N |
| ECOSIF_CORS | ecosif-compliance | texto | S |
| ECOSIF_DB_LOGIN | ecosif-compliance | texto | S |
| ECOSIF_DB_PASSWORD | ecosif-compliance | texto | S |
| ECOSIF_DB_PORT | ecosif-compliance | número | S |
| ECOSIF_DB_SERVER | ecosif-compliance | texto | S |
| ECOSIF_DB_USER | ecosif-compliance | texto | S |
| ECOSIF_DEBUG_MODE | ecosif-compliance | boolean | N |
| ECOSIF_HOST_ADDRESS | ecosif-compliance | texto | N |
| ECOSIF_LOGMODE_ROOT | ecosif-compliance | texto | N |
| ECOSIF_COMPLIANCE_PORT | ecosif-compliance | número | N |
| ECOSIF_RUNTIME_ENVIRONMENT | ecosif-compliance | texto | N |
| ECOSIF_SESSION_TIMEOUT | ecosif-compliance | número | N |
| ECOSIF_VERSION | estrutura | texto | N |
| ECOSIF_ENVIRONMENT | ecosif-moviments, estrutura | texto | N |
| ECOSIF_DOMAIN | estrutura | texto | N |
| TZ | estrutura | texto | N |
| TRAEFIK_ACME_EMAIL | estrutura | texto | N |
| USEDATADOG | estrutura | boolean | N |
| DATADOG_API_KEY | estrutura | texto | N |
| DATADOG_ENV | estrutura | texto | N |
| DD_AGENT_HOST | estrutura | texto | N |
| DD_TRACE_AGENT_PORT | estrutura | número | N |
| DD_SERVICE | estrutura | texto | N |
| DD_ENV | estrutura | texto | N |
| DD_VERSION | estrutura | texto | N |
| DD_LOGS_INJECTION | estrutura | texto | N |
| DOCKER_GID | estrutura | número | N |
Notas: (1) O módulo estrutura refere-se a variáveis usadas pelo ecosif-structure (docker-compose, scripts de setup), não por um contentor de aplicação específico. As variáveis exclusivas da estrutura aparecem no final da tabela e estão centralizadas no final do arquivo env.template. (2) TRAEFIK_ACME_ENABLED foi removida por não ser utilizada pelo docker-compose nem pelo Traefik. (3) Nos serviços Spring Boot, o context path pode ser definido por SERVER_SERVLET_CONTEXT_PATH (direto no contentor) ou, no ecosif-structure, por ECOSIF_*_CONTEXT_PATH (ex.: ECOSIF_AUTH_CONTEXT_PATH). (4) Todas as variáveis são em MAIÚSCULAS (incluindo ecosif-compliance). (5) O detalhe de como utilizar cada variável e o que faz está na secção de cada serviço (itens 5 a 12).
5. ecosif-angular (frontend)
5.1 Função e tecnologia
- Função: Interface web (login, cadastros, lançamentos, consultas, relatórios, administração).
- Stack: Angular 14, TypeScript 4.7, CoreUI, Bootstrap 5, Nginx (servir estáticos).
- Versão: 0.7.01.202601282
5.2 Diagrama (frontend e APIs)
flowchart LR
subgraph "Navegador"
UI[SPA Angular]
end
subgraph "Mesma origem (ex.: app.ecosif.banco.com.br)"
UI --> A[/ecosif-auth]
UI --> M[/ecosif-masterdata]
UI --> V[/ecosif-moviments]
UI --> Q[/ecosif-querys]
UI --> R[/ecosif-reports]
UI --> C[/ecosif-compliance]
end
5.3 Variáveis de ambiente
Definir na task/contentor do frontend. O entrypoint usa-as para gerar window.env (ex.: env.js). Se a imagem não suportar variáveis em runtime, os paths das APIs já vêm na imagem para o domínio acordado.
| Variável | Como utilizar | O que faz |
|---|---|---|
| ECOSIF_ANGULAR_API_AUTH_URL | Path relativo, ex.: /ecosif-auth (ou vazio para derivar de ECOSIF_AUTH_CONTEXT_PATH) |
Base URL do auth (authUrl no window.env). |
| ECOSIF_ANGULAR_API_MASTERDATA_URL | ex.: /ecosif-masterdata |
Base do masterdata (apiUrl). |
| ECOSIF_ANGULAR_API_MOVIMENTS_URL | ex.: /ecosif-moviments |
Base do moviments (movementAPIUrl). |
| ECOSIF_ANGULAR_API_QUERYS_URL | ex.: /ecosif-querys |
Base do querys (entryAPIUrl). |
| ECOSIF_ANGULAR_API_REPORTS_URL | ex.: /ecosif-reports |
Base do reports (reportsApiUrl). |
| ECOSIF_ANGULAR_API_COMPLIANCE_URL | ex.: /ecosif-compliance |
Base do compliance (complianceApiUrl). |
| ECOSIF_ANGULAR_AUTH_TOKEN | Token fixo (opcional, raro em prod) | Se definido, usado em contexto específico. |
| ECOSIF_ANGULAR_DEBUG | true ou false |
Ativa modo debug da aplicação. |
| ECOSIF_ANGULAR_HIDE_ADMIN_MENU | true (prod) ou false (QAS) |
Esconde ou mostra o menu "Ferramentas Administrativas" (ex.: Logs Docker). |
| ECOSIF_ANGULAR_PORT | ex.: 80 |
Porta em que o Nginx escuta dentro do contentor. |
| ECOSIF_ANGULAR_PRODUCTION | true em produção, false em dev/QAS |
Indicador de ambiente (production no window.env). |
| ECOSIF_PAGINATION_SIZE | ex.: 100 |
Tamanho padrão de paginação (paginationSize). |
| ECOSIF_API_BASE_URL | URL base completa (ex.: https://app.ecosif.banco.com.br) |
Referência para chamadas às APIs quando necessário. |
| ECOSIF_AZURE_AUTHORITY | URL do tenant/authority (login Azure AD) | MSAL: Authority para Azure AD. |
| ECOSIF_AZURE_CLIENT_ID | Client ID da app no Azure Portal | MSAL: habilita login com Azure AD. |
| ECOSIF_AZURE_TENANT_ID | ID do tenant Azure | MSAL: tenant para Azure AD. |
5.4 Passo a passo de implantação (ecosif-angular)
- Obter a imagem Docker do registo indicado no release. Exemplo:
docker pull disoft/ecosif-angular:<tag>. - Configurar variáveis de ambiente do contentor (se a imagem suportar): URLs das APIs em paths relativos (ex.:
authUrl=/ecosif-auth,apiUrl=/ecosif-masterdata, etc.) ou domínio para o qual a imagem foi preparada. - Executar o contentor (ou definir task/serviço em ECS/Kubernetes) com a porta exposta (ex.: 80). O contentor serve arquivos estáticos via Nginx; health check em
/healthse disponível. - Expor o serviço na raiz do domínio (path
/) no API Gateway ou load balancer. - Validar: abrir
https://app.ecosif.banco.com.bre verificar login (requer ecosif-auth já em funcionamento).
6. ecosif-auth
6.1 Função e tecnologia
- Função: Autenticação (login utilizador/senha, OAuth2/Google ou Azure AD), emissão e validação de JWT.
- Stack: Spring Boot 2.7, Java 17, PostgreSQL, Flyway.
- Versão: 0.7.01.202601280
6.2 Variáveis de ambiente
Definir na task/contentor do ecosif-auth. Segredos (POSTGRES_PASSWORD, AUTH_TOKEN_SECRET) em repositório de segredos.
| Variável | Como utilizar | O que faz |
|---|---|---|
| SERVER_SERVLET_CONTEXT_PATH | Path do serviço: /ecosif-auth (ou use ECOSIF_AUTH_CONTEXT_PATH no ecosif-structure) |
Prefixo da aplicação; deve coincidir com o mapeamento no API Gateway. |
| ECOSIF_AUTH_PORT | ex.: 8080 |
Porta HTTP em que o serviço escuta dentro do contentor. |
| ECOSIF_AUTH_CONTEXT_PATH | ex.: /ecosif-auth |
Usado no docker-compose para montar SERVER_SERVLET_CONTEXT_PATH. |
| POSTGRES_HOST | Host do PostgreSQL (RDS ou servidor) | Conexão JDBC: host. |
| POSTGRES_PORT | ex.: 5432 |
Conexão JDBC: porta. |
| POSTGRES_DB | ex.: ecosif |
Nome da base de dados. |
| POSTGRES_USER | ex.: ecosif_auth |
Utilizador da base (um por serviço). |
| POSTGRES_PASSWORD | Senha do utilizador (em segredos) | Credencial JDBC. |
| AUTH_TOKEN_SECRET | String longa e aleatória; o mesmo valor em todos os serviços que usam JWT | Chave HMAC para assinar (auth) e validar (outros serviços) tokens JWT. |
| TOKEN_EXPIRATION | Milissegundos, ex.: 86400000 (24h) |
Tempo de vida do token emitido pelo auth. |
| ECOSIF_CORS | URL exata do frontend, ex.: https://app.ecosif.banco.com.br (várias origens separadas por vírgula) |
Origens permitidas no CORS. |
| HIBERNATE_DDL_AUTO | Em produção: validate; não usar update em prod |
Comportamento do Hibernate (validate só valida o schema). |
| ECOSIF_FLYWAY_ENABLED | true na 1ª implantação (executa migrações); depois pode ser false |
Executa migrações Flyway ao arranque (cria/atualiza tabelas). |
| AUTH2_CLIENT_ID | Client ID do Google Cloud Console (opcional) | Se definido com AUTH2_SECRET, habilita login OAuth2 com Google. |
| AUTH2_SECRET | Secret do cliente OAuth2 Google (opcional) | Credencial OAuth2 Google. |
| SPRING_AUTOCONFIGURE_EXCLUDE | ex.: excluir auto-config OAuth2 se desativar (opcional) | Desabilita auto-configuração do OAuth2 quando client ID está vazio. |
| ECOSIF_AZURE_CLIENT_ID, ECOSIF_AZURE_TENANT_ID, ECOSIF_AZURE_AUTHORITY | Valores do Azure Portal (opcional) | Habilita login com Azure AD / Microsoft Entra ID. |
| LOG_FORMAT | default, json ou spring |
Escolhe o arquivo logback (logback-${LOG_FORMAT}.xml). |
| ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE | ex.: INFO |
Níveis de log por pacote. |
| ECOSIF_LOGSHOW | true ou false |
Exibição de logs (conforme implementação). |
6.3 Passo a passo de implantação (ecosif-auth)
- Banco criado (ver secção 3) e utilizador
ecosif_authcom permissões. - Obter a imagem Docker do registo indicado no release (imagem gerada no tag GitHub). Exemplo:
docker pull <registro>/ecosif-auth:<tag>. - Configurar todas as variáveis de ambiente na task/contentor (POSTGRES_*, AUTH_TOKEN_SECRET, ECOSIF_CORS, SERVER_SERVLET_CONTEXT_PATH=/ecosif-auth, etc.).
- Subir o contentor (ou serviço ECS/Kubernetes). Na primeira execução, Flyway executará as migrações em
db/migrationdentro da imagem. - Health check: configurar ALB/API Gateway para
/ecosif-auth/actuator/health. - Mapear no API Gateway o path
/ecosif-auth(e/ecosif-auth/{proxy+}) para este serviço.
7. ecosif-masterdata
7.1 Função e tecnologia
- Função: Dados mestres (empresas, filiais, planos de contas, fundos, históricos, utilizadores).
- Stack: Spring Boot 2.7, Java 17, PostgreSQL, lib ecosif-database.
- Versão: 0.7.01.202601280
7.2 Variáveis de ambiente
Definir na task/contentor do ecosif-masterdata. AUTH_TOKEN_SECRET deve ser igual ao do ecosif-auth.
| Variável | Como utilizar | O que faz |
|---|---|---|
| SERVER_SERVLET_CONTEXT_PATH | /ecosif-masterdata (ou ECOSIF_MASTERDATA_CONTEXT_PATH no ecosif-structure) |
Context path; coincide com o mapeamento no API Gateway. |
| ECOSIF_MASTERDATA_PORT | ex.: 8080 |
Porta HTTP do serviço. |
| ECOSIF_MASTERDATA_CONTEXT_PATH | ex.: /ecosif-masterdata |
Usado no ecosif-structure para montar o context path. |
| POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB | Host, porta e nome da base (ex.: ecosif) | Conexão JDBC ao PostgreSQL. |
| POSTGRES_USER, POSTGRES_PASSWORD | ex.: ecosif_masterdata e senha (em segredos) |
Credenciais da base (um utilizador por serviço). |
| AUTH_TOKEN_SECRET | O mesmo valor que no ecosif-auth | Validação do JWT nas requisições. |
| TOKEN_EXPIRATION | ex.: 86400000 |
Referência para consistência com o auth. |
| ECOSIF_CORS | URL do frontend, ex.: https://app.ecosif.banco.com.br |
Origens CORS permitidas. |
| HIBERNATE_DDL_AUTO | validate em produção |
Hibernate não altera o schema. |
| AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET | Preencher se o módulo usar S3 (opcional) | Acesso a buckets S3 para arquivos/importação. |
| LOG_FORMAT, ECOSIF_LOGMODE_* | ex.: default, INFO |
Formato e níveis de log. |
| ECOSIF_LOGSHOW | true ou false |
Exibição de logs. |
7.3 Passo a passo de implantação (ecosif-masterdata)
- ecosif-auth já implantado (schema e tabelas existem).
- Obter a imagem Docker do registo (tag do release). Ex.:
docker pull <registro>/ecosif-masterdata:<tag>. - Configurar variáveis de ambiente; context path
/ecosif-masterdata. - Subir o contentor; Health:
/ecosif-masterdata/actuator/health. - Mapear no API Gateway
/ecosif-masterdata(e/ecosif-masterdata/{proxy+}) para este serviço.
8. ecosif-moviments
8.1 Função e tecnologia
- Função: Lançamentos, lotes, consolidação, encerramento, importação (ex.: IPL).
- Stack: Spring Boot 2.7, Java 17, PostgreSQL, Flyway.
- Versão: 0.7.01.202601280
8.2 Variáveis de ambiente
Definir na task/contentor do ecosif-moviments. AUTH_TOKEN_SECRET igual ao do ecosif-auth.
| Variável | Como utilizar | O que faz |
|---|---|---|
| SERVER_SERVLET_CONTEXT_PATH | /ecosif-moviments (ou ECOSIF_MOVIMENTS_CONTEXT_PATH) |
Context path; coincide com o API Gateway. |
| ECOSIF_MOVIMENTS_PORT | ex.: 8080 |
Porta HTTP do serviço. |
| ECOSIF_MOVIMENTS_CONTEXT_PATH | ex.: /ecosif-moviments |
Usado no ecosif-structure. |
| POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB | Host, porta, nome da base | Conexão JDBC. |
| POSTGRES_USER, POSTGRES_PASSWORD | ex.: ecosif_moviments e senha |
Credenciais da base. |
| AUTH_TOKEN_SECRET, TOKEN_EXPIRATION | Mesmo valor que no auth | Validação JWT e referência de validade. |
| ECOSIF_CORS | URL do frontend | Origens CORS. |
| HIBERNATE_DDL_AUTO | validate em produção |
Hibernate não altera schema. |
| ECOSIF_FLYWAY_ENABLED | true ou false conforme política de migrações |
Executa Flyway ao arranque (se o módulo tiver migrações). |
| ECOSIF_ENVIRONMENT | ex.: prod, local |
Identificador de ambiente (ecosif.environment). |
| AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET | Se usar importação por S3 (opcional) | Acesso ao bucket S3. |
| LOG_FORMAT, ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW | ex.: default, INFO |
Formato e níveis de log. |
8.3 Passo a passo de implantação (ecosif-moviments)
- Auth e masterdata já implantados.
- Obter a imagem Docker do registo (tag do release). Ex.:
docker pull <registro>/ecosif-moviments:<tag>. - Configurar variáveis de ambiente; context path
/ecosif-moviments. - Subir o contentor; Health:
/ecosif-moviments/actuator/health. - Mapear no API Gateway
/ecosif-moviments(e/ecosif-moviments/{proxy+}) para este serviço.
9. ecosif-querys
9.1 Função e tecnologia
- Função: Consultas (saldos, razão, listagens) — apenas leitura.
- Stack: Spring Boot 2.7, Java 17, PostgreSQL.
- Versão: 0.7.01.202601280
9.2 Variáveis de ambiente
Definir na task/contentor do ecosif-querys. AUTH_TOKEN_SECRET igual ao do ecosif-auth.
| Variável | Como utilizar | O que faz |
|---|---|---|
| SERVER_SERVLET_CONTEXT_PATH | /ecosif-querys (ou ECOSIF_QUERYS_CONTEXT_PATH) |
Context path; coincide com o API Gateway. |
| ECOSIF_QUERYS_PORT | ex.: 8080 |
Porta HTTP do serviço. |
| ECOSIF_QUERYS_CONTEXT_PATH | ex.: /ecosif-querys |
Usado no ecosif-structure. |
| POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB | Host, porta, nome da base | Conexão JDBC. |
| POSTGRES_USER, POSTGRES_PASSWORD | ex.: ecosif_querys (perfil de leitura) e senha |
Credenciais da base (SELECT). |
| AUTH_TOKEN_SECRET, TOKEN_EXPIRATION | Mesmo valor que no auth | Validação JWT. |
| ECOSIF_CORS | URL do frontend | Origens CORS. |
| HIBERNATE_DDL_AUTO | validate em produção |
Hibernate não altera schema. |
| ECOSIF_FLYWAY_ENABLED | true ou false conforme política |
Executa Flyway se o módulo tiver migrações. |
| LOG_FORMAT, ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW | ex.: default, INFO |
Formato e níveis de log. |
9.3 Passo a passo de implantação (ecosif-querys)
- Serviços que escrevem no BD (auth, masterdata, moviments) já implantados.
- Obter a imagem Docker do registo (tag do release). Ex.:
docker pull <registro>/ecosif-querys:<tag>. - Configurar variáveis de ambiente; context path
/ecosif-querys. - Subir o contentor; Health:
/ecosif-querys/actuator/health. - Mapear no API Gateway
/ecosif-querys(e/ecosif-querys/{proxy+}) para este serviço.
10. ecosif-reports
10.1 Função e tecnologia
- Função: Geração de relatórios (PDF, CSV, TXT) — JasperReports.
- Stack: Spring Boot 2.7, Java 17, PostgreSQL.
- Versão: 0.7.01.202601282
10.2 Variáveis de ambiente
Definir na task/contentor do ecosif-reports. AUTH_TOKEN_SECRET igual ao do ecosif-auth.
| Variável | Como utilizar | O que faz |
|---|---|---|
| SERVER_SERVLET_CONTEXT_PATH | /ecosif-reports (ou ECOSIF_REPORTS_CONTEXT_PATH) |
Context path; coincide com o API Gateway. |
| ECOSIF_REPORTS_PORT | ex.: 8080 |
Porta HTTP do serviço. |
| ECOSIF_REPORTS_CONTEXT_PATH | ex.: /ecosif-reports |
Usado no ecosif-structure. |
| POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB | Host, porta, nome da base | Conexão JDBC. |
| POSTGRES_USER, POSTGRES_PASSWORD | ex.: ecosif_reports (leitura) e senha |
Credenciais da base. |
| AUTH_TOKEN_SECRET, TOKEN_EXPIRATION | Mesmo valor que no auth | Validação JWT. |
| ECOSIF_CORS | URL do frontend | Origens CORS. |
| AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET | Se usar S3 para relatórios (opcional) | Acesso ao bucket S3. |
| LOG_FORMAT, ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW | ex.: default, INFO |
Formato e níveis de log. |
10.3 Passo a passo de implantação (ecosif-reports)
- Obter a imagem Docker do registo (tag do release). Ex.:
docker pull <registro>/ecosif-reports:<tag>. - Configurar variáveis de ambiente; context path
/ecosif-reports. - Subir o contentor (a imagem já inclui java.awt.headless=true para geração de relatórios).
- Health:
/ecosif-reports/actuator/health. - Mapear no API Gateway
/ecosif-reports(e/ecosif-reports/{proxy+}) para este serviço.
11. ecosif-compliance
11.1 Função e tecnologia
- Função: Validação e conformidade contábil (regras COSIF/CVM); motor de regras em DSL; API REST e Swagger.
- Stack: Python 3.12, Flask, Flask-RESTX, SQLAlchemy, PostgreSQL.
- Versão: 0.1.02.202509121
11.2 Diagrama (compliance)
flowchart LR
subgraph "ecosif-compliance"
API[API REST]
Engine[Motor regras]
end
Angular[Frontend] --> API
API --> Engine
Engine --> DB[(PostgreSQL)]
11.3 Variáveis de ambiente
O ecosif-compliance (Python/Flask) lê variáveis de ambiente em MAIÚSCULAS e mapeia-as para config.json ou config-{ECOSIF_RUNTIME_ENVIRONMENT}.json. Definir na task/contentor.
| Variável | Como utilizar | O que faz |
|---|---|---|
| ECOSIF_COMPLIANCE_PORT | ex.: 8021 |
Porta HTTP do serviço (host.port no config). |
| ECOSIF_HOST_ADDRESS | ex.: 0.0.0.0 |
Endereço de escuta (host.address). |
| ECOSIF_DB_SERVER | Host do PostgreSQL | database.host. |
| ECOSIF_DB_PORT | ex.: 5432 |
database.port. |
| ECOSIF_DB_LOGIN | ex.: ecosif |
Nome da base (database.name). |
| ECOSIF_DB_USER | ex.: ecosif_compliance |
Utilizador da base. |
| ECOSIF_DB_PASSWORD | Senha (em segredos) | database.password. |
| ECOSIF_CORS | URL do frontend, ex.: https://app.ecosif.banco.com.br |
Origens CORS (cors.allowed_origins). |
| ECOSIF_RUNTIME_ENVIRONMENT | ex.: prod |
Escolha do arquivo: prod → config-prod.json. |
| ECOSIF_DEBUG_MODE | false em produção |
runtime.debug. |
| ECOSIF_SESSION_TIMEOUT | ex.: 30 (minutos) |
session.timeout. |
| ECOSIF_LOGMODE_ROOT | ex.: INFO |
Nível de log (logging). |
| ECOSIF_COMPLIANCE_CONTEXT_PATH | ex.: /ecosif-compliance |
Path do serviço no ecosif-structure. |
11.4 Passo a passo de implantação (ecosif-compliance)
- Obter a imagem Docker do registo (tag do release). Ex.:
docker pull <registro>/ecosif-compliance:<tag>. - Configurar variáveis de ambiente do contentor (ECOSIF_DB_SERVER, ECOSIF_DB_PASSWORD, ECOSIF_CORS, ECOSIF_COMPLIANCE_PORT, ECOSIF_RUNTIME_ENVIRONMENT=prod, etc.). A imagem pode usar arquivo config com placeholders resolvidos por variáveis.
- Configurar prefixo da aplicação
/ecosif-compliance(reverse proxy ou configuração na imagem) para que os endpoints respondam emhttps://app.ecosif.banco.com.br/ecosif-compliance/.... - Subir o contentor (porta 8021 no interior; gunicorn já configurado na imagem).
- Health check: endpoint de saúde exposto pela app (ex.:
/ecosif-compliance/health). - Mapear no API Gateway
/ecosif-compliance(e/ecosif-compliance/{proxy+}) para este serviço.
12. ecosif-automations
12.1 Função e tecnologia
- Função: Importação automática de arquivos (.IPL, .CT32.LD), acionada por eventos (S3, SQS); chama as APIs moviments e masterdata.
- Stack: Python 3.11+, AWS (S3, SQS, Lambda) ou execução em ECS.
- Versão: 0.7.01.202601280
12.2 Diagrama (fluxo automatizações)
flowchart LR
S3[S3 Bucket] --> Lambda[Lambda Import]
Lambda --> SQS[SQS Fila]
SQS --> Disp[Lambda Dispatcher]
Disp --> API[API moviments/masterdata]
API --> Mov[ecosif-moviments]
API --> MD[ecosif-masterdata]
12.3 Variáveis de ambiente
Definir na configuração da função Lambda ou na task ECS do ecosif-automations. Em produção (AWS), ECOSIF_LOCAL_MODE=false e ECOSIF_API_BASE_URL aponta para o domínio das APIs.
| Variável | Como utilizar | O que faz |
|---|---|---|
| ECOSIF_API_BASE_URL | URL base completa, ex.: https://app.ecosif.banco.com.br |
Base para chamar as APIs moviments e masterdata. |
| ECOSIF_LOCAL_MODE | false em produção (AWS); true para uso local com arquivos |
Se false, usa S3/SQS; se true, usa sistema de arquivos local. |
| ECOSIF_AUTOMATIONS_PORT | ex.: 8085 (se o módulo expuser HTTP) |
Porta do serviço quando em modo ECS/HTTP. |
| ECOSIF_AUTOMATIONS_CONTEXT_PATH | ex.: /ecosif-automations |
Path quando exposto atrás do API Gateway. |
| AWS_REGION | ex.: us-east-1 |
Região AWS dos recursos (bucket, filas). |
| AWS_S3_BUCKET ou AWS_S3_BUCKET_NAME | Nome do bucket S3 | Bucket para arquivos de entrada/saída da importação. |
| AWS_S3_ERROR_FOLDER | ex.: importError/ |
Prefixo S3 para arquivos com erro. |
| AWS_S3_IMPORTED_FOLDER | ex.: imported/ |
Prefixo S3 para arquivos importados com sucesso. |
| AWS_S3_REPORTS_FOLDER | ex.: imported/reports/ |
Prefixo S3 para relatórios de processamento. |
| AWS_SQS_QUEUE_URL | URL da fila SQS (dispatcher) | Fila que o Lambda dispatcher consome. |
| AWS_SQS_ENTRIES_QUEUE_URL | URL da fila SQS (import) | Fila para onde o Lambda de import envia mensagens. |
| AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY | Credenciais AWS (se não usar IAM role) | Acesso a S3 e SQS. |
| LAMBDA_RUNTIME | ex.: java17 |
Runtime da função Lambda. |
| LAMBDA_TIMEOUT | ex.: 300 (segundos) |
Timeout da Lambda. |
| LAMBDA_MEMORY_SIZE | ex.: 512 (MB) |
Memória alocada à Lambda. |
12.4 Passo a passo de implantação (ecosif-automations)
- APIs (moviments, masterdata) já implantadas e acessíveis em
ECOSIF_API_BASE_URL. - Obter as imagens Docker ou pacotes Lambda do registo/release (imagens ou artefactos gerados no tag GitHub para as funções de import e dispatcher).
- AWS: criar bucket S3, filas SQS; implantar as funções Lambda (ou tarefas ECS) usando as imagens/artefactos fornecidos.
- Configurar variáveis nas Lambdas ou na task ECS:
ECOSIF_API_BASE_URL,AWS_REGION, bucket, filas. - Credenciais: IAM roles (Lambdas/ECS) ou variáveis AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.
- Testar: upload de arquivo no bucket e verificar processamento e chamadas às APIs.
- Se existir API HTTP neste módulo: obter a imagem correspondente e mapear
/ecosif-automationsno API Gateway.
13. Checklist pós-implantação
- [ ] PostgreSQL criado; utilizadores e senhas documentados; ecosif-auth executou Flyway com sucesso.
- [ ] ecosif-auth: health
/ecosif-auth/actuator/healthretorna 200; login e emissão de JWT funcionam. - [ ] ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports: health e endpoints respondem com token válido.
- [ ] ecosif-compliance: health e Swagger acessíveis em
/ecosif-compliance. - [ ] ecosif-angular: carrega em
https://app.ecosif.banco.com.br; login e navegação para cadastros e consultas funcionam. - [ ] CORS configurado em todos os backends com a URL exata do frontend.
- [ ] ecosif-automations (se implantado): integração S3/SQS e chamadas às APIs validadas.
- [ ] Logs e monitorização (ex.: CloudWatch, agregadores) configurados conforme política do banco.
- [ ] Segredos (senhas BD, AUTH_TOKEN_SECRET) geridos por repositório seguro (Secrets Manager, etc.).
Fim do documento. Para detalhes adicionais por módulo, consultar a pasta docs/ de cada repositório (operational.md, aws-ecs-api-gateway.md).
Equipe eCosif · Instrução Técnica de Implantação em Produção