112 lines
7.9 KiB
Markdown
112 lines
7.9 KiB
Markdown
# 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).
|