Парсинг правил (#6) #101

Open
Agent wants to merge 3 commits from issue-6-rules-parsing into dev
Collaborator

Что сделано

Три PDF из задачи перенесены в docs/rules/ как Markdown, разбитый на логические блоки: всего 704 блока. У каждого блока есть скрытый маркер с постоянным id и страницей PDF: <!-- block: rules.battle.retreat.attacker; page: 15 -->. К этим id #7 будет привязывать теги и синонимы, а #10 — индекс. Правила и справочник — сканы без текстового слоя, их текст распознан вручную по фрагментам страниц и вычитан вторым проходом. У «Уточнения карт» за основу взят текстовый слой, структура сверена со страницами.

Файл Источник Блоков
rules.md «Правила игры», 16 стр. 184
reference.md «Справочник», 20 стр. 427
cards-faq.md «Уточнение карт», дек. 2020, 12 стр. 93
README.md соглашения: маркер, id, kind, словарь значков —

Решения по формату (приняты при планировании):

  • 3 файла; блоки — абзацы под заголовками источника. Шаги битвы и подготовки — отдельные блоки. В справочнике каждый пункт статьи — отдельный блок.
  • Примеры и подписи переносятся с kind: example / kind: caption, строки «Связанные темы» — с kind: related. Лор не переносится.
  • Значки записаны словом в скобках: [атака], [куб: защита], [жетон: атака], [ресурс: кузница], [приказ: продвижение].
  • Текст дословный, включая опечатки источника. Жирный и курсив сохранены.

Не перенесены (перечислено в шапке каждого файла): обложки, художественный текст («Нет мира среди звезд», описания фракций, вводный абзац врезки о варп-штормах), содержание справочника (стр. 19), иллюстрации.

Коммиты

  • 275d64e Правила: уточнения карт в Markdown и соглашения о формате блоков
  • e326e26 Правила: буклет «Правила игры» в Markdown
  • 0e5f529 Правила: «Справочник» в Markdown

Проверки

  • Автопроверка всех трёх файлов (скрипт при переносе, в репозиторий не входит) — ошибок нет. Проверялись формат маркеров, уникальность и префиксы id, диапазон страниц, пустые блоки, неизвестные значки, висячие переносы и двойные пробелы. Каждая непропущенная страница дала хотя бы один блок.
  • cards-faq.md сверен с текстовым слоем PDF построчно: 93 блока. Единственное расхождение — артефакт сверки: перенос «варп-/шторм» в PDF, дефис сохранён верно. Заголовки разделов (Общие положения, фракции, События / Приказы / Боевые карты) сверены со страницами.
  • rules.md и reference.md сверены со страницами вторым проходом: правила — повторная вычитка всех страниц, справочник — по фрагментам в исходном разрешении скана при распознавании. Мелкие значки в тексте проверены на увеличенных фрагментах.
  • Код не менялся, поэтому pytest и сборка фронта не нужны. Docker-образ копирует только frontend/ и backend/, docs/ в него не попадает.

Места для выборочной сверки

Распознавание ручное, поэтому стоит выборочно сверить места, где ошибка стоит дороже всего:

  • rules.setup.game-board.first-game-layout — коды тайлов на схеме «Расстановка к первой игре» (переписаны со схемы, сверены в высоком разрешении);
  • числа и отрицания в ref.battle.*, ref.retreats.*, ref.advance-order.*, ref.component-limits.*;
  • значки в примерах битвы (rules.battle.example-part-1/2) и в ref.icon-reference;
  • опечатки источника сохранены намеренно, например «15 Городов,и 10 Бастионов», «битвы(см.», «у вы не можете».

Отклонения от плана

  • Добавлен kind: related для строк «Связанные темы» справочника: это готовые связи между статьями, пригодятся для «см. также» в #7.
  • Страница в маркере может быть диапазоном (page: 4-5), если пункт переходит на следующую страницу.

Closes #6

🤖 Generated with Claude Code

https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd

## Что сделано Три PDF из задачи перенесены в `docs/rules/` как Markdown, разбитый на логические блоки: всего 704 блока. У каждого блока есть скрытый маркер с постоянным id и страницей PDF: `<!-- block: rules.battle.retreat.attacker; page: 15 -->`. К этим id #7 будет привязывать теги и синонимы, а #10 — индекс. Правила и справочник — сканы без текстового слоя, их текст распознан вручную по фрагментам страниц и вычитан вторым проходом. У «Уточнения карт» за основу взят текстовый слой, структура сверена со страницами. | Файл | Источник | Блоков | |---|---|---| | `rules.md` | «Правила игры», 16 стр. | 184 | | `reference.md` | «Справочник», 20 стр. | 427 | | `cards-faq.md` | «Уточнение карт», дек. 2020, 12 стр. | 93 | | `README.md` | соглашения: маркер, id, `kind`, словарь значков | — | Решения по формату (приняты при планировании): - **3 файла**; блоки — абзацы под заголовками источника. Шаги битвы и подготовки — отдельные блоки. В справочнике каждый пункт статьи — отдельный блок. - **Примеры и подписи** переносятся с `kind: example` / `kind: caption`, строки «Связанные темы» — с `kind: related`. Лор не переносится. - **Значки** записаны словом в скобках: `[атака]`, `[куб: защита]`, `[жетон: атака]`, `[ресурс: кузница]`, `[приказ: продвижение]`. - Текст дословный, включая опечатки источника. Жирный и курсив сохранены. Не перенесены (перечислено в шапке каждого файла): обложки, художественный текст («Нет мира среди звезд», описания фракций, вводный абзац врезки о варп-штормах), содержание справочника (стр. 19), иллюстрации. ## Коммиты - `275d64e` Правила: уточнения карт в Markdown и соглашения о формате блоков - `e326e26` Правила: буклет «Правила игры» в Markdown - `0e5f529` Правила: «Справочник» в Markdown ## Проверки - Автопроверка всех трёх файлов (скрипт при переносе, в репозиторий не входит) — **ошибок нет**. Проверялись формат маркеров, уникальность и префиксы id, диапазон страниц, пустые блоки, неизвестные значки, висячие переносы и двойные пробелы. Каждая непропущенная страница дала хотя бы один блок. - `cards-faq.md` сверен с текстовым слоем PDF построчно: 93 блока. Единственное расхождение — артефакт сверки: перенос «варп-/шторм» в PDF, дефис сохранён верно. Заголовки разделов (Общие положения, фракции, События / Приказы / Боевые карты) сверены со страницами. - `rules.md` и `reference.md` сверены со страницами вторым проходом: правила — повторная вычитка всех страниц, справочник — по фрагментам в исходном разрешении скана при распознавании. Мелкие значки в тексте проверены на увеличенных фрагментах. - Код не менялся, поэтому `pytest` и сборка фронта не нужны. Docker-образ копирует только `frontend/` и `backend/`, `docs/` в него не попадает. ## Места для выборочной сверки Распознавание ручное, поэтому стоит выборочно сверить места, где ошибка стоит дороже всего: - `rules.setup.game-board.first-game-layout` — коды тайлов на схеме «Расстановка к первой игре» (переписаны со схемы, сверены в высоком разрешении); - числа и отрицания в `ref.battle.*`, `ref.retreats.*`, `ref.advance-order.*`, `ref.component-limits.*`; - значки в примерах битвы (`rules.battle.example-part-1/2`) и в `ref.icon-reference`; - опечатки источника сохранены намеренно, например «15 Городов,и 10 Бастионов», «битвы(см.», «у вы не можете». ## Отклонения от плана - Добавлен `kind: related` для строк «Связанные темы» справочника: это готовые связи между статьями, пригодятся для «см. также» в #7. - Страница в маркере может быть диапазоном (`page: 4-5`), если пункт переходит на следующую страницу. Closes #6 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Agent added 3 commits 2026-09-19 11:52:22 +03:00
cards-faq.md — «Уточнение карт» (декабрь 2020): общие положения и уточнения
по картам четырёх фракций, 93 блока. README.md — формат для #7/#10: маркер
блока с постоянным id и страницей PDF, kind для примеров, подписей и
связанных тем, словарь значков.

#6

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Скан без текстового слоя распознан вручную постранично, 184 блока:
подготовка, фазы раунда, приказы, орбитальный удар, битва, отступление,
создание игрового поля. Лор и обложка не перенесены (перечислены в шапке).

#6

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Скан без текстового слоя распознан вручную постранично, 427 блоков:
золотые правила, глоссарий (пункт статьи — отдельный блок, «Связанные
темы» — kind: related), краткая справка и разъяснения карт. Содержание
(стр. 19) не перенесено — его заменяют заголовки.

#6

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
You are not authorized to merge this pull request.
This pull request can be merged automatically.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin issue-6-rules-parsing:issue-6-rules-parsing
git checkout issue-6-rules-parsing
Sign in to join this conversation.