AAYMA
RU
Войти

Career Quest

AI-навигатор развития сотрудника Halyk: по профилю, истории и требованиям следующего грейда подбирает 1–3 шага развития с объяснением и what-if…

Доведённый продукт
Команда «AI-solutions» 58💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: AI-solutions
Кейс HackAlem.ai: Менеджмент — Halyk Bank · кейс 1
Стадия: Доведённый продукт

Задача кейса: «Career Quest»: AI-навигатор, связывающий навыки сотрудника с шагами развития

Суть

AI-навигатор развития сотрудника Halyk: по профилю, истории и требованиям следующего грейда подбирает 1–3 шага развития с объяснением и what-if прогнозом карьерной готовности; есть HR-аналитика, Trust Center, обмен навыками и внешние курсы.

Как устроено

Импорт данных через Zod → нормализованный датасет → replay истории → разрывы по целевому грейду → жёсткие фильтры eligibility → детерминированный многофакторный ранжир (критичность разрыва, история, выполнимость, цель, разнообразие) → Evidence Receipt. Digital Twin показывает what-if по readiness и план шагов; опциональный LLM работает как ограниченный критик и HR-агент с tool calling поверх вычисленных фактов, без ключа — детерминированные объяснения. Интерфейс на RU/KK/EN.

Ключевые решения

  • multi-factor deterministic ranking
  • history replay
  • what-if simulation
  • tool-calling HR agent
  • bounded LLM critic
  • Zod validation
  • gamification

Особенности

Рекомендуется не самый слабый навык, а следующий лучший карьерный шаг; Trust Center проверяет сам AI (нарушения eligibility, подтверждённость чисел, latency, работа без LLM); внешние курсы изолированы от скоринга и не дают выдуманного прироста.

Стек

TypeScript · Next.js · React · Zod · Node 22 · pnpm · Docker · GitHub Actions

Модели

gpt-4.1-mini


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-7de27e4a-ai-solutions.

README

README.md

Career Quest

Career Quest recommends not the weakest skill, but the next best career move.

AI-навигатор развития сотрудника: по профилю, истории участия и требованиям следующего грейда система подбирает 1–3 шага развития, объясняет каждый минимум по трём факторам и показывает, как сдвинется карьерная готовность — до того, как человек потратит на это время.

HackAlem AI · трек Halyk Bank · кейс Career Quest Команда: Алихан (Intelligence), Манахнбет (Experience), Даник (Trust)

Employee, HR, Trust и Skill Exchange используют общую демо-идентификацию. Адреса / и /demo перенаправляют в кабинет сотрудника /employee.

Почему наше решение другое

Decision EngineМногофакторный детерминированный выбор: разрыв по навыкам с приоритетом критичных, история участия, выполнимость, цель, разнообразие. Не один prompt и не «самый низкий навык».
Digital TwinКарьерный эффект виден до выполнения активности: what-if по уровням и readiness, план на несколько шагов, подтверждение с пересчётом.
Trust CenterУ каждого решения есть Evidence Receipt. Баг-репорт на сам AI: нарушения eligibility, подтверждённость чисел, корректность пересчёта истории, latency, поведение без LLM.
Внешнее обучениеОтдельный offline-каталог для разрывов без доступной внутренней активности; без выдуманного прироста и без влияния на рекомендации или readiness.

Быстрый старт

pnpm install --frozen-lockfile
pnpm dev

Открыть http://localhost:3000, нажать «Посмотреть демо» и выбрать синтетический профиль. Сервер устанавливает подписанную cookie: сотруднику отдаётся только его профиль и история, HR-профилю — организационный набор для аналитики. Выбор демо-персоны не является корпоративным входом или SSO.

В навигации доступны «Моя траектория», «HR-аналитика», «Проверка решений» и «Обмен навыками» (/chat). Кнопки «Сотрудник» / «HR» открывают нужный кабинет; для HR требуется выбор HR-профиля. Собственные файлы можно импортировать локально через экран сотрудника — они остаются в браузере.

Общий переключатель «Язык» в верхней панели меняет интерфейс, форматы чисел и дат и язык AI-объяснений: Қазақша (kk) / Русский (ru) / English (en). Выбор сохраняется в браузере и восстанавливается после перезагрузки. Язык интерфейса не зависит от preferred_language выбранного сотрудника: смена профиля его не меняет.

Docker:

docker compose up --build

Для production без Docker: pnpm build, затем pnpm start. pnpm start и Docker при пустом SESSION_SECRET создают и сохраняют ключ демо-сессий в data/runtime/session-secret; можно задать свой секрет от 32 байт. В dev ключ живёт в процессе: после перезапуска нужно снова выбрать профиль. Runtime-каталог исключён из Git и Docker build context; Compose сохраняет его в volume.

Если опциональные LLM-переменные заданы в .env.local, передать их Compose явно:

docker compose --env-file .env.local up --build

LLM-ключ не обязателен. Без него приложение работает полностью: тот же ranking и детерминированные объяснения. Ключ включает bounded-критика и HR-агента поверх вычисленных фактов. Переменные — в .env.example.

Требуется Node 22 и pnpm (corepack enable).

Настройка AI для демо

Скопировать .env.example в .env.local рядом с package.json, если файла ещё нет (cp .env.example .env.local или PowerShell Copy-Item .env.example .env.local). Действующий ключ задаётся локально как LLM_API_KEY; альтернативно сервер читает OPENAI_API_KEY из окружения ОС. Непустой LLM_API_KEY имеет приоритет. Значения по умолчанию: https://api.openai.com/v1, gpt-4.1-mini. Для другого OpenAI-compatible провайдера задать его URL и модель явно. После изменения окружения перезапустить сервер; ключи не входят в Git или Docker image.

Compose передаёт переменные при запуске: docker compose --env-file .env.local up --build. Bounded-критик использует LLM_TIMEOUT_MS=2500 (100–3000 мс); HR Agent — отдельный LLM_AGENT_TIMEOUT_MS=10000 на обращение к модели.

Для проверки выбрать HR-персону и открыть /hr. Статус /api/ai/agent доступен только подписанному HR: available означает наличие конфигурации, не успешный вызов провайдера. Полный AI-сценарий подтверждается ответом на вопрос и пройденной проверкой фактов; ошибка доступа/сети/лимита остаётся видимой. Без обоих ключей работает fallback. Live-проверка ключа, описанная в PR #15, относится к машине автора и не заменяет проверку настроек текущего запуска; здесь аудит не отправляет платные запросы.

Демо-сценарий

Выбрать демо-профиль E0028: System Design после replay равен 3, EV_006 повторно не предлагается. Примерить и подтвердить Leadership Foundations: readiness 74% → 78%. Открыть HR: число добровольных завершений увеличится с 1044 до 1045. Открыть Trust и запустить проверки; затем вернуться к сотруднику — профиль и журнал сохранятся.

Полный скрипт: docs/DEMO.md.

Skill Exchange

Поиск наставников помогает закрывать разрывы через опыт коллег. Доступны фильтры по навыку, отделу, роли и готовности помогать; карточка показывает только имя, роль, грейд, уровень запрошенного навыка и доступность. Можно отправить запрос, принять или отклонить его, переписываться и закрыть диалог.

На snapshot 2026-10-01 у 125 из 200 сотрудников есть хотя бы один критичный разрыв без доступной сейчас активности с положительным effective gain: 188 пар «сотрудник — навык». Методика и границы этой метрики — в docs/EVALUATION.md.

Переписка сохраняется на сервере в JSON-файле, включая непрочитанные и доступность. Сообщения — обычный текст до 2000 символов; лимит — 20 сообщений в минуту на identity. Обновления опрашиваются каждые 3 секунды в видимой вкладке. Для двух участников используйте разные профили браузера или приватное окно: обычные вкладки делят cookie.

Поиск по локальному импорту работает в браузере; серверный чат использует только встроенный набор и выбранную демо-идентификацию. Подробности и приёмка: docs/SKILL_EXCHANGE.md.

Дополнительные профили жюри

Загрузчик принимает 1–4 файла с режимами «Дополнить» / «Заменить». Профили и историю с нестандартными именами распознаёт по содержимому; неоднозначный тип выбирается вручную. Недостающие части берутся из текущего набора. Слияние проходит общую валидацию, показывает сводку добавлений/обновлений, отклонённых строк и переход к новым профилям. Лимит — 10 МБ на файл; BOM и CRLF поддерживаются. Без загруженной базы нужны все четыре части. Дополнение использует свежий normalized snapshot: подтверждённые навыки и история входят в новый набор без повторного gain. Журнал, preview и план импорта сбрасываются — UI сообщает об этом заранее.

База дополнения ограничена текущим доступом: employee demo содержит собственный профиль, HR demo — организационный набор. Фикстура fixtures/judge/judge_profiles.json добавляет три профиля; результат 200 → 203 относится к полному исходному набору, а не к private employee view. Импорт не превращает judge-профили в серверные chat identities. При переходе в чат импорт сохраняется; автор переписки явно указан как подписанная demo-персона. После reload локальный импорт сбрасывается и возвращается доступный demo-набор.

Внешнее обучение

Если для разрыва нет доступного внутреннего шага, раскрываемый блок «Внешние курсы» предлагает варианты из локального курируемого data/external_courses.json (35 записей). Подбор учитывает уровень, предпочитаемый язык профиля, бесплатность и длительность. UI показывает источник, языки, длительность и пометку «бесплатно/платно»; HR — потенциальную аудиторию по языку и подходящему уровню без персонального рейтинга. Employee показывает первые три направления и до трёх курсов на навык; HR-блок относится ко всей организации и скрывается при фильтрации аналитики по роли.

Внешние курсы не участвуют в top-3, score или readiness, не начисляют подтверждённый прирост и не записываются в ledger. Каталог работает без provider API и scraping; ссылки проверяются по HTTPS и allowlist доменов. Доступность и стоимость на стороне провайдера не проверяются в реальном времени. Эффект курса не подтверждён данными компании.

Архитектура

Экономика развития

В кабинете сотрудника доступен личный баланс по добровольным завершениям, каталог демо-наград, добровольные вызовы и отказ от участия. Обязательные события не дают баллов; публичного рейтинга нет. Баланс выводится из истории и текущего ledger, подтверждённое событие не учитывается дважды.

Это демо-механика без оплаты или выдачи наград: обмен, принятые вызовы и opt-out сохраняются только до ухода со страницы или нового импорта и не передаются HR. Чат пока не начисляет баллы за наставничество или благодарности. Данные правил и каталога версионированы в data/gamification_rules.json и data/rewards.json.

Общий поток

Next.js + TypeScript. Согласованный интерфейс на RU/KK/EN использует AppProviders, IdentityProvider и один sharedEmployeeStore. Сервер ограничивает demo dataset выбранной identity: свой профиль для сотрудника, полный набор для HR. Журнал развития хранится в памяти; demo snapshots восстанавливаются при повторном выборе персоны в текущей вкладке. Прогресс локального импорта отделён от demo.

Import (Zod) -> NormalizedDataset -> history replay -> target gaps
   -> hard filters -> multi-factor ranking -> Evidence Receipt
        ├─> Employee Digital Twin (what-if, planner, ledger)
        ├─> HR Command Center (агрегаты, no-step alerts)
        └─> AI Trust Center (baseline, evals, fallback)

Для объяснений текущий UI обращается к /api/ai/explain: передаёт язык интерфейса и ограниченные числовые evidence-факты по кандидатам, включая импортированные наборы. Сохранённый /api/ai/review принимает только ID и восстанавливает evidence на сервере из встроенного набора; доступ разрешён к собственному профилю либо HR. Контракты этих endpoints различаются.

Модули из принятого main 0d068536 объединены с Skill Exchange и согласованным UI. Альтернативные CareerQuestStore, IndexedDB и старый XP-модуль не подключены к активным страницам; новый DevelopmentEconomy использует текущий normalized store. Private Employee projection теперь применяется сервером при выдаче demo dataset. Переписка хранится отдельно от карьерного ledger в data/runtime/messages.json.

HR Agent и участие

HR видит фактическое участие за 6 и 12 месяцев: добровольные активности, инициатора участия, пропуски/отказы/выходы и отдельно обязательные процессы. Это операционный срез, не прогноз увольнения или публичный рейтинг.

HR Agent использует шесть инструментов только для чтения текущего snapshot, максимум пять вызовов на запуск. /api/ai/agent требует подписанную HR identity и ограничивает размер тела, частоту и одновременные обращения. Клиент проверяет числовые ответы относительно фактических результатов инструментов. Без ключа панель явно сообщает об отсутствии AI; обычные HR-таблицы продолжают работать.

Вопрос и разрешённые числовые факты/ID передаются модели; их происхождение из локального импорта сервер не восстанавливает. Свободный текст агента требует оценки HR.

Подробно: docs/ARCHITECTURE.md · контракты: docs/CONTRACTS.md · данные: docs/DATASET.md.

Как считается рекомендация

Перед любым расчётом движок доигрывает историю: уровни в профиле актуальны на last_review_date, а всё завершённое позже ещё не учтено. В стартовом наборе 318 таких completed-записей; 202 записи у 114 сотрудников содержат заявленные эффекты навыков. После применения cap фактический положительный replay дают 186 записей у 111 сотрудников.

Hard-фильтры (до скоринга): mandatory, несоответствие роли/грейду, невыполненные prerequisites, уже пройденное (кроме recurring EV_036), нулевой effective gain, отсутствие будущей сессии.

Ранжирование:

ФакторВес
Target gap impact (critical skills ×2)45%
Engagement fit (история, self vs assigned)20%
Feasibility (prerequisites, формат, сессия)15%
Goal alignment (в т.ч. cross-role цели)10%
Path / diversity10%

effective_gain = max(0, min(current + gain, max_level, 5) - current) — правило роста задано самим датасетом, не придумано нами.

Результаты проверки

Объединённая версия с актуальным main 4da973a (включая PR #13/#15) и Skill Exchange прошла 366/366 тестов в 43 файлах — PASS (2026-09-23). Production-сборка с полной проверкой TypeScript — PASS, Next.js 16.3.6, без предупреждений. Bootstrap прошёл 7 локальных процессных сценариев: генерация/повторное использование ключа, явная конфигурация, неверный ключ и отказ runtime-хранилища.

В браузере подтверждены двусторонняя переписка E0028 ↔ E0050, принятие, непрочитанные/прочтение, plain text и сохранение после reload; HR видит агрегаты без чужих диалогов. RU/KK/EN и экран 375 px без overflow проверены. Completion E0028 дал readiness 74% → 78%, HR — 1045 добровольных завершений; возврат к E0028 сохранил 78% и одну запись ledger. Ошибок/warnings console нет. Polling проверен unit-тестами; delivery без ручного refresh отдельно не измерялась. Импорт жюри в браузере: HR-набор 200 → 203 профиля, +4 записи истории, 2 отклонённые строки с причинами; J0001 открывается с readiness 58% и межролевой целью Product Manager Middle. Переход chat → employee сохраняет импортированные 203 профиля и выбранный J0001. Docker текущей версии не запускался, CI не использовался.

Результаты прежних этапов — 117/14, 152/19 (PR #6), 168/21 и 223/28 — исторические. Подробности: docs/INTEGRATION.md.

Стандартные команды проверки из корня проекта:

pnpm test
pnpm typecheck
pnpm build

GitHub Actions ранее был заблокирован из-за billing аккаунта до запуска команд проекта. Workflow синхронизирован с принятой командой версией: запуск только вручную через workflow_dispatch. CI в этой проверке не запускался. Windows spawn EPERM из исторического отчёта PR #7 относится к запуску инструментов на том хосте; локальные адаптации здесь сохраняют полный набор тестов и проверку TypeScript. Детали команд и ограничений: docs/INTEGRATION.md.

Метрики и adversarial-кейсы: docs/EVALUATION.md.

Приватность и отказоустойчивость

  • Исходные импортированные файлы и полная история остаются в браузере; серверной БД нет.
  • Demo Employee получает только собственный профиль и историю; HR получает полный организационный набор для аналитики. Сервер проверяет подписанную identity.
  • Диалог доступен только его участникам. HR получает общие счётчики чата; тексты, участники и темы чужих диалогов не выдаются.
  • В LLM уходят только evidence-факты по top-кандидатам — никогда raw-профиль и история.
  • Ответ модели проходит Zod-схему и fact verifier: неизвестный ID, изменённое число или неподтверждённое утверждение блокируются.
  • Текст из датасета трактуется как данные, а не как инструкции (защита от prompt injection).
  • Без ключа или при ошибке модели — полноценный детерминированный режим.
  • /api/ai/explain проверяет ответ относительно присланного evidence; происхождение импортированных фактов сервером не подтверждается. /api/ai/review использует серверный встроенный набор. Оба route ограничивают origin, JSON, размер тела и частоту запросов.
  • /api/ai/agent разрешён только HR; инструменты не изменяют данные и не отправляют raw-профили/историю. Числовой grounding не доказывает причинность выводов агента.
  • Демо-персоны свободно выбираются из синтетического набора; для production нужен SSO. Публичных рейтингов сотрудников нет.

Ограничения

  • Перезагрузка сбрасывает импорт и карьерный ledger. Переписка сохраняется в JSON-файле и переживает перезапуск с тем же runtime-каталогом.
  • Демо-идентификация не доказывает личность пользователя; приложение предназначено для синтетических данных.
  • JSON-хранилище чата рассчитано на один процесс и демо-объёмы. Нет push, вложений, редактирования/удаления сообщений и шифрования переписки. Вместо WebSockets используется опрос.
  • Beam search ограничен шириной 10 и глубиной 4; календарная совместимость активностей не рассчитывается.
  • Живой платный LLM-провайдер не вызывался при проверке; протестированы проверенные ответы, отказ, таймаут и режим без ключа. AI не меняет порядок рекомендаций.
  • Docker-конфигурация с runtime volume подготовлена; контейнер текущей версии здесь не запускался.

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

ФайлО чём
docs/ARCHITECTURE.mdТехническая модель, формула, release gates
docs/DATASET.mdПроверенные факты о данных и доменные правила
docs/CONTRACTS.mdОбщие типы и публичный API ядра
docs/PLAYBOOK.mdПлан на 5 часов, feature gates, checklist
docs/WORKSTREAMS.mdГотовые Codex-задания по потокам
docs/EVALUATION.mdМетрики и adversarial-кейсы
docs/SKILL_EXCHANGE.mdНаставники, переписка, приватность и приёмка
docs/REQUIREMENTS_AUDIT.mdМатрица исходных ТЗ, фактические проверки и ограничения
docs/DEMO.mdДемо-скрипт на 90 секунд
AGENTS.mdПравила для AI-агентов
CONTRIBUTING.mdВетки, коммиты, merge, handshake

Данные синтетические, предоставлены организаторами. Реальные персональные данные не используются.

Для стороннего LLM_BASE_URL требуется явный LLM_API_KEY: ключ OPENAI_API_KEY автоматически используется только для https://api.openai.com.

Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
48
Авторы
4
Файлы
256
Ветки
10

Авторы коммитов

Alikhan Aitzhanov 24Alikhan 11nneznauu 7Alikhan Aitzhanov 6

История коммитов

  • 2026-09-23 17:55Merge pull request #17 from BAITC-Hacks/feat/skill-exchange-integrated-reviewAlikhan
  • 2026-09-23 17:54docs: add the Docker deployment guideAlikhan Aitzhanov
  • 2026-09-23 17:53feat: ship Skill Exchange mentor chat and integrated requirements fixesAlikhan
  • 2026-09-23 17:53docs: surface the run requirements and the LLM key note at the topAlikhan Aitzhanov
  • 2026-09-23 17:49docs: add a hero screenshot and document the jury importAlikhan Aitzhanov
  • 2026-09-23 17:46merge: sync HR event builder with mainAlikhan Aitzhanov
  • 2026-09-23 17:42Merge pull request #13 from BAITC-Hacks/chore/repo-presentationAlikhan Aitzhanov
  • 2026-09-23 17:41fix: harden event builder integrationAlikhan Aitzhanov
Все коммиты (48)
  • 2026-09-23 17:41feat: add HR event builder and calendar exportAlikhan Aitzhanov
  • 2026-09-23 17:40Merge PR #15: reproducible local OpenAI setupnneznauu
  • 2026-09-23 17:39fix(ai): make local OpenAI configuration reproducible without publishing secretsnneznauu
  • 2026-09-23 17:35docs: make the repository readable for a first-time visitorAlikhan Aitzhanov
  • 2026-09-23 17:28Merge PR #7: HR agent, development participation and RU/KK/ENnneznauu
  • 2026-09-23 17:28Merge pull request #12 from BAITC-Hacks/feat/gamificationAlikhan Aitzhanov
  • 2026-09-23 17:27merge: sync Danik HR trust with main and preserve localized interfacesnneznauu
  • 2026-09-23 17:24feat: add the development points economyAlikhan Aitzhanov
  • 2026-09-23 17:14Merge pull request #11 from BAITC-Hacks/feat/judge-profile-importAlikhan Aitzhanov
  • 2026-09-23 17:14Merge pull request #10 from BAITC-Hacks/codex/external-learning-layerAlikhan Aitzhanov
  • 2026-09-23 17:10feat: accept the jury's extra profiles on importAlikhan Aitzhanov
  • 2026-09-23 17:10feat: add external learning layerAlikhan Aitzhanov
  • 2026-09-23 16:53Merge pull request #9 from BAITC-Hacks/fix/approved-ui-demo-modesAlikhan
  • 2026-09-23 16:51fix: preserve trilingual UI and improve employee HR switchingAlikhan
  • 2026-09-23 16:37Merge pull request #6 from BAITC-Hacks/codex/career-quest-releaseAlikhan Aitzhanov
  • 2026-09-23 16:35merge: sync Career Quest release with mainAlikhan Aitzhanov
  • 2026-09-23 16:30docs: add specs for judge import, HR event builder and gamificationAlikhan Aitzhanov
  • 2026-09-23 16:29Merge pull request #8 from BAITC-Hacks/feat/halyk-ui-i18nAlikhan
  • 2026-09-23 16:28feat: redesign Career Quest and add consistent ru kk en localizationAlikhan
  • 2026-09-23 16:27feat(hr): add grounded tool-calling agent and development participation analysisnneznauu
  • 2026-09-23 16:26feat: complete Career Quest integrated experienceAlikhan Aitzhanov
  • 2026-09-23 15:54docs: add full specs for Skill Exchange and external coursesAlikhan Aitzhanov
  • 2026-09-23 15:46Merge pull request #5 from BAITC-Hacks/fix/unify-career-questAlikhan
  • 2026-09-23 15:45fix: unify employee, HR and Trust in one shared app sessionAlikhan
  • 2026-09-23 15:31docs: record the PR #3 duplicate-workstream decisionAlikhan Aitzhanov
  • 2026-09-23 15:26docs: add advanced-feature briefs for the next Codex roundAlikhan Aitzhanov
  • 2026-09-23 15:11Merge pull request #4 from BAITC-Hacks/feat/danik-hr-trustnneznauu
  • 2026-09-23 15:09Merge pull request #2 from BAITC-Hacks/feat/manahnbet-digital-twinAlikhan
  • 2026-09-23 15:00feat(B): integrate Employee Digital Twin with real intelligence engineAlikhan
  • 2026-09-23 14:59feat: build Career Quest digital twin experienceAlikhan Aitzhanov
  • 2026-09-23 14:56feat(trust): add HR analytics, bounded AI review and live evaluationnneznauu
  • 2026-09-23 14:34feat: implement employee digital twin, simulation and session ledgerAlikhan
  • 2026-09-23 14:31Merge pull request #1 from BAITC-Hacks/feat/alihan-intelligenceAlikhan Aitzhanov
  • 2026-09-23 14:29chore: restore standard CI after billing diagnosisAlikhan Aitzhanov
  • 2026-09-23 14:27fix: make CI independent of reusable actionsAlikhan Aitzhanov
  • 2026-09-23 14:25fix: use organization-safe CI setupAlikhan Aitzhanov
  • 2026-09-23 14:19fix: make standalone Docker build runnableAlikhan Aitzhanov
  • 2026-09-23 14:09merge: sync project environment and docs from mainAlikhan Aitzhanov
  • 2026-09-23 14:08chore: set up project environment and team documentationAlikhan Aitzhanov
  • 2026-09-23 14:05feat: build Career Quest intelligence engineAlikhan Aitzhanov
Структура репозитория (256 файлов)
.dockerignore
.editorconfig
.env.example
.github/CODEOWNERS
.github/pull_request_template.md
.github/workflows/ci.yml
.gitignore
.nvmrc
AGENTS.md
CLAUDE.md
CONTRIBUTING.md
Dockerfile
README.md
data/external_courses.json
data/gamification_rules.json
data/rewards.json
data/source/README.md
data/source/activity_history.csv
data/source/employees.json
data/source/events.json
data/source/skills.json
docker-compose.yml
docs/ADVANCED_FEATURES.md
docs/ARCHITECTURE.md
docs/CONTRACTS.md
docs/DATASET.md
docs/DECISIONS.md
docs/DEMO.md
docs/EVALUATION.md
docs/INTEGRATION.md
docs/PLAYBOOK.md
docs/REQUIREMENTS_AUDIT.md
docs/SKILL_EXCHANGE.md
docs/WORKSTREAMS.md
docs/tz/ALIKHAN.md
docs/tz/DANIK.md
docs/tz/EVENT_BUILDER.md
docs/tz/EXTERNAL_COURSES.md
docs/tz/GAMIFICATION.md
docs/tz/JUDGE_IMPORT.md
docs/tz/MANAHNBET.md
docs/tz/SKILL_EXCHANGE.md
fixtures/judge/employees.json
fixtures/judge/judge_history.csv
fixtures/judge/judge_profiles.json
next-env.d.ts
next.config.ts
package.json
pnpm-lock.yaml
public/.gitkeep
scripts/start-demo.cjs
src/app/AppProviders.tsx
src/app/api/ai/agent/provider.ts
src/app/api/ai/agent/route.ts
src/app/api/ai/agent/service.ts
src/app/api/ai/explain/route.ts
src/app/api/ai/provider-config.ts
src/app/api/ai/review/provider.ts
src/app/api/ai/review/route.ts
src/app/api/ai/review/service.ts
src/app/api/demo-dataset/route.ts
src/app/api/identity/people/route.ts
src/app/api/identity/session/route.ts
src/app/api/mentorship/availability/route.ts
src/app/api/mentorship/catalog/route.ts
src/app/api/mentorship/search/route.ts
src/app/api/messages/summary/route.ts
src/app/api/messages/threads/[id]/messages/route.ts
src/app/api/messages/threads/[id]/read/route.ts
src/app/api/messages/threads/[id]/route.ts
src/app/api/messages/threads/route.ts
src/app/api/messages/updates/route.ts
src/app/chat/page.tsx
src/app/demo/page.tsx
src/app/employee/page.tsx
src/app/globals.css
src/app/hr/page.tsx
src/app/layout.tsx
src/app/page.tsx
src/app/trust/page.tsx
src/components/app-navigation.tsx
src/components/app/AppShell.tsx
src/components/app/DemoModeContext.tsx
src/components/app/app-shell.module.css
src/components/chat/ChatWorkspace.tsx
src/components/chat/MentorSearch.tsx
src/components/chat/RequestDialog.tsx
src/components/chat/ThreadPanel.tsx
src/components/chat/api.ts
src/components/chat/chat.module.css
src/components/chat/copy.ts
src/components/chat/useChatInbox.ts
src/components/employee/DatasetUpload.tsx
src/components/employee/EmployeeWorkspace.tsx
src/components/employee/Modal.tsx
src/components/employee/ai-explanation.ts
src/components/employee/career-dashboard.module.css
src/components/employee/career-dashboard.tsx
src/components/employee/employee.module.css
src/components/employee/external-learning-section.module.css
src/components/employee/external-learning-section.tsx
src/components/employee/useEmployeeExplanation.ts
src/components/gamification/DevelopmentEconomy.tsx
src/components/hr/DropoutPanel.tsx
src/components/hr/HRAgentPanel.tsx
src/components/hr/HRDashboard.tsx
src/components/hr/dashboard.module.css
src/components/hr/external-learning-section.module.css
src/components/hr/external-learning-section.tsx
src/components/hr/hr-command-center.module.css
src/components/hr/hr-command-center.tsx
src/components/hr/panel-localization.ts
src/components/identity/IdentityProvider.tsx
src/components/identity/identity.module.css
src/components/mentorship/MentorSuggestions.tsx
src/components/mentorship/mentor-suggestions.module.css
src/components/trust/EmployeeStoreTrustBridge.tsx
src/components/trust/Surface.tsx
src/components/trust/TrustDashboard.tsx
src/components/trust/integration.tsx
src/components/trust/trust-center.module.css
src/components/trust/trust-center.tsx
src/domain/analytics/core-adapter.ts
src/domain/analytics/dropout.ts
src/domain/analytics/hr-analytics.ts
src/domain/analytics/index.ts
src/domain/analytics/selectors.ts
src/domain/analytics/store-adapter.ts
src/domain/analytics/types.ts
src/domain/data/employee-view.ts
src/domain/data/importer.ts
src/domain/data/index.ts
src/domain/data/judge-import.ts
src/domain/data/schemas.ts
src/domain/data/server.ts
src/domain/external/catalog.ts
src/domain/external/index.ts
src/domain/external/schema.ts
src/domain/external/selection.ts
src/domain/gamification/aggregate.ts
src/domain/gamification/challenges.ts
src/domain/gamification/completions.ts
src/domain/gamification/config.ts
src/domain/gamification/earn.ts
src/domain/gamification/index.ts
src/domain/gamification/recognition.ts
src/domain/gamification/redeem.ts
src/domain/gamification/types.ts
src/domain/mentorship/index.ts
src/domain/recommendation/eligibility.ts
src/domain/recommendation/explanation.ts
src/domain/recommendation/index.ts
src/domain/recommendation/profile.ts
src/domain/recommendation/recommend.ts
src/domain/recommendation/scoring.ts
src/domain/simulation/experience.ts
src/domain/simulation/index.ts
src/domain/simulation/ledger.ts
src/domain/simulation/planner.ts
src/domain/simulation/simulator.ts
src/lib/contracts/dataset.ts
src/lib/contracts/index.ts
src/lib/contracts/recommendation.ts
src/lib/evaluation/ADVANCED_HANDOFF.md
src/lib/evaluation/HANDOFF.md
src/lib/evaluation/agent-client.ts
src/lib/evaluation/agent-contracts.ts
src/lib/evaluation/agent-grounding.ts
src/lib/evaluation/agent-tools.ts
src/lib/evaluation/ai-contracts.ts
src/lib/evaluation/ai-suite.ts
src/lib/evaluation/baseline.ts
src/lib/evaluation/client.ts
src/lib/evaluation/core-cases.ts
src/lib/evaluation/core-evidence.ts
src/lib/evaluation/critic.ts
src/lib/evaluation/dataset-audit.ts
src/lib/evaluation/explanations.ts
src/lib/evaluation/harness.ts
src/lib/evaluation/index.ts
src/lib/evaluation/trust-metrics.ts
src/lib/evaluation/use-active-dataset.ts
src/lib/evaluation/verifier.ts
src/lib/i18n/I18nProvider.tsx
src/lib/i18n/core.ts
src/lib/i18n/domain.ts
src/lib/identity/http.ts
src/lib/identity/index.ts
src/lib/identity/types.ts
src/server/messaging/api.ts
src/server/messaging/store.ts
src/server/messaging/types.ts
src/state/EmployeeStoreProvider.tsx
src/state/HANDOFF.md
src/state/ai-review.ts
src/state/career-quest-store.ts
src/state/createIntelligenceAdapter.ts
src/state/dataset-import.ts
src/state/employeeStore.ts
src/state/intelligenceAdapter.ts
src/state/progress-ledger.ts
src/state/realIntelligenceAdapter.ts
src/state/sharedEmployeeStore.ts
tests/chat/ui.test.ts
tests/evaluation/agent-client.test.ts
tests/evaluation/agent-grounding.test.ts
tests/evaluation/agent-server.test.ts
tests/evaluation/agent-tools.test.ts
tests/evaluation/ai-route-guards.test.ts
tests/evaluation/ai.test.ts
tests/evaluation/analytics.test.ts
tests/evaluation/core-integration.test.ts
tests/evaluation/dataset-audit.test.ts
tests/evaluation/dropout.test.ts
tests/evaluation/evidence-route.test.ts
tests/evaluation/fixtures.ts
tests/evaluation/harness.test.ts
tests/evaluation/hr-analytics.test.ts
tests/evaluation/panel-localization.test.ts
tests/evaluation/privacy-boundary.test.ts
tests/evaluation/provider-config.test.ts
tests/evaluation/reference-report.json
tests/evaluation/release-ui.test.ts
tests/evaluation/route.test.ts
tests/evaluation/styles.d.ts
tests/evaluation/trust-workstream.test.ts
tests/evaluation/ui.test.ts
tests/evaluation/vitest.windows.config.mts
tests/external/external-learning-active-ui.test.ts
tests/external/external-learning.test.ts
tests/gamification/gamification-active.test.ts
tests/gamification/gamification.test.ts
tests/import/identity-append.test.ts
tests/import/judge-import.test.ts
tests/integration/i18n.test.ts
tests/integration/shared-state.test.ts
tests/mentorship/search.test.ts
tests/mentorship/suggestions.test.ts
tests/mentorship/workspace-access.test.ts
tests/messaging/api.test.ts
tests/messaging/fixtures.ts
tests/messaging/identity.test.ts
tests/messaging/store.test.ts
tests/recommendation/importer.test.ts
tests/recommendation/recommendation.test.ts
tests/recommendation/test-utils.ts
tests/simulation/.gitignore
tests/simulation/ai-explanation.test.ts
tests/simulation/client-adapters.test.ts
tests/simulation/employee-locales.test.ts
tests/simulation/experience.test.ts
tests/simulation/fixture.ts
tests/simulation/real-data.test.ts
tests/simulation/simulation.test.ts
tsconfig.json
vitest.config.ts
Ветки (10)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.