feat: removido o tamanho do modelo do seletor da tela Editar vídeo
- removido o tamanho do modelo do seletor da tela Editar vídeo - acelerada a transcrição do Scanner com inferência Whisper em lote e cache de hashes - garantido um resultado separado para cada clipe de áudio selecionado no Scanner - adicionado cancelamento do processamento do Scanner pela barra de progresso - exibido estado visual próprio para Scanner cancelado na barra de progresso - criado modo explícito de análise do Scanner para separar som, imagem ou ambos - adicionadas métricas opcionais de fala ao Scanner com análise acústica na engine - corrigido o progresso da transcrição do Scanner durante o processamento do Whisper - refatorado o runner Swift do Apple Vision para executar requests em lote com retry CPU-only, corrigindo falhas de CVPixelBuffer/ANE/OCR - documentado o fluxo de edição de vídeo por voz integrado ao Scanner, banco e engine - formalizado o protocolo de edição por chat com perfil editorial e consultas progressivas - gerado plano JSON de corte para depoimento vertical da Erika no Instagram - esquematizado o fluxo de colar e executar planos da IA pela engine após o Scanner - ajustado o plano para manter somente as três etapas existentes da tela de edição - adicionado processamento incremental de locutores e métricas no Scanner com confirmação de reprocessamento - implementado o plano JSON colado na tela e a persistência idempotente das análises do Scanner Resumo: - 8 arquivos alterados - 1 novos - 7 modificados - 0 removidos 7 files changed, 437 insertions(+), 55 deletions(-) Arquivos: - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/executar_scanner.py - code/engine/persistencia/repositorio_de_analises_sqlite.py - code/engine/testes/test_persistencia_sqlite.py - docs/PLANO-EDICAO-DE-VIDEO-POR-VOZ.md - code/relatorios/plano-edicao-depoimento-erika-instagram.json
This commit is contained in:
@@ -133,6 +133,95 @@ Premiere Pro
|
||||
|
||||
O Scanner produz fatos. A IA decide. A engine valida e aplica. A interface coordena e apresenta.
|
||||
|
||||
## 3.1. Fluxo pós-Scanner na tela Editar vídeo
|
||||
|
||||
Depois que o Scanner concluir, a tela **Editar vídeo** será a etapa de decisão
|
||||
e aplicação:
|
||||
|
||||
```text
|
||||
Scanner concluído
|
||||
↓
|
||||
Editar vídeo seleciona a análise do Scanner
|
||||
↓
|
||||
Usuário copia o JSON devolvido pela IA
|
||||
↓
|
||||
Cola o JSON no campo do plano
|
||||
↓
|
||||
Painel valida o formato e mostra as ações
|
||||
↓
|
||||
Usuário clica em Executar plano
|
||||
↓
|
||||
Painel salva um arquivo temporário UTF-8
|
||||
↓
|
||||
aplicar_plano_de_edicao.py
|
||||
↓
|
||||
LeitorDePlanoDeEdicao
|
||||
↓
|
||||
validação contextual e backup
|
||||
↓
|
||||
AplicadorDePlanoDeEdicao
|
||||
↓
|
||||
resultado ação por ação na tela
|
||||
```
|
||||
|
||||
O clipboard serve somente para transportar o texto JSON até o painel. Ele não
|
||||
deve ser executado como código nem enviado diretamente ao Premiere.
|
||||
|
||||
### Comportamento do campo de plano
|
||||
|
||||
Ao colar o JSON, a tela deve:
|
||||
|
||||
- fazer `JSON.parse` localmente;
|
||||
- verificar se existe `source` e `actions`;
|
||||
- mostrar quantidade e tipos de ações;
|
||||
- mostrar erros de estrutura antes de liberar o botão;
|
||||
- aceitar metadados extras como `schema`, `analysis` e `target`;
|
||||
- não modificar o plano colado silenciosamente;
|
||||
- salvar uma cópia com data e hora para auditoria.
|
||||
|
||||
### Comportamento do botão Executar plano
|
||||
|
||||
O botão deve chamar a entrada da engine, e não interpretar as ações no
|
||||
JavaScript. A entrada é:
|
||||
|
||||
```text
|
||||
code/engine/aplicar_plano_de_edicao.py <caminho-do-plano.json>
|
||||
```
|
||||
|
||||
Essa entrada usa as mesmas classes do fluxo de aplicação da engine:
|
||||
|
||||
- `LeitorDePlanoDeEdicao` lê e valida o contrato;
|
||||
- `BackupDaSequencia` cria uma cópia antes da mutação;
|
||||
- `ConversorDeTimeline` lê a sequência ativa;
|
||||
- `MapeadorDeTempoDeOrigemParaTimeline` encontra os clipes corretos;
|
||||
- `AplicadorDePlanoDeEdicao` ordena e aplica as ações;
|
||||
- `EscritaNoEditor` executa as alterações pelo bridge do Premiere;
|
||||
- `ResultadoDaAplicacao` devolve sucesso ou falha por ação.
|
||||
|
||||
O painel deve exibir o resultado recebido, incluindo ações aplicadas, ações
|
||||
que falharam, detalhes da falha e caminho do plano salvo.
|
||||
|
||||
### Diferença entre testar e executar
|
||||
|
||||
O fluxo **Testar ações** é um protótipo de validação manual do formato. O
|
||||
fluxo definitivo **Executar plano** deve usar a entrada Python da engine para
|
||||
compartilhar o mesmo domínio, mapeador, backup e aplicador. Não devem existir
|
||||
duas implementações diferentes para cortar a mesma timeline.
|
||||
|
||||
### Segurança e confirmação
|
||||
|
||||
Antes de iniciar:
|
||||
|
||||
- confirmar que a sequência correta está ativa;
|
||||
- conferir o arquivo de origem do plano;
|
||||
- conferir a quantidade de ações;
|
||||
- criar backup;
|
||||
- pedir confirmação quando houver cortes.
|
||||
|
||||
Durante a execução, o painel deve permitir cancelar o processo e informar se o
|
||||
cancelamento ocorreu antes ou depois de alguma ação. O resultado parcial deve
|
||||
ser preservado para diagnóstico.
|
||||
|
||||
## 4. Situação atual do código
|
||||
|
||||
### Já existe
|
||||
@@ -151,10 +240,10 @@ O Scanner produz fatos. A IA decide. A engine valida e aplica. A interface coord
|
||||
### Lacunas conhecidas
|
||||
|
||||
- `listar_falas_no_intervalo()` não retorna métricas acústicas por padrão.
|
||||
- Editar vídeo ainda trabalha principalmente com `transcricao.json` e não seleciona diretamente uma análise do Scanner.
|
||||
- Editar vídeo aceita o JSON de ações colado no painel ou carregado por arquivo e grava uma cópia local antes da aplicação.
|
||||
- O contexto editorial ainda não é um módulo explícito da engine.
|
||||
- O plano atual identifica a origem principalmente por nome e tempo; com várias faixas e clipes, precisa também de `video_id` e `clipe_id`.
|
||||
- Reprocessamentos precisam de uma política explícita para não duplicar segmentos no banco.
|
||||
- A validação contextual com `video_id`, versão da análise e `clipe_id` ainda precisa ser conectada ao aplicador.
|
||||
|
||||
## 5. Consultas SQL compactas
|
||||
|
||||
@@ -397,16 +486,58 @@ Novo comportamento a adicionar:
|
||||
|
||||
## 10. Fluxo da tela Editar vídeo
|
||||
|
||||
1. Selecionar origem: `Transcrever este vídeo` ou `Usar análise do Scanner`.
|
||||
2. Listar análises disponíveis e mostrar modelo, idioma, diarização, métricas e data.
|
||||
3. Escolher objetivo: depoimento, entrevista, redes sociais ou personalizado.
|
||||
4. Definir regras: remover silêncio, remover repetição, preservar pausas emocionais, locutores e intensidade.
|
||||
5. Carregar contexto compacto pela engine.
|
||||
6. Mostrar falas, tempos, locutores, métricas e status da análise.
|
||||
7. Exportar contexto para IA ou chamar um Provider de IA futuramente.
|
||||
8. Importar o plano devolvido.
|
||||
9. Mostrar cada ação com intervalo, texto, motivo, confiança e validação.
|
||||
10. Criar backup, validar e aplicar pela engine.
|
||||
O Scanner acontece antes da tela de edição. Dentro da tela **Editar vídeo**,
|
||||
o fluxo terá somente três etapas, mantendo a experiência já conhecida:
|
||||
|
||||
### Etapa 3 — Revisar falantes e áudio (opcional)
|
||||
|
||||
Esta etapa recebe a análise do Scanner e permite:
|
||||
|
||||
- revisar ou nomear falantes quando a diarização estiver disponível;
|
||||
- conferir a transcrição e os intervalos;
|
||||
- conferir métricas de voz quando tiverem sido calculadas;
|
||||
- definir ou revisar o perfil editorial;
|
||||
- definir o tipo e o objetivo do vídeo;
|
||||
- escolher regras como remoção de silêncios, repetições e hesitações.
|
||||
|
||||
Quando a edição usar somente transcrição, a revisão de falantes continua
|
||||
opcional. O botão de avanço não deve exigir diarização.
|
||||
|
||||
### Etapa 4 — Gerar arquivo JSON
|
||||
|
||||
Esta etapa reúne:
|
||||
|
||||
- a análise selecionada do Scanner;
|
||||
- as falas e palavras necessárias;
|
||||
- as métricas solicitadas;
|
||||
- o perfil editorial;
|
||||
- o tipo e objetivo do vídeo;
|
||||
- as regras de edição.
|
||||
|
||||
A engine gera o contexto editorial para a IA. Depois que a IA devolver o plano,
|
||||
o usuário poderá colar o JSON no campo da etapa ou selecionar um arquivo. O
|
||||
painel valida a estrutura e mostra a quantidade de `actions` antes de liberar
|
||||
a etapa seguinte.
|
||||
|
||||
O arquivo gerado/devolvido deve continuar sendo UTF-8 e conter `source` e
|
||||
`actions`, podendo também conter `analysis`, `schema`, `target` e metadados
|
||||
editoriais.
|
||||
|
||||
### Etapa 5 — Aplicar na timeline
|
||||
|
||||
Esta etapa:
|
||||
|
||||
- mostra o resumo das ações;
|
||||
- confirma a sequência ativa;
|
||||
- cria backup;
|
||||
- valida a origem e os intervalos;
|
||||
- chama `aplicar_plano_de_edicao.py`;
|
||||
- usa as classes oficiais da engine;
|
||||
- exibe o resultado ação por ação;
|
||||
- preserva o relatório em caso de falha ou cancelamento.
|
||||
|
||||
Não criar novas etapas para seleção de fonte, contexto ou aplicação. Essas
|
||||
responsabilidades devem aparecer dentro das três etapas existentes.
|
||||
|
||||
## 11. Classes e módulos planejados
|
||||
|
||||
|
||||
Reference in New Issue
Block a user