feat: criado monitoramento contínuo de trilhas com varredura recur

- criado monitoramento contínuo de trilhas com varredura recursiva e baixa prioridade
- gerado e validado plano editorial revisável do depoimento da Erika sem aplicação na timeline
- adicionada leitura e comparação estrutural da timeline após aplicar planos de edição
- limitadas as classificações de trilhas às duas maiores probabilidades de cada categoria
- limpo o catálogo musical para reiniciar as análises sem remover dados de vídeo

Resumo:
- 34 arquivos alterados
- 6 novos
- 28 modificados
- 0 removidos

 28 files changed, 833 insertions(+), 75 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/engine/analisar_trilhas.py
  - code/engine/aplicar_plano_de_edicao.py
  - code/engine/consultar_detalhes_de_trilha.py
  - code/engine/editor/__init__.py
  - code/engine/editor/aplicador_de_plano_de_edicao.py
  - code/engine/editor/backup_de_sequencia.py
  - code/engine/editor/escrita/escrita_no_editor.py
  - code/engine/editor/modelos.py
  - code/engine/editor/validacao_semantica.py
  - code/engine/integracoes/audio/classificador_de_musica_essentia.py
  - code/engine/integracoes/audio/modelos_de_analise_musical.py
  - code/engine/integracoes/audio/provider_de_analise_musical_essentia.py
  - code/engine/persistencia/esquema.py
  - code/engine/persistencia/repositorio_de_trilhas.py
  - code/engine/testes/duplos_de_premiere.py
  - code/engine/testes/test_aplicador_de_plano_de_edicao.py
  - code/engine/testes/test_aplicar_plano_de_edicao.py
  - code/engine/testes/test_escrita_no_editor.py
  - code/engine/testes/test_leitor_de_plano_de_edicao.py
  - code/engine/testes/test_validador_semantico_de_plano.py
  - code/plugins/premiere-pro/skills/editar-por-voz/SKILL.md
  - code/plugins/premiere-pro/skills/editar-por-voz/criterios/08-formato-de-saida.md
  - code/plugins/premiere-pro/skills/editar-por-voz/criterios/10-revisao-humana.md
  - code/src/tools/timeline.ts
  - code/tests/tools/tool-modules.test.ts
  - .jhonny/planos/
  - code/.jhonny/analises.db-shm
  - code/.jhonny/analises.db-wal
  - code/engine/editor/verificador_da_aplicacao.py
  - code/engine/testes/test_verificador_da_aplicacao.py
  - code/plugins/premiere-pro/skills/editar-por-voz/criterios/11-gancho.md
This commit is contained in:
João Henrique
2026-09-10 15:09:27 -04:00
parent da400de7d3
commit 2c9bdf2ff0
34 changed files with 1179 additions and 75 deletions
@@ -76,7 +76,7 @@ ou evidência obrigatória estiver ausente, pare e relate exatamente o que falta
5. Reanalise as ênfases apenas depois de definir o material sobrevivente. Se o
banco não tiver métricas ou a camada correspondente estiver incompleta,
decida pelo texto e registre a limitação.
6. Decida cortes, zooms, textos e marcadores somente quando o contrato de
6. Decida cortes, ganchos, zooms, textos e marcadores somente quando o contrato de
aplicação suportar a ação. Cada ação deve ter motivo verificável.
7. Antes de salvar, reconstrua o texto que sobreviverá a cada emenda. Um
segmento do Whisper não equivale a uma frase: una segmentos adjacentes
@@ -88,13 +88,19 @@ ou evidência obrigatória estiver ausente, pare e relate exatamente o que falta
`planos_de_edicao` e suas ações ordenadas em `acoes_do_plano`, associado ao
`video_id`, ao tipo de vídeo e ao contexto editorial carregado.
9. Faça preview do texto sobrevivente, lendo em sequência a última frase antes
e a primeira frase depois de cada corte. Apresente decisões e incertezas
para revisão humana. Uma alteração no plano exige novo preview.
e a primeira frase depois de cada corte. Para `hook`, apresente a frase
completa que abrirá o vídeo e a primeira frase original que virá em seguida.
Uma alteração no plano exige novo preview.
10. Após aprovação explícita, confirme a sequência atual, crie backup ou
duplicata, aplique o plano pelo fluxo suportado do Premiere e registre o
resultado em `aplicacoes_do_plano`.
11. Reconsulte a timeline, compare com o plano e registre a verificação. Separe
o que foi comprovado automaticamente do que exige avaliação visual.
o que foi comprovado automaticamente do que exige avaliação visual.
Essa releitura pós-aplicação é obrigatória: uma aplicação só pode ser
reportada como bem-sucedida quando a cobertura de origem em vídeo e áudio
corresponder ao complemento dos cortes do plano. Sobras, lacunas ou
desalinhamentos devem reprovar a verificação e ficar registrados no histórico.
## Contrato da decisão
@@ -114,10 +120,12 @@ O JSON abaixo é uma representação de trabalho, não a fonte principal:
}
```
`cut` remove um intervalo. Todos os tempos referem-se à mídia original. A
ação precisa ter `start < end`, estar dentro da duração e não sobrepor outra
ação incompatível. Use `reason` para registrar a fala, comparação ou evidência
que fundamentou a decisão.
`cut` remove um intervalo. `hook` duplica um único trecho vinculado em `0s` e
mantém a fala na posição original; use somente
`params: {"target": 0, "keep_original": true}`. Todos os tempos referem-se à
mídia original. A ação precisa ter `start < end`, estar dentro da duração e
não sobrepor outra ação incompatível. Use `reason` para registrar a fala,
comparação ou evidência que fundamentou a decisão.
Leia, conforme a etapa, [criterios/02-triagem-roteiro-vs-conversa.md](criterios/02-triagem-roteiro-vs-conversa.md),
[criterios/03-escolha-da-melhor-tomada.md](criterios/03-escolha-da-melhor-tomada.md),
@@ -125,7 +133,9 @@ Leia, conforme a etapa, [criterios/02-triagem-roteiro-vs-conversa.md](criterios/
[criterios/05-zoom.md](criterios/05-zoom.md),
[criterios/06-texto-corte-marcador.md](criterios/06-texto-corte-marcador.md),
[criterios/07-ritmo.md](criterios/07-ritmo.md) e
[criterios/10-revisao-humana.md](criterios/10-revisao-humana.md).
[criterios/10-revisao-humana.md](criterios/10-revisao-humana.md). Quando o
pedido envolver gancho ou reordenação, leia também
[criterios/11-gancho.md](criterios/11-gancho.md).
## Limites
@@ -146,6 +156,6 @@ Relate sempre em português:
- edição, vídeo e versão da análise usados;
- tomadas encontradas e escolhidas, com motivo;
- falas descartadas como bastidor ou repetição;
- cortes, zooms, textos e marcadores propostos;
- cortes, ganchos, zooms, textos e marcadores propostos;
- decisões rejeitadas ou ambíguas;
- plano salvo, aplicação realizada e verificação pendente.
@@ -15,6 +15,9 @@ em `planos_de_edicao` e `acoes_do_plano`. Você nunca escreve XML.
"actions": [
{"kind": "cut", "start": 21.9, "end": 127.6,
"reason": "tomadas descartadas, frases interrompidas e conversa com a equipe"},
{"kind": "hook", "start": 141.2, "end": 147.8,
"params": {"target": 0, "keep_original": true},
"reason": "frase completa escolhida como gancho de abertura"},
{"kind": "zoom", "start": 2.0, "end": 10.7,
"params": {"scale": 1.15}, "reason": "abertura: \"Aquela mama\" (ênfase 0.42)"},
{"kind": "text", "start": 127.7, "end": 129.0,
@@ -39,13 +42,14 @@ erro é silencioso.
Ambos ≥ 0. Um `end <= start` é rejeitado.
### 3. Tipos
`cut` · `zoom` · `text` · `marker`
`cut` · `hook` · `zoom` · `text` · `marker`
### 4. Parâmetros por tipo
| Tipo | `params` |
|---|---|
| `cut` | nenhum |
| `hook` | `target: 0` e `keep_original: true` |
| `zoom` | `scale` entre 1.0 e 3.0 (padrão 1.3 se omitido) |
| `text` | `content` **obrigatório**, até 120 caracteres |
| `marker` | opcional: `content` vira o nome do marcador |
@@ -70,6 +74,14 @@ ao menos 0,30s de respiro junto às palavras mantidas. A engine bloqueia borda
dentro de palavra, continuação gramatical e margem insuficiente. Detalhes em
`06-texto-corte-marcador.md` e `10-revisao-humana.md`.
### 7. Gancho: uma cópia completa para o início
Use no máximo um `hook`. O intervalo deve estar contido em um único clipe de
vídeo e seu áudio vinculado, em velocidade normal. A frase copiada precisa ter
começo, fechamento e 0,30s de margem nas duas bordas. O aplicador aceita apenas
o destino `0` e preserva a ocorrência original; nenhuma outra ação pode
sobrepor esse intervalo.
## Persistência
Depois de validar o JSON, crie um registro em `planos_de_edicao` ligado ao
@@ -81,8 +93,11 @@ confirmada.
- **Plano ou ação inválida** → o plano inteiro é bloqueado antes de alterar a
timeline.
- **Borda de corte semanticamente insegura** → o plano inteiro é bloqueado
- **Borda de corte ou gancho semanticamente insegura** → o plano inteiro é bloqueado
antes da conexão com o Premiere e antes do backup.
- **Gancho com faixas adicionais ocupadas, mídia retimada ou par A/V
ambíguo** → recusado; use uma sequência simples de diálogo ou faça a
duplicação manualmente.
- **Ação apontando para material cortado** → descartada e reportada, nunca
deslizada para o conteúdo vizinho.
- **Ação fora da mídia** → reportada como não colocada.
@@ -10,22 +10,26 @@ presuma que uma etapa posterior corrigirá bordas editoriais imprecisas.
## Preview obrigatório
Antes de pedir aprovação, apresente para cada corte:
Antes de pedir aprovação, apresente para cada corte ou gancho:
- intervalo removido e motivo;
- intervalo afetado e motivo;
- última frase completa que ficará antes;
- primeira frase completa que ficará depois;
- texto da emenda resultante;
- texto da emenda resultante quando houver remoção;
- margem acústica em cada lado;
- qualquer incerteza que exija escuta humana.
Para `hook`, apresente também a frase completa que passará a abrir o vídeo e
confirme que a ocorrência original será preservada.
O editor deve aprovar o conteúdo sobrevivente, não apenas a quantidade de
ações. Se o preview mostrar palavra truncada, oração incompleta ou continuação
sem contexto, o plano volta para edição e recebe novos limites.
## Defesa automática
Ao clicar em **Aplicar plano na timeline**, a engine revalida os cortes antes
Ao clicar em **Aplicar plano na timeline**, a engine revalida cortes e
ganchos antes
de se conectar ao Premiere e antes de criar o backup. A aplicação é bloqueada
quando encontra:
@@ -33,6 +37,7 @@ quando encontra:
- menos de 0,30s entre a borda e a palavra mantida;
- fala mantida interrompida antes do corte;
- retomada no meio de frase depois do corte.
- gancho sem frase completa ou sem margem nas duas extremidades.
Essa validação é uma rede de segurança, não substitui o preview. Depois que o
plano passa, a engine cria uma única cópia de segurança, aplica as ações e
@@ -0,0 +1,56 @@
# 11 — Gancho duplicado
> **Escopo:** Copiar uma fala do meio do vídeo para a abertura.
> **Quando:** pedidos de gancho ou abertura forte com repetição intencional.
## Semântica atual
`hook` cria uma cópia: a fala permanece no corpo do vídeo e sua cópia passa a
abrir a sequência. Use somente:
```json
{
"kind": "hook",
"start": 141.2,
"end": 147.8,
"params": {"target": 0, "keep_original": true},
"reason": "frase completa escolhida como gancho de abertura"
}
```
## Escolha editorial
O gancho deve funcionar sem a frase anterior. Prefira uma promessa, contraste,
resultado, pergunta ou afirmação específica que desperte curiosidade e continue
verdadeira fora da posição original. Evite pronomes sem referente, continuações
como “por isso” ou “então” e conclusões que dependam de explicação anterior.
Selecione a menor unidade que preserve o sentido completo. Una segmentos do
Whisper quando a gramática continuar entre eles. A primeira palavra precisa
iniciar a frase, a última precisa fechá-la e cada extremidade precisa conservar
ao menos 0,30s de respiro.
## Limites da execução segura
A versão atual aceita um único `hook`, destinado a `0s`, dentro de um único
clipe de vídeo em velocidade normal e seu áudio correspondente. Ela recusa
faixas adicionais ocupadas, par A/V ambíguo, mídia retimada ou invertida e
qualquer outra ação que sobreponha o trecho do gancho.
A operação cria a cópia a partir do mesmo intervalo da mídia de origem; o
original conserva seus efeitos, mas a cópia nasce sem efeitos específicos do
clipe. Por isso o gancho deve rodar antes de zooms e outros efeitos do plano.
Ela só prossegue quando o backup da sequência foi confirmado pelo Premiere.
## Preview
Antes da aprovação, mostre:
- a frase completa escolhida;
- o intervalo original e as margens de cada borda;
- a nova abertura seguida da primeira frase do conteúdo anterior;
- a confirmação de que a ocorrência original será preservada;
- o aumento esperado da duração total pelo tamanho do gancho.
O plano está pronto somente quando a nova emenda preserva sentido, ritmo e
respiração.