Files
bit-flight-deck/docs/superpowers/specs/2026-05-13-mvp4-finrez-design.md
T

112 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MVP-4 «Финрез по подразделениям» — Design Draft
| | |
|---|---|
| Дата | 2026-05-13 |
| Статус | **Draft — требует отдельного мозгового штурма по схеме расчёта** |
| Зависимости | MVP-1 + MVP-2 + MVP-3 |
| Срок | 2-3 недели после MVP-3 + отдельная сессия с пользователем по схеме расчёта |
> **Назначение этого документа:** зафиксировать то, что уже обсудили по MVP-4, чтобы не вспоминать заново. **Это самая сырая из спек** — финальная схема расчёта финреза требует отдельного мозгового штурма.
## Цели MVP-4
Автоматизация расчёта финрезультата по подразделениям. Сейчас пользователь ведёт расчёт **руками в Excel** и кладёт итоги в самописную 1С (см. [reference-finrez-1c](../../memory/reference_finrez_1c.md)).
### Главные бизнес-вопросы
- Какой финрез у каждого подразделения за прошлый месяц / квартал / год?
- Прогноз финреза на основе текущей загрузки.
- Какие подразделения убыточны, какие прибыльны?
## Текущий статус автоматизации (как есть)
В **самописной 1С** (без БСП, 9 объектов):
- `Document.РегистрацияПоказателейЗаПериод` — ввод вручную раз в месяц.
- ТЧ: Сотрудник × ФОТ × Оборот × КоличествоЧасов.
- `AccumulationRegister.ПоказателиЗаПериод` — обороты с измерениями Сотрудник + Подразделение, ресурсы ФОТ + Оборот + Часы.
То есть **в 1С лежит только итог**. **Сложная схема расчёта** живёт в голове пользователя и Excel-файлах. По его словам — «считаю сам, кладу финальную информацию, конфигурацию придется дорабатывать под реальные расчеты».
## Что планируется в MVP-4
### Этап 1 — Сбор и автоматизация ввода (вместо Excel)
**До детального проектирования** — обязательная **сессия с пользователем** где он рассказывает:
- Как именно считается выручка по подразделению (распределение проектной выручки между подразделениями? через сотрудников?).
- Как считается расход (ФОТ + амортизация + накладные? распределение общих расходов?).
- Какие статьи используются (ДДС / БДР)?
- Как меняется схема по времени (что было до этого, что планируется).
### Этап 2 — Доработка самописной 1С
Текущая конфигурация — приёмник готовых цифр. Нужно превратить в **калькулятор**:
- Добавить справочник статей затрат.
- Добавить документ с детализацией: Сотрудник × Статья × Сумма за период.
- Привязка к проектам (если расходы можно атрибутировать на проект).
- Привязка к данным из BIT.RA (фактические работы сотрудников).
- Добавить email в `Catalog.Сотрудники` (для identity-resolution).
- HTTP-сервисы — реализация в самописной 1С (см. [architecture-transport-decisions](../../memory/architecture_transport_decisions.md)).
### Этап 3 — ETL в core
```sql
core.dept_finance_monthly (
department_id bigint REFERENCES core.department,
period_month date,
fot decimal(15,2),
oborot decimal(15,2),
hours_count decimal(15,2),
finrez decimal(15,2) -- oborot - fot - расходы
)
core.expense_item (
code text PRIMARY KEY,
label text,
category text -- ФОТ, амортизация, общие, ...
)
core.dept_finance_detailed (
department_id bigint,
period_month date,
employee_id bigint REFERENCES core.employee,
expense_item_code text REFERENCES core.expense_item,
amount decimal(15,2)
)
```
### Этап 4 — Витрины
```
mart.dept_finance_monthly — по подразделению × месяц: выручка, расходы по статьям, финрез, маржинальность
mart.finrez_trend — динамика по подразделениям за 12 мес
mart.finrez_forecast — прогноз финреза на основе текущей загрузки + средних показателей
```
### Этап 5 — Дашборд
«Финрез по подразделениям» в Metabase:
- Плитка «Финрез компании за прошлый месяц».
- Таблица по подразделениям: выручка, расходы, финрез, маржинальность %, цвета.
- График: динамика финреза по подразделениям за 12 месяцев.
- Прогноз следующего месяца на основе загрузки.
## Identity-resolution
Сотрудники самописной 1С ↔ BIT.RA — **сейчас нет общего ключа** (`Catalog.Сотрудники` имеет только Код+Наименование). После добавления email в `Catalog.Сотрудники` — связь через email (см. [identity-and-scope](../../memory/feedback_identity_and_scope.md)).
## Open questions (для финализации перед стартом MVP-4)
1. **Схема расчёта финреза.** Это **самый главный вопрос**. Без него нельзя проектировать. Отдельная сессия пользователя.
2. **Уровень детализации.** Расход сразу по статьям или агрегированно? По сотрудникам или нет?
3. **Атрибуция выручки.** Как делится выручка проекта между подразделениями (если в проекте сотрудники разных подразделений)? Пропорционально часам? По ставке × часы?
4. **Альтернатива** — может проще не дорабатывать 1С, а реализовать расчёт прямо в core PG, оставив 1С только для просмотра итогов? Решение зависит от готовности пользователя работать с витриной в Metabase вместо отчёта в 1С.
5. **Прогноз финреза** — на основе чего считать? Среднее за прошлые периоды + текущая загрузка + ставки. Или модель сложнее.
## Зависимости от MVP-3
MVP-4 стартует когда:
- ✅ MVP-3 работает (есть core.project_finance с маржой).
- ✅ Отдельная сессия с пользователем по схеме финреза завершена.
- ✅ Решение по доработке finrez_1c принято (доработка vs расчёт в core).