criado repositório jhonny-editor no Gitea adicionado script admin/deploy.command com commit automático atualizado admin/DEV-NOTES.md com template limpo Resumo: - 48 arquivos alterados - 26 novos - 19 modificados - 3 removidos 22 files changed, 658 insertions(+), 568 deletions(-) Arquivos: - AGENTS.md - admin/DEV-NOTES.md - admin/OpenCut.command - admin/commit.command - admin/deploy.command - admin/update.command - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/ARQUITETURA.md - code/engine/arquitetura/README.md - code/engine/gerar_relatorio_timeline.py - code/engine/integracoes/apple_speech/apple_speech_transcriber.swift - code/engine/integracoes/apple_speech/provider_de_transcricao_apple.py - code/engine/integracoes/midia/__init__.py - code/engine/integracoes/whisper/provider_de_transcricao_local.py - code/engine/scanner/__init__.py - code/engine/scanner/coordenacao/__init__.py - code/engine/scanner/descoberta/__init__.py - code/engine/scanner/modelos.py - code/engine/scanner/transcricao_da_timeline.py - code/src/tools/discovery.ts - :memory:.ses - admin/Jhonny.command - admin/inativos/OpenCut.command - admin/inativos/update.command - code/docs/glossario-analise-emocional.md - code/docs/levantamento-apple-vision-e-apple-intelligence.md - code/docs/levantamento-ferramentas-analise-visual-local.md - code/engine/arquitetura/biblioteca-inteligente-de-videos.md - code/engine/executar_scanner.py - code/engine/integracoes/huggingface/ - code/engine/integracoes/midia/extracao_de_metadados.py - code/engine/integracoes/visual/ - code/engine/requirements-visual.txt - code/engine/scanner/configuracao_visual.py - code/engine/scanner/descoberta/descoberta_de_arquivos.py - code/engine/scanner/metadados.py - code/engine/scanner/relatorio_visual.py - code/engine/scanner/retakes/ - code/engine/scanner/visual.py - code/engine/testes/test_analise_visual_local.py - code/engine/testes/test_arquivos_e_metadados.py - code/engine/testes/test_provider_de_transcricao_apple.py - code/relatorios/analise-brools/ - code/relatorios/analise-visual/ - code/relatorios/audio/arquivos/ - code/relatorios/transcricao-timeline.md
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import Any, Protocol
|
|
|
|
from ...dominio import Timeline
|
|
|
|
|
|
@dataclass
|
|
class ContextoDeAnalise:
|
|
timeline: Timeline | None = None
|
|
dados_da_timeline: dict[str, Any] | None = None
|
|
erros: list[str] = field(default_factory=list)
|
|
avisos: list[str] = field(default_factory=list)
|
|
analises_concluidas: list[str] = field(default_factory=list)
|
|
transcricoes: dict[str, list[Any]] = field(default_factory=dict)
|
|
caracteristicas_visuais: dict[str, dict[str, Any]] = field(default_factory=dict)
|
|
cenas: list[Any] = field(default_factory=list)
|
|
cenas_visuais: list[Any] = field(default_factory=list)
|
|
eventos: list[Any] = field(default_factory=list)
|
|
arquivos: dict[str, Any] = field(default_factory=dict)
|
|
metadados_dos_arquivos: dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
class Analisador(Protocol):
|
|
nome: str
|
|
|
|
def executar(self, contexto: ContextoDeAnalise) -> ContextoDeAnalise: ...
|
|
|
|
|
|
class PipelineDoScanner:
|
|
"""Executa análises em ordem, sem conhecer sua implementação."""
|
|
|
|
def __init__(self, analises: list[Analisador]) -> None:
|
|
self.analises = analises
|
|
|
|
def executar(self, contexto: ContextoDeAnalise) -> ContextoDeAnalise:
|
|
for analise in self.analises:
|
|
contexto = analise.executar(contexto)
|
|
contexto.analises_concluidas.append(analise.nome)
|
|
return contexto
|
|
|
|
|
|
class AnalisadorDeTimeline:
|
|
"""Ponto de entrada da análise da timeline."""
|
|
|
|
def __init__(self, pipeline: PipelineDoScanner) -> None:
|
|
self.pipeline = pipeline
|
|
|
|
def analisar(self, timeline: Timeline | None = None) -> ContextoDeAnalise:
|
|
return self.pipeline.executar(ContextoDeAnalise(timeline=timeline))
|