MVP de serviço FastAPI com SQLite, webhooks e notificações (console) para fluxo de aprovações de manutenção e compras.
- Crie um venv e instale dependências:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
- Copie
.env.examplepara.env(opcional, já tem defaults). - Seeds (usuários/fluxo padrão):
python -m app.scripts.seed
- Suba a API:
uvicorn app.main:app --reload
- Teste rápido (PowerShell / curl):
# Criar pedido (como solicitante)
$headers = @{ "Content-Type"="application/json"; "X-Actor-Email"="[email protected]" }
$body = '{ "type":"maintenance", "title":"Troca de rolamento", "payload":{"custo":1200} }'
curl -Method POST http://127.0.0.1:8000/api/v1/requests -Headers $headers -Body $body
# Submeter pedido
curl -Method POST http://127.0.0.1:8000/api/v1/requests/<ID>/submit -Headers $headers
# Inbox do gestor
$h2 = @{ "X-Actor-Email"="[email protected]" }
curl -Method GET "http://127.0.0.1:8000/api/v1/inbox" -Headers $h2
# Aprovar como gestor
$h2 = @{ "Content-Type"="application/json"; "X-Actor-Email"="[email protected]" }
curl -Method POST http://127.0.0.1:8000/api/v1/requests/<ID>/approve -Headers $h2 -Body '{ "comment":"ok" }'
# Aprovar como financeiro (passo 2)
$h3 = @{ "Content-Type"="application/json"; "X-Actor-Email"="[email protected]" }
curl -Method POST http://127.0.0.1:8000/api/v1/requests/<ID>/approve -Headers $h3 -Body '{ "comment":"ok" }'
Logs de eventos/alertas saem no console.
DATABASE_URL=sqlite:///./app.db
WEBHOOK_SECRET=devsecret
SLACK_WEBHOOK_URL=
TEAMS_WEBHOOK_URL=
app/main.py– FastAPI e routersapp/models.py– ORM SQLAlchemyapp/crud.py– regras do fluxoapp/utils/*– webhooks e notificaçõesapp/scripts/seed.py– população inicialbpmn/approval-flow.bpmn– diagrama de referência