docs(importers): update data_dumps path references for reorg

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 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-05-31 01:22:08 -04:00
parent 1470406e17
commit 50e4989b77
23 changed files with 24 additions and 24 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -2,7 +2,7 @@ namespace SVSim.Bootstrap.Importers;
/// <summary>
/// Tiny shared helper for content importers. Capture parsing has moved out of the bootstrap
/// project entirely (extractors under <c>data_dumps/extract/</c> emit per-table seed JSON);
/// project entirely (extractors under <c>data_dumps/scripts/</c> 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.
/// </summary>

View File

@@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers;
/// <summary>
/// Idempotent upsert of the item catalog from <c>seeds/items.json</c>. Source is the client's
/// <c>item_master.csv</c> + <c>itemtext.json</c> (extracted via
/// <c>data_dumps/extract/extract-items.py</c>). Rows missing from the seed are LEFT INTACT.
/// <c>data_dumps/scripts/extract-items.py</c>). Rows missing from the seed are LEFT INTACT.
/// </summary>
public class ItemImporter
{

View File

@@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers;
/// <summary>
/// Idempotent upsert of the item-purchase catalog from <c>seeds/item-purchase.json</c>.
/// Source is the wire <c>/item_purchase/info</c> response, extracted via
/// <c>data_dumps/extract/extract-item-purchase.py</c>. Rows missing from the seed are LEFT INTACT.
/// <c>data_dumps/scripts/extract-item-purchase.py</c>. Rows missing from the seed are LEFT INTACT.
/// </summary>
public class ItemPurchaseImporter
{

View File

@@ -9,7 +9,7 @@ namespace SVSim.Bootstrap.Importers;
/// Idempotent upsert of the leader-skin-shop catalog from <c>seeds/leader-skin-shop.json</c>.
/// Mirror of <see cref="SleeveShopImporter"/>. Source is the wire
/// <c>/leader_skin/products</c> response, extracted via
/// <c>data_dumps/extract/extract-leader-skin-shop.py</c>. Rows missing from the seed are LEFT INTACT.
/// <c>data_dumps/scripts/extract-leader-skin-shop.py</c>. Rows missing from the seed are LEFT INTACT.
/// </summary>
public class LeaderSkinShopImporter
{

View File

@@ -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;
}

View File

@@ -5,7 +5,7 @@ namespace SVSim.Bootstrap.Importers;
/// <summary>
/// Reads a JSON seed file under <c>SVSim.Bootstrap/Data/seeds/</c>. Replaces ImporterBase.LoadCapture.
/// Files are produced by extractors in <c>data_dumps/extract/</c>; the bootstrap project does not
/// Files are produced by extractors in <c>data_dumps/scripts/</c>; the bootstrap project does not
/// transform wire formats. Missing files are non-fatal (returns empty/null) — caller decides.
/// </summary>
public static class SeedLoader

View File

@@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers;
/// <summary>
/// Idempotent upsert of the sleeve-shop catalog from <c>seeds/sleeve-shop.json</c>.
/// Source is the wire <c>/sleeve/info</c> response, extracted via
/// <c>data_dumps/extract/extract-sleeve-shop.py</c>. Mirror of the BuildDeck importer pattern.
/// <c>data_dumps/scripts/extract-sleeve-shop.py</c>. Mirror of the BuildDeck importer pattern.
/// Rows missing from the seed are LEFT INTACT (so manual test fixtures survive re-runs).
/// </summary>
public class SleeveShopImporter

View File

@@ -8,7 +8,7 @@ namespace SVSim.Bootstrap.Importers;
/// <summary>
/// Idempotent upsert of the spot card exchange catalog from <c>seeds/spot-card-exchange.json</c>.
/// Source is the wire <c>/spot_card_exchange/top</c> response, extracted via
/// <c>data_dumps/extract/extract-spot-card-exchange.py</c>. Rows missing from the seed are
/// <c>data_dumps/scripts/extract-spot-card-exchange.py</c>. Rows missing from the seed are
/// LEFT INTACT.
/// </summary>
public class SpotCardExchangeImporter

View File

@@ -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 <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" +

View File

@@ -13,7 +13,7 @@ public class ResourceConfig
/// <c>PlayerPrefs["RES_VER"]</c> and uses it as the version path component for asset
/// manifest lookups: <c>https://&lt;cdn&gt;/dl/Manifest/&lt;RES_VER&gt;/&lt;lang&gt;/&lt;Platform&gt;/</c>.
/// <para>
/// Default value is the prod-captured version from <c>data_dumps/traffic_prod_tutorial.ndjson</c>
/// Default value is the prod-captured version from <c>data_dumps/captures/traffic_prod_tutorial.ndjson</c>
/// (2026-05-28) — i.e., a path Akamai actually serves. When this rotates (or Akamai sunsets
/// ahead of June 2026), update via DB <c>GameConfigs</c> row, appsettings.json, or this
/// shipped default; no code change needed.

View File

@@ -4,7 +4,7 @@ namespace SVSim.Database.Models;
/// <summary>
/// Item master row. Mirrors the client's <c>item_master.csv</c> + <c>itemtext.json</c>
/// (under <c>data_dumps/client_master_csv/</c>): <see cref="Type"/> matches the client-side
/// (under <c>data_dumps/client-assets/</c>): <see cref="Type"/> 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);
/// <see cref="ThumbnailPath"/> is the client-resolved sprite key.

View File

@@ -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.
/// </summary>
public class StoryDeckEntry : BaseEntity<int>
{

View File

@@ -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();

View File

@@ -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).

View File

@@ -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,

View File

@@ -7,7 +7,7 @@ namespace SVSim.EmulatedEntrypoint.Models.Dtos;
/// One entry inside <c>gacha_point_rewards[i].reward_list</c>. Different shape from the
/// post-state-totals <see cref="RewardListEntry"/> 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.
/// </summary>
[MessagePackObject]
public class GachaPointRewardDetailEntry

View File

@@ -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

View File

@@ -5,7 +5,7 @@ namespace SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
/// <summary>
/// Request body for /mypage/refresh. Carries only the standard auth envelope —
/// no <c>carrier</c> 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
/// <c>viewer_id / steam_id / steam_session_ticket</c>.
/// </summary>
[MessagePackObject]

View File

@@ -6,7 +6,7 @@ namespace SVSim.EmulatedEntrypoint.Services;
/// <summary>
/// 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.
/// </summary>
public sealed class DeckCodeService : IDeckCodeService

View File

@@ -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"),

View File

@@ -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<StoryChapter> {
Ch(569, 17, 500901, "1", "2"), Ch(570, 17, 500901, "2", "3"),
Ch(591, 17, 500903, "1", "2"), Ch(592, 17, 500903, "2", "3"),