Pular para conteúdo

Como rodar

Pré-requisitos

  • Docker + Docker Compose para o caminho recomendado; ou
  • Python 3.12 para executar sem Docker.

A chave OPENAI_API_KEY é opcional. Sem ela, a aplicação continua fazendo previsões e usa o fallback determinístico para explicar o resultado.

Com Docker (recomendado — um comando)

cp .env.example .env      # opcional: preencha OPENAI_API_KEY (sem ela, roda em modo fallback)
docker compose up --build

Chamando a API

curl -X POST http://localhost:7860/api/predict -H 'Content-Type: application/json' -d '{
  "gender":"Female","SeniorCitizen":0,"Partner":"No","Dependents":"No","tenure":2,
  "PhoneService":"Yes","MultipleLines":"No","InternetService":"Fiber optic",
  "OnlineSecurity":"No","OnlineBackup":"No","DeviceProtection":"No","TechSupport":"No",
  "StreamingTV":"Yes","StreamingMovies":"Yes","Contract":"Month-to-month",
  "PaperlessBilling":"Yes","PaymentMethod":"Electronic check",
  "MonthlyCharges":95.0,"TotalCharges":190.0}'

Resposta (resumo):

{
  "answer": "**Risco:** ALTO — probabilidade **77.7%** ...",
  "churn_probability_pct": 77.7,
  "risk_band": "alto",
  "factors": [{"feature": "Contract", "direction": "aumenta", ...}],
  "meta": {"latency_ms": 244.2, "fallback": true, "trace_id": "..."}
}

Sem Docker (desenvolvimento)

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python -m ml.train                                  # treina models/churn_model.pkl
uvicorn api.main:app --reload --port 7860           # UI (/) + API (/api/*) no mesmo processo
pytest -q                                           # testes

Abra http://localhost:7860/ para o produto e http://localhost:7860/api/docs para a API.

Rodar a documentação (MkDocs)

pip install -r requirements-docs.txt
mkdocs serve            # http://localhost:8000
mkdocs build            # gera site/ estático

Deploy em produção (VPS + EasyPanel)

O sistema roda numa VPS via EasyPanel: um único container, build a partir do Dockerfile (Build Path /) e OPENAI_API_KEY nas variáveis de ambiente. O passo a passo completo está em Deploy na VPS (EasyPanel). App no ar: https://churn.lcsgborges.cloud/.

Deploy da documentação

O workflow .github/workflows/docs.yml (na raiz do repositório) publica esta documentação no GitHub Pages a cada push na main.