Pular para conteúdo

Como Rodar Localmente - ecosif-compliance

Este guia explica como configurar e executar o ecosif-compliance em ambiente local.

Pré-requisitos

  • Python 3.12+
  • pip
  • PostgreSQL 15+ (mesmo banco do eCosif)
  • Git
python3 --version
psql --version

Passo 1: Clone

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

Passo 2: Ambiente virtual e dependências

python3 -m venv venv
source venv/bin/activate
pip install -r app/requirements.txt

Passo 3: Banco de dados

O serviço o mesmo PostgreSQL dos demais módulos (schema via Flyway no meta-repo).

export ECOSIF_DB_SERVER=localhost
export ECOSIF_DB_PORT=5432
export ECOSIF_DB_LOGIN=ecosif
export ECOSIF_DB_USER=postgres
export ECOSIF_DB_PASSWORD=sua_senha

Opcional: app/config.json / app/config-dev.json (porta, CORS, database).

Passo 4: Autenticação JWT

A mesma chave do ecosif-auth:

export AUTH_TOKEN_SECRET=sua_chave_secreta_muito_longa_e_segura_minimo_64_caracteres
export ECOSIF_API_TOKEN_MODE=ECOSIF_JWT
export ECOSIF_COMPLIANCE_AUTH_ENABLED=true
export ECOSIF_COMPLIANCE_SWAGGER_ENABLED=true
export ECOSIF_COMPLIANCE_PORT=8021
export ECOSIF_COMPLIANCE_CONTEXT_PATH=/ecosif-compliance

Para testar a API sem token em máquina local:

export ECOSIF_COMPLIANCE_AUTH_ENABLED=false

Não use isso em QAS/produção.

Passo 5: Executar

export PYTHONPATH="${PYTHONPATH:-}:$(pwd)/app"
python app/starter.py

Ou:

cd app && python starter.py

A API sobe em http://localhost:8021 (ou na porta configurada).

Passo 6: Verificar

Health

curl http://localhost:8021/actuator/health

Resposta esperada (JSON compacto):

{"status":"UP","service":"ecosif-compliance","version":"...","timestamp":"..."}

OpenAPI 3 / Swagger UI

http://localhost:8021/docs/
http://localhost:8021/v3/api-docs

Com context-path:

http://localhost:8021/ecosif-compliance/docs/
http://localhost:8021/ecosif-compliance/v3/api-docs

Chamada autenticada

TOKEN=$(curl -s -X POST http://localhost:8080/api/auth/signin \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"senha"}' | python3 -c "import sys,json; print(json.load(sys.stdin)['accessToken'])")

curl -X GET http://localhost:8021/api/compliance/rule/list \
  -H "Authorization: Bearer $TOKEN"

Testes

python -m pytest tests/test_openapi_spec.py tests/test_observability_context_path.py tests/security -q

Próximos passos