План: смета проекта целиком и разбор ТЗ нейросетью
Дата: 2026-09-30. Статус: ответы на вопросы получены (раздел 6, память проекта); этап 1 (разбор ТЗ) сделан 2026-09-30, дальше — полное ТЗ на смету, бюджет и документы.
Цель: в смету попадает всё, из чего складывается цена проекта для клиента — оборудование, перевозки, командировки, работа команды, подрядчики, произвольные строки, наценки, скидки, резерв и налоги. ТЗ клиента разбирает нейросеть: менеджер получает понятный разбор, заполненную форму ТЗ, файл для команды и предложенные строки сметы.
1. Почему сейчас в смету попадают только «какие-то статьи»
Отдельной сметы в системе нет. «Смета» — это плановые суммы статей бюджета (project_cost_items.planned_amount) по 12 категориям, сверху наценка markup_percent, УСН и НДС (GET /projects/:id/budget). Плановые статьи пишут только четыре механизма:
| Что | Попадает ли в смету | Почему |
|---|---|---|
| Оборудование проекта (вкладка «Оборудование») | нет | вкладка хранит потребность и цены (project_equipment_requirements), но статей бюджета не пишет; её итоги «по базовым ценам», «цены проекта», НДС считаются во фронте и с бюджетом не связаны |
| Своё оборудование со склада по ставке аренды | нет | в бюджет попадают только закупка и субаренда, и то после согласования финансами |
| Перевозки | только после согласования финансами | пока проект в пресейле, в смете их нет |
| Командировки | плановая сумма только при создании | правка командировки плановую сумму не меняет |
| Работа команды | только часы из сметы по ТЗ × ставка отдела | фактические часы пишутся как факт без плана и в смету не идут; ставок по должности и персональных нет; процентов нет |
| Произвольные строки | только статья целиком | нет количества, единицы, цены за единицу, названия для клиента |
Кроме того:
- двойной счёт: плановые суммы разных источников складываются в одной категории — смета по ТЗ
techплюс закупка по логистикеtech, смета по ТЗlogisticsплюс перевозки; - три формулы аренды: в заявке на оборудование (коэффициенты по дням), в логистике (цена × количество без дней), во фронте (округлённые дни);
- два смысла «наценки»: цена проекта минус базовая цена на вкладке оборудования и
markup_percentбюджета — сервер может наценить дважды; - документ сметы для клиента показывает строку «Наценка», фактические суммы и заметки вида «4 ч × 2500»; сумма строк может не совпасть с итогом;
- НДС берётся с реквизитов плательщика проекта; если плательщик не выбран — без НДС, даже если у нашей компании НДС есть;
- УСН добавляется сверху процентом от суммы, а не «гроссапом», и не покрывает налог полностью;
- плановый бюджет проекта (
projects.planned_budget) вводится руками и с итогом сметы не связан.
2. Как должно быть
2.1 Смета — отдельный документ проекта с версиями
- Смета (
project_estimates): проект, номер версии, статус (черновик → отправлена клиенту → согласована / отклонена → архив), связь с версией ТЗ, настройки налогов на момент версии, итоги. - Строки сметы (
project_estimate_lines):- раздел: оборудование, перевозки, командировки, команда, подрядчики, материалы, креатив, прочее, свои разделы;
- источник: оборудование проекта, перевозка, командировка, строка сметы по ТЗ, участник команды, вручную;
- название для клиента и внутренний комментарий;
- количество, единица, дни или часы;
- себестоимость за единицу и итого;
- наценка строки (по умолчанию — наценка раздела);
- цена для клиента;
- флаги «скрыть от клиента» (внутренняя строка) и «зафиксировано вручную» (сбор из проекта её не перезапишет);
- порядок.
- Процентные строки: «агентское вознаграждение 10 % от суммы», «налоги на ФОТ 30 % от команды», «резерв на риски 15 %» — база процента выбирается (вся смета, раздел, строки).
- Скидка клиенту — процентом или суммой, на смету или раздел.
2.2 Один расчётный движок на сервере
Порядок: себестоимость строк → наценки → процентные строки → скидка → резерв → УСН → НДС → итого клиенту. Считаются и показываются маржа в рублях и процентах.
Расчёт в money.Money, округление до копеек, одна реализация на сервере с тестами на примерах из практики. Фронт только показывает результат — никаких параллельных расчётов, как сейчас на вкладке оборудования.
2.3 «Собрать из проекта»
Кнопка заполняет черновик сметы из того, что уже есть в проекте:
- Оборудование:
- своё со склада — ставка аренды из каталога × дни с коэффициентами за длительность (одна формула на всю систему) × количество;
- субаренда и закупка — цена поставщика;
- сопоставление с каталогом, чего нет — строкой вручную.
- Перевозки — плановая стоимость операций; если перевозок ещё нет — оценочная строка по тарифу («доставка на площадку и обратно»).
- Командировки — плановая стоимость: билеты, жильё, суточные.
- Команда — часы из сметы по ТЗ или состав команды × ставка; ставка по приоритету: персональная → должности → отдела.
- Процентные строки и подрядчики — из шаблона сметы компании.
Повторный сбор показывает, что изменилось с прошлого раза, и не трогает строки, исправленные вручную.
2.4 Смета ↔ бюджет
Согласованная версия сметы становится планом бюджета:
- плановые статьи по категориям пишутся из неё и заменяют текущие «смета из ТЗ → бюджет»;
- у каждой плановой суммы ровно один источник — двойного счёта нет;
- плановый бюджет проекта = итог сметы для клиента.
Факт по-прежнему приходит из перевозок, командировок, часов и платежей. Вкладка бюджета показывает план из сметы против факта по тем же разделам.
2.5 Документ для клиента
PDF и Excel из версии сметы:
- разделы и названия для клиента;
- без себестоимости и внутренних строк;
- наценка — внутри цен (по настройке — отдельной строкой);
- скидка и налоги по режиму: НДС отдельной строкой или «в том числе»;
- реквизиты нашей компании и клиента.
Документ сохраняется за версией. Отправка клиенту переводит версию в «отправлена».
2.6 Налоги
- НДС: режим и ставка проекта → реквизиты плательщика → основные реквизиты нашей компании.
- УСН: на выбор — надбавка сверху (как сейчас) или гроссап, чтобы после уплаты осталась нужная сумма.
- Статья «налоги» не облагается повторно.
2.7 ТЗ разбирает нейросеть
Менеджер загружает ТЗ клиента — PDF, DOCX, XLSX, фото, скан — или вставляет текст письма. Файлы читаем тем же механизмом, что уже работает для реквизитов: текстовый слой, иначе страницы картинками.
Разбор ТЗ — понятная карточка для менеджера:
- мероприятие: цель, формат, даты, площадка, число гостей;
- программа по дням;
- оборудование списком с количеством, сопоставленное с каталогом: что есть на складе, чего нет;
- персонал и подрядчики;
- логистика и командировки;
- особые требования;
- неясности и вопросы клиенту — отдельным списком, их можно скопировать в письмо.
Разбор заполняет форму новой версии ТЗ (цель, формат и площадка, оснащение, сроки монтажа, требования) и хранится вместе с версией.
Файл «ТЗ для команды» (PDF/DOCX) — разбор в нашем оформлении, с исходным файлом клиента во вложении.
Строки сметы из разбора:
- оборудование, найденное в каталоге, — с количеством и днями;
- работа команды — блоками с часами;
- перевозки и командировки — оценкой.
Менеджер принимает их построчно в черновик сметы.
Ошибки помощника — понятным текстом, что сделать («Мало данных: приложите файл ТЗ или опишите мероприятие»), без «ответил непонятно». Первая часть этого исправления уже выкачена 2026-09-30: ответы со списками больше не отбрасываются.
3. Права
- Себестоимость, наценки и маржа видны при
costs/earnings_margin. - Цены для клиента — при
client_budget. - Сотрудник без прав на деньги видит смету без сумм, как сейчас бюджет.
- Отправить смету клиенту и согласовать версию — менеджер проекта и финансы.
4. Этапы
| Этап | Что получает менеджер | Оценка |
|---|---|---|
| 1. Разбор ТЗ нейросетью ✅ | загрузил ТЗ — видит разбор, вопросы клиенту, заполненную форму ТЗ и файл «ТЗ для команды» (сделано 2026-09-30, AI-помощник → Разбор ТЗ) | 3–4 дня |
| 2. Смета: модель и расчёт | смета с версиями и разделами, строки с количеством и ценой, наценки по разделам и строкам, скидка, резерв, налоги, маржа; текущие статьи бюджета переносятся в смету v1 | 4–5 дней |
| 3. «Собрать из проекта» | оборудование (свой склад, субаренда, закупка), перевозки, командировки, команда со ставками, процентные строки — одной кнопкой, без двойного счёта | 5–6 дней |
| 4. Экран сметы | таблица по разделам: себестоимость, наценка, цена; итоги и маржа; версии и сравнение; фиксация ручных правок | 4–5 дней |
| 5. Документ для клиента и бюджет | PDF и Excel для клиента; согласованная версия — план бюджета и плановый бюджет проекта | 3–4 дня |
| 6. Смета из ТЗ помощником | строки сметы из разбора ТЗ: оборудование из каталога, часы команды, оценка логистики | 3 дня |
Порядок можно менять: этап 1 не зависит от остальных, этапы 2–5 идут подряд, этап 6 — после 1 и 3. Каждый этап закрывается по Definition of Done из CLAUDE.md: документация, контракты, e2e-сценарий.
5. Что уходит
- «Смета по ТЗ → применить в бюджет» (
spec_estimate_items,estimate/apply) заменяется разделом «Команда» сметы и согласованием версии; накопленные строки переносятся. - Расчёт итогов на вкладке оборудования во фронте — цены и итоги считает сервер.
- Наценка как строка в документе клиента — по умолчанию внутри цен.
- Рекомендация вручную заводить статьи «аренда» под оборудование (
equipment-estimate-frontend-flow.md).
6. Вопросы (нужны ответы до этапа 2)
- Аренда своего оборудования: цена за день из каталога и скидка за длительность — коэффициенты 1 / 0,5 / 0,3 / 0,15 / 0,1 по дням, как в заявках сейчас. Оставляем или у вас другая сетка?
- Наценка: предлагаю по разделам с возможностью поменять в строке. Или одна на всю смету?
- Наценку клиенту: прятать внутри цен (предлагаю) или показывать строкой, как сейчас?
- «Проценты затраты на команду» — это что: процент от суммы сметы (агентское, менеджмент проекта), надбавка к ФОТ (налоги на зарплату), или бонус команде от прибыли? Можно несколько.
- Ставки команды: по отделу (как сейчас), по должности, персональные? Ставка для клиента отличается от себестоимости часа?
- УСН: надбавкой сверху или гроссапом?
- Скидки клиенту нужны? На всю смету или на разделы?
- Согласование сметы: достаточно статусов «отправлена / согласована / отклонена» или нужна подпись клиента (ссылка для клиента, согласование в документе)?
- Бюджет: после согласования сметы плановые статьи бюджета = смета, а ручные плановые статьи убираем?