You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/docs/implementacion-2026-09-11.md

13 KiB

Implementación de la revisión de Senza Paura

Fecha: 11 de septiembre de 2026. Rama: codex/redisenio-dominio-musical.

Este documento registra los cambios realizados a partir del informe de auditoría. El informe original se conserva para poder contrastar los hallazgos con la implementación.

Resultado

Se han corregido los problemas de autorización, conservación de compras y créditos, entrega MP3, publicación de versiones, caché entre procesos, apertura de pagos, mantenimiento, límites de subida, modal y textos. El despliegue prepara ahora las dos aplicaciones y conserva una release anterior recuperable.

El panel añade créditos completos, portadas y fotografías con previsualización y recorte central, audio propio por versión, revisión del catálogo, conciliación de pagos y concesiones manuales de suscripción. Las listas se pueden renombrar, reordenar y eliminar con confirmación.

La implementación está en el repositorio. No se ha desplegado en el servidor ni se han aplicado las nuevas migraciones a la base compartida. Las pruebas de PostgreSQL utilizan tablas y funciones temporales de sesión, con Stripe simulado. No se han realizado cobros, reembolsos ni envíos de correo.

Correcciones por hallazgo

Hallazgo Cambio implementado Límite o puesta en marcha
H01 Autorización El hook exige administrador antes de resolver rutas protegidas; las acciones repiten la guarda. Pruebas unitarias de roles y peticiones HTTP anónimas, tanto HTML como JSON.
H02 Escucha interceptada El ejemplo Nginx envía /escucha a Node, que autoriza y sirve Range. Sustituir la configuración efectiva al desplegar.
H03 Despliegue incompleto Builds de sitio y panel, releases separadas, rutas persistentes, entorno comprobado, migración en destino y restauración del enlace anterior ante fallo. Requiere instalar las dos unidades y ensayar la recuperación en el servidor.
H04 Créditos ausentes El auditor denuncia publicaciones sin intérprete; el panel permite asignar créditos y muestra las incidencias. No se han inventado intérpretes: faltan los nombres reales de las 11 canciones existentes.
H05 Pérdida de créditos El guardado conserva instrumento y acreditación de los intérpretes principales que permanecen seleccionados. Quitar explícitamente un intérprete elimina ese crédito.
H06 Biblioteca incompleta La biblioteca consulta compras, títulos históricos y representaciones, independientemente de la visibilidad del catálogo. Incluye versiones publicadas o retiradas; las versiones en borrador no se entregan.
H07 Entrega incorrecta Cada nuevo ingreso genera una descarga MP3 separada. Un MP3 real se conserva; otros códecs se convierten a MP3 a 320 kbps. El catálogo existente ya tenía másteres MP3; se aceptan como entrega mientras no haya una representación explícita.
H08 Publicación desigual Se validan las versiones en transacción. Nuevas guardas diferidas de PostgreSQL exigen intérprete principal, escucha, letra cuando corresponde y MP3 comercial. Aplicar 0025_guardas_publicacion.sql. Las importaciones deben completar las relaciones en la misma transacción.
H09 Caché desincronizada La memoria se comparte dentro de una petición, sin caché global de 60 segundos. Los datos ya mostrados en una pestaña cambian al refrescar o navegar; no se ha añadido actualización en directo.
H10 Pagos duplicados Intención persistida antes de Stripe, clave idempotente estable, sesión reutilizable, datos de precio congelados y creación idempotente de pedido. Aplicar 0024_intenciones_pago.sql. Una intención incierta caducada exige conciliación; no se sustituye silenciosamente.
H11 Webhooks bloqueados El webhook atraviesa el modo de espera y mantiene la verificación de firma. No abre otras rutas API.
H12 Límite multipart Archivo máximo de 256 MiB y cuerpo del panel de 260 MiB; configuración Nginx y documentación alineadas. Procesado síncrono limitado a uno por proceso; el proxy administrativo permite 900 segundos.
H13 Modal horizontal Al ocultar la ilustración, el marco pasa a una sola columna. Verificado a 812 × 375.
H14 Tamaño del pack La biblioteca usa CANCIONES_POR_PACK. La tienda mantiene packs de diez canciones.
H15 Señal de calidad Vitest conserva módulos virtuales de Kit sin arrancar su servidor SSR; formato corregido y nuevas regresiones. Las pruebas PostgreSQL se ejecutan explícitamente con TEST_DATABASE_URL; no dependen del catálogo de producción.
H16 Documentación README corregido a PostgreSQL, panel independiente, rutas legales y procedimiento nuevo. La configuración fiscal y los textos comerciales siguen siendo decisiones del proyecto.

Se corrigió además una comprobación de favoritos que no esperaba la promesa de obtenerCancion, y se reforzó la compensación de archivos: una respuesta incierta de COMMIT no provoca la eliminación de medios que pueden haber quedado registrados.

Refactorizaciones

  • R01: las rutas editoriales y de cuenta dejan de recibir el catálogo completo. La biblioteca comprada tiene su propio modelo. El pago obtiene las compras en lote y reutiliza la consulta de catálogo de la petición. En las pantallas musicales se conserva el contrato compartido para tarjetas, discos y reproductor; no se ha sustituido todo el catálogo por un sistema de consultas paginadas.
  • R02: se separan validadores de canciones, registro y compensación de audio, detalle del título de una fila, biblioteca comprada y editor de listas. Los componentes grandes de capítulos y géneros mantienen su estructura; no se han dividido por tamaño sin una responsabilidad clara que extraer.
  • R03: publicación protegida también en PostgreSQL, validación compartida de canciones y créditos, servicio de Checkout e ingreso común de las representaciones.
  • R04: manifiestos de procesado con estados, límite de concurrencia por proceso, publicación sin sobrescritura y herramienta de reconciliación. Conserva archivos registrados incluso si se pierde la respuesta de la transacción. No es todavía una cola distribuida con trabajadores independientes; esa ampliación corresponde a un uso frecuente o a regeneraciones masivas, como indicaba la auditoría.

Funciones añadidas

Propuesta Disponible
A01 Alta musical Artistas seleccionables en el alta; créditos con papel, instrumento, acreditación y orden; audio de versiones; imágenes de canción, álbum o artista con previsualización y recorte central. La imagen se asigna desde su pantalla del panel.
A02 Compras y pedidos Biblioteca con formato, tamaño y disponibilidad; pedidos pendientes, pagados y cancelados en la cuenta; conciliación en el panel y consulta del importe reembolsado en Stripe. Los reembolsos se tramitan en Stripe; no se ha automatizado la retirada de derechos ni una descarga ZIP.
A03 Listas Renombrado, borrado confirmado y orden mediante botones accesibles. La propiedad se comprueba en servidor.
A04 Suscripción Concesión manual por cuenta y días, vencimiento, revocación y consulta del último periodo. La cuenta explica cómo solicitar o gestionar el acceso. No hay contratación ni renovación con cobro recurrente.
A05 Descubrimiento Llamada de primera escucha antes del tocadiscos en móvil y enlace a intérpretes desde Música.
A06 Operación Estado del catálogo con créditos, archivos de escucha y descarga, ondas, portadas y trabajos de procesado pendientes. Detecta existencia física; no certifica la calidad artística ni decodifica todo el almacén en cada visita.

Validación

  • Tipos: sitio y panel sin errores ni advertencias de Svelte.
  • Formato y ESLint: comprobados sobre el repositorio.
  • Pruebas unitarias y de componentes: 402 aprobadas.
  • PostgreSQL: 11 pruebas aprobadas en tablas y funciones TEMP. Incluyen reintento de pago incierto, conservación de compras retiradas, créditos, publicación, propiedad de listas, suscripción manual e imágenes reales procesadas con ffmpeg.
  • Builds de producción: sitio y panel terminan con salida 0.
  • Navegador: 61 pruebas aprobadas. Navegación y responsive existentes, nueva portada móvil, modal horizontal, carga del taller y protección HTTP del panel. Se excluye la prueba que solicita un código por correo.
  • Shell: los scripts de despliegue pasan la comprobación de sintaxis de Bash.

Las comprobaciones de navegador necesitaron acceso a la base desde el proceso local de preview. Los primeros intentos con acceso de red restringido devolvían 500 por falta de conexión; no se usaron como evidencia de corrección funcional. El proveedor de pagos y el servidor Linux de producción no se han ensayado en vivo.

Puesta en marcha y datos pendientes

  1. Confirmar el intérprete de Dorina y los de Cupido sin flechas. Con esos datos, asignar los créditos reales desde el panel. El auditor debe dejar de indicar publicaciones sin intérprete.
  2. Aplicar las migraciones 0024 y 0025 junto al despliegue. Son aditivas: no rellenan datos ni eliminan tablas. La 0025 añade guardas que rechazan nuevas escrituras incompatibles con una publicación completa.
  3. Preparar .env y .env.panel, la misma base y rutas absolutas compartidas de medios. Seguir el procedimiento de despliegue.
  4. Comprobar con las cuentas reales de prueba la pasarela, la firma del webhook, las unidades de servicio, TLS y la recuperación. Las pruebas del repositorio no sustituyen este ensayo operativo.

Capturas verificadas

Primera escucha en móvil, 375 × 667:

Portada móvil con la primera escucha visible

Modal horizontal, 812 × 375:

Modal de acceso en una sola columna

Powered by TurnKey Linux.