|
@@ -37,7 +37,13 @@
|
|
|
- [x] Заглушки новых модулей показываем всем авторизованным пользователям.
|
|
- [x] Заглушки новых модулей показываем всем авторизованным пользователям.
|
|
|
- [x] На новые модули выбранный год не влияет.
|
|
- [x] На новые модули выбранный год не влияет.
|
|
|
- [x] `Технич. описание` встроено в модуль `Каталог общий`; готовый Laravel-модуль используем как источник экспорта.
|
|
- [x] `Технич. описание` встроено в модуль `Каталог общий`; готовый Laravel-модуль используем как источник экспорта.
|
|
|
-- [x] `Калькуляции` работают через внешний API: запрос по артикулу, возврат калькуляции при наличии.
|
|
|
|
|
|
|
+- [x] Модуль техописаний `to.stroyprofit.com` изучен: его данные и DOCX-экспорты переносятся в `Каталог общий` без отдельного раздела.
|
|
|
|
|
+- [x] Цена из `to.stroyprofit.com` не является полем техописания и не дублируется в `Каталог общий`: единственным источником актуальной цены должен быть модуль `Склад`, а DOCX-экспорт только читает её оттуда.
|
|
|
|
|
+- [x] Исходный калькулятор `calc.stroyprofit.com` используется как источник модели данных, формул и экспортов, но его код и текущие формулы не переносятся без проверки.
|
|
|
|
|
+- [x] Финальный состав и способ реализации `Калькуляций` определяются отдельным ТЗ; допустимы внутренняя реализация в Laravel и интеграционный вариант.
|
|
|
|
|
+- [x] Старый `График отгрузок` и действующий обработчик 1С в `manager.stroyprofit.com` изучены как исходная система для `Графика заказов`.
|
|
|
|
|
+- [x] `График заказов` проектируется максимально нормализованно: заказ, позиции, доставки и загрузки 1С хранятся отдельными сущностями, без сериализованных полей и фиксированных колонок для нескольких доставок.
|
|
|
|
|
+- [x] Финальные поля, статусы, права и пользовательские сценарии `Графика заказов` определяются отдельным ТЗ заказчика.
|
|
|
- [x] `Рекламации -> ДКР` реализуется как отдельная вкладка на основе текущего списка с обязательным фильтром по типу `dkr`.
|
|
- [x] `Рекламации -> ДКР` реализуется как отдельная вкладка на основе текущего списка с обязательным фильтром по типу `dkr`.
|
|
|
- [x] Тип рекламации хранится через обязательную связь со справочником `reclamation_types`; начальные типы `ДКР` и `Прочее` создаются сидером.
|
|
- [x] Тип рекламации хранится через обязательную связь со справочником `reclamation_types`; начальные типы `ДКР` и `Прочее` создаются сидером.
|
|
|
- [x] В интерфейсе рекламаций обязательны отдельные вкладки `Все` и `ДКР`.
|
|
- [x] В интерфейсе рекламаций обязательны отдельные вкладки `Все` и `ДКР`.
|
|
@@ -74,10 +80,10 @@
|
|
|
| 3. Рекламации: вкладки и тип | Реализован, ожидает пользовательской проверки | Добавлены вкладки, справочник типов, перенос существующих данных и запрет платежных документов для `Прочее`; создание из графика остается в этапе 10. |
|
|
| 3. Рекламации: вкладки и тип | Реализован, ожидает пользовательской проверки | Добавлены вкладки, справочник типов, перенос существующих данных и запрет платежных документов для `Прочее`; создание из графика остается в этапе 10. |
|
|
|
| 4. Общий каталог: ядро | Реализован и проверен | Пользователь проверил создание, редактирование, импорт и экспорт; отдельная модель данных, права, фото и документы покрыты автоматическими тестами. |
|
|
| 4. Общий каталог: ядро | Реализован и проверен | Пользователь проверил создание, редактирование, импорт и экспорт; отдельная модель данных, права, фото и документы покрыты автоматическими тестами. |
|
|
|
| 5. Документация | Реализован и проверен | Пользователь проверил дерево папок, работу с документами и версиями; права и приватное хранение дополнительно покрыты автоматическими тестами. |
|
|
| 5. Документация | Реализован и проверен | Пользователь проверил дерево папок, работу с документами и версиями; права и приватное хранение дополнительно покрыты автоматическими тестами. |
|
|
|
-| 6. Склад: ядро | Реализован, ожидает пользовательской проверки | Наличие, заказы, карточка, бронирование, списание, отмена, история, импорт и RBAC реализованы; PDF-экспорт ожидает отдельного шаблона. |
|
|
|
|
|
-| 7. Техническое описание | Готово к анализу Laravel-модуля | Место в карточке общего каталога подготовлено, но нужно получить модуль и форматы выгрузки. |
|
|
|
|
|
-| 8. Калькуляции | Не готово к полной реализации | Нужен контракт внешнего API. Можно сделать только место/кнопку в карточке общего каталога. |
|
|
|
|
|
-| 9. Графики заказов и доставок | Не готово к полной реализации | Нужны формат обмена с 1С, поля, статусы и правила доставок/отгрузок. |
|
|
|
|
|
|
|
+| 6. Склад: ядро | Ядро проверено, запланировано расширение цены | Ядро склада принято после пользовательской проверки; единый источник и история цены добавлены в план после анализа техописаний. PDF-экспорт остается отдельной задачей. |
|
|
|
|
|
+| 7. Техническое описание | Анализ завершён, готово к реализации | Изучены данные, импорт, изображения, DOCX-шаблоны и массовый/раздельный экспорт `to.stroyprofit.com`; требуется перенос в общий каталог. |
|
|
|
|
|
+| 8. Калькуляции | Исходник изучен, ожидается отдельное ТЗ | Восстановлены сущности, формулы и экспорты `calc.stroyprofit.com`; финальная архитектура, формулы и сценарии не фиксируются до ТЗ. Рабочая база источника сейчас не содержит расчётных данных. |
|
|
|
|
|
+| 9. Графики заказов и доставок | Исходная система изучена, ожидается отдельное ТЗ | Найдены старый график и фактический формат обмена с 1С. Нормализация принята как архитектурный принцип, но финальные поля, статусы и правила уточнит заказчик. |
|
|
|
| 10. Рекламации из графика заказов | Готово только после графика заказов | Сценарий согласован, но точка входа зависит от карточки заказа в графике. |
|
|
| 10. Рекламации из графика заказов | Готово только после графика заказов | Сценарий согласован, но точка входа зависит от карточки заказа в графике. |
|
|
|
|
|
|
|
|
## Этап 1. Реорганизация меню и заглушки
|
|
## Этап 1. Реорганизация меню и заглушки
|
|
@@ -172,7 +178,7 @@
|
|
|
|
|
|
|
|
## Этап 6. Склад: ядро
|
|
## Этап 6. Склад: ядро
|
|
|
|
|
|
|
|
-Статус: **реализован, ожидает пользовательской проверки**.
|
|
|
|
|
|
|
+Статус: **ядро реализовано и проверено пользователем; управление ценой добавлено в план как расширение**.
|
|
|
|
|
|
|
|
Ядро склада можно реализовывать после появления позиций общего каталога. PDF-экспорт по шаблону вынесен отдельным подпунктом, потому что точный шаблон еще не согласован.
|
|
Ядро склада можно реализовывать после появления позиций общего каталога. PDF-экспорт по шаблону вынесен отдельным подпунктом, потому что точный шаблон еще не согласован.
|
|
|
|
|
|
|
@@ -189,44 +195,72 @@
|
|
|
- [x] Реализовать импорт заказов/остатков.
|
|
- [x] Реализовать импорт заказов/остатков.
|
|
|
- [x] Настроить права: `Наличие` всем, `Заказы` админу и роли `assistant_head`.
|
|
- [x] Настроить права: `Наличие` всем, `Заказы` админу и роли `assistant_head`.
|
|
|
- [x] Покрыть критичную логику расчетов тестами.
|
|
- [x] Покрыть критичную логику расчетов тестами.
|
|
|
|
|
+- [ ] Уточнить назначение цены из старого модуля: отпускная, закупочная или иная.
|
|
|
|
|
+- [ ] Добавить в `Склад` единый источник актуальной цены позиции без дублирования в общем каталоге и техописании.
|
|
|
|
|
+- [ ] Сохранять историю изменения цены и пользователя, выполнившего изменение.
|
|
|
|
|
+- [ ] Добавить цену в список/карточку `Склад` и отдельные права на её просмотр/редактирование.
|
|
|
- [ ] После согласования шаблона реализовать экспорт наличия в PDF.
|
|
- [ ] После согласования шаблона реализовать экспорт наличия в PDF.
|
|
|
|
|
|
|
|
## Этап 7. Техническое описание в общем каталоге
|
|
## Этап 7. Техническое описание в общем каталоге
|
|
|
|
|
|
|
|
-Статус: **готово после этапа 4 и анализа готового Laravel-модуля**.
|
|
|
|
|
-
|
|
|
|
|
-- [ ] Получить и изучить готовый Laravel-модуль техописаний.
|
|
|
|
|
-- [ ] Составить карту данных модуля техописаний.
|
|
|
|
|
-- [ ] Составить карту экспортов и форматов выгрузки.
|
|
|
|
|
-- [ ] Сопоставить данные техописаний с полями `Каталог общий`.
|
|
|
|
|
-- [ ] Решить, какие данные хранятся прямо в карточке позиции, а какие требуют связанных таблиц.
|
|
|
|
|
|
|
+Статус: **анализ источника завершён, готово к реализации**.
|
|
|
|
|
+
|
|
|
|
|
+- [x] Получить и изучить готовый Laravel-модуль техописаний `to.stroyprofit.com`.
|
|
|
|
|
+- [x] Составить карту данных модуля техописаний.
|
|
|
|
|
+- [x] Составить карту экспортов и форматов выгрузки.
|
|
|
|
|
+- [x] Сопоставить данные техописаний с полями `Каталог общий`.
|
|
|
|
|
+- [x] Решить, что данные техописаний расширяют `common_catalog_items`, а не образуют отдельный модуль каталога.
|
|
|
|
|
+- [x] Исключить цену из полей техописания и общего каталога: её владельцем является `Склад`.
|
|
|
|
|
+- [ ] Добавить остальные недостающие поля техописаний в `Каталог общий` с безопасной миграцией.
|
|
|
|
|
+- [ ] Подготовить перенос или обогащение 938 позиций по артикулу в согласованном режиме без потери уже заполненных полей общего каталога.
|
|
|
|
|
+- [ ] Использовать цену источника только для начального заполнения цены в `Склад` после подтверждения её назначения; не импортировать её в техописание.
|
|
|
|
|
+- [ ] Перенести изображения через текущий файловый механизм CRM.
|
|
|
- [ ] Встроить просмотр/редактирование техописания в карточку общего каталога.
|
|
- [ ] Встроить просмотр/редактирование техописания в карточку общего каталога.
|
|
|
- [ ] Перенести или адаптировать экспорт из готового Laravel-модуля.
|
|
- [ ] Перенести или адаптировать экспорт из готового Laravel-модуля.
|
|
|
|
|
+- [ ] Подставлять в DOCX актуальную цену из `Склад`, не сохраняя отдельную копию цены в данных техописания.
|
|
|
|
|
+- [ ] Реализовать общий DOCX и отдельные DOCX в ZIP через очередь и приватное хранение файлов.
|
|
|
|
|
+- [ ] Покрыть миграцию данных и варианты экспорта автоматическими тестами.
|
|
|
|
|
|
|
|
## Этап 8. Калькуляции
|
|
## Этап 8. Калькуляции
|
|
|
|
|
|
|
|
-Статус: **не готово к полной реализации**.
|
|
|
|
|
|
|
+Статус: **исходный Python-модуль изучен, ожидается отдельное ТЗ**.
|
|
|
|
|
|
|
|
-До получения контракта API можно реализовать только место под кнопку/блок в карточке общего каталога.
|
|
|
|
|
|
|
+Текущий `calc.stroyprofit.com` рассматривается как источник предметной модели и экспортов. Финальное решение — перенос расчётного движка в Laravel либо интеграция — принимается после отдельного ТЗ. Формулы источника не считаются согласованными автоматически.
|
|
|
|
|
|
|
|
-- [ ] Получить подробное описание внешнего API калькуляций.
|
|
|
|
|
-- [ ] Согласовать endpoint, HTTP-метод, авторизацию, параметры запроса и формат ответа.
|
|
|
|
|
-- [ ] Реализовать запрос по артикулу позиции общего каталога.
|
|
|
|
|
-- [ ] Реализовать отображение найденной калькуляции.
|
|
|
|
|
-- [ ] Реализовать состояние, когда калькуляция по артикулу не найдена.
|
|
|
|
|
-- [ ] Реализовать обработку ошибок API.
|
|
|
|
|
|
|
+- [x] Добавить пункт меню и страницу-заглушку `Калькуляции`.
|
|
|
|
|
+- [x] Подготовить место под кнопку `Калькуляция` в карточке общего каталога.
|
|
|
|
|
+- [x] Изучить код, сущности, связи, формулы и Excel-экспорты `calc.stroyprofit.com`.
|
|
|
|
|
+- [x] Зафиксировать отсутствие расчётных данных в активной базе источника и нерабочий источник восстановления `backup.sql`.
|
|
|
|
|
+- [ ] Получить отдельное ТЗ на калькуляции.
|
|
|
|
|
+- [ ] Найти резервную копию или исходные Excel-файлы материалов, станков, персонала и технологических связей.
|
|
|
|
|
+- [ ] Согласовать формулы, единицы коэффициентов, ставки, налоги, доставку, накладные расходы и прибыль.
|
|
|
|
|
+- [ ] Определить, нужны ли версии калькуляций и история изменения нормативов.
|
|
|
|
|
+- [ ] Выбрать по ТЗ внутреннюю Laravel-реализацию или интеграционный контракт.
|
|
|
|
|
+- [ ] Спроектировать нормализованную модель данных без общей изменяемой калькуляции на артикул.
|
|
|
|
|
+- [ ] Реализовать согласованные сценарии, права, импорт и экспорты.
|
|
|
|
|
+- [ ] Покрыть расчётные формулы и версионность автоматическими тестами.
|
|
|
|
|
|
|
|
## Этап 9. Графики заказов и доставок
|
|
## Этап 9. Графики заказов и доставок
|
|
|
|
|
|
|
|
-Статус: **не готово к полной реализации**.
|
|
|
|
|
|
|
+Статус: **исходная система и обмен с 1С изучены, ожидается отдельное ТЗ**.
|
|
|
|
|
|
|
|
-Текущий `График монтажей` переносится на этапе 2. Новые графики требуют уточнения обмена с 1С, полей, статусов и правил доставок.
|
|
|
|
|
|
|
+Старый `График отгрузок` является источником существующих данных и сценариев, но не переносится одной таблицей. Архитектура нового модуля должна оставаться нормализованной и расширяемой под дополнительные требования заказчика.
|
|
|
|
|
|
|
|
-- [ ] Описать источник данных для `График заказов`.
|
|
|
|
|
|
|
+- [x] Изучить старый `График отгрузок` в `manager.stroyprofit.com`.
|
|
|
|
|
+- [x] Описать найденный HTTP-обмен с 1С и состав текущего payload.
|
|
|
|
|
+- [x] Проанализировать существующие статусы, ручные поля, вложения и несколько доставок по заказу.
|
|
|
|
|
+- [x] Зафиксировать обязательную нормализацию заказов, позиций, доставок и загрузок 1С.
|
|
|
|
|
+- [ ] Получить и согласовать отдельное ТЗ на `График заказов`.
|
|
|
|
|
+- [ ] Уточнить стабильный внешний идентификатор заказа и передачу артикула каждой позиции из 1С.
|
|
|
|
|
+- [ ] Согласовать принадлежность полей источнику или ручному редактированию, чтобы повторная загрузка не уничтожала плановые данные.
|
|
|
|
|
+- [ ] Спроектировать нормализованные таблицы и связи после получения ТЗ.
|
|
|
- [ ] Спроектировать загрузку данных через 1С.
|
|
- [ ] Спроектировать загрузку данных через 1С.
|
|
|
-- [ ] Реализовать или перенести `График заказов`.
|
|
|
|
|
|
|
+- [ ] Реализовать безопасный идемпотентный импорт с журналом запусков и ошибок.
|
|
|
|
|
+- [ ] Реализовать `График заказов` без прямого копирования устаревшей таблицы `graf1`.
|
|
|
|
|
+- [ ] Подготовить отдельную миграцию исторических данных старого Manager с отчётом о конфликтах и дублях.
|
|
|
- [ ] Добавить карточку заказа с выбором одного или нескольких МАФ.
|
|
- [ ] Добавить карточку заказа с выбором одного или нескольких МАФ.
|
|
|
- [ ] Добавить создание рекламации из заказа через текущую форму.
|
|
- [ ] Добавить создание рекламации из заказа через текущую форму.
|
|
|
|
|
+- [ ] Получить и согласовать требования к `Графику доставок`, если они не войдут в ТЗ графика заказов.
|
|
|
- [ ] Реализовать `График доставок` в виде недельного списка.
|
|
- [ ] Реализовать `График доставок` в виде недельного списка.
|
|
|
- [ ] Добавить ручное планирование занятости водителей.
|
|
- [ ] Добавить ручное планирование занятости водителей.
|
|
|
- [ ] Связать доставки с адресами из графика заказов.
|
|
- [ ] Связать доставки с адресами из графика заказов.
|
|
@@ -256,9 +290,12 @@
|
|
|
|
|
|
|
|
## Открытые вопросы
|
|
## Открытые вопросы
|
|
|
|
|
|
|
|
-- [ ] Какой точный контракт внешнего API калькуляций?
|
|
|
|
|
-- [ ] Где находится готовый Laravel-модуль техописаний и какие форматы выгрузки из него переносим?
|
|
|
|
|
|
|
+- [ ] Когда будет передано отдельное ТЗ на `График заказов` и какие новые требования добавит заказчик?
|
|
|
|
|
+- [ ] Передаёт ли 1С стабильный GUID заказа и артикулы позиций, либо формат обмена нужно расширить?
|
|
|
|
|
+- [ ] Будет ли отдельное ТЗ на `Калькуляции` и выберет ли оно внутренний расчёт в Laravel или интеграцию?
|
|
|
|
|
+- [ ] Где находится актуальная резервная копия или исходные Excel-данные `calc.stroyprofit.com`?
|
|
|
|
|
+- [ ] Какие формулы и нормативы калькулятора подтверждены заказчиком?
|
|
|
|
|
+- [ ] Нужно ли переносить в общий каталог все 938 записей `to.stroyprofit.com` как исходные или только обогащать совпавшие артикулы?
|
|
|
|
|
+- [ ] Что означает цена в `to.stroyprofit.com`: отпускную, закупочную или иную цену, и является ли она общей для позиции либо зависит от складского заказа/партии?
|
|
|
- [ ] Какой точный PDF-шаблон нужен для экспорта `Склад`?
|
|
- [ ] Какой точный PDF-шаблон нужен для экспорта `Склад`?
|
|
|
-- [ ] Какой формат обмена с 1С для `График заказов`?
|
|
|
|
|
-- [ ] Какие поля, статусы и правила ручного редактирования нужны для `График заказов`?
|
|
|
|
|
- [ ] Какие поля, статусы, правила отгрузок и связи с заказами нужны для `График доставок`?
|
|
- [ ] Какие поля, статусы, правила отгрузок и связи с заказами нужны для `График доставок`?
|