feat: footer, auto-pause on no viewers, and Redsys question submissions
- Footer: add site-footer with one-liner + Cloud Host branding linking to cloudhost.es (mobile only, hidden on desktop) - Auto-pause: game pauses automatically after AUTOPAUSE_DELAY_MS (default 60s) with no viewers connected; auto-resumes when first viewer connects; shows "Esperando espectadores…" in the UI - Redsys: new /pregunta page lets viewers pay 1€ via Redsys to submit a fill-in question; submitted questions are used as prompts in the next round instead of AI generation; new redsys.ts implements HMAC_SHA256_V1 signing (3DES key derivation + HMAC-SHA256); notification endpoint at /api/redsys/notificacion handles server-to-server confirmation - db.ts: questions table with createPendingQuestion / markQuestionPaid / getNextPendingQuestion / markQuestionUsed - .env.sample: added AUTOPAUSE_DELAY_MS, PUBLIC_URL, REDSYS_* vars Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
14
README.md
14
README.md
@@ -43,6 +43,12 @@ La base de datos SQLite se persiste en un volumen Docker (`argumentes_data`).
|
||||
| `ADMIN_SECRET` | ✅ | — | Contraseña del panel de administración |
|
||||
| `PORT` | | `5109` | Puerto del servidor |
|
||||
| `DATABASE_PATH` | | `argumentes.sqlite` | Ruta al archivo SQLite |
|
||||
| `AUTOPAUSE_DELAY_MS` | | `60000` | ms sin espectadores antes de autopausar |
|
||||
| `PUBLIC_URL` | | — | URL pública (necesaria para Redsys) |
|
||||
| `REDSYS_MERCHANT_CODE` | | — | Código de comercio Redsys |
|
||||
| `REDSYS_TERMINAL` | | `1` | Terminal Redsys |
|
||||
| `REDSYS_SECRET_KEY` | | — | Clave secreta Redsys (Base64) |
|
||||
| `REDSYS_TEST` | | `true` | `false` para usar el entorno de producción |
|
||||
|
||||
Ver `.env.sample` para todas las opciones.
|
||||
|
||||
@@ -55,6 +61,14 @@ Disponible en `/admin`. Funcionalidades:
|
||||
- **Borrar** todos los datos (requiere confirmación)
|
||||
- **Estado** del servidor en tiempo real
|
||||
|
||||
## Autopausado
|
||||
|
||||
El juego se pausa automáticamente si no hay espectadores conectados durante más de `AUTOPAUSE_DELAY_MS` ms (por defecto 60 segundos). En cuanto se conecta un espectador, el juego se reanuda solo. El panel de administración muestra "Esperando espectadores…" en este estado.
|
||||
|
||||
## Preguntas del público (`/pregunta`)
|
||||
|
||||
Los espectadores pueden pagar 1€ a través de Redsys para proponer una pregunta de completar-la-frase. La pregunta se usa en el siguiente sorteo en lugar de generarla con IA. Requiere configurar las variables `REDSYS_*` en `.env`.
|
||||
|
||||
## Cómo funcionan las preguntas
|
||||
|
||||
El array `ALL_PROMPTS` en `prompts.ts` sirve únicamente como **guía de estilo**. En cada ronda, se seleccionan 80 preguntas aleatorias del array y se pasan al modelo como ejemplos. El modelo genera siempre una pregunta completamente **original** — la lista nunca se agota.
|
||||
|
||||
Reference in New Issue
Block a user