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 lê 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