/
spirzen
/
it-knowledge-base
Обзор
Документация
Войти
/
spirzen
/
it-knowledge-base
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Mobile
src/components/shared/roleDevelopmentPlans.js
483 строки
17 KB
Spirzen
Кавычки 2
26 май 2026, 23:25
26 май 2026, 23:25
7d44b4c
Код
Авторство
О чём код?
/** Данные интерактивных планов развития для /lab/Планы развития/1–6 */ export const DEVELOPMENT_PLANS = { developer: { title: 'Конструктор плана разработчика', subtitle: 'Отметьте освоенные блоки и пройдите уровни от Pre-Developer до Staff Engineer', timelineLabel: 'Уровни компетенций', levels: [ { id: '0', label: '0', short: 'Pre-Developer', duration: '0–3 мес', goal: 'Базовая компьютерная грамотность перед кодом', color: '#64748b', milestones: [ 'Установка и настройка ОС', 'Файловая система и терминал', 'Архитектура ПК: CPU, RAM, диск', 'DNS, HTTP, основы безопасности', 'IDE и Markdown для заметок', ], }, { id: '1', label: '1', short: 'Beginner', duration: '3–12 мес', goal: 'Первый код и алгоритмическое мышление', color: '#3b82f6', milestones: [ 'Переменные, циклы, функции', 'Python + JavaScript + Java/C#', 'Массивы, стеки, Big O', 'IDE, отладка, консольные apps', 'Git: commit, push, GitHub', ], }, { id: '2', label: '2', short: 'Junior', duration: '12–24 мес', goal: 'ООП, данные, тесты, командная культура', color: '#8b5cf6', milestones: [ 'ООП и SOLID на практике', 'Файлы, JSON, REST API', 'SQL и введение в NoSQL', 'Unit-тесты, pip/npm/Maven', 'Code review и feature branches', ], }, { id: '3', label: '3', short: 'Middle', duration: '24–48 мес', goal: 'Специализация и системное мышление', color: '#10b981', milestones: [ 'Стек: frontend / backend / mobile', 'ORM, логирование, мониторинг', 'TCP/IP, async, GraphQL/gRPC', 'Docker, CI/CD, Kubernetes basics', 'OWASP, JWT, API design', ], }, { id: '4', label: '4', short: 'Senior', duration: '4+ лет', goal: 'Архитектура и масштабирование', color: '#f59e0b', milestones: [ 'Шардирование, кэш, очереди', 'Профилирование и балансировка', 'Terraform, облако AWS/Azure/GCP', 'DDD, event-driven, Saga', 'Техлидство и NFR', ], }, { id: '5', label: '5', short: 'Staff / Fellow', duration: 'стратегия', goal: 'Культура организации и инновации', color: '#ef4444', milestones: [ 'Internal platforms и quality gates', 'Rust, WASM, open source', 'Менторство и учебные программы', 'Green IT и этика алгоритмов', ], }, ], }, ba: { title: 'Конструктор плана бизнес-аналитика', subtitle: 'Пять частей BABOK-траектории: от дисциплины до стратегического лидерства', timelineLabel: 'Части плана', levels: [ { id: 'p1', label: 'I', short: 'Фундамент', duration: '0–3 мес', goal: 'Границы BA, BABOK, роли stakeholder', color: '#3b82f6', milestones: [ 'Определение BA vs data analysis', 'Stakeholder analysis', 'Elicitation: интервью, воркшопы', 'BPMN / user stories / use cases', 'Трассируемость требований', ], }, { id: 'p2', label: 'II', short: 'Ядро', duration: '3–9 мес', goal: 'Моделирование и управление требованиями', color: '#8b5cf6', milestones: [ 'Приоритизация MoSCoW / WSJF', 'Диаграммы потоков и данных', 'Бизнес-кейс и ROI', 'Документирование в Confluence/Jira', 'Валидация с заказчиком', ], }, { id: 'p3', label: 'III', short: 'Углубление', duration: '9–18 мес', goal: 'Метрики, домен, бизнес-логика', color: '#10b981', milestones: [ 'KPI и OKR в продукте', 'Предметная экспертиза отрасли', 'Нефункциональные требования', 'Прототипы в Figma / Balsamiq', 'Оценка рисков изменений', ], }, { id: 'p4', label: 'IV', short: 'Agile / DevOps', duration: '18–36 мес', goal: 'Интеграция в современные команды', color: '#f59e0b', milestones: [ 'Backlog refinement и спринты', 'CI/CD и Definition of Done', 'Совместная работа с QA и DevOps', 'Feature flags и релизы', ], }, { id: 'p5', label: 'V', short: 'Мастерство', duration: '3–5 лет', goal: 'Сертификации и стратегия', color: '#ef4444', milestones: [ 'CBAP / CCBA / PMI-PBA', 'Архитектура решений enterprise', 'Портфель инициатив', 'Наставничество аналитиков', ], }, ], }, qa: { title: 'Конструктор плана тестировщика', subtitle: 'От ручного QA до Quality Engineering и архитектуры качества', timelineLabel: 'Уровни QA', levels: [ { id: '0', label: '0', short: 'Подготовка', duration: '0–2 мес', goal: 'IT-грамотность перед тестированием', color: '#64748b', milestones: [ 'ОС в VM, файлы, архивы', 'Браузер, почта, безопасность', 'Базовый терминал', 'Резервные копии', ], }, { id: '1', label: '1', short: 'Junior QA', duration: '2–8 мес', goal: 'Ручное тестирование и баг-репорты', color: '#3b82f6', milestones: [ 'Тест-кейсы и чек-листы', 'Jira, жизненный цикл ПО', 'HTTP/REST на уровне пользователя', 'Регрессия и smoke', 'Граничные значения и эквивалентность', ], }, { id: '2', label: '2', short: 'Middle QA', duration: '8–20 мес', goal: 'API, SQL, первые автотесты', color: '#8b5cf6', milestones: [ 'Postman / REST Assured', 'SQL для проверки данных', 'Linux и логи', 'Git, Docker basics', 'Автотесты на Python/JS', ], }, { id: '3', label: '3', short: 'Senior / SDET', duration: '20–36 мес', goal: 'Фреймворки и CI', color: '#10b981', milestones: [ 'Page Object / pytest / Jest', 'CI pipelines для тестов', 'Performance smoke', 'Архитектура приложения для рисков', 'Quality gates в релизе', ], }, { id: '4', label: '4', short: 'Lead / Architect', duration: '3+ лет', goal: 'Стратегия качества', color: '#f59e0b', milestones: [ 'Пирамида тестирования в команде', 'Метрики дефектов и escape rate', 'Тестовая стратегия продукта', 'Менторство и найм QA', ], }, ], }, syseng: { title: 'Конструктор плана системного инженера', subtitle: 'Семь уровней: от пользователя ПК до архитектора инфраструктуры', timelineLabel: 'Уровни зрелости', levels: [ { id: '0', label: '0', short: 'Грамотность', duration: 'фундамент', goal: 'Уверенный пользователь и сеть', color: '#64748b', milestones: ['Железо ПК', 'Windows / Linux / macOS', 'Файлы и ПО', 'IP, DNS, Wi‑Fi'], }, { id: '1', label: '1', short: 'Фундамент ИТ', duration: 'база', goal: 'ОС, OSI/TCP, скрипты', color: '#3b82f6', milestones: ['Администрирование ОС', 'OSI и TCP/IP', 'RAID и SAN/NAS', 'Bash / PowerShell'], }, { id: '2', label: '2', short: 'Ядро', duration: 'ядро', goal: 'Linux, сервисы, Docker', color: '#8b5cf6', milestones: ['systemd, пакеты', 'DNS/DHCP/Nginx', 'Ansible / Terraform intro', 'Prometheus + ELK', 'Docker'], }, { id: '3', label: '3', short: 'Масштаб', duration: 'рост', goal: 'K8s, storage, multi-cloud', color: '#10b981', milestones: ['VLAN, VPN, LB', 'Kubernetes', 'Ceph / S3', 'GitOps CI/CD', 'AWS/Azure/GCP'], }, { id: '4', label: '4', short: 'Архитектура', duration: 'зрелость', goal: 'Проектирование и DR', color: '#f59e0b', milestones: ['TOGAF / C4', 'HA и CAP', 'FinOps', 'Архитектурные RFC'], }, { id: '5', label: '5', short: 'Надёжность', duration: 'эксперт', goal: 'Безопасность и observability', color: '#ec4899', milestones: ['Zero Trust', 'Профилирование', 'OpenTelemetry', 'DR и backup RPO/RTO'], }, { id: '6', label: '6', short: 'Стратег', duration: 'лидер', goal: 'Платформа и техдолг', color: '#ef4444', milestones: ['Internal developer platform', 'Tech debt governance', 'Compliance', 'Наставничество'], }, ], }, security: { title: 'Конструктор плана специалиста ИБ', subtitle: 'Уровни от цифровой гигиены до CISO-tier и стратегии', timelineLabel: 'Уровни ИБ', levels: [ { id: '0', label: '0', short: 'Подготовка', duration: 'старт', goal: 'Цифровая среда и этика', color: '#64748b', milestones: ['Компоненты ПК и ОС', 'Терминал и ФС', 'Фишинг и пароли', '2FA и менеджеры паролей'], }, { id: '1', label: '1', short: 'Junior', duration: 'junior', goal: 'Базовая защита и мониторинг', color: '#3b82f6', milestones: ['CIA triad', 'Firewall и AV', 'SIEM alerts', 'Incident triage', 'Политики паролей'], }, { id: '2', label: '2', short: 'Middle', duration: 'middle', goal: 'Пентест и hardening', color: '#8b5cf6', milestones: ['Nmap, Burp basics', 'AD и Kerberos', 'TLS и сертификаты', 'Vulnerability mgmt'], }, { id: '3', label: '3', short: 'Senior', duration: 'senior', goal: 'Архитектура безопасности', color: '#10b981', milestones: ['Threat modeling STRIDE', 'SOC 2 / ISO 27001', 'Cloud IAM', 'Red vs blue team'], }, { id: '4', label: '4', short: 'CISO-tier', duration: 'эксперт', goal: 'Риски и стратегия', color: '#ef4444', milestones: ['GRC и risk register', 'Bug bounty policy', 'Security budget', 'Board reporting'], }, ], }, kids: { title: 'Спираль IT-развития для детей', subtitle: 'Возрастные этапы 5–20 лет: от ScratchJr до профессиональной ориентации', timelineLabel: 'Возрастные этапы', spiral: true, levels: [ { id: 'i', label: 'I', short: '5–6 лет', duration: 'дошкольник', goal: 'Игра с цифровой средой', color: '#f472b6', milestones: ['Мышь и клавиатура', 'Файл и папка', 'ScratchJr', 'Алгоритм как рецепт'], }, { id: 'ii', label: 'II', short: '7–8 лет', duration: 'младший шк', goal: 'Логика и безопасность', color: '#fb923c', milestones: ['Scratch', 'Тайпинг', 'Кибергигиена', 'Робототехника LEGO'], }, { id: 'iii', label: 'III', short: '9–10 лет', duration: 'средний шк', goal: 'Текстовый код и системы', color: '#facc15', milestones: ['Python / Lua intro', 'Git для детей', 'Сети "как интернет"', 'Мини-проект'], }, { id: 'iv', label: 'IV', short: '11–12 лет', duration: 'предteen', goal: 'Инженерные практики', color: '#4ade80', milestones: ['Веб-страница HTML/CSS', 'SQL basics', 'Командный проект', 'Дизайн UX sketch'], }, { id: 'v', label: 'V', short: '13–14 лет', duration: 'teen', goal: 'Ориентация на профессии', color: '#38bdf8', milestones: ['Выбор трека dev/QA/design', 'GitHub portfolio', 'Олимпиады / хакатоны', 'Этика ИИ'], }, { id: 'vi', label: 'VI', short: '15–16 лет', duration: 'старшие классы', goal: 'Системное проектирование', color: '#818cf8', milestones: ['Алгоритмы Олимп', 'Docker intro', 'Пет-проект end-to-end', 'Soft skills'], }, { id: 'vii', label: 'VII', short: '17–18 лет', duration: 'выпуск', goal: 'Подготовка к вузу/работе', color: '#a78bfa', milestones: ['Стажировка', 'Собеседования', 'Open source вклад', 'План карьеры'], }, { id: 'viii', label: 'VIII', short: '19–20 лет', duration: 'mastery', goal: 'Профессиональный старт', color: '#f43f5e', milestones: ['Стажировка / junior', 'Сертификации по треку', 'Ментор для младших'], }, ], }, }; export function getPlan(planId) { return DEVELOPMENT_PLANS[planId] ?? null; } export function computeProgress(levels, checked) { const total = levels.reduce((n, l) => n + l.milestones.length, 0); if (total === 0) return 0; const done = levels.reduce( (n, l) => n + l.milestones.filter((m) => checked.has(`${l.id}:${m}`)).length, 0, ); return Math.round((done / total) * 100); } export function levelProgress(level, checked) { const total = level.milestones.length; if (total === 0) return 0; const done = level.milestones.filter((m) => checked.has(`${level.id}:${m}`)).length; return Math.round((done / total) * 100); }