Skip to main content

StaticCodeAudit — Resumen del producto

Nivel Principiante
Tiempo de lectura ⏱ 10 min
palabras 3015
Temas overviewfeatures

StaticCodeAudit — Resumen del producto

Herramienta autónoma de auditoría de cumplimiento, seguridad y calidad del código. Cero dependencias. 100 % sin conexión. Informes de nivel empresarial.

Por CodeFixture | Prefijo: SCA | Licencia: MIT


Puntos destacados

  • Cero dependencias externas — funciona únicamente con la biblioteca estándar de Python (no se requiere pip install)
  • 100 % sin conexión — sin llamadas a API, sin acceso a la red, sin dependencia de la nube
  • Más de 465 reglas de detección distribuidas en 7 categorías de auditoría con correspondencia OWASP/CWE/WCAG/ASVS (Python, JS/TS, Java, C#, PHP, YAML)
  • Informes HTML interactivos — archivo único autónomo con más de 12 visualizaciones Chart.js
  • Soporte de 4 idiomas — francés, inglés, español, alemán (informe y consola)
  • Comparación histórica — seguimiento automático de la baseline a lo largo de 10 auditorías
  • Análisis de CVE — integración opcional de pip-audit y npm audit (local, sin conexión)
  • Personalización marca blanca — nombre de herramienta, empresa y logo configurables por proyecto
  • Matriz de cumplimiento ISO 27001 — mapea los findings a los 93 controles del Anexo A en 4 temas
  • Auto-pruebas — sistema integrado de validación por fixtures (más de 1400 casos de prueba)
  • Retención de informes — limpieza configurable por número, días o ambos modos
  • Integración con git blame — resuelve el committer por finding para la trazabilidad
  • Configuración interactiva — modos init y configure guiados para una puesta en marcha sencilla
  • Modo demo--demo genera informes anonimizados (rutas, código, soluciones ocultos) para prospectos y compartición pública
  • Asistente de reglas personalizadas--create-rule asistente unificado de 7 pasos: crear o editar, verificación de duplicados (nombre + pattern), DSL completo (risk/solution/benefit/fix), 4 idiomas
  • Filtro de severidad--severity CRITICAL,HIGH filtra las reglas antes del escaneo; banner ámbar en el informe cuando está activo
  • Insignia de lenguaje — cada finding muestra el lenguaje detectado (Python, JavaScript, YAML…) como una insignia neutra
  • Gráfico lenguaje × severidad — diagrama de barras apiladas que cruza el lenguaje detectado con el nivel de severidad
  • Arquitectura de reglas personalizadas — directorio custom-rules/ separado de la instalación SCA, nunca sobrescrito por las actualizaciones
  • Pipeline de salida unificado — todos los mensajes pasan por Reporter (modos quiet/silent/log-file/debug gestionados automáticamente)
  • Progreso detallado — numeración dinámica [n/N] calculada después de cargar las reglas, mensajes por lenguaje y por etapa de taint

Qué hace

StaticCodeAudit (SCA) es una herramienta de análisis estático que escanea el código fuente de un proyecto en busca de vulnerabilidades de seguridad, antipatrones arquitectónicos, problemas de accesibilidad UI/UX y deuda de mantenimiento. Produce un informe HTML autónomo con findings agrupados por severidad, gráficos interactivos, puntuación de salud y análisis histórico de tendencias.

Flujo de trabajo

1. ./staticcodeaudit-linux-x64 /ruta/al/proyecto --init   # Inicializa el proyecto (genera UUID + config)
2. ./staticcodeaudit-linux-x64 /ruta/al/proyecto          # Ejecuta la auditoría completa
3. Abra SCA-REPORT-*.html                    # Revise el informe interactivo

Cada auditoría genera:

  • Informe HTML (SCA-REPORT-{timestamp}.html) — autónomo, imprimible, interactivo
  • Informe demo (SCA-REPORT-{timestamp}-demo.html) — versión anonimizada para compartir (opt-in vía --demo)
  • Datos JSON (SCA-DATA-{timestamp}.json) — legible por máquina, versionado (v3.4)
  • Baseline — almacenada para la comparación de la próxima auditoría (problemas nuevos/resueltos/persistentes)

Reglas de detección

Más de 465 reglas distribuidas en 7 categorías, cada una con evaluación de riesgo, guía de solución y descripción del beneficio.

Security (~430 reglas) — Peso: 3

Regla Severidad Estándar
Inyección SQL (f-string, concat, ORM) HIGH OWASP A03, CWE-89
XSS (innerHTML, React, Angular, Vue, Svelte, Blade) HIGH CWE-79
Inyección JNDI (Java — Log4Shell) CRITICAL ASVS 1.3.8, CWE-917
Inyección XPath (Java, C#, PHP, Python) HIGH ASVS 1.2.7, CWE-643
SSTI — Server-Side Template Injection (Python, JS) HIGH ASVS 1.3.7, CWE-1336
Inyección SpEL (Spring) HIGH CWE-917
Inyección LDAP (C#) HIGH CWE-90
Inyección CSV (formula injection) MEDIUM ASVS 1.2.10, CWE-1236
Inyección SMTP (Python, PHP) MEDIUM ASVS 1.3.11, CWE-93
ReDoS — Regular Expression Denial of Service MEDIUM ASVS 1.3.12, CWE-1333
Format String Vulnerability MEDIUM ASVS 1.3.10, CWE-134
Secretos hardcodeados HIGH CWE-798
Credenciales por defecto (hardcodeadas) HIGH ASVS 6.3.2, CWE-798
Ejecución de código peligrosa (eval/exec) HIGH CWE-94
Modo debug activado HIGH OWASP A05
Secreto registrado (f-string, argumento, Java, C#, PHP) HIGH OWASP A09, CWE-532
Inyección de log (CRLF) MEDIUM ASVS 16.3.2, CWE-117
HTTP sin TLS MEDIUM OWASP A02
WebSocket sin TLS (ws:// vs wss://) MEDIUM ASVS 4.4.1, CWE-319
Deserialización insegura (Python, Java, C#, PHP) HIGH OWASP A08, CWE-502
Criptografía débil (MD5/SHA-1, Java, C#, PHP) HIGH CWE-328
Tamaño de clave insuficiente (RSA < 2048) MEDIUM ASVS 11.2.3, CWE-326
Inyección de comandos del SO (Python, Java, C#, PHP) HIGH CWE-78
Excepción verbosa (Python, Java, C#, PHP) MEDIUM CWE-209
Autenticación artesanal HIGH CWE-287
Política de contraseñas débil (mín < 8) MEDIUM ASVS 6.2.1, CWE-521
Preguntas de seguridad (auth basada en conocimiento) LOW ASVS 6.4.2, CWE-640
Tokens de sesión predecibles HIGH CWE-330
JWT algoritmo None CRITICAL ASVS 9.1.2, CWE-345
Secreto JWT hardcodeado HIGH ASVS 9.1.3, CWE-798
Importación dinámica MEDIUM CWE-502
Aleatorio inseguro (Math.random, Java, C#, PHP) MEDIUM CWE-330
Autenticación del lado cliente (localStorage) HIGH CWE-602
Race condition (TOCTOU) MEDIUM CWE-367
Inyección XXE (Java, C#, PHP) HIGH CWE-611
CSRF deshabilitado (Spring) HIGH CWE-352
CORS permisivo (Spring, C#) MEDIUM CWE-942
Bypass de SSL (Java, C#) HIGH CWE-295
Open redirect (Java, C#, PHP) MEDIUM CWE-601
Inclusión de archivos (PHP) HIGH CWE-98
Carga de archivos sin validación MEDIUM ASVS 5.2.2, CWE-434
Específico de PHP (extract, type juggling, mass assignment) MEDIUM-HIGH Varios
PII registrados (RGPD, 5 lenguajes) HIGH RGPD Art. 5
Retención de datos ausente (RGPD) MEDIUM RGPD Art. 5
MFA ausente (5 lenguajes) MEDIUM CWE-308
Dockerfile (usuario root, base no fijada, COPY all) HIGH-MEDIUM CWE-250
Almacenamiento local inseguro (tokens/secretos en localStorage) MEDIUM CWE-922
Cabecera CSP ausente (Flask, Django, Express) MEDIUM CWE-1021
Cabecera HSTS ausente MEDIUM ASVS 3.4.1, CWE-523
X-Content-Type-Options ausente MEDIUM ASVS 3.4.4
Referrer-Policy ausente LOW ASVS 3.4.5
Protección anti-frame ausente (CSP/X-Frame-Options) MEDIUM ASVS 3.4.6, CWE-1021
PostMessage sin verificación de origen MEDIUM ASVS 3.5.5, CWE-346
Subresource Integrity (SRI) ausente LOW ASVS 3.6.1
Contenido SVG con scripts (XSS) MEDIUM ASVS 1.3.4, CWE-79
Introspección GraphQL activada MEDIUM ASVS 4.3.2
GraphQL sin límite de profundidad MEDIUM ASVS 4.3.1, CWE-770
IP interna hardcodeada (RFC 1918) MEDIUM CWE-798
Endpoint de prueba expuesto (/test, /debug sin protección) MEDIUM CWE-489

Architecture (10 reglas) — Peso: 2

Regla Severidad Estándar
Ruta admin sin protección HIGH OWASP A01
Lógica de BD en routers/controllers (Python, Java, C#, PHP) MEDIUM
Consultas directas en routers MEDIUM
Patrones de consultas N+1 (Python, Java) MEDIUM
Archivos que superan el umbral de longitud LOW-MEDIUM

Interface / UI (5 reglas) — Peso: 1

Regla Severidad
Estilos inline en JavaScript LOW
Uso manual de createElement LOW
Listeners de eventos no limpiados LOW
Manipulación del DOM en bucles LOW
SVG inline en HTML LOW

Experiencia de usuario / Accesibilidad (18 reglas) — Peso: 1

Regla Severidad Estándar
Botón sin etiqueta ARIA MEDIUM WCAG 2.4.6
Campo sin etiqueta MEDIUM WCAG 1.3.1
Imagen sin texto alternativo MEDIUM WCAG 1.1.1
tabindex positivo MEDIUM WCAG 2.4.3
Contorno de foco eliminado MEDIUM WCAG 2.4.7
Medios con autoplay MEDIUM WCAG 1.4.2
Mensajes toast no traducidos MEDIUM i18n
Toasts de error efímeros MEDIUM UX
Cadena UI hardcodeada (verificación i18n) MEDIUM i18n
console.log residual LOW

Maintenance (22 reglas) — Peso: 1

Regla Severidad Estándar
TODO/FIXME/HACK/XXX sin resolver LOW
Uso de API obsoleta (Python, Java, C#, PHP, JS) LOW CWE-477
Excepción atrapa-todo (Python, Java, C#, PHP) MEDIUM CWE-396
System.out.println (Java) LOW
Console.Write (C#) LOW
Supresor de errores @ (PHP) LOW
Destructivo sin backup (DROP/TRUNCATE fuera de migraciones) LOW ISO A.8.13
Uso de hora local (datetime.now() sin timezone) LOW ISO A.8.17
Endpoint de health check ausente LOW ISO A.8.16
Código vendor sin revisar MEDIUM ISO A.5.22

Dependencies (3 reglas) — Peso: 2

Regla Severidad Estándar
Dependencia vulnerable (CVE) HIGH-CRITICAL OWASP A06
Versión de dependencia no fijada HIGH CWE-1357
Licencia no conforme MEDIUM

CI/CD (18 reglas) — Peso: 2

Regla Severidad Estándar
pull_request_target_checkout HIGH CI-CD-01
GHA expression injection HIGH CI-CD-01
GHA permisos excesivos MEDIUM CI-CD-05
GHA permisos ausentes MEDIUM CI-CD-05
GHA disparador de comentario sin protección MEDIUM CI-CD-01
Versión de acción no fijada HIGH CI-CD-09
Variables GitLab inseguras MEDIUM CI-CD-05
Workflow ausente del archivo CODEOWNERS LOW CI-CD-05
gha_secret_in_log HIGH CWE-312
gha_deprecated_commands HIGH CVE-2020-15228
gha_artifact_poisoning MEDIUM CI-CD-09
gha_self_hosted_runner MEDIUM CI-CD-06
ci_curl_pipe_bash HIGH CI-CD-09
ci_insecure_download MEDIUM CWE-319
hardcoded_secret_cicd CRITICAL CI-CD-04 / CWE-798
docker_latest_tag LOW CI-CD-09
gitlab_allow_failure_security HIGH CI-CD-04
gitlab_script_secrets_echo HIGH CWE-312

Lenguajes soportados

Lenguaje Extensiones Cobertura de reglas
Python .py Security, Architecture, Maintenance
JavaScript .js, .jsx, .mjs Security, UI, UX
TypeScript .ts, .tsx Mismas reglas que JavaScript
HTML .html, .htm, .vue, .svelte, .ejs, .hbs, .njk, .jinja, .jinja2, .twig, .liquid, .mustache, .phtml, .erb, .jsp, .asp, .aspx, .cshtml UI, UX/Accesibilidad
Java .java Security, Architecture, Maintenance
C# .cs Security, Architecture, Maintenance
PHP .php Security, Architecture, Maintenance
YAML .yml, .yaml CI/CD

Funcionalidades del informe

Secciones (17 en total)

  1. Cabecera — Nombre del proyecto, versión, UUID, bandera de idioma, marca de tiempo
  2. Tabla de contenidos — Cuadrícula clicable con iconos emoji
  3. Parámetros de auditoría — Lenguajes, extensiones escaneadas, rutas, patrones de exclusión, categorías, modo
  4. Opciones CLI utilizadas — Checklist de 16 opciones con estado y descripciones
  5. Visualizaciones — 9 gráficos de métricas + 4 gráficos de tendencias históricas (incl. barras apiladas lenguaje × severidad)
  6. Estadísticas resumen — Tarjetas: contadores HIGH/MEDIUM/LOW, validaciones, tasa de pruebas, tiempos
  7. Puntuación de salud — Puntuación de seguridad logarítmica normalizada por LOC, con penalizaciones por severidad y barra de progreso coloreada
  8. Top 10 archivos problemáticos — Ranking en heatmap
  9. Pruebas unitarias — Contadores pass/fail/error/skip con detalles
  10. Validación de fixtures — Resultados de precisión de detección
  11. Dependencias — Resultados del escaneo CVE, paquetes no fijados (opcional)
  12. Cumplimiento SLA — Plazos de resolución y reglas de escalado por severidad
  13. Matriz de cumplimiento ISO 27001 — Mapeo de findings a los controles del Anexo A de ISO/IEC 27001:2022 (93 controles, 4 temas)
  14. Findings por severidad — Agrupados CRITICAL/HIGH/MEDIUM/LOW/INFO con extractos de código, insignias de categoría, enlaces al glosario
  15. Validaciones por categoría — Mensajes de éxito (sin problemas detectados)
  16. Glosario — 36 acrónimos con definiciones (OWASP, ASVS, WCAG, CVE, CVSS, CWE, CSRF, XSS, SQL, SARIF, SBOM, ISO 27001, etc.)

Funcionalidades interactivas

  • Sidebar redimensionable — Tabla de contenidos pegajosa con tirador de redimensionamiento y persistencia en localStorage
  • Atajos de teclado — Navegación j/k, Ctrl+Home
  • Secciones plegables — Haga clic para desplegar/replegar los findings
  • Modo impresión — Diseño preparado para impresión con un clic
  • Visualizaciones Chart.js — Más de 12 gráficos interactivos con tooltips
  • Comparación con baseline — Problemas nuevos/resueltos/persistentes destacados
  • Enlaces cruzados al glosario — Todos los acrónimos del informe son enlaces clicables al glosario con vista previa en tooltip

Autonomía del informe

Cada informe es un archivo HTML único autónomo:

  • Todo el CSS, JavaScript y Chart.js incrustados inline
  • Favicon y logo codificados en base64
  • Sin archivos externos, sin CDN, sin red necesaria
  • Puede abrirse en cualquier navegador, compartirse como adjunto de correo, archivarse

Cumplimiento y estándares

Estándar Cobertura
OWASP Top 10 A01 (Broken Access Control), A02 (Cryptographic Failures), A03 (Injection), A05 (Security Misconfiguration), A06 (Vulnerable Components), A08 (Software Integrity), A09 (Security Logging)
OWASP CI/CD Top 10 CI-CD-01 (Insufficient Flow Control), CI-CD-05 (Insufficient PBAC), CI-CD-09 (Improper Artifact Integrity)
CWE CWE-78, CWE-79, CWE-89, CWE-90, CWE-94, CWE-98, CWE-209, CWE-250, CWE-287, CWE-295, CWE-308, CWE-328, CWE-330, CWE-352, CWE-367, CWE-396, CWE-477, CWE-502, CWE-532, CWE-601, CWE-602, CWE-611, CWE-798, CWE-917, CWE-922, CWE-942, CWE-1021, CWE-1357
WCAG 2.1 1.1.1 (Non-text Content), 1.3.1 (Info and Relationships), 1.4.2 (Audio Control), 2.4.3 (Focus Order), 2.4.6 (Headings and Labels), 2.4.7 (Focus Visible)
ISO/IEC 27001:2022 Matriz de cumplimiento Anexo A — 93 controles repartidos en 4 temas (Organizativo, Personas, Físico, Tecnológico). 44 controles cubiertos por análisis estático (~47,3 % de cobertura). Organizativo A.5: 10/37 (27 %), Tecnológico A.8: 34/34 (100 %). 4 gráficos interactivos (doughnut, barras, radar, barras apiladas) con acordeón por tema. Cubre secure coding (A.8.28), criptografía (A.8.24), gestión de vulnerabilidades (A.8.8), autenticación (A.8.5), control de acceso (A.8.3), gestión de privilegios (A.8.18), seguridad de la nube (A.5.23), cadena de suministro (A.5.21), monitorización (A.8.16), endpoints (A.8.1), filtrado web (A.8.23), segmentación de red (A.8.22), sincronización de reloj (A.8.17), copia de seguridad de la información (A.8.13), protección de auditorías (A.8.34), etc.
RGPD Art. 5 (registro de PII, retención de datos)
CVE Análisis de vulnerabilidades vía pip-audit (Python) y npm audit (Node.js)

Internacionalización

Idioma Bandera Consola Informe Glosario
Francés 🇫🇷 --script-lang fr reports.language: "fr" 36 términos
Inglés 🇬🇧 --script-lang en reports.language: "en" 36 términos
Español 🇪🇸 --script-lang es reports.language: "es" 36 términos
Alemán 🇩🇪 --script-lang de reports.language: "de" 36 términos

Cada cadena de la herramienta está localizada:

  • Mensajes de consola (locales/script/{lang}.json)
  • Mensajes de log de depuración (niveles info, detail, trace)
  • Texto, etiquetas y títulos del informe (locales/report/{lang}.json)
  • Nombres de reglas, descripciones de riesgo, soluciones, beneficios
  • Nombres de categorías, etiquetas de severidad, etiquetas de gráficos
  • Términos del glosario, definiciones de acrónimos

Referencia CLI

La CLI está organizada en 4 grupos de argumentos. Las herramientas SCA developer tools están ausentes del binario distribuido.

Scan Options (comunes a todos los objetivos)

Opción Descripción
project_path Ruta del proyecto objetivo (por defecto: .)
--quick, -q Modo rápido — solo reglas de seguridad
--severity LEVELS Filtra reglas por severidad, separadas por comas (ej. CRITICAL,HIGH). Por defecto: todas. Banner ámbar en el informe cuando está activo.
--lang {fr,en,es,de} Idioma del informe y de la consola (por defecto: en)
--list-rules Lista todas las reglas de auditoría por categoría

Output Options

Opción Descripción
--fail-on-high Código de salida 1 si se encuentran vulnerabilidades HIGH (integración CI/CD)
--sarif Genera exportación SARIF 2.1.0 (GitHub Code Scanning, GitLab SAST)
--with-logs Guarda la salida de consola en un archivo log del directorio de salida
--quiet Modo consola silencioso — solo errores y resultado final mostrados

Client Features

Opción Descripción
--init Crea o modifica audit.config.json (interactivo)
--create-rule Crea o edita una regla personalizada (asistente interactivo)
--custom-rules-match Verifica la cobertura de reglas personalizadas frente a fixtures personalizadas
--with-tests Detección automática y ejecución de pruebas unitarias del proyecto
--with-deps Escaneo de vulnerabilidades de dependencias (pip-audit, npm audit)

SCA Developer Tools (solo fuente, ausentes del binario)

Opción Descripción
--debug Modo depuración (logs detallados a stderr)
--rules-match Verifica que cada regla tenga sus fixtures (vulnerable + clean)

Configuración

Toda la configuración vive en audit.config.json en la raíz del proyecto. Generado por --init.

Secciones clave

Sección Propósito
brand Nombre de la herramienta, nombre de la empresa, prefijo, logo personalizado
project UUID, nombre, versión, descripción
languages Lenguajes a auditar: ["python", "javascript", "html"]
paths.include Directorios a escanear
paths.exclude Patrones a omitir
categories Activación/desactivación + peso por categoría
rules.disabled Lista de claves de reglas a omitir
reports Directorio de salida, directorio de historial, historial máximo (10), idioma
tests Activación/desactivación, directorio, comando pytest personalizado
thresholds Máx HIGH (0), máx MEDIUM (10), salud mínima (80 %)
sla SLA por severidad (plazo, escalado)
fixtures Incluir fixtures genéricas (true/false)
retention Limpieza de informes: modo (count/days/both), max_count, max_days

Personalización marca blanca

{
  "brand": {
    "tool_name": "MyCompanyAudit",
    "company_name": "My Company",
    "prefix": "MCA",
    "logo": "assets/my-logo.svg"
  }
}

Personaliza: título del informe, pie de página, nombres de archivos de salida, favicon, logo de la cabecera.

Sistema de proyectos por UUID

Cada proyecto recibe un UUID único en el primer --init:

  • Almacenado en projects/{uuid}/ dentro del directorio de la herramienta
  • Desacopla la ubicación del proyecto del almacenamiento de fixtures
  • Permite reglas y fixtures específicas del proyecto
  • Hace seguimiento del historial de auditoría (contador, fecha de la última auditoría)

Datos para los prompts de vídeo

Datos estructurados para las composiciones de vídeo Remotion (véase docs/plans/PLAN-AUDIT-CONFORMITE.html §15).

Especificaciones de las composiciones

ID Duración Escenas Resolución FPS Narración
AuditDemo ~65s (1950f) 7 1920x1080 30 4 idiomas
AuditReportSampleShowcase ~174s (5040f) 15 1920x1080 30 4 idiomas

Escenas AuditDemo

# Escena Duración Descripción
1 Cartel de título 5s (150f) Nombre de la herramienta, empresa, tagline, logo
2 El problema 10s (300f) Pregunta + 4 puntos de dolor
3 Lanzamiento de terminal 8s (240f) Animación CLI, archivos de salida
4 Escaneo de categorías 12s (360f) 7 categorías apareciendo secuencialmente
5 Vista previa del informe 12s (360f) Puntuación de salud, gráfico de severidad, findings
6 Multiidioma 8s (240f) Ciclo de banderas, mismo finding en 4 idiomas
7 Conclusión 10s (300f) Cifras clave (contadores), CTA

Escenas AuditReportSampleShowcase

# Escena Duración Descripción
0 Presentación 24s (720f) Problema + puntos de dolor → solución + puntos clave → transición
1 Intro 5s (150f) Nombre de la herramienta + título del walkthrough
2 Vista general 12s (360f) Cuadrícula de 15 secciones (3 columnas)
3 Cabecera 10s (300f) Tarjeta de metadatos del proyecto
4 Parámetros y CLI 12s (360f) Idiomas, categorías, checklist de opciones CLI
5 Gráficos 20s (600f) Severidad, categoría, gráficos de tiempos + capturas
6 Puntuación de salud 10s (300f) Barra de puntuación animada + leyenda
7 Top 10 archivos 10s (300f) Heatmap + captura
8 Findings 25s (750f) 4 tarjetas de finding (HIGH, HIGH, MEDIUM, LOW)
9 Pruebas y fixtures 10s (300f) Estadísticas de pruebas + precisión de fixtures
10 Comparación 10s (300f) Nuevos/resueltos/persistentes + sparkline
11 Idiomas 10s (300f) 4 banderas con findings traducidos
12 Autonomía 10s (300f) Checklist de 4 funcionalidades
13 Conclusión 10s (300f) Cifras clave + CTA
14 Agradecimientos 6s (180f) Gracias + contacto

Narración TTS (Piper)

Ambas composiciones incluyen narración de voz sincronizada, generada vía Piper TTS (open-source, 100 % sin conexión).

Cada idioma ofrece una opción de voz masculina y femenina (--voice male|female):

Idioma Voz masculina Voz femenina
Inglés Ryan (high) Lessac (high)
Francés Tom (medium) Siwis (medium)
Español Claude (high) Sharvard (medium)
Alemán Thorsten (high) Eva K (x_low)

Los textos de narración están en videos/src/narration/ (un archivo por composición, 4 idiomas cada uno). Los archivos WAV se generan en videos/public/narration/{Composition}/{lang}/{voice}/{sceneKey}.wav. Los archivos JSON Caption se generan en videos/public/subtitles/{Composition}/{lang}/{sceneKey}.json vía transcripción Whisper.cpp.

Los subtítulos pueden mostrarse en un idioma diferente al de la narración mediante la prop subtitleLang.

Setup: cd videos && npm run setup-piper (solo la primera vez) Generación: cd videos && npm run generate-narration (o npm run generate-narration:female) Subtítulos: cd videos && npm run generate-subtitles

Cifras clave (utilizadas en las escenas de conclusión)

AuditDemo:
  455+ reglas de detección
  7    categorías de auditoría
  4    idiomas
  13+  gráficos interactivos
  0    dependencias externas
  100% sin conexión

AuditReportSampleShowcase (datos MY-IA):
  700  findings detectados
  7    categorías de auditoría
  4    idiomas
  15   secciones del informe
  110s duración de la auditoría