# ТЗ: Модуль Графики Связанные документы: - [План реорганизации](plan.md) - [Карта нового меню](menu.md) - [ТЗ: Каталог общий](tz-catalog-common.md) - [ТЗ: Модуль ДКР](tz-dkr.md) ## 1. Назначение Модуль `Графики` объединяет календарные и производственные представления Manager 2.0: - график заказов на производстве; - график доставок; - график монтажей. Цель модуля — дать единый раздел для планирования производства, доставки и монтажных работ, сохранив текущую рабочую реализацию графика монтажей. ## 2. Статус Статус модуля: **частично реализован**. В текущей CRM реализован: - `График монтажей`; - маршрут: `schedule.index`; - контроллер: `ScheduleController`; - модель: `Schedule`; - создание записей из площадок/заказов; - создание записей из рекламаций; - экспорт графика; - недельное/месячное представление, если доступно в текущей реализации. Нужно реализовать: - `График заказов`; - `График доставок`; - новую верхнюю группу меню `Графики`; - связи между графиками. ## 3. Место в меню Целевое меню: ```text Графики ├── График заказов ├── График доставок └── График монтажей ``` Требования: - добавить верхний пункт меню `Графики`; - перенести текущий пункт `График монтажей` внутрь `Графики`; - текущий маршрут `schedule.index` оставить без переименования; - для `График заказов` и `График доставок` на первом этапе добавить страницы-заглушки `В разработке`; - выбранный год в CRM не влияет на новые модули `График заказов` и `График доставок`; - реорганизация меню выполняется сразу общей для всей платформы Manager 2.0. ## 4. Права доступа На первом этапе оставляем текущие права. | Раздел | Permission | |---|---| | График монтажей | `schedule.view` | | График заказов | Заглушка доступна всем авторизованным пользователям | | График доставок | Заглушка доступна всем авторизованным пользователям | Требования: - не переименовывать текущие права; - не вводить новую систему прав на первом этапе; - верхний пункт `Графики` показывать, если пользователю доступен хотя бы один дочерний пункт. ## 5. График заказов Статус: **нужно реализовать**. Назначение: - отображать график заказов на производстве; - быть основным источником данных для доставок; - быть связанным с монтажами; - использовать позиции из `Каталог общий`. Требования по ТЗ Manager 2.0: - таблица с графиком заказов на производстве; - перенос функционала `график отгрузок` из старого manager с адаптацией под текущие реалии; - загрузка данных через 1С; - связь с `Каталог общий`; - связь с `График монтажей`. Предварительный функционал: - список заказов/позиций в производственном графике; - дата/период производства; - адрес/объект, если приходит из источника данных; - позиции заказа из общего каталога; - статусы или этапы производства, если они есть в источнике; - фильтры по дате, заказу, позиции, статусу; - импорт/обновление данных из 1С; - история последней загрузки; - обработка ошибок загрузки. Открытые вопросы: - какой источник данных 1С и формат обмена; - какие поля приходят из 1С; - нужен ли ручной ввод/редактирование или график полностью загружается; - что именно в текущем/старом manager называется `график отгрузок`; - какие статусы производства должны отображаться; - как связывать строку графика с позицией `Каталог общий`. ## 6. График доставок Статус: **нужно реализовать**. Назначение: - показывать недельный список доставок; - позволять вручную планировать занятость водителей; - брать адреса автоматически из `График заказов`. Требования по ТЗ Manager 2.0: - отображение в виде недельного списка; - адреса добавляются автоматически из `График заказов`; - вручную указывается занятость водителей: какой заказ и когда везут; - добавление через модальное окно; - возможная связь с вкладкой `Отгрузки` требует уточнения. Предварительный функционал: - недельный календарь доставок; - список заказов/адресов, доступных для доставки; - добавление доставки через модальное окно; - выбор даты и времени доставки; - выбор водителя или ответственного за доставку; - выбор заказа/адреса из графика заказов; - комментарий; - изменение и удаление записи доставки при наличии прав; - фильтры по неделе, водителю, заказу; - визуальное отображение занятости водителей. Открытые вопросы: - где хранится список водителей; - нужна ли отдельная сущность `Водитель`; - какие статусы есть у доставки; - нужна ли связь с отдельным разделом `Отгрузки`; - требуется ли печатная форма или экспорт недельного списка; - как обрабатывать несколько доставок по одному заказу. ## 7. График монтажей Статус: **есть, переносится в новую группу меню**. Текущая основа: - маршрут: `schedule.index`; - контроллер: `ScheduleController`; - создание записи из заказа/площадки; - создание записи из рекламации; - обновление записи; - удаление записи; - экспорт; - недельное/месячное представление. Требования: - сохранить текущую бизнес-логику; - сохранить текущий маршрут `schedule.index`; - перенести пункт меню внутрь `Графики`; - сохранить текущие права `schedule.view` и связанные права обновления/экспорта; - сохранить связь с площадками ДКР; - сохранить связь с рекламациями; - добавить/подготовить связь с `График заказов`, когда он будет реализован. Что не менять на первом этапе: - структуру таблиц графика монтажей; - существующие маршруты `schedule.*`; - текущие правила создания записей из заказов и рекламаций; - текущий UI графика, кроме положения в меню. ## 8. Связи между графиками Целевая логика связей: | Источник | Получатель | Связь | |---|---|---| | Каталог общий | График заказов | Позиции заказа и справочные данные по номенклатуре. | | График заказов | График доставок | Адреса и заказы для планирования доставки. | | График заказов | График монтажей | Связь производственного графика с монтажом. | | ДКР / Площадки | График монтажей | Площадки для монтажных работ. | | Рекламации | График монтажей | Работы по рекламациям. | Требования: - связи не должны ломать автономность ДКР; - текущий график монтажей должен работать до реализации графика заказов; - новые графики должны опираться на `Каталог общий`, а не на каталог внутри ДКР. ## 9. Данные и модели Для `График монтажей` использовать текущие модели и таблицы. Для `График заказов` и `График доставок` модели проектируются отдельно после уточнения данных. Предварительно потребуются сущности: - производственная запись графика заказов; - строка/позиция производственного заказа; - запись доставки; - водитель или ответственный доставки; - журнал загрузок из 1С. Открыто: - точные имена таблиц и моделей; - структура полей; - необходимость истории изменений; - связь с существующими `Order`, `Product`, `ProductSKU`. ## 10. Первый этап реализации В первый этап модуля `Графики` входит: - общая реорганизация меню; - перенос `График монтажей` внутрь группы `Графики`; - сохранение текущего маршрута `schedule.index`; - добавление заглушки `График заказов`; - добавление заглушки `График доставок`; - сохранение текущих прав; - проверка доступности текущего графика монтажей. В первый этап не входит: - разработка обмена с 1С; - проектирование БД графика заказов; - проектирование БД графика доставок; - реализация недельного календаря доставок; - изменение текущей логики графика монтажей. ## 11. Этапы реализации - [ ] Проверить текущие маршруты `schedule.*`. - [ ] Проверить текущие permissions графика монтажей. - [ ] Добавить верхнюю группу меню `Графики`. - [ ] Перенести текущий пункт `График монтажей` внутрь `Графики`. - [ ] Оставить маршрут `schedule.index` без переименования. - [ ] Добавить страницу-заглушку `График заказов`. - [ ] Добавить страницу-заглушку `График доставок`. - [ ] Проверить активное состояние меню для `Графики`. - [ ] Проверить, что текущий график монтажей открывается и работает. - [ ] Проверить создание записи графика из площадки/заказа. - [ ] Проверить создание записи графика из рекламации. - [ ] Проверить экспорт графика монтажей. - [ ] Составить отдельный список полей для будущего графика заказов. - [ ] Составить отдельный список полей для будущего графика доставок. ## 12. Критерии приемки - В верхнем меню есть группа `Графики`. - Внутри группы есть пункты `График заказов`, `График доставок`, `График монтажей`. - `График монтажей` открывается по текущему маршруту `schedule.index`. - Текущая логика графика монтажей не изменилась. - Заглушки `График заказов` и `График доставок` открываются без 404/403 у авторизованных пользователей. - Пользователи с текущим доступом к графику монтажей сохраняют доступ. - График монтажей продолжает работать с площадками ДКР. - График монтажей продолжает работать с рекламациями. ## 13. Открытые вопросы - Какой формат обмена с 1С для графика заказов? - Какие поля должны отображаться в графике заказов? - Нужен ли ручной ввод в графике заказов? - Где хранить список водителей для графика доставок? - Нужен ли отдельный модуль `Отгрузки`, или график доставок закрывает эту задачу? - Какие статусы нужны для доставок? - Как должна выглядеть связь между графиком заказов и графиком монтажей?