tz-schedules.md 22 KB

ТЗ: Модуль Графики

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

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

Модуль Графики объединяет календарные и производственные представления Manager 2.0:

  • график заказов на производстве;
  • график доставок;
  • график монтажей.

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

2. Статус

Статус модуля: частично реализован; исходная система графика заказов изучена, финальное ТЗ ожидается.

В текущей CRM реализован:

  • График монтажей;
  • маршрут: schedule.index;
  • контроллер: ScheduleController;
  • модель: Schedule;
  • создание записей из площадок/заказов;
  • создание записей из рекламаций;
  • экспорт графика;
  • недельное/месячное представление, если доступно в текущей реализации.

Нужно реализовать:

  • График заказов;
  • График доставок;
  • новую верхнюю группу меню Графики;
  • связи между графиками.

После анализа manager.stroyprofit.com установлено:

  • текущий График отгрузок хранится в одной таблице graf1 и совмещает данные заказа, статусы, доставку, монтаж и ручные комментарии;
  • данные поступают из 1С HTTP-запросом с JSON в поле data;
  • payload содержит заказ, клиента, договор, оплату, доставку, менеджера и список позиций;
  • позиции сейчас не нормализуются, а сохраняются только в сформированный Excel-файл;
  • поддерживаются до трёх доставок через фиксированные колонки;
  • финальные требования нового Графика заказов будут переданы отдельным ТЗ и могут расширить существующие сценарии.

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

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

Графики
├── График заказов
├── График доставок
└── График монтажей

Требования:

  • добавить верхний пункт меню Графики;
  • перенести текущий пункт График монтажей внутрь Графики;
  • текущий маршрут schedule.index оставить без переименования;
  • для График заказов и График доставок на первом этапе добавить страницы-заглушки В разработке;
  • выбранный год в CRM не влияет на новые модули График заказов и График доставок;
  • реорганизация меню выполняется сразу общей для всей платформы Manager 2.0.

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

На первом этапе оставляем текущие права.

Раздел Permission
График монтажей schedule.view
График заказов Заглушка доступна всем авторизованным пользователям
График доставок Заглушка доступна всем авторизованным пользователям

Требования:

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

5. График заказов

Статус: исходная реализация изучена; проектирование и разработка начинаются после отдельного ТЗ.

Назначение:

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

Требования по ТЗ Manager 2.0:

  • таблица с графиком заказов на производстве;
  • перенос функционала график отгрузок из старого manager с адаптацией под текущие реалии;
  • загрузка данных через 1С;
  • связь с Каталог общий;
  • связь с График монтажей.

Архитектурные требования, принятые до получения финального ТЗ:

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

Предварительный функционал:

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

Требования к созданию рекламации:

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

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

  • какой финальный состав полей и сценариев будет утверждён отдельным ТЗ;
  • может ли 1С передавать стабильный GUID заказа вместо ключа, собранного из номера и года;
  • может ли 1С передавать артикул позиции для связи с Каталог общий;
  • нужен ли ручной ввод/редактирование или график полностью загружается;
  • какие статусы производства должны отображаться;
  • какие поля принадлежат 1С, а какие должны сохраняться при повторной синхронизации;
  • какие части старых заявок на доставку и монтаж нужно сохранить в новом модуле.

6. График доставок

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

Назначение:

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

Требования по ТЗ Manager 2.0:

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

Предварительный функционал:

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

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

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

7. График монтажей

Статус: есть, переносится в новую группу меню.

Текущая основа:

  • маршрут: schedule.index;
  • контроллер: ScheduleController;
  • создание записи из заказа/площадки;
  • создание записи из рекламации;
  • обновление записи;
  • удаление записи;
  • экспорт;
  • недельное/месячное представление.

Требования:

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

Что не менять на первом этапе:

  • структуру таблиц графика монтажей;
  • существующие маршруты schedule.*;
  • текущие правила создания записей из заказов и рекламаций;
  • текущий UI графика, кроме положения в меню.

8. Связи между графиками

Целевая логика связей:

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

Требования:

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

9. Данные и модели

Для График монтажей использовать текущие модели и таблицы.

Для График заказов и График доставок модели проектируются отдельно после получения финального ТЗ. Независимо от точных имён таблиц модель должна быть нормализована.

Минимально потребуются сущности:

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

Запрещённые варианты модели:

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

Открыто:

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

10. Первый этап реализации

В первый этап модуля Графики входит:

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

В первый этап не входит:

  • разработка обмена с 1С;
  • проектирование БД графика заказов;
  • проектирование БД графика доставок;
  • реализация недельного календаря доставок;
  • изменение текущей логики графика монтажей.

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

  • Проверить текущие маршруты schedule.*.
  • Проверить текущие permissions графика монтажей.
  • Добавить верхнюю группу меню Графики.
  • Перенести текущий пункт График монтажей внутрь Графики.
  • Оставить маршрут schedule.index без переименования.
  • Добавить страницу-заглушку График заказов.
  • Добавить страницу-заглушку График доставок.
  • Проверить активное состояние меню для Графики.
  • Проверить, что текущий график монтажей открывается и работает.
  • Проверить создание записи графика из площадки/заказа.
  • Проверить создание записи графика из рекламации.
  • Проверить экспорт графика монтажей.
  • Изучить старый график заказов/отгрузок и существующий обмен с 1С.
  • Зафиксировать нормализованную модель как обязательный архитектурный принцип.
  • Получить отдельное ТЗ и составить по нему финальный список полей графика заказов.
  • Составить отдельный список полей для будущего графика доставок.
  • Реализовать карточку заказа с выбором одного или нескольких МАФ.
  • Добавить действие Добавить рекламацию.
  • Открывать текущую форму рекламации с переданными заказом и выбранными МАФ.
  • Назначать созданной рекламации тип other (Прочее).

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

  • В верхнем меню есть группа Графики.
  • Внутри группы есть пункты График заказов, График доставок, График монтажей.
  • График монтажей открывается по текущему маршруту schedule.index.
  • Текущая логика графика монтажей не изменилась.
  • Заглушки График заказов и График доставок открываются без 404/403 у авторизованных пользователей.
  • Пользователи с текущим доступом к графику монтажей сохраняют доступ.
  • График монтажей продолжает работать с площадками ДКР.
  • График монтажей продолжает работать с рекламациями.
  • Из карточки заказа можно выбрать один или несколько МАФ и открыть форму создания рекламации.
  • Созданная рекламация связана с заказом и выбранными МАФ.
  • Созданная рекламация имеет тип other (Прочее), не попадает во вкладку ДКР и не позволяет формировать документацию для оплаты.

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

  • Какие дополнительные требования войдут в отдельное ТЗ графика заказов?
  • Передаёт ли 1С стабильный GUID заказа и артикулы позиций?
  • Какие поля должны отображаться в графике заказов по финальному ТЗ?
  • Нужен ли ручной ввод в графике заказов?
  • Где хранить список водителей для графика доставок?
  • Нужен ли отдельный модуль Отгрузки, или график доставок закрывает эту задачу?
  • Какие статусы нужны для доставок?
  • Как должна выглядеть связь между графиком заказов и графиком монтажей?