fix(ingest): support redesigned Blue Archive wiki event table
CI / Typecheck, test, feed (push) Successful in 12s
CI / Build site (push) Successful in 7s
CI / Container image (push) Successful in 29s

The Blue Archive Wiki (bluearchive.wiki/wiki/Events) redesigned its
schedule, replacing the per-version MediaWiki tabber with a unified
#eventtable displaying JP and Global periods side-by-side.

- Parse #eventtable resolving GL Period, event titles, and article links
  from .event-region-gl, with fallback to .event-region-jp.
- Maintain backwards compatibility with legacy tabber schedule format.
- Add pinned fixture fixtures/ba/bawiki-events-2026-09-17 and tests.
- Update snapshot, AGENTS.md, ARCHITECTURE.md, and INGESTION.md.
This commit is contained in:
Lucas Winther committed 2026-09-17 10:53:05 +02:00
1 parent b73c253de2
commit 2bc61e7d12
9 files changed
+3490 -2671

No files matched your search

@@ -0,0 +1,107 @@
[
{
"id": "ba:code-box-the-shadow-approaching-millennium:2026-08-04",
"game": "ba",
"title": "Code: BOX - The Shadow Approaching Millennium",
"type": "rerun",
"summary": "Rerun",
"startsAt": "2026-08-04T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-08-18T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://bluearchive.wiki/wiki/Code:_BOX_Shadow_Looming_Over_Millennium_%EF%BD%9EOne_Question_and_Two_Answers%EF%BD%9E/Rerun",
"sourceId": "ba-bawiki-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "ba:special-mission-lore-pursuit:2026-08-18",
"game": "ba",
"title": "Special Mission: Lore Pursuit",
"type": "other",
"summary": null,
"startsAt": "2026-08-18T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-01T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://bluearchive.wiki/wiki/Special_Operation:_Lore_Pursuit",
"sourceId": "ba-bawiki-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "ba:pray-ball-swing-for-the-grand-slam:2026-09-01",
"game": "ba",
"title": "Pray-Ball! Swing for the Grand Slam!",
"type": "rerun",
"summary": "Rerun",
"startsAt": "2026-09-01T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-15T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://bluearchive.wiki/wiki/Pray-Ball!_%EF%BD%9E_Aim_for_a_Grand_Slam_Home_Run_%EF%BD%9E/Rerun",
"sourceId": "ba-bawiki-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "ba:from-opera-0068-with-love:2026-09-15",
"game": "ba",
"title": "From Opera 0068 with Love!",
"type": "other",
"summary": null,
"startsAt": "2026-09-15T00:00:00.000Z",
"startPrecision": "day",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://bluearchive.wiki/wiki/0068_from_Opera_with_Love!/Permanent",
"sourceId": "ba-bawiki-events",
"status": "published",
"confidence": 0.75,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "ba:special-mission-lore-pursuit:2026-09-15",
"game": "ba",
"title": "Special Mission: Lore Pursuit",
"type": "other",
"summary": "Season 2",
"startsAt": "2026-09-15T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-29T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://bluearchive.wiki/wiki/Special_Operation:_Lore_Pursuit_(Season_2)",
"sourceId": "ba-bawiki-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
}
]
File diff suppressed because it is too large. Load diff