You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fa744b8
Browse filesBrowse the repository at this point in the historyBrowse files
docs: record the demo as built and what is left before going public
- DECISIONS: ADR-039, the local database is a documented install again and
Aiven stays the only shared one; ADR-015 points to it
- TODO: the demo entry now lists only what is left (scheduling base, role
migration on Aiven, production variables); demo-admin, local database
removal and the schema comparison entries go; three findings added
(excludeMantenimiento is a deny list, the old disable_demo_user script,
blank Settings tab)
- SESSION and ROADMAP: phase 5 built and tested on preview; next steps
- VERIFY: one row per commit since the switch to the new repository
- INDEX.md: 20261005_drop_demo_admin_role.sql logged
Why: ADR-038 relies on the local database ADR-015 had dropped, and the
pending list has to match what is done.
Copy file name to clipboardExpand all lines: backend/db-mysql/INDEX.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -108,6 +108,7 @@ db-mysql/
108
108
| 2026-10-05 |`20261005_add_demo_reset_log.sql`| Crea `demo_reset_log`: un registro por cada reinicio diario de la demo y por cada base de horarios guardada (ADR-038). La base vive en tablas `demo_snapshot_scheduling_*` que crea el backend al guardarla. Hay que aplicarla antes de desplegar el código. `CREATE TABLE IF NOT EXISTS`. | ✅ local · ✅ Aiven |
109
109
| 2026-10-05 |`20261005_complete_fresh_install.sql`| Completa una instalación desde cero: el baseline congelado no crea `cashier_history` (nombre de clave duplicado), `scheduling_assignments` (referencia a una tabla creada después) ni `demo_activity_log`, y deja `roles.name` en `varchar(50)`. Definiciones copiadas de Aiven. En Aiven no cambia nada; en local creó `demo_activity_log`, que faltaba. `pnpm setup:local` además corrige esos dos fallos del baseline en memoria. | ✅ local · ✅ Aiven (sin cambios) |
110
110
| 2026-10-05 |`20261005_fix_bo_monthly_summary_view.sql`| Recrea `v_bo_monthly_summary` con `period` en el `GROUP BY`. Con `ONLY_FULL_GROUP_BY` (activo en Aiven y local) toda consulta a la vista fallaba con el error 1055 y `GET /api/backoffice/stats/monthly` respondía siempre 500. Mismas columnas y mismos grupos; comprobada contra un cálculo directo sobre `bo_invoices`. | ✅ local · ✅ Aiven |
111
+
| 2026-10-05 |`20261005_drop_demo_admin_role.sql`| Borra el rol `demo-admin` si ningún usuario lo tiene (ADR-038): la cuenta demo es un admin con `is_demo` y el código ya no conoce ese rol. En local no existía. | ✅ local (sin cambios) · ⏳ Aiven |
Copy file name to clipboardExpand all lines: docs/VERIFY.md
+21Lines changed: 21 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -231,3 +231,24 @@ Vercel y Render se reconectaron de `four-points-archive` a `bpstack/four-points`
231
231
|`d197ad6`| docs(todo): drop the local path of the harness repository | (documentación) | no aplica | — |
232
232
|`5b216a0`| docs(roadmap): close phases 1c and 2 and make publication current | (documentación) | no aplica | — |
233
233
|`0f237d0`| docs(decisions): record the publication order and when to rotate | (documentación) | no aplica | — |
234
+
|`2009f39`| docs(verify): record the switch to the new repository | (documentación) | no aplica | — |
235
+
|`8194031`| docs(session): move the session to the publication phase | (documentación) | no aplica | — |
236
+
|`0bb4c1f`| fix(db): require the Aiven user and port instead of defaulting them | Puerto y usuario de Aiven por defecto en el código | Producción arranca y conecta tras el merge (PR #2) | ✅ 2026-10-05 |
237
+
|`a474007`| chore(db): rewrite the mock data without users and for the current schema | Datos ficticios para Aiven | Cargado en local y en Aiven; horarios intactos | ✅ 2026-10-05 |
238
+
|`a889999`| docs: plan the demo on the showcase site before going public | (documentación) | no aplica | — |
239
+
|`e332b8a`| docs: settle the demo design and the local install | (documentación) | no aplica | — |
240
+
|`5789e83`| feat(auth): restrict the public demo account with an is_demo flag | Demo: marca `is_demo` y bloqueos | Preview, sesión demo real: 18 rutas, lecturas 200 y bloqueadas 403 | ✅ 2026-10-05 |
241
+
|`a306d36`| docs(db): mark the is_demo migration as applied on Aiven | (documentación) | no aplica | — |
242
+
|`8553963`| fix(auth): answer 403 to blocked demo requests without a JSON body | — | Local: DELETE y subidas bloqueadas dan 403, no 500/401 | ✅ 2026-10-05 |
243
+
|`7507d58`| feat(auth): enter the public demo with one button, without a password | Demo: entrada con botón | Preview: botón visible, entra como Demo · Admin; login con contraseña de `demo` da 401 | ✅ 2026-10-05 |
244
+
|`d8c23af`| feat(auth): rate limit the demo account's writes and schedule generation | Demo: límites |`demo-limits.test.ts` (5/h por IP, 30/h en total, 60 escrituras/15 min) | 🧪 |
245
+
|`db8b356`| feat(demo): reset the demo data daily and from Settings | Demo: reinicio diario | Preview: primer reinicio del día registrado en Aiven (734 ms); local: base de horarios restaurada, fallo deshecho; pestaña Demo solo para admins | ✅ 2026-10-05 |
246
+
|`a2395a7`| docs(db): mark the demo reset log migration as applied on Aiven | (documentación) | no aplica | — |
247
+
|`7e7ed39`| test(auth): mock the demo reset in the login timing test | — | CI en verde | ✅ 2026-10-05 |
248
+
|`ee9cbc0`| fix(db): load the mock data on a database with a single admin | — |`setup:local` en un MySQL limpio carga el mock | ✅ 2026-10-05 |
249
+
|`a8882c4`| feat(db): install a local database from scratch with pnpm setup:local| Demo: instalación local | MySQL 8.0 limpio en Docker: estructura igual que Aiven (1161 de 1161) y mismos catálogos; la app entra con el admin | ✅ 2026-10-05 |
250
+
|`9336716`| feat(db): give the local install a documented admin password | — |`setup-local.test.ts`| 🧪 |
251
+
|`e3a642c`| fix(db): group the backoffice monthly summary view by its period | — (hallazgo del 2026-10-05) |`GET /api/backoffice/stats/monthly` en preview da 200; la vista coincide con un cálculo directo | ✅ 2026-10-05 |
252
+
|`9991d79`| test(security): check the CSRF defence and the session cookies by behaviour | Demo: CSRF |`csrf-origin.test.ts` (servidor Express real), `session-cookies.test.ts`; preview: origen ajeno da 403 | ✅ 2026-10-05 |
253
+
|`4449b7a`| fix(checklist): render unsafe links in step notes as plain text | Demo: XSS |`safe-href.test.ts` (11 URL maliciosas) | 🧪 |
254
+
|`143882d`| refactor(auth): retire the demo-admin role | Retirar `demo-admin`| ⏳ preview tras el push; la migración del rol, pendiente en Aiven | ⏳ |
0 commit comments