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

94 lines
7.5 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-3 «Маржа, НЗП, актирование» — Design Draft
| | |
|---|---|
| Дата | 2026-05-13 |
| Статус | **Draft — фиксация обсуждённого, требует доработки после MVP-2** |
| Зависимости | MVP-1 + MVP-2 (есть core.employee, core.project, core.stage, core.work_log) |
| Срок | 2-3 недели после MVP-2 |
> **Назначение этого документа:** зафиксировать то, что уже обсудили по MVP-3, чтобы не вспоминать заново. Это **набросок**, не финальная спека.
## Цели MVP-3
Финансовая аналитика по проектам: маржа план/факт, незавершёнка (НЗП), прогноз актирования следующего месяца, контроль подписания результирующих документов.
### Главные бизнес-вопросы
- Какая маржа по проектам (план/факт)?
- Сколько НЗП (незавершёнки) на каждом активном проекте?
- Сколько денег будем актировать в следующем месяце?
- Где отстаём по срокам подписания актов?
- Какая общая себестоимость и себестоимость по закрытым актам?
## Что добавляем к MVP-1/2
### Расширение core
```sql
core.project_finance (
id bigserial PRIMARY KEY,
project_id bigint REFERENCES core.project,
stage_id bigint REFERENCES core.stage,
scenario_code text, -- план | факт | прогноз (из Catalog.СценарииПланирования BIT.RA)
analytics_type text, -- ВидАналитики из BIT.RA (рассмотреть в core или хранить как есть)
employee_id bigint REFERENCES core.employee,
period_date date, -- дата движения
sum_total decimal(15,2), -- Сумма (плановая/фактическая)
sum_acted decimal(15,2), -- СуммаАкт
sum_expense decimal(15,2), -- СуммаРасход
source_doc_id text -- ссылка на Document.ПланФактПроектныхПоказателей_v2
)
-- Возможно понадобится:
core.stage_act (
id bigserial PRIMARY KEY,
stage_id bigint REFERENCES core.stage,
plan_act_date date, -- плановая дата акта (из Catalog.ЭтапыПроектов.ДатаОкончания)
actual_act_date date, -- фактическая дата подписания (если известно)
is_signed boolean,
sum_planned decimal(15,2),
sum_actual decimal(15,2)
)
```
### Новые витрины
```
mart.project_margin — маржа план/факт по проекту: (Сумма_план - СуммаРасход_план) / Сумма_план и аналогично для факта
mart.wip — НЗП = Σ(часы × ставка) - актированная_выручка по проекту/этапу
mart.actuation_forecast — прогноз актирования: открытые этапы с ДатаОкончания в следующем месяце и Σ их Сумма
mart.deadline_risks_financial — риски по подписанию документов (расширение mart.deadline_risks из MVP-2 на финансовую сторону)
mart.cost_summary — общая себестоимость и себестоимость по закрытым (АктПодписан=true) этапам
```
### Источники данных (помимо MVP-1/2)
- **BIT.RA эндпоинт `/api/project_register`** — `AccumulationRegister.ОборотыПроектныхПоказателей_v2` с инкрементом (измерения Сценарий+Проект+Этап+ВидАналитики+Исполнитель → ресурсы Сумма+СуммаАкт+СуммаРасход).
- **BIT.RA эндпоинт `/api/plan_fact_v2`** — `Document.ПланФактПроектныхПоказателей_v2`. **ValueStorage поле `ХранилищеДерева` не тянем** (по [identity-and-scope](../../memory/feedback_identity_and_scope.md)).
- **BIT.RA эндпоинт `/api/lurv`** — `Document.ЛУРВ` для понимания фактически выписанных листов учёта результатов выполнения.
### Дашборд (расширение)
Новый дашборд «Финансы проектов» в Metabase:
- Плитка «Общая НЗП» (сумма по всем активным проектам).
- Плитка «Прогноз актирования за следующий месяц».
- Таблица «Маржинальность проектов» — проект, план-маржа, факт-маржа, отклонение, цвет светофор.
- Таблица «Этапы к актированию в этом/следующем месяце» — этап, плановая дата, сумма, готовность.
- График «Динамика НЗП по проектам» за 12 месяцев.
## Open questions (для финализации перед стартом MVP-3)
- **Что считать НЗП именно?** Текущая идея — `Σ(core.work_log.hours × core.employee.rate) Σ(core.project_finance где сценарий=факт-акт)`. Но если расход в `ОборотыПроектныхПоказателей_v2.СуммаРасход` уже считается по факту работ — это будет двойной счёт. Уточнить семантику регистра.
- **Сценарии (`Catalog.СценарииПланирования` BIT.RA)** — какие реально используются? План, факт, прогноз? Нужно понять словарь.
- **`ВидАналитики` в регистре** — что это за измерение, какие значения? Возможно нужно тянуть `Catalog.ВидыАналитикиПроектныхПоказателей` (или подобное).
- **Связь с финрезом подразделений (MVP-4)** — финрез считается из выручки и расходов, маржа проектов — тоже. Не дублируем ли мы расчёты? Возможно MVP-3 и MVP-4 нужно объединить или строго разграничить (MVP-3 = разрез по проектам, MVP-4 = разрез по подразделениям).
- **Контроль подписания документов** — нужны ли дополнительные сущности (Договоры, ДополнительныеСоглашения)? Они есть в BIT.RA `Catalog.Договоры` и в ТЧ `Проекты.ДокументыЭтапов`.
## Зависимости от MVP-2
MVP-3 стартует когда:
- ✅ MVP-2 работает (есть core.stage, deadline-логика).
- ✅ Identity-map проектов BIT.RA ↔ EVA стабильна.
- Полезно но не обязательно: восстановлена обработка `СинхронизацияДанныхEVA_РА` (для стабильного маппинга проектов).