feat: sincronizado o estado de transcrição, métricas e diarização

- sincronizado o estado de transcrição, métricas e diarização entre SQLite, Scanner e Editar vídeo

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

 5 files changed, 181 insertions(+), 12 deletions(-)

Arquivos:
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/cep-plugin/styles.css
  - code/engine/persistencia/consultas.py
  - code/engine/testes/test_consultas_de_persistencia.py
  - code/engine/consultar_status_da_analise.py
This commit is contained in:
João Henrique
2026-09-09 19:45:15 -04:00
parent c688d0eabf
commit 19d10e61a1
6 changed files with 220 additions and 12 deletions
+39
View File
@@ -96,6 +96,45 @@ class ConsultasDeAnalises:
"total_cenas": contagens["cenas"],
}
def consultar_status_da_analise(self, video_id: str) -> dict | None:
"""Devolve o estado compacto das análises de áudio de um vídeo."""
self._validar_texto_obrigatorio("video_id", video_id)
resumo = self.consultar_resumo_do_video(video_id)
if resumo is None:
return None
linha = self.conexao.execute(
"""SELECT
COUNT(*) AS falas,
SUM(CASE WHEN falante IS NOT NULL AND TRIM(falante) <> '' THEN 1 ELSE 0 END) AS falas_com_falante,
SUM(CASE WHEN caracteristicas_acusticas IS NOT NULL
AND caracteristicas_acusticas <> '{}'
THEN 1 ELSE 0 END) AS falas_com_metricas
FROM segmentos_de_transcricao
WHERE video_id = ?""",
(video_id,),
).fetchone()
falantes = [
item["falante"] for item in self.conexao.execute(
"""SELECT DISTINCT falante
FROM segmentos_de_transcricao
WHERE video_id = ? AND falante IS NOT NULL AND TRIM(falante) <> ''
ORDER BY falante""",
(video_id,),
).fetchall()
]
return {
**resumo,
"audio": {
"transcricao_disponivel": bool(linha["falas"]),
"total_falas": linha["falas"] or 0,
"falas_com_falante": linha["falas_com_falante"] or 0,
"falas_com_metricas": linha["falas_com_metricas"] or 0,
"diarizacao_disponivel": bool(linha["falas_com_falante"]),
"metricas_de_voz_disponiveis": bool(linha["falas_com_metricas"]),
"falantes": falantes,
},
}
def listar_falas_no_intervalo(
self,
video_id: str,