refactor(bootstrap): migrate basic puzzles to seed files

Replaces GlobalsImporter's ImportPuzzleGroups/Puzzles/Missions methods (plus the
DeriveTargetPuzzleGroupId regex helper) with a dedicated PuzzleImporter that
reads three flat seed JSONs (puzzle-groups, puzzles, puzzle-missions) produced
by the Python extractor. Groups run before puzzles to satisfy the FK; missions
upsert by sequential id. Wired into Program.cs and SVSimTestFactory after
PaymentItemImporter so existing GlobalsImporterPuzzleTests continue to pass
unchanged via SeedGlobalsAsync. The original prod-capture JSONs are deleted now
that the seeds are authoritative.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-05-26 14:16:32 -04:00
parent f66d20e039
commit 0da8ebe1c1
13 changed files with 1789 additions and 150 deletions

View File

@@ -0,0 +1,13 @@
using System.Text.Json.Serialization;
namespace SVSim.Bootstrap.Models.Seed;
public sealed class PuzzleSeed
{
[JsonPropertyName("id")] public int Id { get; set; }
[JsonPropertyName("group_id")] public int GroupId { get; set; }
[JsonPropertyName("puzzle_difficulty")] public int PuzzleDifficulty { get; set; }
[JsonPropertyName("is_additional")] public bool IsAdditional { get; set; }
[JsonPropertyName("is_playable")] public bool IsPlayable { get; set; }
[JsonPropertyName("release_condition_text_id")] public string ReleaseConditionTextId { get; set; } = "";
}