Skip to content

stepler/career-map

Repository files navigation

Career Map

Инструмент профориентации: подбирает подходящие профессии по чертам характера и предметным интересам человека. Задумано как помощь родителю в выборе профессии для ребёнка — но движок универсален.

Разработчикам и агентам: правила и workflow разработки — в CLAUDE.md; дизайн и планы — в docs/superpowers/.

Идея

Интерес к работе зависит от того, как человеку нравится работать и чем он любит заниматься. Поэтому подбор идёт по двум слоям:

  • 5 осей стиля (на основе RIASEC + Big Five): People↔Things, Logic↔Creativity, Introvert↔Extravert, Order↔Freedom, Hands↔Head. Каждая ось — level от 1 (мало) до 3 (много) в сторону полюса.
  • ~11 тегов предметных областей (техника, природа, данные, искусство, медицина и т.д.) — «с каким материалом интересно».

Профессии лежат в дереве кластер → [группа] → поднаправление → профессия. Подбор считает близость профиля к поднаправлениям и показывает подходящие профессии. Глубина показа зависит от возраста (reveal_stage): младшим всё «схлопывается» в широкие узлы (например, «врач»), старшим раскрывается до конкретных специальностей.

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

npm install
npm test          # юнит-тесты (Vitest)
npm run lint      # Biome: формат + правила
npm run validate  # проверка целостности каталога
npm run dev:web   # дев-сервер игры на http://localhost:8000 (пересборка по обновлению, source maps)
npm run build:web # собрать статический бандл web/app.js

Игра: npm run dev:web и открыть http://localhost:8000 (при сохранении — обновить вкладку).

Архитектура

src/
  types.ts            типы (контракт)
  registries.ts       загрузка конфигов (оси/области/этапы/веса)
  catalog.ts          загрузка каталога, индекс, наследование подписей
  scoring/style.ts    близость по осям (взвешенное евклидово → 0..1)
  scoring/domain.ts   совпадение предметных интересов → 0..1
  rollup.ts           видимость по возрасту, сворачивание к видимому предку
  match.ts            движок подбора: профиль → ранжированные результаты
  validator/          проверка каталога + CLI
data/
  config/             axes / domains / stages / scoring (реестры-конфиги)
  catalog/catalog.json  дерево профессий (источник истины)
tests/                юнит-тесты + фикстуры
docs/superpowers/     спецификации и планы

Поток подбора: профиль (оси + интересы + возраст) → match() → топ-результаты (с разворачиванием/сворачиванием по возрасту).

Использование движка

import { loadCatalog } from "./src/catalog";
import { loadRegistries } from "./src/registries";
import { match } from "./src/match";

const reg = loadRegistries("data/config");
const catalog = loadCatalog("data/catalog/catalog.json");

const result = match(catalog, reg, {
  axes: { people_things: 3, logic_creativity: -2, introvert_extravert: -2, order_freedom: -3, hands_head: 3 },
  domains: { digital_it: 1, law_order: 1 },
  stage: "university",
});

console.log(result[0]); // { nodeId, label, score, style, domain, members }

Статус

  • Этап 1 — движок, формат, валидатор: готово.
  • Этап 2 — наполнение каталога: кластер «IT и данные» готов; остальные кластеры в работе.
  • Этап 3 — интерактивная мини-игра (квиз → профиль → карта профессий): запланирован.

Подробности и роадмап — в CLAUDE.md и docs/superpowers/.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors