From 50e4989b77576fdf241d991decebb3ca8e735763 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Sun, 31 May 2026 01:22:08 -0400 Subject: [PATCH] docs(importers): update data_dumps path references for reorg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirror of the outer-repo data_dumps/ reorganization (commit e1e595d in the SVSim outer repo): updates all data_dumps/extract/ → data_dumps/scripts/, data_dumps/client_master_csv → data_dumps/client-assets, data_dumps/traffic → data_dumps/captures/traffic in XML doc-comments and inline comments across importers, controllers, middlewares, DTOs, and tests. Doc-only; no logic changes; build green. Co-Authored-By: Claude Opus 4.7 --- SVSim.Bootstrap/Importers/AchievementCatalogImporter.cs | 2 +- SVSim.Bootstrap/Importers/BattlePassMonthlyMissionImporter.cs | 2 +- SVSim.Bootstrap/Importers/ImporterBase.cs | 2 +- SVSim.Bootstrap/Importers/ItemImporter.cs | 2 +- SVSim.Bootstrap/Importers/ItemPurchaseImporter.cs | 2 +- SVSim.Bootstrap/Importers/LeaderSkinShopImporter.cs | 2 +- SVSim.Bootstrap/Importers/MissionCatalogImporter.cs | 2 +- SVSim.Bootstrap/Importers/SeedLoader.cs | 2 +- SVSim.Bootstrap/Importers/SleeveShopImporter.cs | 2 +- SVSim.Bootstrap/Importers/SpotCardExchangeImporter.cs | 2 +- SVSim.Bootstrap/Program.cs | 4 ++-- SVSim.Database/Models/Config/ResourceConfig.cs | 2 +- SVSim.Database/Models/ItemEntry.cs | 2 +- SVSim.Database/Models/StoryDeckEntry.cs | 2 +- SVSim.Database/Repositories/Pack/PackRepository.cs | 2 +- SVSim.EmulatedEntrypoint/Controllers/DeckBuilderController.cs | 2 +- .../Middlewares/ShadowverseTranslationMiddleware.cs | 2 +- .../Models/Dtos/GachaPointRewardDetailEntry.cs | 2 +- .../Dtos/Requests/DeckBuilder/GenerateDeckCodeRequest.cs | 2 +- .../Models/Dtos/Requests/MyPageRefreshRequest.cs | 2 +- SVSim.EmulatedEntrypoint/Services/DeckCodeService.cs | 2 +- SVSim.UnitTests/Controllers/PackControllerGachaPointTests.cs | 2 +- SVSim.UnitTests/Story/StoryServiceTests.cs | 2 +- 23 files changed, 24 insertions(+), 24 deletions(-) diff --git a/SVSim.Bootstrap/Importers/AchievementCatalogImporter.cs b/SVSim.Bootstrap/Importers/AchievementCatalogImporter.cs index 1558a85..da327a4 100644 --- a/SVSim.Bootstrap/Importers/AchievementCatalogImporter.cs +++ b/SVSim.Bootstrap/Importers/AchievementCatalogImporter.cs @@ -53,7 +53,7 @@ public class AchievementCatalogImporter { Console.WriteLine($"[AchievementCatalogImporter] WARN: {unmappedTypes.Count} types " + $"with no event_type: [{string.Join(", ", unmappedTypes.OrderBy(x => x))}] — " + - "add to ACHIEVEMENT_EVENT_MAP in data_dumps/extract/extract-achievements.py"); + "add to ACHIEVEMENT_EVENT_MAP in data_dumps/scripts/extract-achievements.py"); } return created + updated; } diff --git a/SVSim.Bootstrap/Importers/BattlePassMonthlyMissionImporter.cs b/SVSim.Bootstrap/Importers/BattlePassMonthlyMissionImporter.cs index 9f2bb9d..8986c15 100644 --- a/SVSim.Bootstrap/Importers/BattlePassMonthlyMissionImporter.cs +++ b/SVSim.Bootstrap/Importers/BattlePassMonthlyMissionImporter.cs @@ -54,7 +54,7 @@ public class BattlePassMonthlyMissionImporter { Console.WriteLine($"[BattlePassMonthlyMissionImporter] WARN: {unmapped.Count} rows " + $"with no event_type: [{string.Join(", ", unmapped)}] — add name to " + - "BP_MONTHLY_EVENT_MAP in data_dumps/extract/extract-bp-monthly-missions.py"); + "BP_MONTHLY_EVENT_MAP in data_dumps/scripts/extract-bp-monthly-missions.py"); } return created + updated; } diff --git a/SVSim.Bootstrap/Importers/ImporterBase.cs b/SVSim.Bootstrap/Importers/ImporterBase.cs index 46bbbdf..08548b0 100644 --- a/SVSim.Bootstrap/Importers/ImporterBase.cs +++ b/SVSim.Bootstrap/Importers/ImporterBase.cs @@ -2,7 +2,7 @@ namespace SVSim.Bootstrap.Importers; /// /// Tiny shared helper for content importers. Capture parsing has moved out of the bootstrap -/// project entirely (extractors under data_dumps/extract/ emit per-table seed JSON); +/// project entirely (extractors under data_dumps/scripts/ emit per-table seed JSON); /// only the wire-date normaliser stays here because several seed-driven importers still need /// to canonicalise prod-shaped timestamp strings. /// diff --git a/SVSim.Bootstrap/Importers/ItemImporter.cs b/SVSim.Bootstrap/Importers/ItemImporter.cs index 93da5fb..a353646 100644 --- a/SVSim.Bootstrap/Importers/ItemImporter.cs +++ b/SVSim.Bootstrap/Importers/ItemImporter.cs @@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers; /// /// Idempotent upsert of the item catalog from seeds/items.json. Source is the client's /// item_master.csv + itemtext.json (extracted via -/// data_dumps/extract/extract-items.py). Rows missing from the seed are LEFT INTACT. +/// data_dumps/scripts/extract-items.py). Rows missing from the seed are LEFT INTACT. /// public class ItemImporter { diff --git a/SVSim.Bootstrap/Importers/ItemPurchaseImporter.cs b/SVSim.Bootstrap/Importers/ItemPurchaseImporter.cs index d4b2ee3..574d71a 100644 --- a/SVSim.Bootstrap/Importers/ItemPurchaseImporter.cs +++ b/SVSim.Bootstrap/Importers/ItemPurchaseImporter.cs @@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers; /// /// Idempotent upsert of the item-purchase catalog from seeds/item-purchase.json. /// Source is the wire /item_purchase/info response, extracted via -/// data_dumps/extract/extract-item-purchase.py. Rows missing from the seed are LEFT INTACT. +/// data_dumps/scripts/extract-item-purchase.py. Rows missing from the seed are LEFT INTACT. /// public class ItemPurchaseImporter { diff --git a/SVSim.Bootstrap/Importers/LeaderSkinShopImporter.cs b/SVSim.Bootstrap/Importers/LeaderSkinShopImporter.cs index 5d0a880..9ccc5a2 100644 --- a/SVSim.Bootstrap/Importers/LeaderSkinShopImporter.cs +++ b/SVSim.Bootstrap/Importers/LeaderSkinShopImporter.cs @@ -9,7 +9,7 @@ namespace SVSim.Bootstrap.Importers; /// Idempotent upsert of the leader-skin-shop catalog from seeds/leader-skin-shop.json. /// Mirror of . Source is the wire /// /leader_skin/products response, extracted via -/// data_dumps/extract/extract-leader-skin-shop.py. Rows missing from the seed are LEFT INTACT. +/// data_dumps/scripts/extract-leader-skin-shop.py. Rows missing from the seed are LEFT INTACT. /// public class LeaderSkinShopImporter { diff --git a/SVSim.Bootstrap/Importers/MissionCatalogImporter.cs b/SVSim.Bootstrap/Importers/MissionCatalogImporter.cs index ed7944b..036eb20 100644 --- a/SVSim.Bootstrap/Importers/MissionCatalogImporter.cs +++ b/SVSim.Bootstrap/Importers/MissionCatalogImporter.cs @@ -50,7 +50,7 @@ public class MissionCatalogImporter { Console.WriteLine($"[MissionCatalogImporter] WARN: {unmapped.Count} mission_ids with " + $"no event_type: [{string.Join(", ", unmapped)}] — add to MISSION_EVENT_MAP " + - "in data_dumps/extract/extract-missions.py and re-run the extractor"); + "in data_dumps/scripts/extract-missions.py and re-run the extractor"); } return created + updated; } diff --git a/SVSim.Bootstrap/Importers/SeedLoader.cs b/SVSim.Bootstrap/Importers/SeedLoader.cs index ec343ed..6648193 100644 --- a/SVSim.Bootstrap/Importers/SeedLoader.cs +++ b/SVSim.Bootstrap/Importers/SeedLoader.cs @@ -5,7 +5,7 @@ namespace SVSim.Bootstrap.Importers; /// /// Reads a JSON seed file under SVSim.Bootstrap/Data/seeds/. Replaces ImporterBase.LoadCapture. -/// Files are produced by extractors in data_dumps/extract/; the bootstrap project does not +/// Files are produced by extractors in data_dumps/scripts/; the bootstrap project does not /// transform wire formats. Missing files are non-fatal (returns empty/null) — caller decides. /// public static class SeedLoader diff --git a/SVSim.Bootstrap/Importers/SleeveShopImporter.cs b/SVSim.Bootstrap/Importers/SleeveShopImporter.cs index f2b9428..ee71026 100644 --- a/SVSim.Bootstrap/Importers/SleeveShopImporter.cs +++ b/SVSim.Bootstrap/Importers/SleeveShopImporter.cs @@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers; /// /// Idempotent upsert of the sleeve-shop catalog from seeds/sleeve-shop.json. /// Source is the wire /sleeve/info response, extracted via -/// data_dumps/extract/extract-sleeve-shop.py. Mirror of the BuildDeck importer pattern. +/// data_dumps/scripts/extract-sleeve-shop.py. Mirror of the BuildDeck importer pattern. /// Rows missing from the seed are LEFT INTACT (so manual test fixtures survive re-runs). /// public class SleeveShopImporter diff --git a/SVSim.Bootstrap/Importers/SpotCardExchangeImporter.cs b/SVSim.Bootstrap/Importers/SpotCardExchangeImporter.cs index 182fcf0..6b79082 100644 --- a/SVSim.Bootstrap/Importers/SpotCardExchangeImporter.cs +++ b/SVSim.Bootstrap/Importers/SpotCardExchangeImporter.cs @@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers; /// /// Idempotent upsert of the spot card exchange catalog from seeds/spot-card-exchange.json. /// Source is the wire /spot_card_exchange/top response, extracted via -/// data_dumps/extract/extract-spot-card-exchange.py. Rows missing from the seed are +/// data_dumps/scripts/extract-spot-card-exchange.py. Rows missing from the seed are /// LEFT INTACT. /// public class SpotCardExchangeImporter diff --git a/SVSim.Bootstrap/Program.cs b/SVSim.Bootstrap/Program.cs index ab2ecde..e009b25 100644 --- a/SVSim.Bootstrap/Program.cs +++ b/SVSim.Bootstrap/Program.cs @@ -76,7 +76,7 @@ public static class Program if (!opts.SkipGlobals) { // Per-domain seed pipeline. Each importer reads a per-table JSON seed file under - // SVSim.Bootstrap/Data/seeds/ produced by an extractor in data_dumps/extract/. + // SVSim.Bootstrap/Data/seeds/ produced by an extractor in data_dumps/scripts/. // // RotationConfigImporter writes the Rotation GameConfig section that RotationFlagUpdater // reads; CardImporter ran earlier in the !SkipCards block so CardSets are populated. @@ -229,7 +229,7 @@ public static class Program " --story-data-dir Override story data directory (default: shipped Data/story)\n" + " --skip-story Skip story import (worlds/sections/chapters/sbs)\n" + "\n" + - "Capture-derived seeds are produced by extractors under data_dumps/extract/* and\n" + + "Capture-derived seeds are produced by extractors under data_dumps/scripts/* and\n" + "checked into SVSim.Bootstrap/Data/seeds/. The bootstrap project never parses wire\n" + "captures directly — refresh seeds by re-running the relevant extractor.\n" + "\n" + diff --git a/SVSim.Database/Models/Config/ResourceConfig.cs b/SVSim.Database/Models/Config/ResourceConfig.cs index 6a5373e..3fb2366 100644 --- a/SVSim.Database/Models/Config/ResourceConfig.cs +++ b/SVSim.Database/Models/Config/ResourceConfig.cs @@ -13,7 +13,7 @@ public class ResourceConfig /// PlayerPrefs["RES_VER"] and uses it as the version path component for asset /// manifest lookups: https://<cdn>/dl/Manifest/<RES_VER>/<lang>/<Platform>/. /// - /// Default value is the prod-captured version from data_dumps/traffic_prod_tutorial.ndjson + /// Default value is the prod-captured version from data_dumps/captures/traffic_prod_tutorial.ndjson /// (2026-05-28) — i.e., a path Akamai actually serves. When this rotates (or Akamai sunsets /// ahead of June 2026), update via DB GameConfigs row, appsettings.json, or this /// shipped default; no code change needed. diff --git a/SVSim.Database/Models/ItemEntry.cs b/SVSim.Database/Models/ItemEntry.cs index 9d8b6a9..5b03a27 100644 --- a/SVSim.Database/Models/ItemEntry.cs +++ b/SVSim.Database/Models/ItemEntry.cs @@ -4,7 +4,7 @@ namespace SVSim.Database.Models; /// /// Item master row. Mirrors the client's item_master.csv + itemtext.json -/// (under data_dumps/client_master_csv/): matches the client-side +/// (under data_dumps/client-assets/): matches the client-side /// item_type enum (1 = challenge ticket, 2 = card-pack ticket, 3 = premium orb, /// 4 = colosseum ticket, 5 = orb piece, 6 = skin/event ticket, 7 = other); /// is the client-resolved sprite key. diff --git a/SVSim.Database/Models/StoryDeckEntry.cs b/SVSim.Database/Models/StoryDeckEntry.cs index c37b1dd..52d46a9 100644 --- a/SVSim.Database/Models/StoryDeckEntry.cs +++ b/SVSim.Database/Models/StoryDeckEntry.cs @@ -8,7 +8,7 @@ namespace SVSim.Database.Models; /// main_story/get_deck_list's build_deck_list / trial_deck_list. PK (DeckNo) equals the deck's /// wire deck_no, which also equals BuildDeckProductEntry.Id — the 40-card list is read from that /// product (single source of truth), NOT stored here. Sourced from -/// data_dumps/traffic_prod_trial_decks.ndjson via seeds/story-decks.json. +/// data_dumps/captures/traffic_prod_trial_decks.ndjson via seeds/story-decks.json. /// public class StoryDeckEntry : BaseEntity { diff --git a/SVSim.Database/Repositories/Pack/PackRepository.cs b/SVSim.Database/Repositories/Pack/PackRepository.cs index 417fe94..702b604 100644 --- a/SVSim.Database/Repositories/Pack/PackRepository.cs +++ b/SVSim.Database/Repositories/Pack/PackRepository.cs @@ -16,7 +16,7 @@ public class PackRepository : IPackRepository // parent_gacha_id DESC matches the prod /pack/info wire order. The tutorial pack // UI runs with controls locked and auto-selects the FIRST entry in // pack_config_list, so the legendary starter pack (99047) MUST be index 0 for the - // tutorial to progress. Verified against data_dumps/traffic_prod_tutorial.ndjson — + // tutorial to progress. Verified against data_dumps/captures/traffic_prod_tutorial.ndjson — // prod emits [99047, 92001, 80047, 16015..16011, 10032..10001]. .OrderByDescending(p => p.Id) .ToListAsync(); diff --git a/SVSim.EmulatedEntrypoint/Controllers/DeckBuilderController.cs b/SVSim.EmulatedEntrypoint/Controllers/DeckBuilderController.cs index 6620c0e..2e45842 100644 --- a/SVSim.EmulatedEntrypoint/Controllers/DeckBuilderController.cs +++ b/SVSim.EmulatedEntrypoint/Controllers/DeckBuilderController.cs @@ -48,7 +48,7 @@ public class DeckBuilderController : ControllerBase Clan = req.Clan.ToString(), SubClan = req.SubClan ?? 0, // Standard decks emit int 0; my-rotation decks emit the rotation id as a string. - // Mixed wire typing matches prod (data_dumps/traffic_prod_deckcode.ndjson). + // Mixed wire typing matches prod (data_dumps/captures/traffic_prod_deckcode.ndjson). RotationId = (object?)req.RotationId ?? 0, // Strip the foil flag (ones digit) — matches prod's normalize-on-encode behaviour // observed in the traffic dump (e.g. 703441011 → 703441010). diff --git a/SVSim.EmulatedEntrypoint/Middlewares/ShadowverseTranslationMiddleware.cs b/SVSim.EmulatedEntrypoint/Middlewares/ShadowverseTranslationMiddleware.cs index 8bcc3da..a48e217 100644 --- a/SVSim.EmulatedEntrypoint/Middlewares/ShadowverseTranslationMiddleware.cs +++ b/SVSim.EmulatedEntrypoint/Middlewares/ShadowverseTranslationMiddleware.cs @@ -234,7 +234,7 @@ public class ShadowverseTranslationMiddleware : IMiddleware // Wrap the response in a datawrapper. Portal (no-encryption) endpoints emit an anonymous // envelope — viewer/udid/sid stay zero/empty — matching the prod portal traffic shape - // captured in data_dumps/traffic_prod_deckcode.ndjson. + // captured in data_dumps/captures/traffic_prod_deckcode.ndjson. DataWrapper wrappedResponseData = new DataWrapper { Data = responseData, diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/GachaPointRewardDetailEntry.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/GachaPointRewardDetailEntry.cs index ec6b7e1..10cb6f2 100644 --- a/SVSim.EmulatedEntrypoint/Models/Dtos/GachaPointRewardDetailEntry.cs +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/GachaPointRewardDetailEntry.cs @@ -7,7 +7,7 @@ namespace SVSim.EmulatedEntrypoint.Models.Dtos; /// One entry inside gacha_point_rewards[i].reward_list. Different shape from the /// post-state-totals used by /pack/open: this is a catalog /// declaration ("here's what you'd get if you exchanged"), not a viewer-state assignment. -/// Wire keys verified against prod capture data_dumps/traffic_prod_tradeables_capture.ndjson. +/// Wire keys verified against prod capture data_dumps/captures/traffic_prod_tradeables_capture.ndjson. /// [MessagePackObject] public class GachaPointRewardDetailEntry diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/DeckBuilder/GenerateDeckCodeRequest.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/DeckBuilder/GenerateDeckCodeRequest.cs index 64d5b28..57d3252 100644 --- a/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/DeckBuilder/GenerateDeckCodeRequest.cs +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/DeckBuilder/GenerateDeckCodeRequest.cs @@ -28,7 +28,7 @@ public class GenerateDeckCodeRequest [Key("deck_format")] public int DeckFormat { get; set; } - // Wire key is camelCase mid-word capital — verified in data_dumps/traffic.ndjson live + // Wire key is camelCase mid-word capital — verified in data_dumps/captures/traffic.ndjson live // capture (`"cardID":[...]`). The client's LitJson serializer emits the C# property name // verbatim, and the param classes in Wizard/GenerateDeckCodeTask.cs use `cardID` / // `phantomCardID`. Snake-case would silently bind to empty and the controller would emit diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/MyPageRefreshRequest.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/MyPageRefreshRequest.cs index ee3ccba..8e98dd1 100644 --- a/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/MyPageRefreshRequest.cs +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/MyPageRefreshRequest.cs @@ -5,7 +5,7 @@ namespace SVSim.EmulatedEntrypoint.Models.Dtos.Requests; /// /// Request body for /mypage/refresh. Carries only the standard auth envelope — /// no carrier field, unlike MyPageIndexRequest. Confirmed against prod traffic -/// in data_dumps/traffic_prod.ndjson: both refresh request bodies have exactly +/// in data_dumps/captures/traffic_prod.ndjson: both refresh request bodies have exactly /// viewer_id / steam_id / steam_session_ticket. /// [MessagePackObject] diff --git a/SVSim.EmulatedEntrypoint/Services/DeckCodeService.cs b/SVSim.EmulatedEntrypoint/Services/DeckCodeService.cs index 5753ac1..5df8b34 100644 --- a/SVSim.EmulatedEntrypoint/Services/DeckCodeService.cs +++ b/SVSim.EmulatedEntrypoint/Services/DeckCodeService.cs @@ -6,7 +6,7 @@ namespace SVSim.EmulatedEntrypoint.Services; /// /// In-memory deck-code store with a 3-minute absolute TTL. Codes are lowercase 4-character /// alphanumeric tokens — matches the shortest sample observed in prod (e.g. "t7rz" in -/// data_dumps/traffic_prod_deckcode.ndjson). The portal's anonymous global namespace is +/// data_dumps/captures/traffic_prod_deckcode.ndjson). The portal's anonymous global namespace is /// mirrored here: codes are not scoped to viewer. /// public sealed class DeckCodeService : IDeckCodeService diff --git a/SVSim.UnitTests/Controllers/PackControllerGachaPointTests.cs b/SVSim.UnitTests/Controllers/PackControllerGachaPointTests.cs index 8b7c242..6811d02 100644 --- a/SVSim.UnitTests/Controllers/PackControllerGachaPointTests.cs +++ b/SVSim.UnitTests/Controllers/PackControllerGachaPointTests.cs @@ -243,7 +243,7 @@ public class PackControllerGachaPointTests var text = await response.Content.ReadAsStringAsync(); // Literal wire-key checks — verified against - // data_dumps/traffic_prod_tradeables_capture.ndjson pack 10008 response. + // data_dumps/captures/traffic_prod_tradeables_capture.ndjson pack 10008 response. Assert.That(text, Does.Contain("\"gacha_point_rewards\"")); Assert.That(text, Does.Contain("\"class_id\":\"0\""), "class_id MUST be a string"); Assert.That(text, Does.Contain("\"reward_detail_id\":1080410100"), diff --git a/SVSim.UnitTests/Story/StoryServiceTests.cs b/SVSim.UnitTests/Story/StoryServiceTests.cs index 1c80aa5..6590ae3 100644 --- a/SVSim.UnitTests/Story/StoryServiceTests.cs +++ b/SVSim.UnitTests/Story/StoryServiceTests.cs @@ -416,7 +416,7 @@ public class StoryServiceTests // Section 17 in prod offers 4 custom leaders (chara_ids 500901-500904), not the default // 8 classes. Ordering is by ascending min(story_id) of each chara's chapters: // 500901 (569), 500903 (591), 500904 (594), 500902 (597) — non-numeric chara_id sequence. - // Verified against data_dumps/traffic_prod_626_story.ndjson section_id=17 leader_select. + // Verified against data_dumps/captures/traffic_prod_626_story.ndjson section_id=17 leader_select. var s17chapters = new List { Ch(569, 17, 500901, "1", "2"), Ch(570, 17, 500901, "2", "3"), Ch(591, 17, 500903, "1", "2"), Ch(592, 17, 500903, "2", "3"),