API
Публичный REST API портала — маршруты /api/v1 по группам.
Публичный API живёт на WEB PORTAL под префиксом /api/v1. Браузер обращается
только сюда; внутренний API NEURO CORE описан
отдельно.
Версия в пути. Ломающее изменение — новый префикс /api/v2, старый продолжает
работать.
Вход в систему
/api/v1/auth/loginВход по техническому ID школьника. Пароль не используется: идентификатор выдаёт школа. При успехе сервер создаёт сессию и кладёт её в httpOnly cookie — токен недоступен из JavaScript.
Технический ID, выданный школой.
{
"student_id": "stu-2041-0187"
}{
"user": {
"id": "u-71bc04",
"role": "student",
"grade": 9
},
"expires_at": "2026-07-13T18:00:00Z"
}Список курсов
/api/v1/coursesВозвращает курсы, доступные текущему пользователю, с кратким прогрессом по каждому. Требует активной сессии.
{
"courses": [
{
"id": "course-01",
"title": "Морские профессии региона",
"modules": 8,
"progress": 0.62
},
{
"id": "course-02",
"title": "Основы судовождения",
"modules": 12,
"progress": 0.0
}
]
}Курс: материалы и прогресс
/api/v1/courses/{id}Материалы курса и детальный прогресс пользователя по модулям.
Идентификатор курса в пути запроса.
{
"id": "course-01",
"title": "Морские профессии региона",
"modules": [
{
"id": "m-1",
"title": "Порт и логистика",
"completed": true
},
{
"id": "m-2",
"title": "Судовождение",
"completed": false
}
],
"progress": 0.62
}Список диалогов ассистента
/api/v1/assistant/sessionsДиалоги текущего пользователя с ИИ-ассистентом, отсортированы по последней активности.
{
"sessions": [
{
"id": "s-3f9a12",
"title": "Профессии моря",
"updated_at": "2026-07-12T14:03:11Z"
}
]
}Начать диалог
/api/v1/assistant/sessionsСоздаёт новый диалог с ассистентом. Тело можно не передавать — сценарий по умолчанию общий.
Сценарий диалога, например career. Необязателен.
{
"scenario": "career"
}{
"id": "s-8c2e77",
"scenario": "career",
"created_at": "2026-07-13T09:15:40Z"
}История сообщений
/api/v1/assistant/sessions/{id}/messagesСообщения диалога в хронологическом порядке. RBAC: пользователь видит только собственные диалоги.
Идентификатор диалога в пути запроса.
{
"messages": [
{
"id": "msg-01",
"role": "user",
"text": "Какие профессии связаны с морем?"
},
{
"id": "msg-02",
"role": "assistant",
"text": "Судовождение — одна из ключевых профессий региона…"
}
]
}Отправить сообщение
/api/v1/assistant/sessions/{id}/messagesОтправляет вопрос ассистенту. Ответ — поток токенов через WebSocket (см. Realtime), а не обычный JSON.
Идентификатор диалога в пути запроса.
Текст сообщения пользователя.
Что происходит внутри:
- RBAC: школьник владеет сессией.
- Проверка кэша LLM в Redis — попадание отвечает мгновенно.
- Обезличивание данных.
POST /v1/chatна NEURO CORE, стрим ответа в WebSocket.- Диалог сохраняет NEURO CORE Service — портал в MongoDB не пишет.
{
"text": "Какие профессии связаны с морем в нашем регионе?"
}{ "type": "token", "data": "Судово" }
{ "type": "token", "data": "ждение — " }
{ "type": "done", "data": { "message_id": "msg-03" } }Рекомендации профориентации
/api/v1/career/recommendationsРекомендации для пользователя: профили обучения, профессии и образовательные маршруты.
{
"profiles": ["инженерный", "морской"],
"professions": [
{
"title": "Судоводитель",
"match": 0.87
},
{
"title": "Инженер порта",
"match": 0.74
}
],
"routes": [
{
"title": "Морской колледж → судоводитель",
"steps": 3
}
]
}Профиль интересов
/api/v1/career/interestsПрофиль интересов пользователя и его динамика по времени.
{
"interests": [
{ "tag": "море", "weight": 0.92 },
{ "tag": "техника", "weight": 0.71 }
],
"dynamics": [
{ "month": "2026-05", "top": "техника" },
{ "month": "2026-06", "top": "море" }
]
}Админка
Группа маршрутов /api/v1/admin/... (все методы) — школы, курсы, опросы и
аналитика. Доступ разграничен
ролями RBAC; детальные поля описываются по мере стабилизации админки.
В MVP материалы RAG загружаются через папку private_knowledge на NEURO CORE,
не через API. Загрузка через админку — следующий этап.
GET /api/v1/admin/schools
POST /api/v1/admin/courses
GET /api/v1/admin/analytics/usageНе является API
MongoDB, Qdrant, vLLM, ingest worker и Redis — внутренние компоненты. Из интернета к ним не обратиться: только через Go-API портала или NEURO CORE Service.