ОПИСАНИЕ ФУНКЦИОНАЛА · ТЗ V1.3

Полная карта системы — модуль за модулем.

Шесть функциональных блоков, четырнадцать подсистем, четыре кабинета, две стороны учёта. Ниже — детальное описание того, что умеет actrix.

МОДУЛЬ 01 / ESTIMATES

Сметы — клиентские и подрядные.

Двусторонний учёт. Каждая работа имеет четыре цены, каждая смета принадлежит одной стороне (CLIENT / CONTRACTOR), при этом связана с документами другой стороны.

SideCLIENT · CONTRACTORЦвет в UI: зелёный или синий. Один инвариант на всю систему.
Цены4 цены / строкаМатериалы и работы — отдельно для клиентских и подрядных смет.
ИммутабельностьDRAFT → ON_APPROVAL → APPROVED → COMPLETEDПосле согласования смета не редактируется. Все изменения — через корректировки.
Связь1 : N (CLIENT → CONTRACTOR)Одна клиентская смета — ноль или несколько связанных подрядных.
ГруппировкаEstimateGroupЛогические разделы внутри сметы — земляные работы, фундаменты, каркас.
История «было / стало»ПолнаяКаждая корректировка хранит снимок строки до и после изменения.

Каталог как источник цен

Цены подтягиваются из CatalogItem по стороне сметы. Журнал изменений хранится в CatalogItemPriceHistory.

Excel-импорт

Шаблоны xlsx с маппингом групп, материалов и работ.

Подрядная смета из клиентской

Один клик — подрядная смета с теми же строками и подрядными ценами.

Маржа по строкам

Когда строки сопоставлены по каталогу, маржа считается по каждой позиции.

МОДУЛЬ 02 / ADJUSTMENTS

Корректировки — единственный способ изменить утверждённую смету.

Добавление, удаление и замена строк через отдельный документ. Со своим маршрутом согласования и иммутабельностью.

Системные корректировки

isSystemGenerated = true — автоматически создаются актом разграничения для закрытия сметы.

Инициация из кабинета подрядчика

Подрядчик предлагает корректировку — мы принимаем или отклоняем.

Дельта «было / стало»

UI показывает построчные изменения с дельтами по количеству и цене.

Обязательный комментарий

При изменении цены — только ADMIN может снять обязательность.

МОДУЛЬ 03 / ACTS

Акты КС-2 и накопительный учёт.

КС-2 формируются по договору с учётом всего, что уже было сдано. Сторнирование — минусовыми позициями.

Стороны актаКлиентский · ПодрядныйПодрядный — между нами и подрядчиком. Клиентский — между нами и клиентом.
Накопительный итогАвтоматическиСумма выполнений с начала договора по каждой позиции.
ВложенияAttachment (полиморф)Фото, исполнительная, акты осмотра. Управление видимостью для клиента/подрядчика.
Односторонний КС-2isUnilateralКогда подрядчик уклоняется от подписания — сокращённый маршрут только нашей стороны.
Подача с порталаCONTRACTOR_USERПодрядчик создаёт акт-черновик из своего кабинета.
Электронная подписьОпциональноe-sign внутри системы — подписание акта в кабинете.
МОДУЛЬ 04 / CONTRACTS

Договоры, доп. соглашения и ПДЦ.

Каждая смета — на договор. Каждый договор — на сторону (клиент или подрядчик) и объект.

CONTRACTосн.
ADDITIONAL_AGREEMENTДС
PRICE_PROTOCOLПДЦ
CONSTRUCTION_OBJECTобж
CLIENTсторона
COUNTERPARTYсторона
МОДУЛЬ 05 / NSI / CATALOG

Нормативно-справочная информация.

Каталог элементов с двумя парами цен, группировкой, пресетами и историей. Объекты строительства, схемы согласования.

CatalogItem

4 цены: clientMaterial, clientWorks, contractorMaterial, contractorWorks.

CatalogGroup

Иерархия групп с пресетами — готовые комплекты строк для типовых смет.

ConstructionObject

Адрес и группа объектов — для условий маршрутизации согласований.

ApprovalRoute

Шаги, условия (сторона, сумма, маржа), исключения (PriceChangeException).

МОДУЛЬ 06 / APPROVALS

Workflow согласований.

ApprovalRoute с шагами и условиями — ApprovalInstance с решениями и аудитом. Уведомления по email и WebSocket.

Условияside · сумма · маржа · объектМаршрутизация по комбинации признаков.
ШагиПоследовательные и параллельныеНесколько согласующих на одном уровне.
РешенияAPPROVE · REJECT · COMMENTРешения и комментарии хранятся в ApprovalDecision.
МОДУЛЬ 07 / CABINETS & RBAC

Кабинеты и матрица прав.

Три интерфейса (внутренний кабинет + два портала) и восемь ролей. Изоляция кабинетов — инвариант.

ДЕЙСТВИЕ
ADMIN
MANAGER
APPROVER
CLIENT_USER
CONTRACTOR_USER
Сметы (CRUD)
👁
×
×
Согласование
×
×
Подача акта
×
×
Просмотр маржи
×
×
×
Прогресс работ
👁
👁
Ауд. ПД клиента
×
×
×
★ — только если включён в маршрут согласования. 👁 — просмотр.
МОДУЛЬ 08 / PRINT FORMS

Печатные формы и выгрузки.

Все унифицированные формы и XLSX-выгрузки. Генерация через BullMQ-очередь — не блокирует UI.

КС-2 · АКТxlsx
КС-3 · СПРАВКАxlsx
СЧЁТ-ФАКТУРАxlsx
СЧЁТ НА ОПЛАТУxlsx
ПДЦpdf
АКТ РАЗГРАНИЧЕНИЯpdf
МОДУЛЬ 09 / AUDIT & NOTIFICATIONS

Аудит и уведомления.

Каждое действие логируется в AuditLog — включая действия из внешних кабинетов. Уведомления — email + WebSocket + колокольчик.

AuditLog

Кто, что, когда, с каким документом, из какого кабинета. Иммутабельные записи.

Notification

readAt, mark-as-read эндпоинты. Кабинет показывает счётчик непрочитанных.

Раскрытие ПД

Отдельное событие аудита с causeReason — кто и зачем раскрыл паспорт клиента.

WebSocket

Live-обновления маржи и статусов документов без перезагрузки страницы.

МОДУЛЬ 10 / SECURITY

Безопасность и инфраструктура.

JWT с ротацией refresh-токенов, RBAC, изоляция кабинетов на уровне БД, шифрование ПД и паспортных полей.

ХостингДЦ · РФPostgreSQL 16, Redis 7, S3-совместимое хранилище. Все данные в РФ.
Шифрование ПДColumn-levelПаспортные поля клиента — только через «Раскрыть» с аудитом.
JWT15 мин · 30 днAccess 15 минут, refresh 30 дней с ротацией. httpOnly cookie.
PortalScopeGuardmiddlewareSQL-фильтрация по side и ID партнёра на уровне каждого запроса.
OwnershipGuardmiddlewareПроверка участия в маршруте при согласовании, авторства при редактировании.
РезервыDaily · 30 днСнэпшоты БД и объектного хранилища ежедневно, хранение 30 дней.
FAQ

Технические вопросы.

01
Поддерживается ли альтернативный стек на Python?
По умолчанию — Node.js / NestJS. Альтернатива FastAPI + SQLAlchemy 2 + Celery — по запросу для корпоративных установок.
02
Можно ли развернуть on-premise?
Да, на тарифе «Корпорация». Поставка в виде Docker-композиции со всеми зависимостями.
03
Какие интеграции есть «из коробки»?
REST API для 1С, экспорт/импорт xlsx, S3-совместимое хранилище для документов. Webhooks на ключевые события.