- 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>
22 lines
774 B
Python
22 lines
774 B
Python
"""
|
|
Painel de Clientes — monta os routers de CLIENTE, CLIENTE_CONTATO e o
|
|
gerador de chave manual. Ver docs/superpowers/specs/2026-08-13-painel-clientes-web-design.md.
|
|
"""
|
|
from fastapi import Depends, FastAPI
|
|
from fastapi.responses import RedirectResponse
|
|
from fastapi.staticfiles import StaticFiles
|
|
|
|
from .auth import exigir_login
|
|
from .routers import chave_manual, clientes, contatos
|
|
|
|
app = FastAPI(title="Painel de Clientes", docs_url=None, redoc_url=None, openapi_url=None)
|
|
app.mount("/static", StaticFiles(directory="app/static"), name="static")
|
|
app.include_router(clientes.router)
|
|
app.include_router(contatos.router)
|
|
app.include_router(chave_manual.router)
|
|
|
|
|
|
@app.get("/")
|
|
def raiz(usuario: str = Depends(exigir_login)):
|
|
return RedirectResponse(url="/clientes")
|