plan.md 15 KB

План реорганизации Manager 2.0

Рабочая папка рефакторинга: docs/refactor/.

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

Цель

Перевести текущую CRM в структуру Manager 2.0: реорганизовать верхнее меню, сохранить самостоятельный модуль ДКР с его собственным каталогом, добавить отдельный Каталог общий, добавить заглушки для новых модулей и подготовить отдельные ТЗ по каждому разделу перед глубокой разработкой.

Принятые решения

  • ДКР остается самостоятельным модулем.
  • Каталог ДКР и Каталог общий — разные сущности.
  • Каталог ДКР остается внутри меню ДКР.
  • Каталог общий реализуется отдельно как общий справочник платформы.
  • Запчасти — общий модуль для всей платформы, включая ДКР.
  • Склад наличие должен быть реализован полностью по образцу раздела Запчасти, с адаптацией под МАФ/позиции из Каталог общий.
  • Новые модули на первом этапе получают страницы-заглушки В разработке.
  • Основная карта меню хранится в docs/refactor/menu.md.
  • Текущие рабочие маршруты оставляем без переименования.
  • На первом этапе оставляем текущие права доступа.
  • Реорганизацию меню делаем сразу общей для всей платформы Manager 2.0.
  • Заглушки новых модулей показываем всем авторизованным пользователям.
  • На новые модули выбранный год не влияет.
  • Технич. описание, вероятно, будет поглощено модулем Каталог общий; готовый Laravel-модуль используем как источник экспорта.
  • Калькуляции работают через внешний API: запрос по артикулу, возврат калькуляции при наличии.
  • Рекламации -> ДКР реализуется как фильтр текущего списка.
  • Источник рекламации хранится отдельным полем: при создании из площадки — ДКР, иначе Прочее.
  • Маршруты Каталог общий используют префикс common-catalog/....
  • Таблицы и права Каталог общий используют техническое имя common-catalog.
  • Техническое имя модуля Склад наличие: stock.
  • Роль помощник руководителя: assistant_head.

Этап 0. Документация

  • Изучить ТЗ Manager 2.0 и схему зависимостей.
  • Составить карту нового меню.
  • Перенести карту меню в docs/refactor/menu.md.
  • Создать общий план реализации в docs/refactor/plan.md.
  • Написать отдельное ТЗ для модуля ДКР: tz-dkr.md.
  • Написать отдельное ТЗ для модуля Каталог общий: tz-catalog-common.md.
  • Написать отдельное ТЗ для модуля Графики: tz-schedules.md.
  • Написать отдельное ТЗ для модуля Рекламации: tz-reclamations.md.
  • Написать отдельное ТЗ для модуля Запчасти: tz-spare-parts.md.
  • Написать отдельное ТЗ для модуля Склад наличие: tz-stock-availability.md.
  • Написать отдельное ТЗ для модуля Документация: tz-documents.md.
  • Написать отдельное ТЗ для модуля Технич. описание: tz-technical-description.md.
  • Написать отдельное ТЗ для модуля Калькуляции: tz-calculations.md.
  • Написать отдельное ТЗ для модуля Администратор: tz-admin.md.

Этап 1. Реорганизация меню

  • Проверить текущие permissions для всех существующих пунктов меню.
  • Для новых пунктов-заглушек открыть доступ всем авторизованным пользователям.
  • Добавить общий механизм страницы В разработке.
  • Добавить маршруты для новых разделов-заглушек.
  • Перестроить resources/views/layouts/menu.blade.php под новую древовидную структуру.
  • Сгруппировать существующие пункты ДКР внутрь верхнего меню ДКР.
  • Оставить Каталог внутри меню ДКР.
  • Добавить отдельный верхний пункт Каталог общий.
  • Сгруппировать График монтажей внутрь верхнего меню Графики.
  • Добавить заглушки График заказов и График доставок.
  • Разложить Рекламации на Все и ДКР.
  • Оставить Запчасти отдельной верхней группой с текущими вкладками.
  • Добавить заглушки Склад наличие -> Наличие и Склад наличие -> Заказы.
  • Добавить заглушки Документация, Каталог общий, Технич. описание, Калькуляции.
  • Проверить, что выбранный год не скрывает и не фильтрует новые модули.
  • Переименовать группу Администрирование в Администратор.
  • Проверить отображение меню для основных ролей.

Этап 2. Каталог общий

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

Этап 3. Склад наличие

  • Разобрать текущую реализацию Запчасти как эталон.
  • Зафиксировать соответствие сущностей Запчасти -> Склад наличие.
  • Спроектировать таблицы/модели stock для заказов, остатков, броней, списаний и истории.
  • Реализовать подвкладку Наличие.
  • Реализовать подвкладку Заказы.
  • Реализовать карточку позиции.
  • Реализовать бронирование.
  • Реализовать списание с конкретных заказов.
  • Реализовать отмену брони.
  • Реализовать историю движений.
  • Реализовать импорт заказов/остатков.
  • Реализовать экспорт наличия в PDF по шаблону.
  • Настроить права: Наличие всем, Заказы админу и роли assistant_head.
  • Покрыть критичную логику расчетов тестами.

Этап 4. Графики

  • Описать источник данных для График заказов.
  • Спроектировать загрузку данных через 1С.
  • Реализовать или перенести График заказов.
  • Реализовать График доставок в виде недельного списка.
  • Добавить ручное планирование занятости водителей.
  • Связать доставки с адресами из графика заказов.
  • Перенести текущий График монтажей в новую группу без потери логики.
  • Проверить связи монтажей с ДКР-площадками и графиком заказов.

Этап 5. Рекламации

  • Разделить представление на Все и ДКР.
  • Реализовать ДКР как фильтр текущего списка.
  • Добавить отдельное поле источника рекламации: ДКР / Прочее.
  • Проверить создание рекламаций по площадкам ДКР.
  • Проверить связь рекламаций с графиком заказов.
  • Проверить формирование запросов на запчасти из рекламации.
  • Сохранить текущую рабочую логику рекламаций.

Этап 6. Запчасти

  • Перенести раздел в новую структуру меню без изменения бизнес-логики.
  • Проверить вкладки Каталог, Заказы запчастей, Контроль наличия, Справочник расшифровок, Справка.
  • Проверить, что Запчасти используются как общий модуль, включая ДКР.
  • Использовать реализацию раздела как эталон для Склад наличие.
  • После внедрения склада проверить, что логика запчастей не изменилась.

Этап 7. Информационные разделы

  • Реализовать модуль Документация: папки и файлы.
  • Изучить готовый Laravel-модуль техописаний.
  • Перенести/адаптировать экспорт техописаний в карточку общего каталога.
  • Подготовить заглушку для Калькуляции.
  • После получения подробного описания API калькуляций реализовать запрос из карточки позиции по артикулу.

Этап 8. Администратор

  • Переименовать меню Администрирование в Администратор.
  • Сохранить текущие пункты администрирования.
  • Проверить доступы для пользователей, ролей и настроек.
  • При необходимости добавить права для новых разделов Manager 2.0.

Этап 9. Проверка

  • Запустить make test внутри контейнеров.
  • Проверить меню в браузере под админом.
  • Проверить меню под пользователем с ограниченными правами.
  • Проверить, что существующие маршруты ДКР работают после перегруппировки меню.
  • Проверить, что текущий каталог доступен внутри ДКР.
  • Проверить, что Каталог общий открыт как отдельный новый раздел/заглушка.
  • Проверить, что все новые пункты-заглушки открываются у авторизованных пользователей и не дают 404/403.
  • Проверить, что выбранный год не влияет на новые модули.
  • Зафиксировать результат проверки в этом плане.

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

  • Оставлять ли Технич. описание отдельным пунктом меню или полностью встроить в Каталог общий?
  • Какой точный контракт внешнего API калькуляций?