forked from dcatanzaro/aoweb
-
Notifications
You must be signed in to change notification settings - Fork 41
Etapa 3: log de auditoria, deshacer y rollback de mapas #12
Copy link
Copy link
Labels
GrantFox OSSIssue tracked in GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignCampaign: Third CampaignbountyIssue con recompensa asignadaIssue con recompensa asignadaenhancementNew feature or requestNew feature or requestetapa-3-vivoEtapa 3 - publicar mapas en vivoEtapa 3 - publicar mapas en vivograntfoxPublicada en la campana de GrantFoxPublicada en la campana de GrantFoxmodo-construccionModo construccion in-game: editor de mapas en el navegadorModo construccion in-game: editor de mapas en el navegadorreward-100-usdRecompensa 100 USD - complejidad alta o fundacionalRecompensa 100 USD - complejidad alta o fundacional
Description
Activity
Metadata
Metadata
Assignees
Labels
GrantFox OSSIssue tracked in GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignCampaign: Third CampaignbountyIssue con recompensa asignadaIssue con recompensa asignadaenhancementNew feature or requestNew feature or requestetapa-3-vivoEtapa 3 - publicar mapas en vivoEtapa 3 - publicar mapas en vivograntfoxPublicada en la campana de GrantFoxPublicada en la campana de GrantFoxmodo-construccionModo construccion in-game: editor de mapas en el navegadorModo construccion in-game: editor de mapas en el navegadorreward-100-usdRecompensa 100 USD - complejidad alta o fundacionalRecompensa 100 USD - complejidad alta o fundacional
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
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
Archivos relevantes
api/src/repositories/(todos los repos que ya escriben engame_data_revisions)api/schema.sql