Skip to content
linkerkzPublic

Repository files navigation

Цифровая станция

Система поддержки решений дежурного по железнодорожной станции. Камера сама замечает сбой, система оценивает влияние и предлагает варианты перепланирования, ведёт путейцев и ремонтную бригаду до восстановления и собирает отчёт. Решение всегда за человеком.

Живое демо · Презентация · Видео · кейс «Цифровая станция», ALT Хакатон 2026

Чем отличается

  • Сбой обнаруживает устройство, а не человек. Обычный телефон над стрелкой работает как камера: сам видит изменение в кадре, ИИ проверяет снимок, и на пульте открывается инцидент. Маршруты через стрелку закрываются сразу.
  • Весь цикл кейса, а не только перепланирование. Вызов путейцев на пейджер, варианты против исхода «ничего не менять», согласование с ДНЦ, печатный наряд с QR на чеклист, возврат стрелки в работу, отчёт начальнику станции.
  • Настоящие роли КТЖ. ДСП, ДСЦС, ДНЦ, начальник станции: у каждого свой экран и свои полномочия. «Работы выполнены» от бригады не открывает движение — это делает дежурный.
  • Сеть, а не одна станция. Карта 38 станций с поездами в пути и индексом каждой станции.

Попробовать

Демо: https://alt-hack.vercel.app. Пароль у всех ролей — demo2026.

Роль Логин Что видит
ДСП — дежурный по станции dsp@station.demo пульт Алматы-1: схема, план путей, индекс, инцидент
ДСЦС — станционный диспетчер dscs@station.demo тот же пульт, выбирает вариант перепланирования
ДНЦ — поездной диспетчер dnc@station.demo карта своего диспетчерского круга, согласование вариантов
ДС — начальник станции ds@station.demo пульт без команд, оперативный отчёт и отчёты по инцидентам

Сценарий «предмет в стрелке» (5 минут):

  1. Войдите как ДСП и откройте полевые устройства.
  2. Откройте камеру С3 на телефоне по QR или прямо на ноутбуке и дайте доступ к камере. Поставьте в рамку стрелки любой предмет — на пульте откроется инцидент.
  3. На пульте пройдите ход инцидента: вызов путейцев, «нужен ремонт», выбор варианта, согласование, план работ и наряд, возврат стрелки. Кнопка «Далее» отвечает за участников, которых нет рядом.
  4. Войдите как начальник станции и откройте отчёт по инциденту.

«Сброс» на пульте возвращает станцию в начало сценария.

Как устроено

Телефон-камера ──┐                      ┌── Пульт ДСП / ДСЦС
Пейджер путейцев ┤── Next.js (сервер) ──┼── Карта сети ДНЦ
Чеклист по QR ───┘     │        │       └── Отчёты начальника станции
                 Supabase    OpenRouter
              (Postgres+RLS)  (снимок, план работ)
  • Next.js 16, React 19, TypeScript strict, Tailwind CSS 4. Чтение — в серверных компонентах, запись — Server Actions; пульт перечитывает данные раз в 3 с.
  • Supabase — Postgres с RLS, миграции в supabase/migrations.
  • OpenRouter — vision-модель разбирает снимок камеры, текстовая составляет план работ; у каждой есть запасная.
  • Полевые устройства — PWA, открываются по ссылке без входа; права проверяет сервер.

Код разложен по вертикальным срезам: app/ — только роуты, features/{name} — сценарий целиком, components/ui и lib — общее.

Требование кейса Где в продукте Где в коде
Показывать состояние станции пульт: схема, план путей, индекс, лента событий features/station-console
Выявлять проблемы камера и ИИ, инцидент «подозрение» features/devices
Оценивать влияние прогноз «ничего не менять», затронутые поезда features/station-console/forecast.ts
Предлагать варианты варианты А и Б, согласование ДНЦ features/station-console/options.ts
Показывать последствия сравнение по пяти показателям и индексу features/station-console/metrics.ts
Контролировать выполнение пейджер, наряд с QR, ход инцидента features/work-orders
Формировать историю хронология, отчёт по инциденту, PDF features/incident-report
Обзор сети карта станций и поездов в пути features/network-map

Запуск локально

Нужны Node.js 20.9+ и проект в Supabase.

  1. npm ci
  2. В SQL Editor проекта выполните по порядку все файлы из supabase/migrations, затем supabase/seed.sql и supabase/seed-network.sql. Seed создаёт демо-пользователей, станцию Алматы-1 и сеть.
  3. Скопируйте .env.example в .env.local и заполните ключи.
  4. npm run dev — приложение на http://localhost:3000.

Проверки — npm run lint (Biome), npm run typecheck, npm run build. Хук pre-push гоняет все три.

Документация

  • docs/case_solution.md — продуктовые решения: роли, модель станции, индекс, варианты, сценарий демо
  • docs/hackathon_case.md — исходный кейс
  • docs/core.md — правила кода, структура и словарь терминов
  • docs/ui.md — тема и компоненты интерфейса
  • docs/git_workflow.md — ветки, коммиты, хуки

Прототип: не заменяет СЦБ и электрическую централизацию. Магистрали, коды и координаты станций реальные, показатели станций кроме Алматы-1 — демонстрационные.

Releases

Packages

Contributors

Languages