tz-catalog-common.md 15 KB

ТЗ: Модуль Каталог общий

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

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

Каталог общий — центральный справочник позиций платформы Manager 2.0.

Он является базовым источником данных для модулей:

  • Графики;
  • Рекламации;
  • Склад наличие;
  • Технич. описание;
  • Калькуляции.

Каталог общий и каталог ДКР — разные сущности. Текущий каталог ДКР остается внутри модуля ДКР; общий каталог проектируется отдельно.

2. Статус

Статус модуля: нужно реализовать.

В текущей CRM уже есть раздел Каталог ДКР:

  • маршрут списка: catalog.index;
  • маршрут карточки: catalog.show;
  • контроллер: ProductController;
  • модель: Product;
  • загрузка изображения/thumbnail;
  • загрузка сертификата/документа;
  • экспорт каталога.

Эта реализация относится к каталогу ДКР и не становится автоматически Каталогом общим. Ее можно использовать как источник UI/технических паттернов, но данные и назначение общего каталога должны быть отделены.

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

Целевое меню:

Каталог общий
├── Позиции
└── Карточка позиции

Требования:

  • пункт Каталог общий должен быть отдельным верхним пунктом меню;
  • пункт Каталог должен остаться внутри меню ДКР;
  • текущие маршруты catalog.index и catalog.show остаются маршрутами каталога ДКР;
  • маршруты Каталог общий должны использовать префикс common-catalog/...;
  • таблицы и права Каталог общий должны использовать техническое имя common-catalog;
  • выбранный год в CRM не влияет на отображение и данные общего каталога;
  • реорганизация меню выполняется сразу общей для всей платформы Manager 2.0.

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

На первом этапе для заглушки используем доступ для всех авторизованных пользователей.

Действие Permission
Просмотр заглушки Любой авторизованный пользователь
Просмотр общего каталога после реализации common-catalog.view
Создание/редактирование/удаление Права с префиксом common-catalog.*
Импорт/экспорт Права с префиксом common-catalog.*

Требования:

  • не переиспользовать catalog.view автоматически, потому что это право относится к каталогу ДКР;
  • новые права общего каталога использовать с техническим именем common-catalog;
  • заглушку Каталог общий показывать всем авторизованным пользователям.

5. Основные сущности

Базовая сущность: позиция каталога.

Возможная техническая основа для анализа:

  • модель Product;
  • карточка позиции через catalog.show;
  • связи с МАФ/SKU через текущую модель данных.

Эти сущности относятся к каталогу ДКР и не должны смешиваться с общим каталогом без отдельной миграции или синхронизации.

Целевая роль позиции:

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

6. Список позиций

Список позиций должен поддерживать базовую функциональность справочника и быть подготовлен к расширению. Текущий каталог ДКР можно использовать как референс интерфейса, но не как источник данных общего каталога.

Функционал:

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

Колонки:

  • взять текущие колонки каталога ДКР как ориентир для анализа;
  • дополнительно сверить с шаблоном калькулятора;
  • недостающие поля вынести в отдельный список доработок после анализа шаблона.

7. Карточка позиции

Карточка позиции должна стать центральной карточкой товара/МАФ.

Функционал карточки:

  • просмотр и редактирование полей позиции общего каталога;
  • загрузка фото МАФ/позиции;
  • хранение сопутствующих документов;
  • блок/выгрузка технического описания, если модуль техописаний будет поглощен каталогом;
  • переход в Калькуляции;
  • отображение связанных МАФ/SKU, если это потребуется для новой логики;
  • сохранение привычных действий карточки каталога ДКР только как UI-паттерна, без смешивания данных.

Текущие возможности каталога ДКР, которые можно использовать как паттерн:

  • catalog.upload-thumbnail — использовать как основу загрузки фото;
  • catalog.upload-certificate — использовать как основу загрузки документов, но расширить модель до нескольких произвольных документов, если текущая реализация ограничена сертификатом.

8. Фото и документы

Фото:

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

Документы:

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

9. Импорт и экспорт

Требования:

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

Открытая доработка:

  • отдельно сверить шаблон калькулятора и текущие поля каталога ДКР как референс.

10. Связи с другими модулями

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

11. Что не входит в первый этап

В первый этап общего каталога не входит:

  • переименование текущих маршрутов catalog.*;
  • полная переработка модели Product;
  • внедрение новых прав доступа;
  • разработка модуля Склад наличие;
  • отдельный модуль Технич. описание, если он будет поглощен каталогом;
  • разработка интеграции с калькуляциями до получения подробного описания API;
  • изменение бизнес-логики ДКР.

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

  • Проверить текущие маршруты catalog.*.
  • Зафиксировать, что текущие маршруты catalog.* относятся к каталогу ДКР.
  • Использовать префикс маршрутов common-catalog/... для Каталог общий.
  • Использовать техническое имя common-catalog для таблиц и прав общего каталога.
  • Добавить верхний пункт Каталог общий.
  • Добавить страницу-заглушку Каталог общий.
  • Спроектировать карточку позиции общего каталога.
  • Проверить загрузку фото позиции.
  • Спроектировать загрузку документов позиции через текущий файловый механизм.
  • Составить список текущих полей каталога ДКР как источник для анализа.
  • Сверить поля с шаблоном калькулятора.
  • Описать недостающие поля для доработки.
  • Подготовить расширение блока документов до набора файлов, если нужно.
  • Определить, включается ли Технич. описание внутрь карточки общего каталога.
  • Добавить в карточку место под API-запрос Калькуляции.
  • Проверить связи с модулями, которым нужен общий каталог.
  • Проверить, что заглушка Каталог общий видна всем авторизованным пользователям.

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

  • В верхнем меню есть пункт Каталог общий.
  • В меню ДКР остается пункт Каталог.
  • Текущие маршруты catalog.index и catalog.show сохранены как маршруты каталога ДКР.
  • Заглушка Каталог общий доступна всем авторизованным пользователям.
  • После реализации общий каталог не смешивает данные с каталогом ДКР без отдельной миграции/синхронизации.
  • Карточка позиции общего каталога поддерживает фото, документы, техописание/выгрузку и калькуляцию по артикулу.
  • ДКР продолжает использовать свой каталог без поломки существующих связей.
  • Реорганизация меню выполнена как часть общей структуры Manager 2.0.

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

  • Какие точные колонки должны быть добавлены по шаблону калькулятора?
  • Как именно включить готовый Laravel-модуль техописаний в общий каталог и какие экспорты оттуда переносить?
  • Какой точный формат API калькуляций: endpoint, параметры, авторизация, структура ответа?