"""Prepara o contexto da edição por voz a partir do banco SQLite.""" from __future__ import annotations import argparse import json from pathlib import Path import sys CAMINHO_DO_CODIGO = Path(__file__).resolve().parent.parent if str(CAMINHO_DO_CODIGO) not in sys.path: sys.path.insert(0, str(CAMINHO_DO_CODIGO)) from engine.persistencia.consultas import ConsultasDeAnalises from engine.persistencia.conexao import abrir_banco def preparar_contexto( caminho_do_banco: Path, video_id: str | None = None, incluir_palavras: bool = True, ) -> dict | None: """ Carrega a edição mais recente e seu contexto editorial. Parâmetros: caminho_do_banco: Caminho do banco SQLite de análises. video_id: Vídeo específico; quando omitido, usa a edição mais recente. incluir_palavras: Inclui os limites das palavras da transcrição. Retorna: Contexto serializável para o agente de edição, ou None quando não há edição concluída compatível. """ conexao = abrir_banco(caminho_do_banco) try: return ConsultasDeAnalises(conexao).consultar_contexto_da_edicao( video_id=video_id, incluir_palavras=incluir_palavras, ) finally: conexao.close() def principal() -> None: """Imprime o contexto editorial em JSON para consumo do agente.""" argumentos = argparse.ArgumentParser( description="Carrega a edição por voz mais recente do banco SQLite." ) argumentos.add_argument( "--banco", type=Path, default=Path(".jhonny/analises.db"), help="Caminho do banco SQLite de análises.", ) argumentos.add_argument("--video-id", help="Restringe a consulta a um vídeo.") argumentos.add_argument( "--sem-palavras", action="store_true", help="Omite os intervalos palavra a palavra para reduzir a resposta.", ) opcoes = argumentos.parse_args() try: contexto = preparar_contexto( opcoes.banco, video_id=opcoes.video_id, incluir_palavras=not opcoes.sem_palavras, ) if contexto is None: print(json.dumps({"ok": False, "erro": "Nenhuma edição concluída encontrada."}, ensure_ascii=False)) raise SystemExit(1) print(json.dumps({"ok": True, "contexto": contexto}, ensure_ascii=False)) except (OSError, ValueError) as erro: print(json.dumps({"ok": False, "erro": str(erro)}, ensure_ascii=False)) raise SystemExit(1) from erro if __name__ == "__main__": principal()