# Сопровождение данных оргструктуры и составов OML

Краткая памятка для офицеров и администратора сайта (Git / деплой).

## Файлы и ответственность

| Файл | Что меняет смысл сайта | Кто обычно правит |
|------|-------------------------|-------------------|
| [`data/roles.json`](../data/roles.json) | Названия должностей штаба, игровые роли, справочник доступа | Штаб + админ репозитория |
| [`data/org-assignments.json`](../data/org-assignments.json) | Ники и подсказки контакта по должностям (`roleId` → `displayNick`) | Капитан / офицеры по блокам |
| [`data/roster.json`](../data/roster.json) | Игровые составы (основа, академия и т.д.) | Капитан / офицер составов |
| [`data/tournaments.json`](../data/tournaments.json) | Трекер ивентов L2 | Офицер по турнирам (см. `meta.process` в файле) |
| [`data/announcements.json`](../data/announcements.json) | Анонсы для хаба и страницы анонсов | Медиа / офицер по связям |

## Правила

1. **`roleId` в `org-assignments.json`** должен совпадать с полем `id` у записей внутри `clanStaff` в `roles.json`. Иначе назначение не сопоставится с должностью.
2. **Игровые роли** в `roster.json` используют `roleId` из массива `inGameRosterRoles` в `roles.json`.
3. После правок JSON — коммит и деплой статики; кэш браузера у посетителей может задерживать обновление на минуты.
4. Локальная проверка: сайт через HTTP (`Open-Site.bat` / `Start-Site.ps1`), не `file://`, иначе `fetch` к JSON может не работать.

## Страницы-потребители

- [`org-structure.html`](../org-structure.html) — штаб из `roles.json` + `org-assignments.json`; игровые и внешние роли из `roles.json`.
- [`teams.html`](../teams.html) — блок штаба (те же данные) + составы из `roster.json`.
- [`club.html`](../club.html) — полоса «Сезон и внимание» из `tournaments.json` и `announcements.json` (`js/hub-season.js`).
