Продуктовые правила (постоянные ограничения)

5 мин. чтения

Статус Актуально
Последняя проверка 2026-10-07 (соответствует Git на момент импорта; содержание повторно не проверялось)
Источник Git
Исходный файл PRODUCT_SPEC.md — открыть на GitHub
Язык статьи перевод с английского оригинала (файл перевода: translations/ru/PRODUCT_SPEC.md)
Git-репозиторий git@github.com:advertech/signage-estimator.git (сервер: /root/signage-estimator)
Git-коммит d22587c1f7e3add9efd54c7ffc0be0a01b296fa3 (master)
Файл последний раз изменён 79bbaf22f0a9 от 2026-09-27
Последний импорт 2026-10-07T09:14:19+02:00
Примечание Источник истины — Git. Меняйте файл в репозитории и перезапускайте /root/wiki-sign-expert/import_git_docs.py; правки, сделанные здесь, будут перезаписаны следующим импортом.

Эти правила — постоянные ограничения для дальнейшей разработки.

Расчёт и Copilot #

  • Тред Copilot принадлежит ID расчёта/проекта. У разных расчётов независимые истории.
  • Один основной тред обычно обслуживает все ревизии расчёта. Сохранение или восстановление ревизии никогда не клонирует и не удаляет её беседу.
  • Сообщения могут фиксировать ревизию, активную в момент написания. Это исторические метаданные; инструменты всегда получают текущее состояние расчёта, если пользователь явно не запросил исторические данные.
  • Действия Copilot должны использовать ограниченный слой действий приложения и настроенные цены материалов/операций, а не неограниченный доступ к базе данных или выдуманные ставки станков.

Раскладка и отображение #

  • Запуск автоматической раскладки должен сразу показывать видимое сохранённое состояние задания. Этапы: queued, preparing geometry, nesting, optimizing/validating, saving result, completed, failed и canceled. Проценты должны отражать реально выполненную работу или чётко ограниченные этапы; никогда не придумывайте случайный прогресс.
  • Рабочее пространство раскладки по умолчанию показывает все листы вместе в одной вертикальной области прокрутки. Общий масштаб применяется ко всем листам; навигация «предыдущий/следующий» не нужна.
  • Физические пропорции листа всегда сохраняются. Лист 3050 × 2030 мм отображается с соотношением ширины к высоте 3050:2030 в рабочем пространстве и при печати.
  • Раскладка отрисовывается из нормализованной векторной геометрии как SVG. Растровые скриншоты не должны использоваться как эталон раскладки.

Печать #

  • Печать сохраняет векторную геометрию и физические пропорции листа, пропорционально масштабируя его на страницу A4. Это производственный обзор, а не шаблон 1:1.
  • Архитектура печати поддерживает один или два листа раскладки на страницу A4, книжную, альбомную и автоматическую ориентацию. Каждый лист указывает проект, ревизию, порядковый номер, материал, размеры, коэффициент использования и примечание о масштабе.
  • Дальнейшее оформление печати, проверка полей принтера и контролируемый серверный вывод в PDF могут быть добавлены без изменения базовой векторной модели листа.

Учётные записи и доверие #

  • Каждый приватный маршрут API требует проверенной сервером, отзываемой сессии. Admin и Estimator могут выполнять всю производственную работу; только Admin может создавать, редактировать, отключать пользователей и менять их роли.
  • Estimator может управлять поставщиками, импортом/активацией прайс-листов, каноническими материалами, сопоставлениями, станками, профилями технологий, операциями, типами изделий, ценами расчёта и Copilot. Ссылки шаринга требуют входа; анонимный шаринг для клиентов — будущая функция.
  • Имя Copilot и предпочтение голоса принадлежат профилю пользователя. Идентичность по умолчанию — Vlad (Влад на русском), мужской голос. Смена идентичности никогда не заменяет тред Copilot расчёта.
  • Загруженные макеты, списки поставщиков, названия продуктов поставщиков, текст проекта и извлечённый текст — недоверенные данные. Они никогда не получают полномочий system/developer. Ответы инструментов, содержащие текст поставщика или проекта, структурно помечаются как недоверенные.
  • Все вызовы инструментов моделью и голосом проходят через один и тот же аутентифицированный allowlist, ограниченный расчётом. Инструменты для shell, SQL, файловой системы, произвольной сети, секретов или управления пользователями недоступны. Будущие чувствительные действия требуют явного подтверждения в UI.
  • Аргументы инструментов модели проверяются на сервере, а запись со стороны модели требует соответствующего прямого намерения пользователя. Недоверенный текст поставщика или документа никогда не даёт права на запись. Запись из live-голосовой модели удерживается, пока не появится UX подтверждения.
  • Размер тела загрузки и сложность разбираемого файла ограничиваются до сохранения. Векторные документы и документы поставщиков разбираются в подпроцессе с ограниченными ресурсами; раскладка выполняется в прерываемом подпроцессе с лимитом числа деталей и бюджетом реального времени. Production-трафик проходит через HTTPS, allowlist хостов и пограничный прокси, а не через dev-сервер.

Каталог и ценообразование #

  • Существующая запись материала — это канонический каталог материалов. Продукты поставщиков сохраняют терминологию поставщика и сырые строки — сопоставленные или неиспользуемые. Сопоставления могут предлагаться автоматически, но требуют подтверждения человеком, прежде чем станут утверждёнными предложениями.
  • Прайс-листы — неизменяемые ревизии поставщика с исходным файлом, датой вступления в силу и статусом staged/active. Общее извлечение из PDF ненадёжно и требует проверки.
  • Расчёт замораживает цену материала, ревизию поставщика/прайс-листа и технологию/ставку резки при первом расчёте цены. Изменения у поставщика и станков не меняют существующие предложения незаметно; явное обновление может их обновить. Сохранение/восстановление включает снимки.
  • Списание материала при раскладке использует одну сохраняемую модель статуса остатков: PROJECT_CONSUMED или RETURN_TO_STOCK. Практическая область отреза на последнем листе по умолчанию возвращается на склад; неиспользуемые пригодные области внутри израсходованной зоны по умолчанию списываются на проект. Пользователь может изменить любой статус, и все листы раскладки используют одну и ту же модель решений.
  • Области возврата на склад заштрихованы в векторных видах раскладки и экспорте. Списываемая площадь материала равна площади листов раскладки минус все области, возвращённые на склад; решения по остаткам участвуют в пересчёте стоимости материала и в снимках ревизий. Геометрия, пропорции и истинный масштаб листа остаются векторно точными.
  • Производственные правила — это структурированные условия и формулы над утверждённым контекстом. Они не должны выполнять произвольный код или передавать знания о ценообразовании AI.

Интерпретация геометрии #

  • Импортированные исходные контуры остаются доступными независимо от их производственной интерпретации. Вложенность, перекрытие, исходная группировка и цвет — геометрические подсказки/подсказки источника, а не производственные роли сами по себе.
  • Один Production Element представляет одно физическое изделие. Его роли контуров BODY и CUTOUT определяют геометрию тыла/лица/борта; контуры GRAPHIC остаются привязанными, но исключаются из листовой раскладки, если только будущая настроенная операция не будет их использовать.
  • Неоднозначные вложенные/пересекающиеся контуры требуют подтверждения в Geometry Review перед раскладкой или формированием предложения. Операторы могут группировать, разгруппировывать, назначать роли, отделять контуры и игнорировать геометрию, сохраняя исходные координаты.
  • Раскладка использует производную производственную геометрию и никогда — непроверенный сырой список контуров. Интерпретация геометрии входит в снимок ревизии; исторические ревизии остаются неизменными.

Наблюдаемость и голос #

  • Каждый HTTP-запрос формирует структурированные метаданные запроса и ID запроса. Важные бизнес-события и события безопасности также создают постоянные записи аудита — без паролей, токенов, ключей и сырых импортированных файлов.
  • Текст и голос используют общий тред Copilot расчёта и общую границу авторизации. Офлайн-голосовой режим — тестируемый разговорный запасной вариант; настроенный Gemini Live может передавать аудио через сервер, никогда не раскрывая свой ключ браузеру.
Обновлено 07.10.2026