feat: aprimorado o preview de falantes na tela Refinar para reprod

- aprimorado o preview de falantes na tela Refinar para reproduzir os trechos do vídeo
- corrigida a leitura dos timestamps do preview de falantes usando os clipes do banco

Resumo:
- 5 arquivos alterados
- 1 novos
- 4 modificados
- 0 removidos

 4 files changed, 142 insertions(+), 3 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - code/cep-plugin/main.js
  - code/engine/persistencia/consultas.py
  - code/engine/testes/test_consultas_de_persistencia.py
  - code/engine/consultar_preview_de_falantes.py
This commit is contained in:
João Henrique
2026-09-10 09:27:44 -04:00
parent 485c35c4e8
commit b0b8027c7e
5 changed files with 179 additions and 3 deletions
@@ -105,6 +105,35 @@ class TesteConsultasDeAnalises(unittest.TestCase):
self.assertFalse(status["audio"]["metricas_de_voz_disponiveis"])
self.assertEqual(status["audio"]["falantes"], ["locutor"])
def test_listar_intervalos_de_preview_converte_timeline_para_origem(self) -> None:
self.consultas.conexao.executescript(
"""INSERT INTO faixas (id, video_id, nome, tipo, indice)
VALUES ('audio-2', 'v1', 'A2', 'audio', 1);
INSERT INTO faixas (id, video_id, nome, tipo, indice)
VALUES ('video-2', 'v1', 'V2', 'video', 1);
INSERT INTO clipes
(id, video_id, faixa_id, nome, inicio_na_timeline,
fim_na_timeline, inicio_na_origem, fim_na_origem, arquivo)
VALUES ('audio-clip-2', 'v1', 'audio-2', 'A2', 30.0, 40.0,
100.0, 110.0, '/videos/entrevista.mp4');
INSERT INTO clipes
(id, video_id, faixa_id, nome, inicio_na_timeline,
fim_na_timeline, inicio_na_origem, fim_na_origem, arquivo)
VALUES ('video-clip-2', 'v1', 'video-2', 'V2', 30.0, 40.0,
100.0, 110.0, '/videos/entrevista.mp4');
INSERT INTO segmentos_de_transcricao
(video_id, clipe_id, inicio, fim, texto, falante)
VALUES ('v1', 'audio-clip-2', 32.5, 35.0, 'trecho', 'locutor-2');"""
)
intervalos = self.consultas.listar_intervalos_de_preview_dos_falantes(VIDEO_ID)
intervalo = next(item for item in intervalos if item["falante"] == "locutor-2")
self.assertEqual(intervalo["clipe_de_video"], "video-clip-2")
self.assertEqual(intervalo["inicio"], 102.5)
self.assertEqual(intervalo["fim"], 105.0)
self.assertEqual(intervalo["arquivo"], "/videos/entrevista.mp4")
# --- listar_falas_no_intervalo ------------------------------------------------------
def test_listar_falas_no_intervalo_filtra_por_tempo_e_omite_palavras_por_padrao(self) -> None: