fix: troca except Exception genérico por exceções específicas nos scripts do Scanner

executar_scanner.py: nos dois pontos que processavam clipe-a-clipe (análise
visual e transcrição), o except genérico escondia bugs de programação junto
com falhas esperadas de mídia/dependência — foi assim que o bug do soundfile
ausente passou despercebido até um teste manual. Agora captura só
(OSError, RuntimeError, ValueError, json.JSONDecodeError) na visual e
(ImportError, OSError, RuntimeError, ValueError) na transcrição; erros de
programação propagam e aparecem de verdade.

executar_retakes.py e gerar_relatorio_de_analises.py: o except Exception no
main() é uma fronteira de processo legítima (traduz qualquer falha em JSON
pra tela), mantido, mas agora imprime o traceback completo no stderr antes
de reportar — hoje esse traceback se perdia, sobrando só str(erro).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
João Henrique
2026-09-09 23:38:52 -04:00
co-authored by Claude Sonnet 5
parent 88f9af28cf
commit 1156619937
3 changed files with 64 additions and 9 deletions
+3 -1
View File
@@ -15,6 +15,7 @@ from __future__ import annotations
import argparse
import json
import sys
import traceback
from pathlib import Path
# O painel chama este arquivo com cwd ``code/engine``; injetar ``code`` (pai do
@@ -169,7 +170,8 @@ def main() -> None:
args = parser.parse_args()
try:
relatorio = executar(args.banco, args.saida, args.video_id)
except Exception as erro: # repassa a causa para a tela decidir como exibir
except Exception as erro: # fronteira do processo: repassa a causa para a tela decidir como exibir
traceback.print_exc() # traceback completo no stderr, para não perder um bug real por trás do "erro"
print(json.dumps({"evento": "erro", "mensagem": str(erro)}, ensure_ascii=False), flush=True)
sys.exit(1)
print(json.dumps({"evento": "concluido", "arquivo": str(args.saida),