feat: criado repositório jhonny-editor no Gitea
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: - 32 arquivos alterados - 16 novos - 15 modificados - 0 removidos 16 files changed, 638 insertions(+), 61 deletions(-) Arquivos: - code/engine/skills/boas-praticas-oo.md -> .agents/skills/boas-praticas-oo/SKILL.md - AGENTS.md - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/integracoes/visual/apple_vision.py - code/engine/integracoes/visual/apple_vision_runner.swift - code/engine/integracoes/visual/extrator_ffmpeg.py - code/engine/scanner/__init__.py - code/engine/scanner/configuracao_visual.py - code/engine/scanner/coordenacao/__init__.py - code/engine/scanner/retakes/adaptador_de_falas.py - code/engine/scanner/retakes/agrupador_de_takes.py - code/engine/scanner/retakes/detector_de_reinicios.py - code/engine/scanner/retakes/modelos_de_retakes.py - code/engine/scanner/visual.py - .jhonny/ - .retakes/ - CODING_STANDARDS.md - code/engine/executar_retakes.py - code/engine/persistencia/ - code/engine/scanner/retakes/__init__.py - code/engine/scanner/retakes/carregador_de_artefatos.py - code/engine/scanner/retakes/classificador_de_retakes.py - code/engine/scanner/retakes/coordenador_de_retakes.py - code/engine/scanner/retakes/deteccao_de_retakes.py - code/engine/scanner/retakes/gerador_de_evidencias.py - code/engine/scanner/retakes/repositorio_de_retakes.py - code/engine/testes/test_consultas_de_persistencia.py - code/engine/testes/test_deteccao_de_retakes.py - code/engine/testes/test_persistencia_sqlite.py - code/relatorios/audio/arquivos/92f97877259a86a8095b1eecafdefe357212a12247d04b78df60e0c0ae38b2ea/
This commit is contained in:
@@ -28,6 +28,9 @@
|
||||
<button class="tab-button" id="tabBtnScanner" role="tab" aria-selected="false" aria-controls="tabScanner" onclick="switchTab('scanner')" type="button">
|
||||
<span class="tab-icon" aria-hidden="true">◉</span>Scanner
|
||||
</button>
|
||||
<button class="tab-button" id="tabBtnRetakes" role="tab" aria-selected="false" aria-controls="tabRetakes" onclick="switchTab('retakes')" type="button">
|
||||
<span class="tab-icon" aria-hidden="true">↻</span>Retakes
|
||||
</button>
|
||||
<button class="tab-button" id="tabBtnBridge" role="tab" aria-selected="false" aria-controls="tabBridge" onclick="switchTab('bridge')" type="button">
|
||||
<span class="tab-icon" aria-hidden="true">⇄</span>Conexão
|
||||
</button>
|
||||
@@ -226,9 +229,19 @@
|
||||
<p class="tab-intro">Escolha o que será lido no arquivo original. O Scanner usa os tempos da timeline, mas não exporta frames pelo Premiere.</p>
|
||||
<section class="card">
|
||||
<div class="card-head"><h2>Amostragem e faixas</h2></div>
|
||||
<label class="field-label" for="scannerInterval">Frames de vídeo</label>
|
||||
<select id="scannerInterval" class="select-field"><option value="0.2">Precisa — 5 frames por segundo</option><option value="1" selected>Equilibrada — 1 frame por segundo</option><option value="5">Econômica — 1 frame a cada 5 segundos</option></select>
|
||||
<p class="field-help">Use a amostragem precisa somente no trecho que será reenquadrado.</p>
|
||||
<label class="field-label" for="scannerInterval">Segundos por quadro</label>
|
||||
<div class="range-field-row">
|
||||
<input id="scannerInterval" type="range" min="0.2" max="10" step="0.1" value="1" oninput="scannerUpdateIntervalLabel()">
|
||||
<span class="range-field-value" id="scannerIntervalValue">1 s/quadro</span>
|
||||
</div>
|
||||
<p class="field-help">Quanto menor, mais frames e mais detalhado (e mais lento). Valores maiores aceleram a análise, principalmente em clipes curtos.</p>
|
||||
<label class="field-label" for="scannerResolution">Resolução da análise</label>
|
||||
<select id="scannerResolution" class="select-field">
|
||||
<option value="0">Original — sem redimensionar</option>
|
||||
<option value="1080" selected>1080p — recomendado</option>
|
||||
<option value="720">720p — mais rápido</option>
|
||||
</select>
|
||||
<p class="field-help">Reduzir a resolução acelera a extração e a leitura Vision sem perder precisão no rosto, pose ou objetos.</p>
|
||||
<button class="button button-ghost" id="btnScannerDetectTracks" onclick="scannerDetectTracks()" type="button">Detectar faixas da sequência</button>
|
||||
<p class="field-help" id="scannerTracksHelp">Abra a sequência desejada e detecte as faixas para selecioná-las.</p>
|
||||
<div class="scanner-track-grid"><div><span class="field-label">Faixas de vídeo</span><div class="scanner-track-list" id="scannerVideoTracks"></div></div><div><span class="field-label">Faixas de áudio</span><div class="scanner-track-list" id="scannerAudioTracks"></div></div></div>
|
||||
@@ -258,6 +271,68 @@
|
||||
<div class="callout callout-info" id="scannerReportCard" hidden><strong>Relatório pronto</strong><p id="scannerReportPath"></p><div class="button-row"><button class="button button-ghost" onclick="scannerOpenReport()" type="button">Abrir JSON</button><button class="button button-ghost" onclick="scannerCopyReport()" type="button">Copiar conteúdo</button></div></div>
|
||||
</section></div>
|
||||
</div>
|
||||
<!-- ============================== RETAKES ============================== -->
|
||||
<div class="tab-panel" id="tabRetakes" role="tabpanel" aria-labelledby="tabBtnRetakes" hidden>
|
||||
<p class="tab-intro">Identifica repetições e tentativas alternativas usando a transcrição do Scanner. O painel nunca corta o vídeo: você revisa e decide.</p>
|
||||
|
||||
<!-- 1. Arquivo ou conjunto analisado -->
|
||||
<section class="card">
|
||||
<div class="card-head"><h2>Arquivo analisado</h2><span class="card-kicker" id="retakesStatusGeral">—</span></div>
|
||||
<div class="field-grid">
|
||||
<div><label class="field-label" for="retakesCaso">Caso do Scanner</label>
|
||||
<select id="retakesCaso" class="select-field" onchange="retakesCarregarCaso()"></select></div>
|
||||
<div><button class="button button-ghost" onclick="retakesListarCasos()" type="button">Atualizar lista</button></div>
|
||||
</div>
|
||||
<p class="field-help" id="retakesInfoCaso">Selecione um caso já processado pelo Scanner.</p>
|
||||
</section>
|
||||
|
||||
<!-- 2/3. Configurações e critérios -->
|
||||
<div class="scanner-options-grid">
|
||||
<section class="card"><div class="card-head"><h2>Critérios</h2></div>
|
||||
<label class="field-label" for="retakesCriterio">Critério de confirmação</label>
|
||||
<select id="retakesCriterio" class="select-field">
|
||||
<option value="conservador">Conservador — só evidências fortes</option>
|
||||
<option value="equilibrado" selected>Equilibrado — prováveis e fortes</option>
|
||||
<option value="sensivel">Sensível — também possíveis</option>
|
||||
</select>
|
||||
<label class="checkbox-field"><input id="retakesReaproveitar" type="checkbox" checked><span>Reaproveitar análise existente</span></label>
|
||||
<p class="field-help">A comparação textual, os reinícios de fala e as pausas já fazem parte da análise da engine.</p>
|
||||
</section>
|
||||
<section class="card"><div class="card-head"><h2>Análise visual auxiliar</h2></div>
|
||||
<label class="checkbox-field"><input id="retakesUsarVisual" type="checkbox"><span>Usar cortes visuais como evidência</span></label>
|
||||
<p class="field-help">Reforça a confiança, mas nunca decide sozinha. Reutiliza as cenas já analisadas.</p>
|
||||
<div class="button-row">
|
||||
<button class="button button-primary" id="btnRetakesAnalisar" onclick="retakesAnalisar()" type="button">Analisar retakes</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<!-- 4. Progresso -->
|
||||
<div class="callout callout-info" id="retakesProgressoCard" hidden>
|
||||
<strong id="retakesProgressoEtapa">Analisando retakes…</strong>
|
||||
<p id="retakesProgressoDetalhe">—</p>
|
||||
</div>
|
||||
|
||||
<!-- 5/6. Resultados e revisão -->
|
||||
<section class="card">
|
||||
<div class="card-head"><h2>Resultados</h2><span class="card-kicker" id="retakesContagem">—</span></div>
|
||||
<label class="field-label" for="retakesFiltro">Filtrar</label>
|
||||
<select id="retakesFiltro" class="select-field" onchange="retakesRenderResultados()">
|
||||
<option value="todos" selected>Todos</option>
|
||||
<option value="fortes">Fortes</option>
|
||||
<option value="possiveis">Possíveis e prováveis</option>
|
||||
<option value="pendente_de_revisao">Pendentes de revisão</option>
|
||||
<option value="confirmado">Confirmados</option>
|
||||
<option value="nao_e_retake">Rejeitados</option>
|
||||
<option value="ignorado">Ignorados</option>
|
||||
</select>
|
||||
<div id="retakesResultados" role="list" aria-label="Grupos de retakes"></div>
|
||||
<p class="field-help" id="retakesSemResultados" hidden>Nenhum retake identificado com os critérios atuais.</p>
|
||||
</section>
|
||||
<div id="retakesLog" role="log" aria-live="polite" aria-relevant="additions" tabindex="0" aria-label="Log de retakes"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- ============================== CONEXÃO ============================== -->
|
||||
<div class="tab-panel" id="tabBridge" role="tabpanel" aria-labelledby="tabBtnBridge" hidden>
|
||||
|
||||
Reference in New Issue
Block a user