AEVIX
Платформа карьерного развития сотрудников: рекомендует карьерные квесты по skill gaps и целевому грейду, объясняет выбор через AI и генерирует шаги…
О проекте
Команда: Aevix
Кейс HackAlem.ai: Менеджмент — Halyk Bank · кейс 1
Стадия: Рабочий MVP
Задача кейса: «Career Quest»: AI-навигатор, связывающий навыки сотрудника с шагами развития
Суть
Платформа карьерного развития сотрудников: рекомендует карьерные квесты по skill gaps и целевому грейду, объясняет выбор через AI и генерирует шаги, с геймификацией (Growth Coins, «карьерный город»), парным обучением, ESG-целями и HR-аналитикой.
Как устроено
Датасет кейса (employees.json, events.json, skills.json, activity_history.csv) загружается в SQLite через API импорта. Детерминированный движок считает score квеста по skill gaps, целевому грейду, impact, prerequisites и истории активностей. OpenAI Responses API формулирует объяснение рекомендации и план из 3–5 шагов; без ключа используются шаблонные ответы. Отдельные сервисы отвечают за кошелёк Growth Coins, ESG-взносы, пары и команды, HR-дашборд и аутентификацию сотрудников и HR.
Ключевые решения
- детерминированный scoring по skill gaps
- explainability
- LLM-генерация шагов квеста
- геймификация
- парное обучение
Особенности
Рекомендацию считает прозрачная формула, а LLM только объясняет её и расписывает шаги. Широкая геймификация: эволюция «карьерного города», Growth Coins с вкладом в ESG-цели, парное прохождение квестов.
Стек
Python · FastAPI · SQLAlchemy · SQLite · React · Vite · TypeScript · Docker Compose · nginx · pytest
Модели
OpenAI Responses API (gpt-6-sol / gpt-6-astra в конфиге)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-fe3472cb-aevix.
README
README.mdAEVIX - AI Career Quest Platform
AEVIX - платформа персонального развития сотрудников. Система анализирует профиль сотрудника, историю активностей и skill gaps, рекомендует карьерные квесты, объясняет логику рекомендаций через AI и помогает проходить активности по шагам.
Архитектура
+-----------------+ HTTP +-----------------+ HTTPS +--------------+
| Frontend | <---------------> | Backend | <--------------> | OpenAI |
| React + Vite | :3000 | FastAPI | Responses API | LLM |
+-----------------+ +-----------------+ +--------------+
|
v
+-----------------+
| SQLite |
| career_quest.db |
+-----------------+
|
v
+-----------------+
| Career Dataset |
| employees/events|
+-----------------+
Возможности
- Персональные рекомендации: deterministic engine считает score по skill gaps, целевому грейду, impact, prerequisites и истории активностей.
- AI-объяснения: OpenAI Responses API формулирует понятное объяснение, почему выбран конкретный квест.
- AI-шаги квеста: модель генерирует практический план из 3-5 шагов для выбранной активности.
- Прогресс-бары ожидания: frontend показывает индикатор, пока модель думает.
- Парное обучение: сотрудник может найти коллегу и пройти квест вместе.
- Growth Coins: кошелек, транзакции и награды за завершение активностей.
- ESG goals: вклад Growth Coins в инициативы компании.
- HR analytics: агрегированная аналитика по skill gaps, активности сотрудников и ESG engagement.
- Импорт данных: загрузка employees, events, skills и activity history через API.
Презентация
- Google Drive: https://drive.google.com/drive/folders/1A299QTBNUuf_FNof-x1WaDoIz2rqlgfu?usp=share_link
Быстрый запуск через Docker Compose
Требования
- Docker
- Docker Compose
- Git
- OpenAI API key, если нужны AI-объяснения и AI-шаги
1. Настрой .env
Файл .env лежит в папке backend:
cd hack-fe3472cb-aevix
Пример:
OPENAI_API_KEY=your-openai-api-key
OPENAI_MODEL=gpt-6-sol
# Optional dataset override
# DATASET_DIR=C:\path\to\career_quest_dataset\case_1\career_quest_dataset
Если OPENAI_API_KEY не задан, приложение продолжит работать через локальные template-ответы.
2. Настрой логины и пароли
Скрипты генерации паролей запускаются из backend-папки. Если зависимости еще не установлены локально, подготовь окружение:
python -m venv env
env\Scripts\activate
pip install -r requirements.txt
HR-аккаунт создается локально. По умолчанию логин HR: hr, пароль генерируется автоматически:
python -m app.setup_hr
Скрипт добавит HR_USERNAME и HR_PASSWORD_HASH в .env, а реальный пароль сохранит только локально:
.local/hr-access.txt
Пароли сотрудников тоже генерируются локально. Логин сотрудника совпадает с employee_id, например E0002. Запускай команду после первого старта backend или после импорта dataset, чтобы в базе уже были сотрудники:
python -m app.setup_employees
Список employee-логинов и паролей будет сохранен в приватный файл:
.local/employee-access.csv
Чтобы пересоздать пароли и сбросить активные сессии:
python -m app.setup_hr --rotate
python -m app.setup_employees --rotate
Файлы .env и .local/ уже находятся в .gitignore, поэтому пароли и хэши не должны попадать в Git.
3. Запусти сервисы
docker compose up --build -d
4. Открой приложение
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Swagger docs: http://localhost:8000/docs
- Demo employee ID:
E0002 - HR login:
hr - HR password:
[скрыто] - Employee login:
E0002 - Employee password:
[скрыто]
5. Остановить сервисы
docker compose down
Чтобы удалить volume с SQLite-базой:
docker compose down -v
Ручной запуск без Docker
Backend
cd hack-fe3472cb-aevix
python -m venv env
env\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
Проверка:
curl http://127.0.0.1:8000/health
Frontend
Frontend находится рядом с backend-папкой:
cd ../career-quest-frontend
npm install
npm run dev
По умолчанию Vite откроется на:
http://127.0.0.1:5173
Сервисы
| Сервис | Порт | Описание |
|---|---|---|
| Frontend | 3000 | React/Vite SPA, собранный в Nginx container |
| Backend | 8000 | FastAPI API для рекомендаций, квестов, HR и ESG |
| SQLite | volume | Локальная база career_quest.db внутри Docker volume |
| OpenAI | external | AI-объяснения и генерация шагов квеста |
Docker-файлы
aevix/
├── hack-fe3472cb-aevix/
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── .dockerignore
└── career-quest-frontend/
├── Dockerfile
├── nginx.conf
└── .dockerignore
Переменные окружения
Backend
| Переменная | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|
OPENAI_API_KEY | Нет | None | API key для OpenAI |
OPENAI_MODEL | Нет | gpt-6-astra | Модель для AI-объяснений и шагов |
DATABASE_URL | Нет | sqlite:///./career_quest.db | SQLAlchemy URL базы данных |
DATASET_DIR | Нет | bundled dataset | Путь к dataset |
ALLOWED_ORIGINS | Нет | localhost origins | CORS origins для frontend |
HR_USERNAME | Нет | hr | Логин HR-аккаунта |
HR_PASSWORD_HASH | Да для HR-login | None | Хэш HR-пароля, генерируется через python -m app.setup_hr |
HR_SESSION_HOURS | Нет | 8 | Время жизни auth-сессии в часах |
HR_COOKIE_SECURE | Нет | false | true для HTTPS-cookie в production |
Frontend
| Переменная | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|
VITE_API_URL | Нет | http://127.0.0.1:8000 | URL backend API |
VITE_EMPLOYEE_ID | Нет | E0002 | ID сотрудника для demo UI |
В Docker Compose frontend собирается с:
VITE_API_URL=http://localhost:8000
VITE_EMPLOYEE_ID=E0002
Структура проекта
aevix/
├── hack-fe3472cb-aevix/ # Backend FastAPI
│ ├── app/
│ │ ├── core/ # Конфигурация
│ │ ├── db/ # SQLAlchemy модели и база
│ │ ├── routers/ # API роуты
│ │ ├── schemas/ # Pydantic схемы
│ │ ├── services/ # Бизнес-логика
│ │ ├── tests/ # Pytest тесты
│ │ └── main.py # FastAPI приложение
│ ├── career_quest_dataset/ # Demo dataset
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── requirements.txt
│ └── .env
└── career-quest-frontend/ # Frontend React/Vite
├── src/
│ ├── api.js # API client
│ ├── SiteApp.jsx # Основной UI
│ ├── AdminPages.jsx # HR и import страницы
│ └── site.css # Стили
├── Dockerfile
├── nginx.conf
└── package.json
API endpoints
Health
GET /health- проверка backend
Auth
POST /api/auth/login- вход сотрудника или HRPOST /api/auth/hr/login- вход только для HRGET /api/auth/session- текущая auth-сессияPOST /api/auth/logout- выход
Employees
GET /api/employees- список сотрудниковPOST /api/employees/register- регистрация сотрудникаGET /api/employees/{employee_id}- данные сотрудникаGET /api/employees/{employee_id}/profile- профиль сотрудникаGET /api/employees/{employee_id}/trajectory- траектория развитияGET /api/employees/{employee_id}/recommendations- рекомендации с AI-объяснениями
Quests
POST /api/employees/{employee_id}/quests/{event_id}/select- выбрать квестGET /api/employees/{employee_id}/quests/{event_id}/steps- получить шаги квестаPOST /api/employees/{employee_id}/quests/{event_id}/steps/{step_number}/complete- завершить шагPOST /api/employees/{employee_id}/quests/{event_id}/complete- завершить квест
Game / Wallet / ESG
GET /api/game/{employee_id}/map- карта развитияGET /api/game/{employee_id}/progress- игровой прогрессGET /api/game/{employee_id}/quests- игровые квестыGET /api/wallet/{employee_id}- Growth Coins walletGET /api/esg-goals- ESG goalsPOST /api/esg-goals/{goal_id}/contribute- отправить coins на ESG goal
Pair learning / Teams
GET /api/pairs/invitations?employee_id={employee_id}- список приглашенийPOST /api/pairs/invitations- опубликовать приглашениеGET /api/pairs/invitations/{invitation_id}/preview?employee_id={employee_id}- проверить совместимостьPOST /api/pairs/invitations/{invitation_id}/respond- принять или отклонить приглашениеPOST /api/teams- создать командуGET /api/teams/{team_id}- получить командуPOST /api/teams/{team_id}/join- вступить в команду
HR / Import
GET /api/hr/dashboard- HR dashboardGET /api/hr/esg-engagement- ESG engagement analyticsPOST /api/import/dataset- импорт datasetPOST /api/import/check-profiles- импорт employees JSONPOST /api/import/check-history- импорт activity history CSVPOST /api/import/events- импорт events JSONPOST /api/import/skills- импорт skills JSON
Тестирование
Backend:
cd hack-fe3472cb-aevix
pytest
Frontend:
cd ../career-quest-frontend
npm run build
Docker Compose config:
cd hack-fe3472cb-aevix
docker compose config
Troubleshooting
Backend не запускается
- Проверь
.env - Проверь, что порт
8000свободен - Посмотри логи:
docker compose logs backend
Frontend не видит backend
- Проверь, что backend отвечает: http://localhost:8000/health
- В Docker Compose frontend собирается с
VITE_API_URL=http://localhost:8000 - Пересобери frontend после изменения env:
docker compose build frontend
docker compose up -d frontend
AI отвечает медленно
- Используй более быструю модель:
OPENAI_MODEL=gpt-6-sol
- Пока модель думает, frontend показывает progress bar.
- Без
OPENAI_API_KEYbackend использует template fallback.
Рекомендации пустые
- Проверь, что demo dataset импортировался при старте backend
- Проверь employee ID, например
E0002 - Перезапусти backend или выполни import endpoint
AEVIX v1.0 - AI Career Quest Platform
Авторы коммитов
История коммитов
- 2026-09-23 17:59final commitsakenzi
- 2026-09-23 17:57final commitsakenzi
- 2026-09-23 17:47final commitsakenzi
- 2026-09-23 17:41NewArsen Shanaqbai
- 2026-09-23 17:41New ReadyArsen Shanaqbai
- 2026-09-23 17:34Merge branch 'main' of https://github.com/BAITC-Hacks/hack-fe3472cb-aevixsakenzi
- 2026-09-23 17:34final commitsakenzi
- 2026-09-23 17:28presayenllik
Все коммиты (46)
- 2026-09-23 17:27UpDate ReadyArsen Shanaqbai
- 2026-09-23 17:24presayenllik
- 2026-09-23 17:23presayenllik
- 2026-09-23 17:22UpDate ReadyArsen Shanaqbai
- 2026-09-23 17:16StartArsen Shanaqbai
- 2026-09-23 17:14Update collaboration pairs hints and quest preview handlingArsen Shanaqbai
- 2026-09-23 17:11New UpArsen Shanaqbai
- 2026-09-23 17:02New updateArsen Shanaqbai
- 2026-09-23 16:42New update testingArsen Shanaqbai
- 2026-09-23 16:312 Copy all files from backendArsen Shanaqbai
- 2026-09-23 16:312 Save frontend workArsen Shanaqbai
- 2026-09-23 16:31update backendsakenzi
- 2026-09-23 16:20New TestArsen Shanaqbai
- 2026-09-23 16:16New Beta testArsen Shanaqbai
- 2026-09-23 16:13Проверка обновленияArsen Shanaqbai
- 2026-09-23 16:08TestingArsen Shanaqbai
- 2026-09-23 16:05UpDate newArsen Shanaqbai
- 2026-09-23 15:552 Copy all files from backendArsen Shanaqbai
- 2026-09-23 15:552 Save frontend workArsen Shanaqbai
- 2026-09-23 15:523 nd update backendsakenzi
- 2026-09-23 15:493ndyenllik
- 2026-09-23 15:41New UpdateArsen Shanaqbai
- 2026-09-23 15:32Copy all files from backendArsen Shanaqbai
- 2026-09-23 15:32Save frontend workArsen Shanaqbai
- 2026-09-23 15:29Frontend updateArsen Shanaqbai
- 2026-09-23 15:22update backendsakenzi
- 2026-09-23 15:09New commit to meArsen Shanaqbai
- 2026-09-23 15:07Update designArsen Shanaqbai
- 2026-09-23 14:492ndyenllik
- 2026-09-23 14:42Design new 2Arsen Shanaqbai
- 2026-09-23 14:39update backendsakenzi
- 2026-09-23 14:17api verificationsakenzi
- 2026-09-23 14:16New DesignArsen Shanaqbai
- 2026-09-23 13:48Backend UpDateArsen Shanaqbai
- 2026-09-23 13:40add career quest datasetsakenzi
- 2026-09-23 13:28first commityenllik
- 2026-09-23 13:16first commitsakenzi
- 2026-09-23 13:16case 1Arsen Shanaqbai
Структура репозитория (165 файлов)
.dockerignore .gitignore Dockerfile README.md app/__init__.py app/core/config.py app/db/auth_models.py app/db/database.py app/db/models.py app/main.py app/routers/auth_router.py app/routers/employee_router.py app/routers/esg_router.py app/routers/game_router.py app/routers/hr_router.py app/routers/import_router.py app/routers/pair_router.py app/routers/recommendation_router.py app/routers/team_router.py app/routers/wallet_router.py app/schemas/collaboration.py app/schemas/employee.py app/schemas/event.py app/schemas/game.py app/schemas/history.py app/schemas/hr.py app/schemas/recommendation.py app/schemas/skill.py app/services/auth_service.py app/services/esg_service.py app/services/game_service.py app/services/hr_service.py app/services/import_service.py app/services/llm_service.py app/services/pair_service.py app/services/progress_service.py app/services/quest_service.py app/services/recommendation_service.py app/services/team_service.py app/setup_employees.py app/setup_hr.py app/tests/conftest.py app/tests/test_agent_esg_hr.py app/tests/test_api_contracts.py app/tests/test_auth.py app/tests/test_backend_regressions.py app/tests/test_city_levels.py app/tests/test_collaboration_api.py app/tests/test_collaboration_auth.py app/tests/test_employee_auth.py app/tests/test_employee_provisioning.py app/tests/test_login_limits.py app/tests/test_pair_dismissals.py app/tests/test_quest_step_generation.py app/tests/test_quest_steps.py app/tests/test_recommendation.py app/tests/test_workspace.py app/utils/explainability.py app/utils/grade.py app/utils/scoring.py career_quest.db career_quest_dataset/__MACOSX/._case_1 career_quest_dataset/__MACOSX/case_1/._.DS_Store career_quest_dataset/__MACOSX/case_1/._career_quest_dataset career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._README.kz.md career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._README.md career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._README.ru.md career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._activity_history.csv career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._employees.json career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._events.json career_quest_dataset/__MACOSX/case_1/career_quest_dataset/._skills.json career_quest_dataset/case_1/career_quest_dataset/README.kz.md career_quest_dataset/case_1/career_quest_dataset/README.md career_quest_dataset/case_1/career_quest_dataset/README.ru.md career_quest_dataset/case_1/career_quest_dataset/activity_history.csv career_quest_dataset/case_1/career_quest_dataset/employees.json career_quest_dataset/case_1/career_quest_dataset/events.json career_quest_dataset/case_1/career_quest_dataset/skills.json case_1/.DS_Store case_1/career_quest_dataset/README.kz.md case_1/career_quest_dataset/README.md case_1/career_quest_dataset/README.ru.md case_1/career_quest_dataset/activity_history.csv case_1/career_quest_dataset/employees.json case_1/career_quest_dataset/events.json case_1/career_quest_dataset/skills.json docker-compose.yml frontend/.dockerignore frontend/.env.example frontend/.gitignore frontend/.npm-cache/_update-notifier-last-checked frontend/.vite/deps/_metadata.json frontend/.vite/deps/chunk-EZWSRKYN.js frontend/.vite/deps/chunk-EZWSRKYN.js.map frontend/.vite/deps/chunk-GFWMZNU4.js frontend/.vite/deps/chunk-GFWMZNU4.js.map frontend/.vite/deps/package.json frontend/.vite/deps/react-dom.js frontend/.vite/deps/react-dom.js.map frontend/.vite/deps/react-dom_client.js frontend/.vite/deps/react-dom_client.js.map frontend/.vite/deps/react.js frontend/.vite/deps/react.js.map frontend/.vite/deps/react_jsx-dev-runtime.js frontend/.vite/deps/react_jsx-dev-runtime.js.map frontend/Dockerfile frontend/index.html frontend/nginx.conf frontend/package-lock.json frontend/package.json frontend/public/brand/career-city-4k.png frontend/public/brand/career-city-logo.png frontend/public/brand/career-city-mark-4k.png frontend/public/brand/career-city-mark.svg frontend/public/brand/career-city.svg frontend/public/brand/halyk-career-city-mark.svg frontend/public/brand/halyk-career-city.png frontend/public/images/career-city.png frontend/public/images/city-levels/city-levels-light.png frontend/public/images/city-levels/city-levels-sheet.png frontend/public/images/city-panorama.png frontend/public/images/developer-welcome.png frontend/public/images/developer-welcome.prompt.txt frontend/public/images/halyk-bank-logo.png frontend/src/App.tsx frontend/src/PreviewContext.ts frontend/src/api.ts frontend/src/authApi.ts frontend/src/catalog.ts frontend/src/cityCopy.ts frontend/src/collaborationApi.ts frontend/src/components/BrandLogo.tsx frontend/src/components/CareerAssistant.tsx frontend/src/components/CareerMap.tsx frontend/src/components/CityEvolution.tsx frontend/src/components/EmployeePicker.tsx frontend/src/components/History.tsx frontend/src/components/Icon.tsx frontend/src/components/LoginPage.tsx frontend/src/components/ProgressRing.tsx frontend/src/components/QuestCard.tsx frontend/src/components/QuestStepsPanel.tsx frontend/src/components/SkillGap.tsx frontend/src/components/WalletPanel.tsx frontend/src/components/assistant.css frontend/src/components/collaboration.css frontend/src/components/login.css frontend/src/components/questSteps.css frontend/src/components/wallet.css frontend/src/i18n.tsx frontend/src/main.tsx frontend/src/pages/CityPage.tsx frontend/src/pages/CollaborationPage.tsx frontend/src/pages/EmployeePage.tsx frontend/src/pages/EmployeeSection.tsx frontend/src/pages/HrPage.tsx frontend/src/routes.ts frontend/src/sessionTransport.ts frontend/src/styles.css frontend/src/workspaceShell.css frontend/tsconfig.json frontend/vite.config.ts package-lock.json package.json requirements.txt
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.