Commit Graph

10 Commits

Author SHA1 Message Date
Askarova A
ea42399925 chore: remove "Распределение по группам" pie chart
Drops the pie chart block from the dashboard and skips the render call.
The byGroup metric stays in metrics() because the Treemap section still
uses it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:22:14 +05:00
Askarova A
dee9899242 feat: per-function time overrides (no xlsx changes)
Adds a UI block "Ручные правки времени" that lets a user override the
parsed time of a specific function by number, without modifying the xlsx
file. The override propagates through every KPI, chart, simulator, and
FTE scenario via filtered().

The table marks overridden rows with ✏️ and shows the original raw value
struck through. Overrides appear as removable chips below the form.

Also seeds a default override for function №39 ("Контроль табелей") to
60 minutes, because the raw "5до 7 дней" string parses to ~2880 min
(48 h) which is unrealistic for a one-off check and skews every
aggregate. The user can change or remove it from the UI.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:19:29 +05:00
Askarova A
e57e210d31 feat: visual polish — hero illustration, decorative SVGs, gradient UI
- New SVG hero (recruitment funnel + bar chart + people icons) above the
  dashboard.
- New empty-state illustration shown while the file is loading.
- Upgraded brand logo with blue→purple gradient and drop shadow.
- Subtle dotted background pattern (assets/pattern.svg, fixed
  attachment) for depth.
- Header is now sticky with a translucent gradient + backdrop blur.
- Hero block uses a soft blue-to-purple gradient and gradient text for
  the title.
- KPI cards get a gradient accent bar, gradient-text values, and a
  lift-on-hover transition.
- Section blocks get rounded corners (14px), soft shadow, and a hover
  glow.
- Responsive hero on screens below 900px.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:14:14 +05:00
Askarova A
3c937e091c feat: per-business-unit time multiplier (no data changes)
Adds a "Структурных подразделений (СП)" input. The xlsx source is not
modified; instead, at compute time functions whose name mentions СПП/ССП,
подразделения, руководители, комиссия, or линейн get their minutes
multiplied by the СП count. The table tags those rows with 🏢×N and shows
the base × multiplier breakdown.

This propagates through every KPI, chart, simulator, and FTE scenario
automatically because the multiplication happens in filtered() before
metrics().

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:10:13 +05:00
Askarova A
218c93df25 feat: what-if simulator (no data changes)
Adds a "Симулятор" block that recomputes KPIs against a virtual scenario
without modifying the source data:

- optimization slider: reduce every function's time by 0–80%
- exclude top-N longest functions slider
- exclude an entire auto-stage (dropdown)
- recruiters (FTE) slider: 1–10
- vacancies-per-month slider: 0–50

Output is a side-by-side table (Было / Стало / Δ%) for cycle time,
days, weeks, monthly load, FTE %, capacity, overload, recruiters needed,
and cost. Color-codes improvements green, regressions red.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:02:29 +05:00
Askarova A
3006833705 feat: dashboard analytics pack — Pareto, histogram, treemap, duration, auto-stages, FTE scenario, recruiters needed, sortable table, bottleneck highlight
Adds analyses that don't require new data:

- Pareto cumulative chart (which N functions = 80% of time).
- Duration histogram (bucketed counts).
- Function length donut (short / medium / long).
- Auto-stage classifier by keywords in the function name
  (Привлечение / Скрининг / Интервью / Оффер / Адаптация /
  Документы-СПП / Коммуникация / Прочее) + horizontal bar.
- Treemap: group -> function, area = minutes.
- "FTE scenario" bar chart: 0..30 vacancies/month with color buckets
  (green ≤100%, amber ≤150%, red >150%) and a dashed 100% norm line.
- "Recruiters needed" card: ceil(monthlyDays / 21).
- Sortable table columns + Этап column.
- Top-3 bottleneck rows highlighted (red tint + 🔥).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:57:47 +05:00
Askarova A
95fe078387 feat: workload analysis in days/weeks
Adds a "Нагрузка на сотрудника" block: days per cycle, weeks per cycle,
total days/weeks per month at the current vacancy plan, and an
overload/buffer card vs 21 working days a month.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:43:03 +05:00
Askarova A
f4ce3c97a2 fix: robust xlsx column parsing via header:'A'
Switched sheet_to_json from array (header:1) to column-letter objects
(header:'A'), so the parser reads B/C/D directly. Previous array
destructuring broke when the sheet's range did not start at column A.
Also added debug logging and a script-tag cache buster.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:37:16 +05:00
Askarova A
da623a388c feat: auto-load default xlsx on page open
Dashboard fetches "Функции и вес рекрутинг 2026 (2).xlsx" from the same
directory on load, so opening the page renders the MVP immediately
without requiring a manual upload. Manual upload still works as override.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:14:13 +05:00
Askarova A
f97af2b749 feat: дашборд функций рекрутинга (MVP)
- index.html / styles.css / app.js — клиентский SPA на SheetJS + Plotly
- Парсит .xlsx в браузере, без бэкенда
- Базовые KPI: сумма времени, кол-во функций, среднее, самая долгая
- Стратегические KPI: цикл, FTE-загрузка, capacity, bottleneck, стоимость
- Топ-10 функций, распределение по группам, таблица с фильтрами
- Тёмная/светлая тема, кириллический парсер времени
- assets/logo.svg — плейсхолдер логотипа telecom.quest
- PRD.md / TRD.md обновлены под Gitea Pages деплой

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 11:35:51 +05:00