Skip to content

Etapa 3: log de auditoria, deshacer y rollback de mapas #12

Description

@leocagli

Parte de #2 (modo construcción). Depende de la capa de persistencia.

Por qué

Editar el mundo en vivo es destructivo y va a haber accidentes. Sin poder deshacer, un error de una persona con permisos borra trabajo de horas y no hay forma de saber quién lo hizo.

Lo que ya existe

La tabla game_data_revisions (kind, entity_id, action, checksum) ya registra cambios de game data. Sirve como base, pero para deshacer hace falta guardar el estado anterior, no sólo un checksum.

Alcance

  1. Log de auditoría consultable: quién cambió qué mapa, cuándo y qué cambió exactamente.
  2. Deshacer la última operación sobre un mapa.
  3. Rehacer.
  4. Volver un mapa a una revisión anterior (rollback).
  5. Diff entre dos revisiones de un mapa.

Decisión de diseño a resolver

Guardar el estado completo del mapa por revisión es simple pero pesado: 10.000 tiles por mapa, y una sesión de edición genera muchas revisiones.

Guardar sólo el delta de cada operación es mucho más liviano y hace el undo natural, pero reconstruir un estado arbitrario obliga a reproducir la cadena.

Sugerencia: deltas, con un snapshot completo cada N revisiones para acotar el costo de reconstrucción.

Criterios de aceptación

  • Toda mutación de mapa queda en el log con autor, fecha y contenido del cambio
  • Deshacer revierte exactamente la última operación
  • Rehacer restaura lo deshecho
  • Se puede volver a una revisión anterior arbitraria
  • El diff entre dos revisiones es legible
  • Deshacer una operación ya publicada exige republicar (no cambia el mundo en silencio)
  • Tests de integración

Archivos relevantes

  • api/src/repositories/ (todos los repos que ya escriben en game_data_revisions)
  • api/schema.sql

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignbountyIssue con recompensa asignadaenhancementNew feature or requestetapa-3-vivoEtapa 3 - publicar mapas en vivograntfoxPublicada en la campana de GrantFoxmodo-construccionModo construccion in-game: editor de mapas en el navegadorreward-100-usdRecompensa 100 USD - complejidad alta o fundacional

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions