Bladeren bron

document production order XLS import rules

Alexander Musikhin 13 uur geleden
bovenliggende
commit
e2689f7b0a

+ 4 - 4
docs/refactor/plan.md

@@ -85,7 +85,7 @@
 | 6. Склад: ядро | Реализован и проверен | Ядро склада принято после пользовательской проверки. Цены относятся к общему каталогу; для склада остаётся отдельной задачей только PDF-экспорт после согласования шаблона. |
 | 7. Техническое описание | Реализован и проверен | Данные встроены в общий каталог, вид цены выбирается администратором (по умолчанию `проект`), одиночный DOCX и массовый DOCX/ZIP приняты по результатам пользовательской проверки. |
 | 8. Калькуляции | Исходник изучен, ожидается отдельное ТЗ | Восстановлены сущности, формулы и экспорты `calc.stroyprofit.com`; финальная архитектура, формулы и сценарии не фиксируются до ТЗ. Рабочая база источника сейчас не содержит расчётных данных. |
-| 9. Графики заказов и доставок | Ручной контур реализован и проверен; интеграция в работе | Нормализованное ядро, таблица и карточка заказа по ТЗ, несколько доставок/монтажей, недельный график доставок, файлы, уведомления, документы, экспорт и рекламации приняты пользователем. XLS/1С и перенос истории ожидают согласования интеграционного контракта. |
+| 9. Графики заказов и доставок | Ручной контур реализован и проверен; интеграция в работе | Нормализованное ядро, таблица и карточка заказа по ТЗ, несколько доставок/монтажей, недельный график доставок, файлы, уведомления, документы, экспорт и рекламации приняты пользователем. Правила XLS-импорта согласованы; 1С и перенос истории ожидают согласования интеграционного контракта. |
 | 10. Рекламации из графика заказов | Реализован и проверен | Из карточки заказа создаётся рекламация типа `Прочее` по выбранным экземплярам МАФ; она доступна во вкладке `Все`, исключена из `ДКР` и не имеет платёжных документов. Сценарий принят пользователем вместе с ручным контуром графика заказов. |
 
 ## Этап 1. Реорганизация меню и заглушки
@@ -268,10 +268,10 @@
 3. **9.3. Доставки и монтажи** — несколько записей на заказ, выбор водителя/бригадира, недельный график доставок и связь с графиком монтажей.
 4. **9.4. Файлы и коммуникации** — документы, фотографии, чат заказа, скан паспорта каждого экземпляра МАФ.
 5. **9.5. События и документы** — аудит, настраиваемые уведомления, экспорт МАФ, монтажный пакет, заявка на доставку и техдокументация.
-6. **9.6. Обмен данными** — экспорт списка, XLS-импорт после уточнения формата, API 1С с журналом загрузок и отдельная миграция старых данных.
+6. **9.6. Обмен данными** — экспорт списка, XLS-импорт по согласованному формату, API 1С с журналом загрузок и отдельная миграция старых данных.
 7. **9.7. Рекламации и приёмка** — связь с этапом 10, полные автотесты и пользовательская проверка.
 
-Текущий подэтап: **9.6. Обмен данными**; фоновый экспорт списка с активными фильтрами реализован, XLS-импорт, 1С и перенос истории ожидают согласования контракта. Подэтап 9.7 реализован и принят пользователем.
+Текущий подэтап: **9.6. Обмен данными**; фоновый экспорт списка с активными фильтрами реализован, правила XLS-импорта согласованы, а 1С и перенос истории ожидают согласования контракта. Подэтап 9.7 реализован и принят пользователем.
 
 - [x] **9.1. Основа данных и права:** добавлены нормализованные таблицы и модели, enum статусов/типов, производственный календарь, роль `driver`, действия и permissions отдельных полей.
 - [x] **9.2. Ручной заказ:** реализованы список с фильтрами, цветовой статус, карточка, создание/редактирование, расчёт договорной даты отгрузки и отдельные экземпляры МАФ из общего каталога.
@@ -304,7 +304,7 @@
 - [x] Добавить ручное создание заказа, файлы, фотографии, чат, паспорт каждого МАФ и журнал согласованных действий.
 - [x] Добавить статусы, типы исполнения, цветовую индикацию и настраиваемые уведомления.
 - [x] Реализовать экспорт списка заказов с активными фильтрами и экспорт МАФ одного заказа.
-- [ ] Реализовать обновление заказов ручным XLS-импортом после согласования состава строк отдельных экземпляров МАФ.
+- [ ] Реализовать ручной XLS-импорт: обновление по `ID`, создание при пустом `ID`, ошибка при неизвестном `ID`; экземпляры МАФ принимать с отдельного листа.
 - [x] Реализовать пакеты документов для монтажа, доставки и технической документации.
 - [x] Добавить создание рекламации из заказа через текущую форму.
 - [x] Получить базовые требования и шаблон заявки для `Графика доставок`.

+ 1 - 1
docs/refactor/test-order-schedule.md

@@ -25,7 +25,7 @@
 - уведомления и журнал действий;
 - создание рекламации типа `Прочее` по выбранным МАФ.
 
-В эту проверку **не входят** импорт XLS, обмен с 1С и перенос истории из старого Manager: для них ещё требуется согласованный формат данных.
+В эту проверку **не входят** импорт XLS, обмен с 1С и перенос истории из старого Manager. Формат XLS уже согласован, но сам импорт ещё не реализован; для 1С и переноса истории остаются отдельные интеграционные вопросы.
 
 ## 2. Что подготовить
 

+ 6 - 8
docs/refactor/tz-order-schedule-answers.md

@@ -92,7 +92,9 @@
 
 13. **Обновление ручным импортом**
 
-    Нужно предусмотреть обновление заказа из файла по внутреннему `ID` заказа.
+    Заказ с заполненным внутренним `ID` обновляется. Пустой `ID` означает создание нового заказа. Если заполненный `ID` не найден, импорт строки завершается ошибкой без создания заказа.
+
+    Экземпляры МАФ передаются на отдельном листе XLS и связываются с заказом через строку основного листа.
 
 14. **Паспорт МАФ**
 
@@ -165,6 +167,8 @@
 - роль `Водитель` и исходные права помощника руководителя;
 - события уведомлений и состав аудита;
 - экспорт списка с учётом фильтров;
+- правила XLS-импорта: обновление по `ID`, создание при пустом `ID`, ошибка при неизвестном `ID`;
+- отдельный лист XLS для экземпляров МАФ;
 - паспорт как готовый скан;
 - генерация заявки на доставку по полученному шаблону;
 - отдельная отчётность рекламаций типа `Прочее`.
@@ -178,10 +182,4 @@
 3. Полный payload и контракт API.
 4. Правила повторной синхронизации, конфликтов, аннулирования и частичного изменения состава заказа.
 
-### Нужно зафиксировать до импорта XLS
-
-5. Может ли импорт создавать новые заказы или только обновлять существующие по `ID`.
-6. Как обрабатывать пустой, неизвестный или принадлежащий другому окружению `ID`.
-7. Нужен ли отдельный лист с экземплярами МАФ при импорте, если экспорт содержит агрегированное оборудование в одной колонке.
-
-Эти вопросы не блокируют разработку ручного ядра графика заказов, доставок, монтажей, файлов, уведомлений, аудита и экспорта заявки на доставку.
+Требования к ручному XLS-импорту согласованы. Открытые вопросы выше блокируют только интеграцию с 1С.

+ 4 - 9
docs/refactor/tz-order-schedule.md

@@ -250,13 +250,14 @@
 - определены события уведомлений и их получатели;
 - аудит содержит изменения статуса и добавление в графики без диффа обычных полей;
 - экспорт учитывает фильтры и агрегирует оборудование в одной колонке;
-- импорт должен уметь обновлять заказ по его внутреннему ID;
+- импорт обновляет заказ по внутреннему `ID`, создаёт новый заказ при пустом `ID` и возвращает ошибку при неизвестном `ID`;
+- экземпляры МАФ импортируются с отдельного листа XLS;
 - паспорт загружается готовым сканом;
 - реализуются все перечисленные кнопки карточки;
 - рекламации `Прочее` и `ДКР` имеют разную отчётность;
 - получен шаблон заявки на доставку.
 
-Остаются вопросы по 1С и точным правилам ручного импорта.
+Остаются вопросы по интеграции с 1С. Правила ручного XLS-импорта согласованы.
 
 ### Блокирующие проектирование и обмен с 1С
 
@@ -265,12 +266,6 @@
 3. Какие поля 1С являются первичными, а какие локальные изменения должны сохраняться при повторной синхронизации?
 4. Как обрабатывать повторную загрузку, аннулирование и частичное изменение состава заказа?
 
-### Требуют уточнения до реализации ручного импорта
-
-5. Может ли XLS создавать новые заказы или только обновлять существующие по `ID`?
-6. Как обрабатывать отсутствующий или неизвестный `ID`?
-7. Как импортировать отдельные экземпляры МАФ, если оборудование в общем экспорте агрегировано в одной колонке?
-
 ## 13. Рекомендуемая последовательность реализации
 
 1. Спроектировать нормализованные таблицы заказов, экземпляров МАФ, доставок, монтажей и аудита.
@@ -278,6 +273,6 @@
 3. Реализовать справочники, права и базовую карточку с ручным созданием заказа.
 4. Добавить документы, фотографии, чат, паспорт МАФ и техническую документацию.
 5. Реализовать доставки, монтажи, уведомления, аудит и заявку на доставку.
-6. Реализовать экспорт с фильтрами; ручной импорт — после уточнения оставшихся правил.
+6. Реализовать экспорт с фильтрами и ручной XLS-импорт по согласованным правилам.
 7. Реализовать рекламации типа `Прочее` по выбранным экземплярам МАФ.
 8. После контакта со специалистом 1С спроектировать и реализовать идемпотентный API обмена с журналом загрузок.

+ 5 - 5
docs/refactor/tz-schedules.md

@@ -149,8 +149,7 @@
 - может ли 1С передавать стабильный GUID заказа вместо ключа, собранного из номера и года;
 - может ли 1С передавать артикул общего каталога и идентификатор каждого экземпляра МАФ;
 - какие поля принадлежат 1С, а какие должны сохраняться при повторной синхронизации;
-- как 1С сообщает аннулирование и частичное изменение состава заказа;
-- может ли ручной XLS-импорт создавать новые заказы и как передавать в нём отдельные экземпляры МАФ.
+- как 1С сообщает аннулирование и частичное изменение состава заказа.
 
 ## 6. График доставок
 
@@ -272,13 +271,14 @@
 - сериализованные массивы в текстовых колонках как основная модель данных;
 - перезапись ручных плановых данных значениями по умолчанию при импорте из 1С.
 
+Для ручного XLS-импорта согласовано: пустой `ID` создаёт заказ, неизвестный `ID` даёт ошибку, экземпляры МАФ передаются на отдельном листе.
+
 Открыто:
 
 - точные имена таблиц и моделей;
 - стабильные идентификаторы заказа и экземпляров МАФ в 1С;
 - принадлежность синхронизируемых и локально редактируемых полей;
 - источник и обновление производственного календаря;
-- формат импорта отдельных экземпляров МАФ и обработка отсутствующего/неизвестного ID;
 - способ связи с существующими `Order`, `ProductSKU`, `Schedule` и `Reclamation` без смешивания с ДКР;
 - правила миграции дублей и некорректных дат старого `graf1`.
 
@@ -324,7 +324,7 @@
 - [x] Согласовать календарь, даты отгрузки, несколько доставок/монтажей, роль водителя, права, уведомления и аудит.
 - [x] Получить и разобрать шаблон заявки на доставку `templates/DeliveryRequest.xls`.
 - [ ] Согласовать со специалистом 1С контракт API, идентификаторы и правила повторной синхронизации.
-- [ ] Уточнить создание новых заказов и передачу экземпляров МАФ через ручной XLS-импорт.
+- [x] Уточнить создание новых заказов и передачу экземпляров МАФ через ручной XLS-импорт.
 - [x] Составить базовый список полей для графика доставок.
 - [ ] Реализовать карточку заказа с выбором одного или нескольких МАФ.
 - [ ] Добавить действие `Добавить рекламацию`.
@@ -347,4 +347,4 @@
 
 ## 13. Открытые вопросы
 
-Актуальный перечень сформирован в [ответах заказчика](tz-order-schedule-answers.md#4-что-осталось-уточнить). Вопросы по 1С блокируют только интеграцию с 1С. Для ручного импорта отдельно нужно уточнить создание новых заказов, обработку неизвестного ID и передачу экземпляров МАФ.
+Актуальный перечень сформирован в [ответах заказчика](tz-order-schedule-answers.md#4-что-осталось-уточнить). Правила ручного XLS-импорта согласованы. Оставшиеся вопросы блокируют только интеграцию с 1С.