Консольная утилита на TypeScript для просмотра и анализа образовательных программ ИТМО. Она работает с локальными JSON-снимками, помогает искать программы и конкурсные группы, применять фильтры и получать машинно-читаемые ответы для скриптов и ИИ-инструментов.
- полнотекстовый поиск по программам, группам, факультетам, направлениям, дисциплинам, атрибутам и трекам олимпиад;
- поиск по ID, ИСУ ID и слагу;
- фильтрация по форме и языку обучения, военной кафедре, сроку обучения, факультету, коду направления, бюджетным местам и проходному баллу;
- детальный просмотр программы или конкурсной группы;
- список факультетов и программ;
- статистика по выбранному снимку данных;
- интерактивная справка по полям JSON;
- JSON-режим для автоматизации и интеграции с другими инструментами;
- объединение нескольких JSON-файлов с удалением повторяющихся групп.
- Bun 1.3.6;
- TypeScript;
- Node.js API
readline,fsиpath; - Chalk для цветного вывода.
Внешние серверы и база данных не нужны: приложение читает данные из каталога data и не выполняет сетевые запросы при запуске.
В репозитории находятся самостоятельные снимки данных по годам:
| Файл | Группы | Программы |
|---|---|---|
data/2024/data2024.json |
80 | 91 |
data/2025/data2025.json |
82 | 96 |
data/2026/data2026.json |
80 | 95 |
Ожидаемый формат файла:
{
"ok": true,
"message": "ok",
"result": {
"groups": []
}
}Загрузчик принимает группы из result.groups, добавляет программам ссылку на родительскую группу во внутреннем поле _group и не повторяет группы с одним и тем же ID. Снимки содержат публичные ссылки ИТМО и отдельные внешние ссылки, которые регулируются условиями соответствующих правообладателей.
flowchart TD
A[CLI arguments or interactive menu] --> B[Year selector]
B --> C[JSON snapshot loader]
C --> D[MergedData]
D --> E[Search and filters]
E --> F[Terminal formatter]
E --> G[JSON output]
Основные модули:
src/index.ts- точка входа и маршрутизация CLI-операций;src/args.ts- разбор аргументов и справка;src/loader.ts- поиск годов, чтение и объединение JSON;src/search.ts- поиск и справочники факультетов, направлений и атрибутов;src/filters.ts- фильтры и статистика;src/display.ts- форматирование терминального вывода;src/cli.ts- интерактивное меню;src/types.tsиsrc/translations.ts- модели данных и переводы.
Требуется Bun 1.x или новее.
bun install --frozen-lockfile
bun run startВ интерактивном режиме выберите год, пункт меню и операцию. Для разработки доступен watch-режим:
bun run devБез основной операции приложение открывает меню. В аргументном режиме оно загружает последний доступный год, если --year не указан, и завершает работу после одного запроса.
--help # справка
--year <год> # год снимка данных
--json # JSON без служебных сообщений
--search <запрос> # поиск по текстовым и идентификационным полям
--program-id <id> # программа по ID
--group-id <id> # группа по ID
--list # список программ
--stats # статистикаФильтры применяются вместе с --list:
--study-mode <значение>
--language <язык>
--military <true|false>
--study-period <лет>
--has-budget <true|false>
--min-budget <количество>
--faculty <название>
--direction-code <код>
--has-pass-score <true|false>
--min-pass-score <балл>
--max-pass-score <балл>
--attribute <название>Примеры:
bun run start -- --help
bun run start -- --year 2026 --stats --json
bun run start -- --year 2025 --search "data" --json
bun run start -- --year 2026 --program-id 8068 --json
bun run start -- --year 2026 --list --study-mode internal --has-budget true --jsonВ JSON-режиме служебная информация выводится в stderr, а результат запроса попадает в stdout. Это позволяет передавать ответ в jq или другой процесс:
bun run start -- --year 2026 --stats --json | jq '.stats'| Пункт | Назначение |
|---|---|
1 |
Поиск программ и групп |
2 |
Фильтрация программ |
3 |
Постраничный список программ |
4 |
Программа по ID |
5 |
Группа по ID |
6 |
Список факультетов |
7 |
Статистика |
8 |
Справка по полям |
0 |
Выход |
Проект развивается от утилиты поиска к полноценному ИИ-ассистенту для абитуриентов ИТМО. План разбит на четыре фазы: от умных рекомендаций до экосистемы инструментов.
Каждая задача детализирована в GitHub Issues — ссылки ведут на описание этапов, критериев и зависимостей.
| Задача | Issue | Суть |
|---|---|---|
| Обогащение данных программ | #2 | Парсинг сайтов abit.itmo.ru, извлечение учебных планов и карьерных треков, сжатие контекста до 300–500 токенов — убрать шаблонные фразы, оставить суть |
| Рекомендательная система | #1 | Интерактивное интервью: пользователь описывает опыт, интересы и цели — CLI подбирает 3–5 наиболее подходящих программ с объяснением выбора |
| Сравнение учебных планов | #6 | Side-by-side сравнение 2–3 программ: пересечение дисциплин, уникальные курсы, различия в карьерных треках |
| Задача | Issue | Суть |
|---|---|---|
| Помощь с мотивационным письмом и портфолио | #3 | CLI проводит интервью по структуре мотивационного письма ИТМО, анализирует опыт и генерирует черновик на 3000–3500 знаков. Чек-лист разделов портфолио с оценкой шансов по баллам |
| Живая интеграция с API ИТМО | #5 | Загрузка актуальных данных из API abit.itmo.ru, сравнение снимков разных лет (--diff), подсветка изменений в программах и проходных баллах |
| Задача | Issue | Суть |
|---|---|---|
| MCP-сервер | #4 | Упаковка CLI в Model Context Protocol сервер — AI-инструменты (Claude, Cursor, Copilot) смогут напрямую искать и анализировать программы ИТМО через стандартизированный протокол |
| Telegram-бот | #7 | Альтернативный интерфейс для тех, кто не работает в терминале: бот с поиском, фильтрацией, рекомендациями и помощью с портфолио прямо в мессенджере |
- Единый ассистент для абитуриента — от первого вопроса «какую программу выбрать?» до готового мотивационного письма и поданного портфолио
- FAQ и база знаний — ответы на частые вопросы о поступлении, экзаменах, собеседовании и конкурсе портфолио на основе официальных материалов приёмной комиссии
- Подготовка к вступительным — навигация по темам экзамена (математика, информатика, SQL, сети), ссылки на материалы для подготовки
- Историческая аналитика — тренды проходных баллов, популярность направлений по годам, прогноз конкурса
- Сообщество — интеграция с Telegram-чатами поступающих, возможность найти абитуриентов с похожими интересами
Для просмотра дерева используйте:
tree -L 3Ключевые пути:
data/ # годовые JSON-снимки
src/index.ts # запуск и маршрутизация
src/cli.ts # интерактивное меню
src/search.ts # поиск и справочники
src/filters.ts # фильтры и статистика
LICENSE # условия использования оригинального кода








