tz-technical-description.md 10 KB

ТЗ: Технич. описание

Связанные документы:

1. Назначение

Технич. описание описывает технические данные позиции общего каталога и выгрузки этих данных в заданном формате.

По новым вводным это не отдельный самостоятельный модуль, а часть модуля Каталог общий: по сути это те же данные позиции, только представленные и выгружаемые в определенном формате.

2. Статус

Статус: источник изучен, встроить в модуль Каталог общий.

Laravel-модуль to.stroyprofit.com изучен и используется как источник:

  • структуры данных технического описания;
  • правил формирования выгрузок;
  • шаблонов/форматов экспорта;
  • возможных UI-решений, если они применимы к текущей CRM.

В источнике находятся 938 позиций из 24 серий. Для всех позиций заполнены цена, характеристики, полное и краткое техническое описание, группа, название для формы и изображение. Наличие цены в старом модуле зафиксировано как факт анализа, но цена не считается частью техописания в новой CRM.

3. Место в меню

Отдельный пункт меню Технич. описание не нужен. Целевая модель:

Каталог общий
└── Карточка позиции
    └── Технич. описание / экспорт

Требования:

  • не проектировать отдельную сущность техописания, если достаточно данных карточки общего каталога;
  • открыть техописание из карточки позиции общего каталога;
  • обеспечить выгрузку технического описания в требуемом формате;
  • использовать готовый Laravel-модуль как источник логики экспорта.
  • выбранный год в CRM не влияет на техописания и их выгрузки.

4. Права доступа

Отдельная заглушка для техописания не требуется, потому что функциональность встраивается в карточку общего каталога.

Целевая модель:

  • просмотр техописания наследует доступ к позиции общего каталога;
  • экспорт техописания наследует доступ к позиции общего каталога;
  • редактирование данных техописания наследует права редактирования позиции общего каталога.

5. Функциональные требования

Целевой функционал:

  • просмотр технических данных из карточки позиции общего каталога;
  • редактирование технических данных вместе с карточкой позиции или в отдельной вкладке карточки;
  • формирование выгрузки технического описания в установленном формате;
  • использование готового Laravel-модуля как основы для экспорта;
  • хранение данных в структуре общего каталога или связанной таблице, если данные нельзя уложить в основную карточку позиции.
  • получение актуальной цены для DOCX из модуля Склад без собственной копии цены в техописании.

6. Что не переносим из готового модуля

  • отдельный самостоятельный раздел техописаний;
  • отдельная модель прав, не связанная с каталогом;
  • прямое копирование устаревшего механизма авторизации и публичного хранения экспортов;
  • перезапись актуальных данных общего каталога без сопоставления по артикулу.
  • поле цены в таблицах общего каталога или техописания.

7. Результаты анализа

Источник хранит:

  • артикул;
  • серию;
  • наименование;
  • наименование для печатной формы;
  • группу;
  • цену;
  • характеристики;
  • полное техническое описание;
  • краткое техническое описание;
  • изображение.

Экспорт поддерживает:

  • выбор нескольких позиций;
  • общий DOCX;
  • отдельный DOCX для каждой позиции в ZIP;
  • выбор полного, краткого или комбинированного описания;
  • отдельный и массовый DOCX-шаблоны.

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

Цена обрабатывается отдельно: единственным источником актуального значения является Склад. Значение из to.stroyprofit.com можно использовать только для начального заполнения складской цены после подтверждения её назначения. Техописание читает актуальную цену при формировании DOCX и не хранит собственную копию.

8. Этапы реализации

  • Получить и изучить готовый Laravel-модуль техописаний.
  • Составить карту данных модуля техописаний.
  • Составить карту экспортов и форматов выгрузки.
  • Сопоставить данные техописаний с полями Каталог общий.
  • Решить, что данные хранятся в карточке общего каталога, а не в отдельном модуле.
  • Исключить цену из модели техописания и общего каталога.
  • Добавить остальные недостающие поля общего каталога.
  • Перенести данные по артикулу с защитой уже заполненных полей.
  • После уточнения назначения цены перенести её начальное значение в единый источник модуля Склад.
  • Перенести изображения в текущий файловый механизм CRM.
  • Встроить просмотр/редактирование техописания в карточку общего каталога.
  • Перенести или адаптировать экспорт из готового Laravel-модуля.
  • Подставлять в экспорт актуальную цену из Склад.
  • Выполнять массовые экспорты через очередь и выдавать результат из приватного хранилища.
  • Не добавлять отдельный пункт меню Технич. описание в финальную навигацию.

9. Критерии приемки

  • Техническое описание доступно из карточки позиции общего каталога.
  • Данные техописания не дублируют общий каталог без необходимости.
  • Цена не хранится в техописании и берётся из единого источника модуля Склад.
  • Экспорт техописания работает в согласованном формате.
  • Готовый Laravel-модуль использован как источник экспортной логики.
  • Права просмотра/редактирования согласованы с правами общего каталога.

10. Открытые вопросы

  • Переносить все 938 позиций как источник данных или только обогащать артикулы, уже существующие в общем каталоге?
  • Сохраняются ли оба текущих DOCX-шаблона без визуальных изменений?
  • Нужна ли история изменения текстов технического описания?
  • Какой вид цены хранится в старом модуле и зависит ли она от конкретного складского заказа/партии?