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:
@@ -0,0 +1,166 @@
|
||||
"""DDL do banco SQLite de análises (vídeo, imagem e áudio)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sqlite3
|
||||
|
||||
_DDL = """
|
||||
CREATE TABLE IF NOT EXISTS videos (
|
||||
id TEXT PRIMARY KEY,
|
||||
nome TEXT,
|
||||
duracao REAL,
|
||||
taxa_de_quadros REAL,
|
||||
largura INTEGER,
|
||||
altura INTEGER,
|
||||
criado_em TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS faixas (
|
||||
id TEXT NOT NULL,
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
nome TEXT,
|
||||
tipo TEXT,
|
||||
indice INTEGER,
|
||||
PRIMARY KEY (video_id, id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS clipes (
|
||||
id TEXT NOT NULL,
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
faixa_id TEXT NOT NULL,
|
||||
nome TEXT,
|
||||
inicio_na_timeline REAL NOT NULL,
|
||||
fim_na_timeline REAL NOT NULL,
|
||||
inicio_na_origem REAL,
|
||||
fim_na_origem REAL,
|
||||
arquivo TEXT,
|
||||
offline INTEGER NOT NULL DEFAULT 0,
|
||||
metadados TEXT,
|
||||
PRIMARY KEY (video_id, id),
|
||||
FOREIGN KEY (video_id, faixa_id) REFERENCES faixas(video_id, id) ON DELETE CASCADE
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_clipes_faixa ON clipes(video_id, faixa_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS arquivos (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
video_id TEXT REFERENCES videos(id) ON DELETE CASCADE,
|
||||
caminho TEXT NOT NULL,
|
||||
formato TEXT,
|
||||
duracao REAL,
|
||||
codec_de_video TEXT,
|
||||
codec_de_audio TEXT,
|
||||
largura INTEGER,
|
||||
altura INTEGER,
|
||||
taxa_de_quadros REAL,
|
||||
canais_de_audio INTEGER,
|
||||
taxa_de_amostragem INTEGER,
|
||||
tamanho_em_bytes INTEGER,
|
||||
orientacao TEXT,
|
||||
timecode TEXT,
|
||||
hash_do_conteudo TEXT,
|
||||
UNIQUE (video_id, caminho)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS analises_versao (
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
etapa TEXT NOT NULL,
|
||||
hash_versao TEXT NOT NULL,
|
||||
concluido_em TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
|
||||
PRIMARY KEY (video_id, etapa)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS segmentos_de_transcricao (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
clipe_id TEXT NOT NULL,
|
||||
inicio REAL NOT NULL,
|
||||
fim REAL NOT NULL,
|
||||
texto TEXT NOT NULL,
|
||||
confianca REAL,
|
||||
falante TEXT,
|
||||
voz_aparente TEXT,
|
||||
confianca_voz REAL,
|
||||
emocao TEXT,
|
||||
confianca_emocao REAL,
|
||||
caracteristicas_acusticas TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_segmentos_video_clipe
|
||||
ON segmentos_de_transcricao(video_id, clipe_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS palavras_de_transcricao (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
segmento_id INTEGER NOT NULL REFERENCES segmentos_de_transcricao(id) ON DELETE CASCADE,
|
||||
ordem INTEGER NOT NULL,
|
||||
texto TEXT NOT NULL,
|
||||
inicio REAL NOT NULL,
|
||||
fim REAL NOT NULL,
|
||||
confianca REAL,
|
||||
falante TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_palavras_segmento ON palavras_de_transcricao(segmento_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS evidencias_visuais (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
clipe_id TEXT NOT NULL,
|
||||
tipo TEXT NOT NULL,
|
||||
inicio REAL NOT NULL,
|
||||
fim REAL NOT NULL,
|
||||
valor TEXT NOT NULL,
|
||||
confianca REAL,
|
||||
provider TEXT NOT NULL,
|
||||
modelo TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_evidencias_video_clipe
|
||||
ON evidencias_visuais(video_id, clipe_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS cenas (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
clipe_id TEXT,
|
||||
inicio REAL NOT NULL,
|
||||
fim REAL NOT NULL,
|
||||
confianca REAL,
|
||||
referencias TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_cenas_video ON cenas(video_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS grupos_de_retake (
|
||||
id TEXT PRIMARY KEY,
|
||||
video_id TEXT NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
|
||||
faixa_id TEXT NOT NULL,
|
||||
tipo TEXT NOT NULL,
|
||||
confianca REAL NOT NULL,
|
||||
criado_em TEXT NOT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_grupos_video ON grupos_de_retake(video_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tomadas_de_retake (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
grupo_id TEXT NOT NULL REFERENCES grupos_de_retake(id) ON DELETE CASCADE,
|
||||
ordem INTEGER NOT NULL,
|
||||
fala_id TEXT NOT NULL,
|
||||
segmento_id TEXT NOT NULL,
|
||||
inicio REAL NOT NULL,
|
||||
fim REAL NOT NULL,
|
||||
texto TEXT NOT NULL,
|
||||
similaridade_com_anterior REAL NOT NULL,
|
||||
confianca REAL NOT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_tomadas_grupo ON tomadas_de_retake(grupo_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS evidencias_de_retake (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
grupo_id TEXT NOT NULL REFERENCES grupos_de_retake(id) ON DELETE CASCADE,
|
||||
tipo TEXT NOT NULL,
|
||||
descricao TEXT NOT NULL,
|
||||
valor REAL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_evidencias_retake_grupo ON evidencias_de_retake(grupo_id);
|
||||
"""
|
||||
|
||||
|
||||
def criar_esquema(conexao: sqlite3.Connection) -> None:
|
||||
"""Cria (de forma idempotente) todas as tabelas do banco de análises."""
|
||||
conexao.executescript(_DDL)
|
||||
conexao.commit()
|
||||
Reference in New Issue
Block a user