# План развития OML: сайт, трекер Lineage II, публичное лицо, турниры

**Назначение документа:** единая дорожная карта для киберспортивного представительства клана в сети и для системной подготовки к турнирам в **Lineage II** (приватки, лиги, ивенты серверов). Документ живой: отмечайте чекбоксы, дописывайте даты и ответственных.

**Расположение:** `docs/PLAN.md` — план вынесен из корня репозитория, чтобы не смешивать с кодом сайта.

**PDF:** актуальный экспорт — **`docs/OML-roadmap.pdf`** (если файл занят просмотрщиком, скрипт не сможет перезаписать его «на лету» — закройте PDF и запустите скрипт снова). Пересборка: `python scripts/export_plan_pdf.py` (зависимость `fpdf2`, см. `requirements.txt`; на Windows берётся Arial из системы).

**Стратегия медиа и партнёров** (стримеры, спонсоры, Media Kit): [strategy-media-partners.md](strategy-media-partners.md)

**Мастер-план** (аудит проекта, монетизация, фазы 0–5, KPI, бэклог): [OML-MASTER-PLAN-RU.md](OML-MASTER-PLAN-RU.md)

**План развития сайта** (трансляции стримеров, фазы S1–S5): [SITE-DEVELOPMENT-PLAN-RU.md](SITE-DEVELOPMENT-PLAN-RU.md)

---

## 1. Видение в одном абзаце

Клан строит **стабильное публичное лицо** (сайт + контакты + новости) и **внутренний порядок** вокруг турниров: единая точка, где видно, какие ивенты актуальны, до какого числа регистрация, кто ведёт заявку, и как мы действуем до/во время матча. Трекер L2 заполняет пустоту — **глобального календаря всех турниров Lineage II не существует**, поэтому агрегируем то, что важно **вам**, с фильтрами по проекту и типу ивента.

---

## 2. Аудит: что уже есть в проекте

| Компонент | Статус | Примечание |
|-----------|--------|------------|
| Многостраничный сайт + регламент + страница для оргов + новость «вступление» | Есть | Заменить плейсхолдеры: сервер, Telegram/Discord, ники штаба |
| Трекер ивентов L2 | Есть | `tracker.html` + `data/tournaments.json` + `js/tournaments.js` |
| Фильтры трекера | Есть | Проект/сервер, тип ивента, статус, поиск |
| Поля участия клана в трекере | Есть | `clanParticipation`, `leadNick`, `rosterNote` в JSON + фильтр на `tracker.html` |
| Деплой в интернет | Нет в коде | Выбор хостинга — фаза 3 |
| Автоматизация наполнения JSON | Нет | Фаза 4 |

---

## 3. Заинтересованные стороны (кому должен помогать сайт)

| Аудитория | Что им нужно от нас | Что даёт сайт/план |
|-----------|---------------------|---------------------|
| Игроки клана | Не искать турники по чатам; знать дедлайны и ответственного | Трекер + расписание + регламент |
| Руководство клана | Меньше хаоса, история участий | Архив в JSON, новости, роли |
| Союзники / дружественные кланы | Понять, активны ли мы, куда писать | Контакты, новости, «О клубе» |
| Организаторы турниров | Быстро проверить серьёзность и связаться | Стабильный URL, блок «для организаторов», аккуратный вид |
| Новые игроки | Вступление без лишних вопросов | Контакты + короткий манифест + набор при наличии |

---

## 4. Цели и критерии успеха (KPI)

Цели не про прибыль; про **узнаваемость**, **дисциплину** и **участие**.

| KPI | Как измерять (просто) |
|-----|------------------------|
| Сайт «живой» | Обновление новостей или трекера не реже 1 раза в 2 недели в сезон |
| Трекер актуален | Офицер по турнирам фиксирует новые анонсы сервера в течение 48–72 ч |
| Внешняя проверка | По запросу союзника или орга можно за 1 минуту скинуть одну ссылку на сайт |
| Участие в туриках | Перед туриком есть явный ответственный и чек-лист (хотя бы в Discord + дубль на сайте) |

---

## 5. Фаза 1 — База: бренд, контакты, процесс (ориентир 1–3 недели)

### 5.1 Контент и идентичность

- [x] **Название и аббревиатура:** в шапке **OML** + строка **OneMoreLife · L2** на всех страницах.
- [ ] **Игра и основной проект:** замените на `index.html` плейсхолдер про сервер/хронику на реальные данные.
- [x] **Миссия:** блок **«О клубе»** на главной + карточки (процесс трекера, вступление, регламент).
- [x] Страница для турнирных организаторов: `for-organizers.html` (дополните часовой пояс и контакты).

### 5.2 Контакты

- [ ] Заменить в `contact.html` **`YOUR_TELEGRAM`** и **`YOUR_DISCORD_INVITE`** на рабочие ссылки.
- [ ] Проверить ссылки с телефона и ПК.
- [ ] Дописать ники ответственных в блоке **Штаб** на `teams.html`.

### 5.3 Роли внутри клана (рекомендуемый минимум)

| Роль | Обязанность по плану |
|------|----------------------|
| Капитан / зам | Финальное «да/нет» на участие в крупных туриках, конфликты |
| Офицер по турнирам | Обновление `data/tournaments.json`, связь с оргами по регламенту |
| Медиа (можно совмещать) | Новость раз в N недель, скрин после турика |

- [x] Структура ролей на странице **Команды** (карточка «Штаб»).
- [ ] Конкретные **ники** вместо заглушек.

### 5.4 Регламент работы с трекером

- [x] Намётка процесса в **`data/tournaments.json`** (`meta.process`) — текст показывается на `tracker.html`.
- [ ] Закрепить договорённость в Discord (день недели для обзора анонсов).
- [ ] После крупного анонса сервера — **в течение 48 ч** обновить JSON.
- [ ] Шаблон строки события — копировать последнюю запись и править поля.

### 5.4а Страница «Перед туриком»

- [x] **`regulations.html`** — чек-лист; пункт меню **Регламент**; ссылки с главной и расписания.

### 5.5 Новость «Вступление»

- [x] **`news-join.html`** — в списке новостей и на главной в блоке «О клубе».

### 5.6 Критерий завершения фазы 1

Человек с улицы открывает сайт и за **менее минуты** понимает: **кто вы**, **во что играете**, **куда написать**.

---

## 6. Фаза 2 — Трекер как инструмент участия (ориентир 2–6 недель)

### 6.1 Наполнение данных

- [ ] Удалить шаблонные записи из `tournaments.json` по мере появления реальных или заменить их живыми данными.
- [ ] Для каждого серьёзного турика минимум: **название**, **проект (`server`)**, **тип (`eventType`)**, **старт**, **регистрация до** (если есть), **ссылка на тему** (`url`), **организатор**.
- [ ] Завершённые ивенты **не удалять** — переводить в `status: "finished"` или оставлять даты в прошлом; так формируется **архив**.

### 6.2 Участие клана в трекере (JSON + UI)

В данных и на странице трекера используются поля:

| Поле | Назначение |
|------|------------|
| `clanParticipation` | `none`, `watching`, `planned`, `registered`, `playing`, `done`, `skip` (не участвуем) |
| `leadNick` | Ответственный от клана за турник |
| `rosterNote` | Состав, слоты, ссылка на таблицу |

- [x] Реализовано в `data/tournaments.json`, `js/tournaments.js`, фильтр «Участие OML», стили в `css/styles.css`.
- [ ] Согласовать с капитаном смысл каждого статуса и когда ставить `skip`.

### 6.3 Связь расписания клуба и трекера

- [ ] В `schedule.html` держать **внутренние** тренировки/сборы.
- [ ] В трекере — **внешние** ивенты сервера и межклановые лиги.
- [ ] Раз в неделю сверять: «что в трекере на эту неделю» = «о чём говорим в Discord».

### 6.4 Чек-лист перед туриком (обязательный артефакт)

Оформить одним из способов: страница `regulations.html`, материал в `news.html`, или закреп в Discord + ссылка с сайта.

Типовые пункты:

- [ ] Подтверждение состава и запасных до даты X.
- [ ] Канал связи на время турика (голос/текст).
- [ ] Кто сдаёт скрины оргу / как подтверждаем заявку.
- [ ] Что делаем при no-show игрока.

### 6.5 Критерий завершения фазы 2

По трекеру видно **не только календарь мира**, но и **намерение клана участвовать** (хотя бы в заметках или будущих полях `participation`).

---

## 7. Фаза 3 — Публичное лицо и работа с организаторами (ориентир параллельно или после фазы 1–2)

### 7.1 Хостинг и домен

- [ ] Выбрать площадку: **Cloudflare Pages**, **Netlify**, **GitHub Pages** (репозиторий публичный или с билдом), либо **VPS + nginx**.
- [ ] Подключить **домен** (или хотя бы поддомен) — короткая запоминающаяся ссылка для форумов и анкет.
- [ ] Включить **HTTPS** (у перечисленных платформ обычно по умолчанию).

### 7.2 Страница или блок «Для организаторов турниров»

Содержание (черновик):

- Один **контактный канал** (Discord/Telegram) для официальных запросов.
- Часовой пояс, язык общения (RU/EN).
- Формат: «готовы к TvT 9v9», «участвуем только на своём сервере», и т.п. — без лишних обещаний.
- Ссылка на **состав** или на правило: «состав на сезон публикуем в новостях».

- [ ] Добавить файл `for-organizers.html` или секцию на `contact.html` — по желанию дизайна.

### 7.3 Новости и активность

- [ ] Минимум **одна новость в месяц** в активный сезон: набор, итог турика, смена офицера.
- [ ] После турика: **1 скрин + 3–5 строк** текста — этого достаточно для доверия.
- [ ] Шаблон новости хранить и копировать (дата, заголовок, тело).

### 7.4 Альянсы и репутация

- [ ] Если есть постоянные союзы — упомянуть на главной или в новости «партнёры сезона».
- [ ] Не размещать чужие логотипы без разрешения.

### 7.5 Критерий завершения фазы 3

Организатор турнира получает **одну ссылку** и понимает, как с вами связаться и что вы за клуб.

---

## 8. Фаза 4 — Автоматизация (по боли, не «на будущее»)

Запускать, когда ручное редактирование JSON начинает ошибаться или занимает много времени.

| Вариант | Плюсы | Минусы |
|---------|--------|--------|
| Google Таблица → скрипт → JSON → деплой | Знакомый UI | Нужен аккаунт и простой CI |
| Форма (Tally / Google Forms) → скрипт | Несколько человек могут кидать заявки на включение турника | Модерация |
| Discord-бот с командой | Быстро для офицера | Нужен хостинг бота и разработка |

- [ ] Выбрать один путь после обсуждения нагрузки.
- [ ] Напоминания о `regUntil` можно делать постом в Discord вручную или ботом по расписанию.

---

## 9. Риски и правила игры

| Риск | Действия |
|------|----------|
| Трекер устарел | Закрепить офицера + слот в календаре клана |
| Конфликт «кто поехал на турник» | Заранее список в заметке события + решение капитана |
| Токсичность на сайте | Один стиль текстов, без нападок на другие кланы |
| Призы / реальные деньги | Внутреннее правило: кто подписывает участие, как делится приз, налоги — за рамками кода, но обязательно обсудить до первого платного турика |
| Утечка личных данных | На сайте только игровые ники и публичные ссылки; без телефонов без согласия |

---

## 10. Бэклог «быстрых побед» (можно делать сразу)

1. Заменить все «ник» / «Ваша команда» на реальные или нейтральные формулировки до появления публичных ников.
2. Добавить в подвал сайта одну строку: «Трекер обновляется сообществом клана».
3. Закрепить в Discord ссылку на будущий продакшен-URL (пока — на репо или временный хост).

---

## 11. Карта файлов проекта (напоминание)

| Задача | Файлы |
|--------|--------|
| Тексты главной, «О клубе» | `index.html` |
| Контакты | `contact.html` |
| Трекер | `tracker.html`, `js/tournaments.js`, `data/tournaments.json`, `css/styles.css` |
| Расписание внутреннее | `schedule.html` |
| Составы и роли | `teams.html` |
| Регламент туриков | `regulations.html` |
| Для организаторов | `for-organizers.html` |
| Новости | `news.html`, `news-join.html`, `news-*.html` |
| Деплой | README + документация выбранного хостинга |
| Этот план | `docs/PLAN.md` |
| Медиа и партнёры | `docs/strategy-media-partners.md` |

---

## 12. История правок плана

| Дата | Изменение |
|------|-----------|
| — | Перенос из корня в `docs/`, расширение структуры |
| — | Фаза 1 в коде: бренд OneMoreLife, «О клубе», штаб, контакты-плейсхолдеры, regulations, for-organizers, news-join, пункт меню Регламент |
| — | Фаза 2 (часть): поля участия клана в трекере + PDF `docs/OML-roadmap.pdf` через `scripts/export_plan_pdf.py` |
| — | Добавлен `docs/strategy-media-partners.md` — стримеры, спонсоры, Media Kit (дополнение к этому плану) |

---

*Дальнейшие правки вносите прямо в этот файл или открывайте issue/обсуждение в клане.*
