О продукте

Ниже — актуальные тексты из docs/product.md и docs/platform-roadmap-agent-todo.md. Обновление страницы подтягивает файлы с диска (в dev — сразу после сохранения markdown).

Относительные ссылки на другие .md внутри документов открываются как обычные URL и могут не совпадать с маршрутами приложения — смотри соответствующие файлы в каталоге docs/.

Продукт и принципы

Продукт: AI Business Copilot (PNL_PLATFORM)

Единая точка возврата: видение, принципы, границы MVP, фазы, карта кода, два контура данных, бэклог-шаблон.


1. Видение продукта

Веб-приложение — симулятор бизнес-модели и управленческих сценариев для CEO / собственника сервисной IT-компании со смешанной моделью (внедрение CRM, кастомная разработка, сопровождение, лицензии, продукты, внутренняя инфраструктура). Это не ERP, не замена бухучёта и не клон Excel.

Пользователь должен:

  • моделировать структуру компании (юниты, роли, уровни);
  • видеть, как текут деньги: откуда выручка, где прямые/косвенные расходы, маржа, налоги, премиальный фонд, результат собственника;
  • менять параметры и мгновенно видеть пересчёт;
  • сравнивать сценарии (база vs A vs B);
  • в перспективе использовать продукт как operating layer для решений (после стабилизации детерминированного ядра).

UX-цель: ощущение executive simulation workspace / decision cockpit, а не бухгалтерской панели или generic admin.

Для кого в первую очередь: CEO / собственник гибридной сервисной IT-компании; при расширении — CFO / топ-менеджмент (явно не целимся в полевой HRM/CRM в MVP).

Источник бизнес-логики: реальные таблицы и формулы владельца — логику извлекаем в доменную модель и движок приложения; таблицы в перспективе — источник сырых данных после маппинга, а не исполнитель формул.


2. Контекст бизнеса (домен)

  • Несколько уровней экономики: собственник → CEO → топ → руководители юнитов → команды.
  • Несколько юнитов/направлений (Enterprise, SMB, разработка, продукты, поддержка, инфраструктура и т.д.).
  • Разные типы выручки с разной маржинальностью, внутренние передачи, бонусы, распределение прибыли, воронка продаж, зависимость от headcount и утилизации.

2.1. Собственник и CEO; модель vs фактический P&L

  • Собственник и CEOразные роли в модели и в мотивации. У CEO — своя система мотивации и KPI (наёмный/операционный лидер компании). Логика вознаграждения собственника (дивиденды, доля прибыли, long-term и т.д.) не смешивается с «зарплатой CEO» без явного продуктового решения.
  • Текущий главный фокус продукта: сценарная управленческая модель (plan / what-if), которая бьётся на всех уровнях (юниты, роли, трансферты, компенсации, агрегат компании), масштабируется без поломки инвариантов и остаётся администрируемой и честной по стимулам.
  • Фактический P&L (опора на реальные данные, закрытие периода, сверка) планируется как отдельный раздел приложения: отдельный контур смысла от экрана симуляции, чтобы не смешивать decision-support и учётный/фактический срез. Связь между контурами — общие определения метрик и перенос логики там, где это осознанно.

3. Принципы разработки

  1. Сначала детерминированная логика — явные формулы и допущения; AI не внутри финансового ядра.
  2. Domain-driven — сущности бизнеса первичны; не проектировать UI вокруг колонок Excel.
  3. Разделение слоёв: доменные типы → calculation engine → состояние сценария → импорт/персистенция → UI. Нет бизнес-формул внутри React-компонентов.
  4. Визуальная ясность важнее бухгалтерской полноты на ранних этапах.
  5. Scenario-first — ценность только если параметры меняются и результат пересчитывается сразу.
  6. Маленькие итерации — MVP, затем наращивание; не строить платформу «на вырост» без доказанного ядра.
  7. AI (фаза позже) — объяснения, инсайты, подсказки сценариев поверх стабильных чисел из движка. В репозитории уже есть ранний прототип объяснений для контура Workspace+Sheets ([src/app/api/ai/explain/route.ts](../src/app/api/ai/explain/route.ts)) — это не финансовое ядро.

4. Границы MVP (что входит / что нет)

В MVP фокус на четырёх возможностях:

  1. Описание бизнес-модели (юниты, роли, headcount, потоки выручки, расходы, допущения, бонусные правила — в объёме, достаточном для пересчёта).
  2. Сценарное моделирование (изменение параметров → мгновенный результат).
  3. Визуальная карта бизнеса (интерактивный граф).
  4. Дашборд KPI и сравнение сценариев.

Сознательно не делаем в ранних версиях: полноценный ERP/HRM/CRM/payroll, копирование всех формул Excel 1:1, микросервисы, тяжёлый multi-tenant, ML-прогнозирование, AI внутри расчёта P&L.


5. Критерии успеха MVP

MVP считается успешным, если можно:

  • описать компанию как систему (структура + экономика);
  • увидеть движение денег и ключевые KPI;
  • смоделировать структурные и параметрические изменения;
  • сравнить сценарии;
  • находить рычаги и утечки маржи (через числа и визуализацию, без «магии» модели);
  • использовать это как опору для решений CEO.

6. Архитектура: два контура (важно)

В репозитории временно сосуществуют два контура с разной гранулярностью домена. Это не баг документа — технический долг, который нужно помнить при разработке.

КонтурНазначениеДвижокПерсистенция / данные
CEO Simulator (клиент)Управленческий симулятор: юниты, агрегированная экономика, base/A/B[calculateScenario](../src/features/ceo-simulator/engine/calculateScenario.ts)Сейчас: Zustand + mock ([useScenarioStore](../src/features/ceo-simulator/store/useScenarioStore.ts), [baseData](../src/features/ceo-simulator/mock/baseData.ts)); панель XLSX в UI — без обязательной связи с единой БД-моделью симулятора
Workspace + SheetsИмпорт из Google Sheets, сотрудники, правила компенсаций, сценарии «до/после» по месяцу[calculateMvpMetrics](../src/server/calculations/calculateMvpMetrics.ts), [runScenario](../src/server/scenario/runScenario.ts)Prisma: Workspace, Employee, Scenario, …

В Prisma уже описаны таблицы **CeoCompany, CeoBusinessUnit, …** ([prisma/schema.prisma](../prisma/schema.prisma)) как задел под персистентность целевой доменной модели — CEO Simulator на них пока не завязан.

Целевое правило (стратегия данных): источник истины для симуляциинормализованная модель внутри приложения и движок; таблицы — только вход после маппинга.

Направление унификации (без обязательства срока): один целевой DomainModel (как в [domain/types.ts](../src/features/ceo-simulator/domain/types.ts)) + адаптеры: mock, xlsx, импорт из Workspace/Google. Два движка — сливать только осознанно, после явного решения.

flowchart TB
  subgraph ceo_client [CEO_Simulator_Client]
    Zustand[useScenarioStore]
    Mock[mock_baseData]
    Engine1[calculateScenario]
    UI[Dashboard_Map_Charts]
    Zustand --> Engine1
    Mock --> Zustand
    Engine1 --> UI
  end

  subgraph workspace_server [Workspace_Sheets_Flow]
    PrismaWS[Prisma_Workspace_models]
    Engine2[calculateMvpMetrics_runScenario]
    Sheets[Google_Sheets_sync]
    PrismaWS --> Engine2
    Sheets --> PrismaWS
  end

  subgraph prisma_ceo [Prisma_Ceo_tables]
    CeoTables[CeoCompany_CeoBusinessUnit]
  end

  prisma_ceo -.->|not_wired_to_client_yet| ceo_client
  workspace_server -->|different_granularity| ceo_client

7. Модули продукта и статус в репо

МодульОписаниеСтатус
1. Доменная модельCompany, BusinessUnit, Role, EmployeeGroup, RevenueStream, CostItem, BonusRule, FunnelModel, Assumption, Scenario, результатыТипы есть[domain/types.ts](../src/features/ceo-simulator/domain/types.ts). Prisma-зеркало: Ceo*.
2. Движок расчётовВыручка, прямые/косвенные, валовая/операционная прибыль, налоги, чистая, премии, собственникРеализовано для CEO path[calculateScenario.ts](../src/features/ceo-simulator/engine/calculateScenario.ts). Частично: расчёт опирается на агрегаты юнита (avgRevenuePerUnit, payrollFund, hourCost, indirectCost), а не на полную сумму RevenueStream/CostItem/EmployeeGroup. FunnelModel в сценарии ещё не задаёт выручку в движке. Отдельно: движок Workspace — [calculateMvpMetrics.ts](../src/server/calculations/calculateMvpMetrics.ts).
3. Редактор сценариевСлайдеры/поля для параметров what-ifЕсть[scenario-editor/page.tsx](../src/app/ceo-simulator/scenario-editor/page.tsx), [ScenarioControls.tsx](../src/features/ceo-simulator/components/ScenarioControls.tsx)
4. DashboardКрупные KPIЕсть[ceo-simulator/page.tsx](../src/app/ceo-simulator/page.tsx), [KpiCard](../src/features/ceo-simulator/components/KpiCard.tsx)
5. Карта бизнесаГраф орг/экономических узловЕсть (базовый граф)[BusinessMap.tsx](../src/features/ceo-simulator/components/BusinessMap.tsx) (React Flow)
6. Денежные потокиВизуализация потоковЕсть (упрощённо)[MoneyFlowChart.tsx](../src/features/ceo-simulator/components/MoneyFlowChart.tsx)
7. Сравнение сценариевBase / A / B, отклоненияЕсть[scenario-compare/page.tsx](../src/app/ceo-simulator/scenario-compare/page.tsx), [ScenarioCompareTable.tsx](../src/features/ceo-simulator/components/ScenarioCompareTable.tsx)
8. Мотивация / трансфертыПорог собственника, юнит P&L, dev как внутренний подрядчик, sales deferred, variable comp vs чистая прибыльДемо: [calculateMotivationDemo.ts](../src/features/motivation-demo/engine/calculateMotivationDemo.ts), страница [motivation-demo/page.tsx](../src/app/motivation-demo/page.tsx) — см. motivation-development-plan.md
Импортxlsx → доменЧастично: UI [XlsxImportPanel.tsx](../src/features/ceo-simulator/components/XlsxImportPanel.tsx); полный маппинг в DomainModel — по бэклогу
Google SheetsЖивые таблицыЕсть для Workspace-контура — интеграции и sync; не = полная нормализация в CEO DomainModel
AI-слойОбъяснения, инсайтыПрототип на числах Workspace-сценария; не смешивать с ядром CEO Simulator до унификации

8. Стратегия данных (этапы)

ЭтапСодержаниеСостояние в репо
1Mock / JSON / domain objects, расчёты в приложенииВ работе: mock + движок + UI CEO Simulator
2Импорт xlsx, маппинг в домен, snapshotЧастично (панель импорта); доработать контракт маппинга
3Google Sheets, syncУже есть для Workspace; нужно связать с целевой доменной моделью симулятора, если это выбранный путь
4Регулярный sync, история версийНе реализовано как продуктовая фича

9. Фазы разработки (продуктовый roadmap)

Актуальный сквозной роадмап, текущий фокус владельца и задачи для агентов: platform-roadmap-agent-todo.md — при необходимости опережает таблицу ниже (например, приоритет мотивации юнитов vs симулятор).

ФазаЦельТекущее состояние (оценка)
1 — Core SimulatorДомен, движок, dashboard, scenario editor, business graph, compare~70–80% каркаса на моках; не хватает полноты движка (воронка → выручка, декомпозиция по RevenueStream/cost), персистенции Ceo*
2 — Import layerxlsx → домен, UI маппинга, snapshotРанний этап
3 — Google integrationПодключение таблиц к нормализованной модели симулятораЕсть отдельный поток Workspace; требуется стратегия слияния
4 — Advanced modelingТрансферные цены, capacity, воронка↔выручка, plan vs fact, шаблоны сценариевВ основном бэклог
5 — AI layerОбъяснения, поиск утечек маржи, идеи сценариев — поверх стабильного ядраПрототип объяснений для другого контура

10. Стек

КомпонентЦелевой (бриф)Факт в репозитории
FrameworkNext.js App RouterNext.js 16, App Router
ЯзыкTypeScriptTypeScript
БДPostgreSQL + PrismaPostgreSQL + Prisma
Клиентский stateZustandZustand
UIshadcn/uiTailwind + собственные компоненты; shadcn не подключён — возможное будущее выравнивание
ГрафReact FlowReact Flow
ГрафикиRechartsRecharts

11. Контур Workspace + главная (кратко)

Для полноты карты продукта:

  • Workspace изолирует данные: сотрудники, компенсации, выручка по месяцу, utilization, сценарии с изменениями removeEmployee | changeCompensationRule | changeAvgSellingRate.
  • Пользовательский путь: Интеграции → Источники данных → Сценарии → опционально AI chat с опорой на метрики этого контура.
  • Подробности схемы БД: [prisma/schema.prisma](../prisma/schema.prisma).

12. Бэклог (шаблон)

Формат: идея → зачем → критерий готовности → приоритет P0–P3.

IDЗадачаЗачемГотово когдаПриоритетСтатус
B-001Связать FunnelModel с выручкой в calculateScenarioРеалистичный what-if по воронкеФормула и тесты задокументированыP1idea
B-002Использовать RevenueStream/CostItem в движке или явно убрать из MVP-моделиНет «мёртвых» полей в доменеОдно из двух сделано консистентноP1idea
B-003Персистенция CEO Simulator в Ceo* + загрузка в storeНе терять сценарииCRUD + загрузка в UIP2idea
B-004Адаптер Workspace/Sheets → DomainModelОдин источник истины для симуляцииМаппинг и тесты на фикстурахP2idea

Идеи без приоритета (inbox): добавлять сюда свободным списком.


13. ADR-lite (решения и допущения)

ДатаРешение / допущениеКомментарий
2026-04-10Собственник ≠ CEO; модель отдельно от фактаВ продукте и мотивации — разные роли; фокус на сценарной модели; фактический P&L — отдельный раздел позже (см. §2.1, strategic-product-context.mdc).
Два движка временно допустимыCEO Simulator vs Workspace; унификация через адаптеры к одному DomainModel
CEO v1 движок на агрегатах юнитаБыстрый MVP; детализация по потокам выручки/статьям — следующий шаг
Таблицы не исполняют формулы в продеРасчёт только в коде приложения после нормализации

14. Стратегия (бизнес) — заполняет владелец

ВопросОтвет
Главная ставка сейчасЦелостная сценарная модель (P&L + орг + мотивация по ролям), согласованная на всех уровнях и устойчивая к масштабированию. См. platform-roadmap-agent-todo.md §0.
Сознательно не делаемСмешивать собственника и CEO в одной компенсационной логике; смешивать симуляцию и фактический P&L в одном экране без явного разделения продуктовых контуров — факт выносится в отдельный раздел позже.
Метрики успеха продуктаМодель воспроизводима: те же входы → те же выходы; правила мотивации по ролям объяснимы и не ломают агрегированный P&L; сценарии сравнимы (base / A / B).
РискиРасхождение стимулов и экономики; манипулируемые аллокации; двойной учёт; раздвоение логики «план» vs «факт» в коде без общих определений метрик.

Документ обновляй по мере решений; для правок по смыслу можно дать агенту текст «что изменить в разделе N».

Роадмап разработки

Роадмап платформы и TODO для агентов

Назначение: единая точка ориентира для разработки и для AI-агентов: что строим, в каком порядке (с возможностью перестановки), что не ломать, какие интеграции планируются.

Связанные документы: домен симулятора, два контура данных, модульная карта — product.md. Стратегический бриф агента — .cursor/rules/strategic-product-context.mdc.


0. Правило про приоритеты

Приоритеты не зафиксированы навсегда. Владелец может явно сказать «сейчас горит X» — тогда P0 временно = X, даже если ниже в таблице записано иначе. Агенты обязаны перечитать этот файл и последние сообщения в чате перед крупными изменениями.

Текущий акцент владельца (обновлено): прежде всего целостная сценарная модель — P&L, оргструктура и мотивация по ролям (включая отдельно спроектированного CEO с KPI) должны сходиться по уровням, оставаться выгодными и понятными участникам и не ломаться при масштабировании. Система мотивации юнитов и компании остаётся частью этого же контура.

Собственник и CEO: в модели и в мотивации это разные роли; логику собственника не подменять компенсацией CEO.

Фактический P&L: планируется отдельный раздел продукта (операционные/учётные данные, факт периода). Текущий фокус UI и движка — модель / plan / what-if, без обязательства держать «факт» на том же экране.


1. Северная звезда

Платформа — управленческая ОС + decision-support, не витрина BI: финансы, юниты, мотивация, сценарии, данные из таблиц и внешних систем, AI поверх явных данных и правил (не внутри детерминированного расчётного ядра без отдельного решения).


2. Потоки работ (гибкие приоритеты)

Ниже — логика очередности по умолчанию; фактический P0 см. §0 и чат с владельцем.

ПотокСмыслТип задач
A — Мотивация юнитов / компанииЕдиная система стимулов по юнитам: база для расчёта, администрирование, защита downside собственника, манипулируемость метрикПродукт + домен + схема данных + UI/сценарии; выжимки обсуждений фиксировать в продуктовых заметках / ADR
B — Управленческие таблицы + AI-чатРанний доступ к Google Sheets (и др. источникам), каталог источников, контекст для ответов в чатеКод: data sources, sync/enrich, лимиты контекста, явные ссылки на ячейки/срезы где возможно
C — КаналыTelegram-бот как второй клиент к тем же возможностям (или уведомления)Webhook, привязка пользователя, те же политики данных
D — ИнфраVPS, удалённая разработка, прод-окружениеDocker/Node, Postgres, proxy, секреты, бэкапы — чеклист операций
E — AsanaПроекты, инбокс, делегированиеПродукт: обычно Asana API + OAuth/PAT; MCP — удобно агентам в Cursor, не замена серверной интеграции в приложении
F — amoCRMВоронки, сделки, контроль пайплайнаOAuth/sync, сущности в БД или on-demand для чата
G — Много таблиц / аналитикаНесколько источников, единый каталог, частота обновления, владелец данныхРасширение каталога источников, без смешивания смыслов в одном «мусорном» промпте

3. TODO для агентов (код и поведение)

  • Мотивация (A): перед кодом — явные сущности, метрики, периоды (месяц/квартал/год), кто администрирует, edge cases; сверка с BonusRule и Workspace-контуром в product.md; не втаскивать AI в формулу бонуса без отдельного решения.
  • Данные + чат (B): не отдавать в модель неограниченный объём таблиц; опираться на уже существующие API источников данных и AI-маршруты в репозитории; не логировать секреты.
  • Интеграции (E, F): сначала контракт I/O (что тянем, как часто, где храним), потом реализация; не дублировать старые и новые обходы к одному API.
  • Общее: не ломать работающий функционал без явной просьбы; не перезаписывать .env без согласования; новые технологии — только после краткого согласования с владельцем, если это не микроправка.

4. TODO операционный (не только код)

  • Зафиксировать, где хранятся секреты (локально / VPS / CI).
  • Решить: один VPS на dev+prod или разделение.
  • Для Telegram: токен бота, whitelist пользователей или привязка аккаунта.
  • Для Asana/amocrm: приложения OAuth, redirect URL, права доступа минимально достаточные.

5. Входящие материалы от владельца

Слот: выжимки переписок (например, с GPT) по мотивации юнитов — переносить в этот репозиторий осмысленно: либо отдельный файл docs/notes/motivation-units.md (когда появится текст), либо секция в product.md §14 / ADR-lite, по указанию владельца.

Зафиксировано: заметка владельца по контуру CEO 3.0 / PNL Rocket — notes/ceo-3-motivation-memo.md; каноническая выжимка для агентов — секция PNL Rocket / CEO 3.0 в .cursor/rules/strategic-product-context.mdc.


6. История смены фокуса (кратко)

ДатаФокус владельца
2026-04-10P0: целостная сценарная модель (сходимость уровней, масштабирование); собственник ≠ CEO; фактический P&L — отдельный раздел позже; в контекст добавлен блок PNL Rocket / CEO 3.0 + notes/ceo-3-motivation-memo.md
2026-04-06P0: система мотивации юнитов компании; остальное — по §2 с возможностью перестановки

Обновляй таблицу при явной смене приоритета.


7. Backlog владельца: P&L Cockpit / мотивация / модель (2026-04-07)

Сырой список идей для следующих итераций — не приоритизирован внутри секции, порядок уточнять в чате.

UI / вёрстка таблицы

  • Поправить отступы.
  • Разделить таблицу на логические блоки (визуальные секции).
  • Убрать лишнюю верхнюю строчку.
  • Сворачивание строк/блоков — как в предыдущей версии (восстановить поведение).

Git / репозиторий

  • «Закатить» изменения: подключить Git (хотя бы локально — коммиты, ветки), дальше при необходимости remote.

Показатели и домен

  • Разобраться с всеми показателями, которые сейчас на странице: проверить, что ничего не потеряно и всё учтено.
  • Явно понять: как считается прибыль («как вещество» — формула, слои, что агрегируется).
  • Развести: где месячные бонусы, где квартальные (периоды, правила, отображение).
  • Правильно назвать показатели (терминология CEO / управучёт).
  • Оценить ещё один уровень вложенности в иерархии строк (если нужен по смыслу).

Модель и параметры

  • Добавить больше параметров в модель (драйверы, ставки, периоды — уточнить список при работе).
  • Сделать так, чтобы модель сохранялась (не только в памяти сессии).
  • Варианты персистентности: пресеты, именованные сохранённые модели, история версий — выбрать MVP и схему данных.
  • Сценарий A/B или переключение моделей: «модель 1 / модель 2» для сравнения и тестов гипотез.

Качество расчётов и доверие

  • Проверить все формулы (юнит-тесты + ручная сверка на эталонных цифрах).
  • Добавить раздел «Проверка расчётов» / сверка данных: раскладка по шагам, промежуточные суммы, связь вход → выход (для аудита CEO).

Дизайн

  • Докрутить дизайн в целом (согласованность с остальной платформой / референсом).

PNL Rocket / CEO 3.0 (данные, налоги, внедрение)

  • Эталон одного юнита: перенос из Google Sheet (пример юнита, отчёт по юниту, мотивация CEO, руководитель разработки, отдел разработки, свод «юниты и компания») + сверка шагов с симулятором.
  • Сравнение сценариев: явный режим A/B (две сохранённые модели или пресеты) для ответа «что выгоднее».
  • Налоги в модели: НДС, УСН/режим, налог на прибыль — отдельные допущения и строки; не смешивать с управленческой маржой без подписи.
  • Соцстрах / взносы: слой «до распределения фонда» vs слой «при выплате»; разные формы (ТК / ИП / самозанятый) — ветки или коэффициенты с явным допущением.
  • Штатное расписание: версии по месяцам, история изменений слотов/окладов/индексаций; привязка к P&L и мотивации без задвоений.
  • Единый источник правды по ФОТ и премиям: одна цепочка расчёта → ведомость / превью для бухгалтерии (мес / квартал / год).
  • План vs факт (позже): подгрузка факта и отклонения от сценария — отдельный контур UI/данных, не ломая сценарную модель.
  • Точки безубыточности / окупаемости: часы × ставка или альтернативный драйвер, если от delivery уходят от часов; план отгрузки как вход.
  • Накопленный итог, эффективность: выручка на ФТЕ (мес/год), прочие cumulative-метрики по запросу владельца.
  • Формула по клику: раскрытие расчёта показателя (цепочка входов) для доверия CEO.
  • Рутина: проверка начислений на соответствие правилам мотивации (валидатор поверх тех же данных).
  • Лицензии / всплески прибыли: правила нормализации или потолка премии месяца, чтобы квартал/год не ломались от одного месяца.
  • Performance Review (backlog): цели, периоды, коэффициенты к премии на базе P&L и оргструктуры.
  • Интеграции данных: Excel / Google Sheets как источник факта; история изменений ячеек (где уже есть — расширять осмысленно).