Операционный план → План сбыта (фиксируем)
Актуально на: 2026-02-13
Дата фиксации: 2026-02-09
Обновление 2026-02-13
См. CHANGELOG.md (стабилизация UI‑настроек и оптимизации автосейва; важно для тяжёлых таблиц/графиков).
Этот документ фиксирует, что сделано в блоке Операционный план → План сбыта (Выручка / Объёмы сбыта / Ценообразование) и где это находится в коде.
Ключевые принципы
- Выручка не хранится в базе как отдельная таблица/поле, т.к. это расчётный показатель.
- Выручка считается как:
выручка = цена × объём. - Отключение продукта (снятие галочки слева) вычитает его вклад из “выручки выбранных”, но “выручка общая” остаётся неизменной.
- Для длинных горизонтов важны:
- одинаковый “шаг” между датами на графике (с горизонтальной прокруткой при необходимости),
- возможность посмотреть детали периода,
- таблица как альтернативное представление.
Выручка (UI)
График
- Показывает динамику выручки по периодам.
- Детализация по периоду выводится в правой панели (наведение / закрепление кликом).
- Ось X: отображаются все даты/периоды (не “прячем” часть дат).
- Скролл по горизонтали (если не помещается) — как на графиках объёмов/цен.
Таблица
- Переключение агрегации: помесячно / поквартально / по годам.
- Единая таблица:
- колонки:
Период,Выручка (общая),Выручка (выбранные), далее колонки по продуктам; - по продукту в ячейке: выручка + доля в общей выручке периода; цена/объём — менее заметно.
- колонки:
- Прокрутка таблицы:
- горизонтальная и вертикальная — внутри контейнера таблицы;
<thead>закреплён сверху (sticky top-0), первый столбец закреплён слева (sticky left-0);- колесо мыши по умолчанию = вертикальная прокрутка; горизонтальная — через Shift + wheel.
Продукты: “Канал продаж”
- В продукт добавлено поле
salesChannel(“Канал продаж”). - В плане сбыта и выручке оно отображается рядом с
unit(например:подписка · Онлайн). - Список вариантов канала продаж хранится в пользовательских UI-настройках (JSON) и пополняется при вводе нового значения.
Где смотреть в коде
- Основной клиентский “legacy workspace UI”:
app/workspace-client-legacy.tsx- блок План сбыта/Выручка, табличный/графический режимы, логика расчёта выручки, скролл.
- Нормализация/загрузка/сохранение проектных данных:
lib/project-workspace-store.ts - UI-настройки пользователя (загрузка/сохранение JSON):
app/(app)/settings/actions.ts - UI-компонент настроек (синхронизация/сохранение):
components/ui-settings.tsx - Prisma схема:
prisma/schema.prisma - Миграция канала продаж:
prisma/migrations/20260206190000_project_product_sales_channel/migration.sql
Бэкап
В репозитории создан бэкап ключевых файлов:
backups/sales-plan_2026-02-09_15-32/