Conector que roda na rede da Scardua: recebe da API da FLS e grava no Oracle privado
Cobre o caminho completo sem depender da VPS estar no ar: cifra com uma chave de teste descartavel, troca a chave do app por monkeypatch e exercita a rota. 8 casos: recusa sem token e com token errado; caminho feliz; envelope adulterado (o GCM tem que estourar, nao passar); cifrado com outra chave; payload fora do contrato (422, nao 200 nem 500); e dois travando o contrato com a API da VPS — se o PayloadCompras dos dois lados divergir, quebra aqui em vez de em producao. Fixtures em tests/fixtures/: par de chaves so pra teste, o payload real do Holmes e o payload ja tratado. O .gitignore abre excecao estreita pra tests/fixtures/*.pem — chave real continua barrada. Tambem: - 422 passa a usar HTTP_422_UNPROCESSABLE_CONTENT (o _ENTITY deprecou) - app/services/holmes.py removido: o conector nao fala com o Holmes - app/utils/cesar.py entra como veio Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| app | ||
| deploy | ||
| docs | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| CLAUDE.md | ||
| configs.example.json | ||
| Dockerfile | ||
| main.py | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
Conector Scardua
Serviço que roda dentro da rede da Comercial Scardua e faz a ponte entre a
API pública da FLS (na VPS) e o Oracle privado do cliente (10.16.x).
Recebe o payload cifrado, abre com a chave privada, valida e — quando a fase 2 entrar — grava no Oracle.
⚠️ Este repositório mudou de papel. Ele era a API que roda na VPS; essa parte migrou pro repositório da API (ver docs/arquitetura.md). Aqui ficou o conector.
Onde ele fica no fluxo
Holmes --webhook--> [API na VPS da FLS] --cifra e envia--> [ESTE conector] --> [Oracle do cliente]
público, TLS rede privada do cliente
Documentação
| Doc | Assunto |
|---|---|
| docs/arquitetura.md | Visão, atores e as duas pontas do sistema |
| docs/conector.md | A decisão do conector e por quê (fechada) |
| docs/deploy.md | Como subir no servidor do cliente |
| docs/known-issues.md | Problemas conhecidos e TODOs |
| CLAUDE.md | Guia rápido do código |
Rodar local (Windows)
Precisa do configs.json na raiz — veja configs.example.json.
uvicorn main:app --reload --port 8000
Stack
Python ≥3.10 · FastAPI + Uvicorn · Pydantic v2 · cryptography (RSA-OAEP + AES-GCM) · oracledb (thin mode)