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.example
para.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"="solicitante@example.com" }
$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"="gestor@example.com" }
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"="gestor@example.com" }
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"="financeiro@example.com" }
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