diff --git a/app/asset_versao.py b/app/asset_versao.py new file mode 100644 index 0000000..6172853 --- /dev/null +++ b/app/asset_versao.py @@ -0,0 +1,29 @@ +""" +Versão dos arquivos estáticos (CSS/JS) usada como cache-busting nos links +de app/templates/base.html (?v=...). Sem isso, um navegador que já tinha +carregado /static/estilo.css antes de um deploy pode continuar servindo a +cópia antiga em cache — a URL não muda, então não há sinal pro navegador +buscar de novo — mesmo numa aba anônima aberta antes do deploy terminar. + +Calculada uma única vez, na inicialização do processo, a partir do mtime +mais recente entre os arquivos em app/static/. Cada novo deploy recria o +container com os arquivos atualizados (mtime novo), então o valor muda +sozinho a cada implantação, sem precisar editar nada aqui. +""" +import os + +_DIR_STATIC = os.path.join(os.path.dirname(__file__), "static") + + +def _calcular_versao() -> str: + arquivos = [ + os.path.join(_DIR_STATIC, nome) + for nome in os.listdir(_DIR_STATIC) + if os.path.isfile(os.path.join(_DIR_STATIC, nome)) + ] + if not arquivos: + return "0" + return str(int(max(os.path.getmtime(caminho) for caminho in arquivos))) + + +ASSET_VERSAO = _calcular_versao() diff --git a/app/main.py b/app/main.py index 67c397e..bd09810 100644 --- a/app/main.py +++ b/app/main.py @@ -9,6 +9,7 @@ from fastapi.responses import RedirectResponse from fastapi.staticfiles import StaticFiles from . import session +from .asset_versao import ASSET_VERSAO from .auth import NaoAutenticado, UsuarioLogado, exigir_login from .csrf import CSRF_COOKIE_NAME, gerar_token from .routers import auth, chave_manual, clientes, contatos, funcionarios, log, minha_conta @@ -103,6 +104,7 @@ async def carregar_usuario_middleware(request: Request, call_next): request.state.usuario = ( UsuarioLogado(login=dados["login"], nome=dados["nome"], perfil=dados["perfil"]) if dados else None ) + request.state.asset_versao = ASSET_VERSAO return await call_next(request) diff --git a/app/templates/base.html b/app/templates/base.html index b1729a2..95b7aab 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -6,7 +6,7 @@