plan.md 24 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. Реорганизация меню и заглушки Реализован и проверен Новое меню и заглушки приняты по результатам пользовательской проверки.
2. Адаптация существующих разделов после переноса Реализован, ожидает пользовательской проверки Рабочие разделы проверены, навигация запчастей и доступ к справочнику уточнены, регрессионные тесты проходят.
3. Рекламации: вкладки и источник Готов к реализации Решены вкладки Все/ДКР, поле источника и запрет платежных документов для Прочее.
4. Общий каталог: ядро Готов к реализации Есть маршрутный префикс, техническое имя, шаблон Excel, состав колонок и предварительные типы данных.
5. Документация Готов к реализации Решены дерево папок, наследование прав, версии и хранение файлов.
6. Склад наличие: ядро Готов после ядра общего каталога Логика берется из Запчасти, но позиции должны браться из Каталог общий. PDF-экспорт остается отдельным открытым подпунктом.
7. Техническое описание Готово после ядра общего каталога и анализа готового Laravel-модуля Функция встроена в карточку общего каталога, но нужно получить модуль и форматы выгрузки.
8. Калькуляции Не готово к полной реализации Нужен контракт внешнего API. Можно сделать только место/кнопку в карточке общего каталога.
9. Графики заказов и доставок Не готово к полной реализации Нужны формат обмена с 1С, поля, статусы и правила доставок/отгрузок.
10. Рекламации из графика заказов Готово только после графика заказов Сценарий согласован, но точка входа зависит от карточки заказа в графике.

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

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

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

Этап 2. Адаптация существующих разделов после переноса

Статус: реализован, ожидает пользовательской проверки.

Задача этапа — проверить существующие рабочие разделы после изменения меню и внести точечные правки без изменения бизнес-логики.

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

Этап 3. Рекламации: вкладки и источник

Статус: готов к реализации для текущих рекламаций.

Создание рекламации из графика заказов вынесено в отдельный этап, потому что зависит от реализации графика заказов.

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

Этап 4. Каталог общий: ядро

Статус: готов к реализации ядра.

В этот этап не входят внешняя API-интеграция калькуляций и перенос экспорта техописаний. Для них нужны отдельные вводные.

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

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

Статус: готов к реализации.

  • Реализовать дерево папок.
  • Разрешить создание корневых папок только админу.
  • Реализовать права чтения и записи на папки для всех, ролей и отдельных пользователей.
  • Реализовать наследование прав от родительской папки при создании подпапок.
  • Реализовать создание, просмотр, редактирование и удаление документов.
  • Реализовать версионность документов.
  • Реализовать полное удаление отдельных версий.
  • Использовать текущий механизм хранения файлов.

Этап 6. Склад наличие: ядро

Статус: готов после этапа 4.

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

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

Этап 7. Техническое описание в общем каталоге

Статус: готово после этапа 4 и анализа готового Laravel-модуля.

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

Этап 8. Калькуляции

Статус: не готово к полной реализации.

До получения контракта API можно реализовать только место под кнопку/блок в карточке общего каталога.

  • Получить подробное описание внешнего API калькуляций.
  • Согласовать endpoint, HTTP-метод, авторизацию, параметры запроса и формат ответа.
  • Реализовать запрос по артикулу позиции общего каталога.
  • Реализовать отображение найденной калькуляции.
  • Реализовать состояние, когда калькуляция по артикулу не найдена.
  • Реализовать обработку ошибок API.

Этап 9. Графики заказов и доставок

Статус: не готово к полной реализации.

Текущий График монтажей переносится на этапе 2. Новые графики требуют уточнения обмена с 1С, полей, статусов и правил доставок.

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

Этап 10. Рекламации из графика заказов

Статус: готово после этапа 9.

  • Реализовать создание рекламации из графика заказов по выбранным МАФ с источником Прочее.
  • В карточке заказа дать выбор одного или нескольких МАФ.
  • Открывать текущую форму создания рекламации с предзаполненными данными.
  • Проверить, что рекламация попадает во вкладку Все и не попадает во вкладку ДКР.
  • Проверить, что платежные документы для такой рекламации недоступны.

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

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

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

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