[BE] Survey report persistence + rejoin list #943

Closed
opened 2026-08-06 16:11:59 +00:00 by spikerj · 2 comments
Owner

Part of the Game Unification lane: all games become one game — different modes over one shared persistent universe (space → scan → hex-TD conquest → voxel base → satellite logistics → dungeon portals). Clients = Angular web + Godot (iOS/Android embed Godot). Full plan: ~/.claude/plans/i-want-a-plan-breezy-eclipse.md on the 4090.

Part of EPIC #927.

GameEventPublisher.PublishSurveyReportAsync → routing key survey.recorded; consumer binding survey.# + UpsertSurveyReportAsync into game_survey_reports (unique (CharacterId, BodyId), keep best quality); RedisSurveyReportCacheWriter (consumer) + RedisSurveyReportCache (gameserver reader, survey:{characterId}:{bodyId}); zone-join sends SurveyReportListEvent after celestial lists; Initializer syncs the survey: prefix. Per-player + shareable model: include UserId + provenance field now; share command is a later ticket (P4).

Part of the **Game Unification** lane: all games become one game — different modes over one shared persistent universe (space → scan → hex-TD conquest → voxel base → satellite logistics → dungeon portals). Clients = Angular web + Godot (iOS/Android embed Godot). Full plan: `~/.claude/plans/i-want-a-plan-breezy-eclipse.md` on the 4090. Part of EPIC #927. `GameEventPublisher.PublishSurveyReportAsync` → routing key `survey.recorded`; consumer binding `survey.#` + `UpsertSurveyReportAsync` into `game_survey_reports` (unique (CharacterId, BodyId), keep best quality); `RedisSurveyReportCacheWriter` (consumer) + `RedisSurveyReportCache` (gameserver reader, `survey:{characterId}:{bodyId}`); zone-join sends `SurveyReportListEvent` after celestial lists; Initializer syncs the `survey:` prefix. Per-player + shareable model: include UserId + provenance field now; share command is a later ticket (P4).
spikerj added the enhancementagentic labels 2026-08-06 16:11:59 +00:00
Author
Owner

Implementation up: spikersoft-backend PR #523 (stacked on #522). survey.recorded → game_survey_reports best-quality upsert + Redis cache + zone-join replay + Initializer sync. Compose-verified: quality-0 re-scan did not downgrade a stored quality-2 report. Will close after merge.

Implementation up: spikersoft-backend PR #523 (stacked on #522). survey.recorded → game_survey_reports best-quality upsert + Redis cache + zone-join replay + Initializer sync. Compose-verified: quality-0 re-scan did not downgrade a stored quality-2 report. Will close after merge.
Author
Owner

Resolved in spikersoft-backend PR #523 (merged to master). survey.recorded → game_survey_reports best-quality upsert + Redis cache + zone-join replay + Initializer sync. Closing.

Resolved in spikersoft-backend PR #523 (merged to master). survey.recorded → game_survey_reports best-quality upsert + Redis cache + zone-join replay + Initializer sync. Closing.
Sign in to join this conversation.