Files
bit-flight-deck/docs/superpowers/specs/2026-05-13-subsystem-d-competence-design.md
T

103 lines
7.7 KiB
Markdown

# Подсистема D «Компетенции сотрудников» — Design Draft
| | |
|---|---|
| Дата | 2026-05-13 |
| Статус | **Draft — может реализовываться параллельно с MVP-2/3 или после** |
| Зависимости | MVP-1 (есть core.work_log + core.employee + core.project) |
| Срок | 1-2 недели работы (зависит от того, насколько детально нужен механизм распределения) |
> **Назначение:** зафиксировать обсуждённый подход к компетенциям. Это **набросок**.
## Ключевое решение пользователя
Цитата: «таблицу по компетенциям возможно придется собирать по проделанным зафиксированным работам в БИТ.РА, портфолио проектов возможно тоже».
**Why:** ручное ведение справочника компетенций сотрудников — нерабочая практика (устаревает, субъективно, никто не обновляет). Объективная компетенция = что человек реально делал в последний период.
См. [identity-and-scope](../../memory/feedback_identity_and_scope.md).
## Цели Подсистемы D
1. Автоматически рассчитать матрицу «сотрудник × компетенция × уровень» на основе истории работ.
2. Использовать матрицу для:
- Подсказки распределения проектной команды Битрикс-сделок на конкретных сотрудников (улучшение MVP-1 — сейчас наивно поровну).
- Автоматического распределения SD-задач по компетенциям (бэклог-айтем MVP-2).
- Подсказки руководителю «кто свободен и умеет делать X».
## Что такое «компетенция» в нашем контексте
**Двухмерное определение:**
- **Конфигурация** = с каким продуктом сотрудник работал (1С:ERP, 1С:ЗУП, БИТ.ФИНАНС, и т.д.). Берём из `core.project.bitra_id``BIT.RA.Catalog.Проекты.Конфигурация` (`Catalog.Конфигурации`).
- **ВидРаботы** = что делал (ЛУРВ / ЛТ / ИТС / Пресейл и т.п.). Берём из `core.work_log.work_type_code` (см. [reference-bitra-work-types](../../memory/reference_bitra_work_types.md)).
То есть компетенция = пара `(Конфигурация × ВидРаботы)`.
## Расчёт уровня компетенции
```
weight(employee, config, work_type, period) =
Σ(hours) where work_log.employee = employee
AND work_log.project.config = config
AND work_log.work_type = work_type
AND work_log.period >= period - 12 months
```
Уровень владения = относительный вес:
- «Эксперт» — > 100 часов за последние 12 мес.
- «Опытный» — 30-100 часов.
- «Знаком» — 5-30 часов.
- «Нет опыта» — < 5 часов.
Пороги — конфигурируемые в `core.config`.
## Расширение core
```sql
core.employee_competence (
employee_id bigint REFERENCES core.employee,
config_code text, -- Конфигурация (1С:ERP, БИТ.ФИНАНС и т.д.)
work_type_code text, -- Вид работ
hours_12m decimal(15,2), -- часы за последние 12 месяцев
hours_3m decimal(15,2), -- за последние 3 месяца (для свежей картины)
level text, -- эксперт | опытный | знаком | нет_опыта
last_work_date date, -- когда последний раз делал
PRIMARY KEY (employee_id, config_code, work_type_code)
)
```
Заполняется materialized view'хой, обновляется раз в сутки (после ежедневной синхронизации BIT.RA).
## Применение в системе
### 1. Распределение проектной команды сделок Битрикс (улучшение MVP-1)
Сейчас (MVP-1): часы делятся поровну между членами `UF_CRM_1729244690` (проектная команда).
С компетенциями (улучшение): часы распределяются с учётом уровня компетенции каждого члена команды по `Конфигурации` сделки (`UF_CRM_1729244070`). Эксперт получает больше, новичок — меньше. Веса можно править в NocoDB вручную.
### 2. Автоматическое распределение SD-задач (бэклог-айтем)
В SD-задачах часто нужно быстро назначить исполнителя. Если задача относится к 1С:ERP (по `cf_konfiguracziya1`), система предлагает топ-3 сотрудника с подходящей компетенцией и низкой текущей загрузкой.
### 3. Дашборд «Компетенции команды»
Витрина `mart.competence_matrix`:
- Heatmap: сотрудники × Конфигурации, цвет = уровень компетенции.
- Таблица «Узкие места» — конфигурации, по которым у компании только 1 эксперт.
- Таблица «Покрытие команды» — какие компетенции есть в команде, какие нет.
## Open questions
- **Маппинг `Catalog.Конфигурации` BIT.RA ↔ Bitrix `UF_CRM_1729244070`** — это разные справочники, но семантически похожие. Нужна ручная таблица соответствий в `core.identity_map_config`. См. также [reference-bitrix24-classifications](../../memory/reference_bitrix24_classifications.md).
- **Учёт пресейла как компетенции.** Если сотрудник делал только пресейл по конфигурации (без ЛУРВ/ЛТ) — он эксперт по продаже, но не по реализации. Различать.
- **Перевод сотрудника** — если человек 5 лет делал 1С:Розница, потом переключился на 1С:ERP, окно «12 месяцев» это покажет, но текущая компетенция = ERP. Можно добавить «свежесть» (hours_3m).
- **Подсистема D vs MVP-2.** Если автоматическое распределение SD-задач нужно как часть MVP-2 — D становится зависимостью MVP-2. Если как улучшение MVP-1 — параллельно с MVP-2. Решить после MVP-1.
## Зависимости от MVP-1
Подсистема D стартует когда:
- ✅ MVP-1 работает.
-`core.work_log` стабильно заполняется из BIT.RA.
-`core.project` маппится с конфигурациями (через `Catalog.Проекты.Конфигурация`).