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:
- 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
This commit is contained in:
João Henrique
2026-09-08 16:13:27 -04:00
parent b541f502ba
commit b9bf3b2863
76 changed files with 16147 additions and 322 deletions
+81
View File
@@ -0,0 +1,81 @@
#!/bin/zsh
# ============================================================
# OpenCut Ronald - admin/OpenCut.command
#
# PONTO DE ENTRADA UNICO. Rode este arquivo a cada atualizacao que
# desenvolvermos: ele executa os tres scripts da pasta admin em ordem.
#
# 1. update.command dependencias + build dos paineis + testes
# 2. deploy.command backend no ar + ponte de live-updates
# 3. commit.command commit + push (pergunta antes de publicar)
#
# Se o update encontrar pendencias (teste quebrado, build falhando),
# ele PARA antes do commit - nada de publicar arvore quebrada. Para
# seguir mesmo assim, use FORCE=1.
#
# Uso:
# admin/OpenCut.command ciclo completo
# AUTO=1 admin/OpenCut.command nao pergunta antes do push
# SKIP_TESTS=1 admin/OpenCut.command pula os testes do passo 1
# FORCE=1 admin/OpenCut.command commita mesmo com pendencias
# ONLY=deploy admin/OpenCut.command roda so uma etapa
# (update | deploy | commit)
# ============================================================
set -u
ADMIN="$(cd "$(dirname "$0")" && pwd -P)"
GRN="$(tput setaf 2 2>/dev/null)"; YLW="$(tput setaf 3 2>/dev/null)"
RD="$(tput setaf 1 2>/dev/null)"; BLU="$(tput setaf 4 2>/dev/null)"
NC="$(tput sgr0 2>/dev/null)"
step() { echo; echo "${BLU}============================================================${NC}"
echo "${BLU} $*${NC}"
echo "${BLU}============================================================${NC}"; }
ok() { echo "${GRN}-> OK ${NC}$*"; }
warn() { echo "${YLW}-> Aviso: ${NC}$*"; }
die() { echo "${RD}-> Erro: ${NC}$*" >&2; exit 1; }
ONLY="${ONLY:-all}"
run_step() { [ "$ONLY" = "all" ] || [ "$ONLY" = "$1" ]; }
for s in update deploy commit; do
[ -x "$ADMIN/$s.command" ] || die "$ADMIN/$s.command ausente ou sem permissao de execucao"
done
UPDATE_RC=0
# ------------------------------------------------------------
# 1) Atualizacoes
# ------------------------------------------------------------
if run_step update; then
step "1/3 ATUALIZACOES (dependencias, build, testes)"
"$ADMIN/update.command" || UPDATE_RC=$?
if [ "$UPDATE_RC" != "0" ]; then
warn "o update terminou com pendencias (codigo $UPDATE_RC)"
fi
fi
# ------------------------------------------------------------
# 2) Deploy
# ------------------------------------------------------------
if run_step deploy; then
step "2/3 DEPLOY (backend + ponte de live-updates)"
"$ADMIN/deploy.command" || warn "o deploy nao confirmou o backend no ar"
fi
# ------------------------------------------------------------
# 3) Commit
# ------------------------------------------------------------
if run_step commit; then
if [ "$UPDATE_RC" != "0" ] && [ "${FORCE:-0}" != "1" ]; then
step "3/3 COMMIT - PULADO"
warn "o passo 1 acusou pendencias; nao vou commitar uma arvore quebrada."
warn "corrija os avisos acima, ou rode de novo com FORCE=1 para commitar assim mesmo."
exit "$UPDATE_RC"
fi
step "3/3 COMMIT (commit + push)"
"$ADMIN/commit.command" || die "o commit falhou"
fi
echo
ok "Ciclo concluido."
+161
View File
@@ -0,0 +1,161 @@
#!/bin/zsh
# ============================================================
# OpenCut Ronald - admin/update.command
#
# ATUALIZACOES: deixa a arvore pronta para rodar/commitar.
# 1. Sincroniza as dependencias Python do venv de producao
# 2. Rebuild dos paineis CEP/UXP (so se a fonte mudou)
# 3. Testes (painel + backend)
#
# Nao commita, nao faz push e nao sobe servidor - isso e trabalho do
# commit.command e do deploy.command. Rode-o sozinho quando quiser so
# revalidar a arvore, ou deixe o OpenCut.command chamar tudo em ordem.
#
# Uso:
# admin/update.command ciclo completo
# SKIP_TESTS=1 admin/update.command pula os testes
# SKIP_DEPS=1 admin/update.command pula a sincronia de dependencias
# ============================================================
set -u
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
CODE="$ROOT/code"
PANEL="$CODE/extension/com.opencut.panel"
UXP="$CODE/extension/com.opencut.uxp"
# venv de producao (o mesmo que start-opencut.sh usa). Um segundo venv em
# code/.venv ja existiu e divergiu deste - foi assim que o painel passou a
# mostrar "Bridge stopped": o servidor subiu num ambiente sem websockets.
VENV="/Volumes/Merongo/Library/Application Support/OpenCut/venv"
VENV_PY="$VENV/bin/python"
# Python 3.14 currently crashes in native test dependencies on macOS. Use the
# repository's Python 3.13 test environment when available; production keeps
# using the dedicated venv above.
TEST_VENV_PY="$CODE/.venv/bin/python"
GRN="$(tput setaf 2 2>/dev/null)"; YLW="$(tput setaf 3 2>/dev/null)"
RD="$(tput setaf 1 2>/dev/null)"; BLU="$(tput setaf 4 2>/dev/null)"
NC="$(tput sgr0 2>/dev/null)"
say() { echo "${BLU}== ${NC}$*"; }
ok() { echo "${GRN}-> OK ${NC}$*"; }
warn() { echo "${YLW}-> Aviso: ${NC}$*"; }
die() { echo "${RD}-> Erro: ${NC}$*" >&2; exit 1; }
FAILED=0
cd "$ROOT" || die "nao consegui entrar em $ROOT"
# Match start-opencut.sh so tests write logs/caches to the Merongo runtime and
# resolve the security-approved media binaries.
export HOME="$CODE/.opencut-runtime/home"
export OPENCUT_HOME="$HOME/.opencut"
export XDG_CACHE_HOME="$CODE/.opencut-runtime/cache"
export XDG_CONFIG_HOME="$CODE/.opencut-runtime/config"
export HF_HOME="/Volumes/Merongo/SISTEMAS/MODELOSIA/hf-cache"
export WHISPER_MODELS_DIR="/Volumes/Merongo/SISTEMAS/MODELOSIA"
export TORCH_HOME="/Volumes/Merongo/SISTEMAS/MODELOSIA/torch-cache"
mkdir -p "$HOME" "$OPENCUT_HOME" "$XDG_CACHE_HOME" "$XDG_CONFIG_HOME"
echo "${BLU}============================================================${NC}"
say "update.command - dependencias + build + testes"
echo "${BLU}============================================================${NC}"
echo
# ------------------------------------------------------------
# 1) Dependencias Python
# ------------------------------------------------------------
if [ "${SKIP_DEPS:-0}" = "1" ]; then
ok "SKIP_DEPS=1 - pulando dependencias"
elif [ ! -x "$VENV_PY" ]; then
warn "venv de producao nao encontrado em $VENV (o disco Merongo esta montado?)"
else
say "Sincronizando dependencias com code/requirements.txt"
if "$VENV_PY" -m pip install -q -r "$CODE/requirements.txt"; then
ok "dependencias em dia"
else
warn "pip install falhou"
FAILED=1
fi
# Guarda-costas do bug do "Bridge stopped": a ponte importa websockets
# direto, e sem ele o /ws/start responde 400 e o painel fica parado.
if "$VENV_PY" -c "import websockets" >/dev/null 2>&1; then
ok "websockets presente (ponte de live-updates pode subir)"
else
warn "websockets AUSENTE - a ponte de live-updates vai falhar"
FAILED=1
fi
fi
echo
# ------------------------------------------------------------
# 2) Build dos paineis (so se a fonte mudou)
# ------------------------------------------------------------
CHANGES="$(git status --porcelain 2>/dev/null || true)"
if echo "$CHANGES" | grep -qE 'code/extension/(com\.opencut\.panel|com\.opencut\.uxp)/'; then
say "Fonte dos paineis alterada - regenerando build"
if ( cd "$PANEL" && npm run build >/dev/null 2>&1 ); then
ok "build com.opencut.panel"
else
warn "build do painel falhou"
FAILED=1
fi
if [ -f "$UXP/package.json" ]; then
if ( cd "$UXP" && npm run build >/dev/null 2>&1 ); then
ok "build com.opencut.uxp"
else
warn "build do uxp falhou"
FAILED=1
fi
fi
else
ok "Fonte dos paineis inalterada - sem rebuild"
fi
echo
# ------------------------------------------------------------
# 3) Testes
# ------------------------------------------------------------
if [ "${SKIP_TESTS:-0}" = "1" ]; then
ok "SKIP_TESTS=1 - pulando testes"
else
say "Testes do painel (vitest)"
if ( cd "$PANEL" && npm test >/dev/null 2>&1 ); then
ok "testes do painel passaram"
else
warn "testes do painel FALHARAM - rode: (cd \"$PANEL\" && npm test)"
FAILED=1
fi
if [ -x "$TEST_VENV_PY" ] || [ -x "$VENV_PY" ]; then
say "Testes do backend (pytest)"
TEST_PY="$TEST_VENV_PY"
[ -x "$TEST_PY" ] || TEST_PY="$VENV_PY"
if ! "$TEST_PY" -c "import pytest" >/dev/null 2>&1; then
"$TEST_PY" -m pip install -q pytest >/dev/null 2>&1 || true
fi
if "$TEST_PY" -c "import pytest" >/dev/null 2>&1; then
# O backend usa o FFmpeg do projeto (governado pelo gate de CVEs em
# start-opencut.sh). Os testes precisam do MESMO PATH, senão pegam o
# ffmpeg do sistema (ex: Homebrew 8.1) e caem no FfmpegSecurityError.
if [ -x "/Volumes/Merongo/SISTEMAS/OPENCUT-MEDIA/ffmpeg/bin/ffmpeg" ]; then
export PATH="/Volumes/Merongo/SISTEMAS/OPENCUT-MEDIA/ffmpeg/bin:$PATH"
fi
if ( cd "$CODE" && "$TEST_PY" -m pytest -q --tb=short ); then
ok "testes do backend passaram"
else
warn "testes do backend FALHARAM"
FAILED=1
fi
else
warn "pytest indisponivel - testes do backend pulados"
fi
fi
fi
echo
if [ "$FAILED" = "0" ]; then
ok "Atualizacao concluida sem pendencias."
exit 0
fi
warn "Atualizacao concluida COM avisos - reveja os itens acima antes de commitar."
exit 1