- Fix 1 (critico): cliente_form.html agora tem required/type por campo (date/number) e o router captura DataError/IntegrityError em criar/editar, reexibindo o form com erro_gravacao em vez de 500. - Fix 2 (importante): auth.py falha fechado quando ADMIN_USER/ ADMIN_PASSWORD nao estao configurados (nao tenta mais compare_digest com string vazia). - Fix 3 (importante): avisos de codigo duplicado e DV invalido agora carregam a flag de confirmacao um do outro adiante, quebrando o loop quando ambos disparam no mesmo cliente. - Fix 4 (menor): corrige precedencia 'or 42' -> 'and 42' no lambda de teste de criar_cliente. - Fix 5 (menor): desabilita /docs, /redoc, /openapi.json no FastAPI(). - Fix 6 (menor): comentario explicando o valor de Prorrogacao no fixture de teste de chaves. - Fix 7 (menor): .env.example usa host.docker.internal por padrao, docker-compose.yml ganha extra_hosts para Linux, README.md novo com quickstart real. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# painel-clientes-web
|
|
|
|
Painel administrativo (FastAPI + Jinja2) para gestão de `CLIENTE`, `CLIENTE_CONTATO` e geração manual de chave de licenciamento no MySQL do sistema legado.
|
|
|
|
## Rodando localmente (sem Docker)
|
|
|
|
1. Instale as dependências de desenvolvimento:
|
|
```
|
|
pip install -r requirements-dev.txt
|
|
```
|
|
2. Defina as variáveis de ambiente necessárias (`ADMIN_USER`, `ADMIN_PASSWORD`, `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASSWORD` — veja `.env.example`) diretamente no shell antes de subir a aplicação. **Importante:** apesar de `python-dotenv` estar nas dependências, nada no código chama `load_dotenv()` hoje — um arquivo `.env` sozinho NÃO é lido automaticamente fora do Docker. Exporte as variáveis manualmente (ex.: `set -a; source .env; set +a` no bash, ou `$env:...` no PowerShell) ou defina-as por outro meio.
|
|
3. Rode a aplicação:
|
|
```
|
|
uvicorn app.main:app --reload
|
|
```
|
|
4. Rodando direto na máquina (fora de container), use `DB_HOST=127.0.0.1` (porta `3307`, a mesma do container de dev `licenciamento-mysql-dev`).
|
|
|
|
## Rodando os testes
|
|
|
|
```
|
|
pytest -v
|
|
```
|
|
|
|
Os testes usam defaults definidos em `tests/conftest.py` (equivalentes ao `.env.example`) e incluem testes de integração que precisam do container MySQL de dev (`licenciamento-mysql-dev`, `127.0.0.1:3307`) rodando.
|
|
|
|
## Rodando via Docker
|
|
|
|
1. Copie o arquivo de exemplo de variáveis de ambiente e edite `ADMIN_PASSWORD` (e demais valores, se necessário):
|
|
```
|
|
cp .env.example .env
|
|
```
|
|
2. Suba o container:
|
|
```
|
|
docker compose up -d --build
|
|
```
|
|
O `docker-compose.yml` já usa `env_file: .env` e mapeia `host.docker.internal` para o host (via `extra_hosts`), então o valor padrão `DB_HOST=host.docker.internal` do `.env.example` funciona também em hosts Docker Linux, não só no Docker Desktop (Windows/Mac).
|
|
3. A aplicação fica disponível em `http://localhost:8010`.
|