Como Rodar Localmente - ecosif-masterdata

Este guia explica como configurar e executar o ecosif-masterdata em seu ambiente local de desenvolvimento.

Pré-requisitos

Softwares Necessários

Verificação

# Verificar Java
java -version
# Deve mostrar versão 17 ou superior

# Verificar Maven
mvn -version
# Deve mostrar versão 3.6 ou superior

# Verificar PostgreSQL
psql --version
# Deve mostrar versão 13 ou superior

Passo 1: Clone do Repositório

git clone <url-do-repositorio>
cd ecosif-masterdata

Passo 2: Configuração do Banco de Dados

Criar Banco de Dados

# Conectar ao PostgreSQL
psql -U postgres

# Criar banco de dados
CREATE DATABASE ecosif;

# Criar usuário (opcional)
CREATE USER ecosif_user WITH PASSWORD 'sua_senha';
GRANT ALL PRIVILEGES ON DATABASE ecosif TO ecosif_user;

# Sair
\q

Variáveis de Ambiente do Banco

Configure as seguintes variáveis de ambiente:

export POSTGRES_HOST=localhost
export POSTGRES_PORT=5432
export POSTGRES_DB=ecosif
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=sua_senha

Ou crie um arquivo .env na raiz do projeto.

Passo 3: Configuração da Aplicação

Variáveis de Ambiente Necessárias

Crie um arquivo .env ou configure as variáveis:

# Database
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=ecosif
POSTGRES_USER=postgres
POSTGRES_PASSWORD=sua_senha

# Server
ECOSIF_MASTERDATA_PORT=8081

# JWT (DEVE ser a mesma do ecosif-auth)
AUTH_TOKEN_SECRET=sua_chave_secreta_muito_longa_e_segura_minimo_64_caracteres
TOKEN_EXPIRATION=1800000  # 30 minutos em milissegundos

# OAuth2 (Opcional - deixe vazio para desabilitar)
AUTH2_CLIENT_ID=
AUTH2_SECRET=

# CORS
ECOSIF_CORS=http://localhost:4200

# Flyway (desabilitado por padrão)
ECOSIF_FLYWAY_ENABLED=false

# Hibernate
HIBERNATE_DDL_AUTO=none

# Logging
LOG_FORMAT=default
ECOSIF_LOGSHOW=false
ECOSIF_LOGMODE_ROOT=INFO
ECOSIF_LOGMODE_SPRING=INFO
ECOSIF_LOGMODE_HIBERNATE_SQL=INFO

# AWS S3 (Opcional)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_S3_BUCKET=

Gerar Chave Secreta JWT

Para gerar uma chave secreta segura:

# Opção 1: Usando openssl
openssl rand -base64 64

# Opção 2: Usando Python
python3 -c "import secrets; print(secrets.token_urlsafe(64))"

Importante: A mesma chave secreta deve ser usada em todos os serviços ecosif que validam tokens JWT.

Passo 4: Instalar Dependência Local (ecosif-database)

O projeto depende da biblioteca ecosif-database. Se necessário:

# Instalar JAR local
mvn install:install-file \
  -Dfile=libs/ecosif-database-0.7.01.202511270.jar \
  -DgroupId=io.ecosif.database \
  -DartifactId=ecosif-database \
  -Dversion=0.7.01.202511270 \
  -Dpackaging=jar

Passo 5: Executar a Aplicação

Opção 1: Maven

mvn spring-boot:run

Opção 2: Build e Executar JAR

# Build
mvn clean package -DskipTests

# Executar
java -jar target/ecosif-masterdata.jar

Opção 3: IDE (IntelliJ IDEA / Eclipse)

  1. Importe o projeto como projeto Maven
  2. Configure as variáveis de ambiente no Run Configuration
  3. Execute a classe Application.java

Passo 6: Verificar se Está Funcionando

Health Check

curl http://localhost:8081/actuator/health

Resposta esperada:

{
  "status": "UP"
}

Swagger UI

Acesse no navegador:

http://localhost:8081/swagger-ui.html

Testar Autenticação

Nota: Você precisa fazer login primeiro no ecosif-auth (porta 8080) para obter um token JWT.

# 1. Fazer login no ecosif-auth
TOKEN=$(curl -X POST http://localhost:8080/api/auth/signin \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"senha","azure":false}' \
  | jq -r '.accessToken')

# 2. Testar endpoint protegido
curl -X GET http://localhost:8081/companies \
  -H "Authorization: Bearer $TOKEN"

Troubleshooting

Erro: "Cannot connect to database"

Erro: "Port 8081 already in use"

Erro: "AUTH_TOKEN_SECRET not set"

Erro: "ecosif-database not found"

Logs não aparecem

Desenvolvimento

Hot Reload

Com Spring Boot DevTools instalado, a aplicação recarrega automaticamente quando você faz alterações no código.

Debug

Para executar em modo debug:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

Depois, conecte seu IDE na porta 5005.

Executar Testes

# Todos os testes
mvn test

# Teste específico
mvn test -Dtest=CompanyControllerTest

# Com cobertura
mvn test jacoco:report

Próximos Passos

Suporte

Se encontrar problemas: 1. Verifique os logs da aplicação 2. Consulte a documentação em /docs 3. Abra uma issue no repositório