ЧТМ:Центр управления модулями
Чтобы выполнение главной текущей задачи — автоматизации ЧТМ Вики с помощью Lua — не расползлось и не растерялось, собираем все главные направления на одной странице.
Базы данных
Модуль:Data (завершена — 2006, 2010, 2014, 2018, 2022, 2026, 2030, 2034, 2038, 2042, 2046)
Модуль:Data/Teams — словарь команд, надо ещё вычитать и проверить (фрагмент для быстрого копирования)
Модуль:Data/Rating — выступления команд на различных турнирах, необходимо сильно пройтись
Модуль:Data/Tournaments (в процессе, пользуйтесь скриптом (или этим скриптом) на python для быстрого заполнения БД в корректном формате, а также скриптом для замены полных названий на трёхбуквенные коды, их можно выполнить, например, в Colab)
- ЧТМ (финальные турниры) — 2006, 2010, 2014, 2018, 2022, 2026, 2030, 2034, 2038, 2042, 2046
- ЧТМ (квалификация) — 2010, 2014, 2018, 2022, 2026, 2030, 2034, 2038, 2042, 2046 (надо разгребать и править — 2030, 2034).
- Региональные кубки:
- Кубок Америки (финальные турниры) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Америки (квалификация) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Африки (финальные турниры) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Африки (квалификация) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Евразии (финальные турниры) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Евразии (квалификация) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Океании (финальные турниры) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Океании (квалификация) — 2009, 2013, 2017, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048
- Кубок Европы — 2009, 2013, 2017
- Кубок Южной Америки — 2009, 2013
- Выставочные турниры:
- Лига Наций — 2039, 2043, 2047
- ЧЧМ — 2040 (кв), 2044 (кв), 2048 (кв)
Главные технические модули
Модули вывода вики-текста
- HistoryTable — самые разные таблицы расчёта исторических показателей, вызывается с помощью шаблона Историческая таблица, готов к использованию.
- Историческая турнирная таблица — для статьи Исторический рейтинг ЧТМ, готов к использованию, но должен в будущем стать частью более обширного модуля.
- Автоматическая статистика (5.1.2) — для традиционного расчёта таблиц показателей в статьях об игроках и списка матчей, готов к использованию, в будущем планируется расширить. Создан и задокументирован шаблон {{Автоматическая статистика/разработка}}.
- Призы игрового дня — таблички, это заготовка, его НЕ НАДО использовать в статьях, его код должен быть частью более глобального модуля.
- Список матчей ЧТМ — его необходимо допиливать, в текущем виде очень корявый.
- Статистика игроков по командам (2.0) — готов к использованию, надо только доработать.
- Megarating (1.2) — полностью готов к использованию и отлажен, реализуется через шаблон {{Мегарейтинг}}.
- TeamGoalscorers (1.5) — полностью готов к использованию на своей странице, в будущем может прокачаться одновременно как до того, чтобы стать частью более глобального модуля, так и до того, чтобы самому стать более глобальным модулем сбора не только статистики по голам, но и по остальным показателям.
- Модуль:TeamMatchList (1.0) — полностью готов к использованию, в будущем должен стать частью более глобального модуля.
- Модуль:Streaks (1.0) — для статьи Рекордные серии матчей, полностью готов.
- Модуль:Отчёт о матче (1.0) — для шаблона {{Статистика матча}}, полностью готов.
Категория
Экспериментальные модули
Узкоспециализированные модули-образцы:
- Беспроигрышные серии друг с другом
- Серии побед друг над другом
- Процент побед
- Матчи в составах разных команд
- Матчи в составе одной команды
- Связка
Выполняются стандартно:
{{#invoke:Название модуля|main}}
Тесты модулей
Для быстрой проверки.
- Megarating
- HistoryTable
- Статистика игроков по командам
- Автоматическая статистика
- Список матчей ЧТМ
- Призы игровых дней
- TeamGoalscorers
- TeamMatchList
- TestRating
- Streaks
- Отчёт о матче
Дополнительно
{{Doc/begin|{{FULLPAGENAME}}}}{{Docpage}}<includeonly>{{Docpage/для модулей}}</includeonly>
----
<includeonly>''Пожалуйста, добавляйте категории на страницу [[/doc|документации]]''.</includeonly>{{Doc/end}}
Шпаргалка для ИИ
[SYSTEM CONTEXT: MEDIAWIKI STATENGINE ARCHITECTURE]
Stack: Lua 5.1 (Scribunto), MediaWiki API. Paradigm: Data-Driven Design, Functional-Procedural, Stateless ETL (Extract, Transform, Load).
1. Data Layer (Module:Data/*)
- Structure: Static key-value nested tables. Key =
match_id(String: "YYYY-NN"), Value = Match Data Object. - Role: Raw data storage. No computational logic.
- Properties: Arrays of events (
goals,cards,subs,shootout), scalar metadata (stage,score1,aet,matchday).
2. Configuration Layer (Module:Config)
- Role: Global Registry, Dependency Injection context, and Utility library.
- Key Components:
eras: Temporal bounds mapping (Integer keys -> Feature flags). Blocks evaluation of metrics for legacy data where tracking didn't exist.metrics: Dictionary of Metric Definitions. Uses First-Class Functions (get_val) for dynamic object traversal. Defines sort directions (anti_prize) and schema for hardcoded runtime mutations (adjustments).playoff_stages: O(1) hash map for conditional filtering.utils: Pure functions for math, string parsing, and array lookups.builder: Abstraction layer for MW HTML node generation (mw.html.create).
3. Core Processing Engine (Module:StatEngine)
- Role: The ETL Harvester. Single-pass data aggregator.
- Performance: $O(M \times E)$ where $M$ is matches and $E$ is events per match.
- Architecture:
Extractorfunctions (extract_goals,extract_pm, etc.) isolate domain logic per entity type. They yield intermediate maps.merge_stats()acts as a global Reducer. Deep-merges intermediate maps into the master Data Transfer Objects (DTOs).- Outputs 3 scoped hash maps:
Stats.Players,Stats.Teams,Stats.PlayerTeam(composite keyPlayer_TeamCode). - Handles temporal patching (injecting
Config.metrics.*.adjustmentspost-processing).
4. Adapter Layer (Module:StatEngine/Legacy)
- Role: Facade / Adapter Pattern.
- Purpose: Exposes modern
Harvesterextractors to legacy MediaWiki templates via deprecated API signatures (getAllPlayersMatchStats,getCategoryStats). - Mechanics: Wraps specific extractors, bypasses global aggregation, transforms output schemas to match legacy template AST expectations.
5. Specialized Aggregator (Module:StatEngine/Matchday)
- Role: Context-aware data builder scoped to
match.matchday == target. - Key Features:
- Calculates relational/graph data (e.g., Goalies track
faced_opponentsto compute opponent strengthopp_avg_goals). - H2H Engine (
comparePair): Time-series calculation. Chronologically sorts matches vianum_hist, calculates running differentials (points, GD), tracks state changes to determine temporal dominance (adv_pts_count,last_pts_start).
- Calculates relational/graph data (e.g., Goalies track
6. Rules & Sorting Engine (Module:StatEngine/TournamentAwards)
- Role: Comparator chaining, Dense/Standard Ranking assignment, Medaling.
- Components:
evaluateMatchdayPrizes: TakesMatchdayaggregates. Passes DTOs through distinct chained comparators (for MVP, Scorer, Assist, etc.). Assigns CSS color codes based on Rank.getTournamentAwards: High-complexity rules engine. Uses a 12-tier comparator sequence (Non-penalty goals -> playoff stages weighted -> match cluster density -> chronological tiebreaker vianum_hist). Incorporates manual mutations fromConfig.award_adjustments.getGenericMetricByTeams: Dynamic sorter mapping toConfig.metrics. Handles conditional logic for inverted metrics (anti_prize/worstflag).