Задача
Информация об ИТ-образовании для школьников существует, но разбросана: правила приёма лежат PDF-файлами на сайтах вузов, перечни олимпиад публикуются отдельно, льготы за победу в олимпиаде каждый вуз описывает своими словами и в своём формате. Родитель, который хочет понять, даёт ли конкретная олимпиада преимущество при поступлении на конкретную программу, вынужден собирать ответ вручную из десятка источников.
Задача проекта — свести это в одну структуру, где связи между олимпиадами, вузами, программами и льготами заданы явно и поддерживаются в актуальном состоянии.
Что получилось: цифры
| Сущность | Объём |
|---|---|
| Вузы | 391 |
| Образовательные программы | 3 162 |
| Олимпиады | 103 |
| Предметные направления олимпиад | 173 |
| Записи об олимпиадных льготах | 82 997 |
| Меры поддержки | 47 |
| Возможности для школьников | 95 |
| Эпизоды подкаста | 51 |
| Статьи | 20 |
Главная цифра здесь — 82 997 записей об олимпиадных льготах. Это не контент, который можно написать руками. Каждая запись связывает олимпиаду, её предметное направление, вуз, программу и условие получения льготы. Именно эта таблица делает возможным вопрос «какие олимпиады дают преимущество на этой программе» — и именно она определила архитектуру всего остального.
Покрытие приёмной кампании 2026
Отдельная метрика, за которой проект следит постоянно, — насколько полно заполнены данные приёмной кампании. Справочник ценен ровно настолько, насколько в нём заполнены поля.
| Показатель | Значение | Покрытие |
|---|---|---|
| Программы с учебным планом | 2 663 | 84% |
| Программы с проходными баллами | 2 168 | 69% |
| Программы с бюджетными местами | 2 856 | — |
| Программы с историей баллов | 1 266 | — |
| Вузы с правилами приёма (PDF) | 142 | 36% |
| Вузы с перечнем документов | 93 | — |
| Вузы с индивидуальными достижениями | 88 | — |
Что оказалось сложным
Дубликаты олимпиад
Одна и та же олимпиада приходит из разных источников под разными названиями: с указанием года и без, с римскими и арабскими цифрами, с сокращённым и полным именем организатора. Если не свести их к одной записи, каталог начинает показывать одну олимпиаду тремя карточками, и льготы размазываются между ними.
Решается в три шага: нормализация названий, автоматический поиск кандидатов на слияние, ручное подтверждение спорных пар. Полностью автоматическое слияние здесь опасно — цена ошибки высока: склеив две разные олимпиады, вы дадите родителю неверную информацию о льготе, а он примет по ней решение о поступлении.
Данные, которые устаревают каждый год
Проходные баллы, перечни олимпиад, правила приёма и льготы обновляются ежегодно, причём не одновременно: вузы публикуют документы в разные месяцы. Справочник, собранный один раз, теряет ценность за сезон.
Поэтому наполнение построено не как разовый импорт, а как повторяемый процесс со сверкой: что изменилось, что появилось, что исчезло, где данные противоречат друг другу. Это ровно та задача, о которой мы пишем в разборе про сведение прайсов поставщиков — предметная область другая, механика та же.
Заготовки записей
При таком объёме неизбежны неполные записи: олимпиада известна, но у неё не заполнены направления и связи. Держать их скрытыми — терять полноту, публиковать как есть — вводить в заблуждение. Реализовано промежуточное состояние: запись существует, видна, но помечена как неполная, и попадает в очередь на дозаполнение.
Как устроено
- Payload CMS как ядро — коллекции сущностей со связями между ними, редактирование без правки кода
- Отдельный слой инструментов сопровождения — поиск дубликатов, слияние, массовая публикация, аудит заполненности, конвертация олимпиады в предметные направления. Это не витрина, а рабочее место редактора: без него каталог такого объёма не поддерживается
- Панель покрытия — постоянный ответ на вопрос «насколько мы полны прямо сейчас»
- Рекламная подсистема — кампании, креативы, площадки, заявки, аналитика
- Маркировка рекламы по требованиям ОРД — присвоение и выгрузка идентификаторов. Это не украшение, а законодательное требование к рекламе в РФ
- Telegram-бот с календарём дедлайнов — напоминания о сроках подачи документов и регистрации на олимпиады
Что из этого применимо к вашей задаче
Проект собственный, но набор задач в нём типовой и повторяется у клиентов:
- Каталог с нетривиальными связями между сущностями
- Сведение данных из разноформатных источников и поиск дубликатов
- Повторяемое обновление вместо разового импорта
- Административные инструменты, которыми пользуется не программист
- Соответствие требованиям к маркировке рекламы
- Telegram-бот как канал уведомлений поверх основной базы
Если у вас похожая задача — справочник, каталог, база с регулярно меняющимися данными — механика будет той же, независимо от предметной области.