diff --git a/docs/migration-progress.md b/docs/migration-progress.md index edd34fc..83b99cc 100644 --- a/docs/migration-progress.md +++ b/docs/migration-progress.md @@ -14,13 +14,20 @@ 1. [x] **Инвентаризация источника** → `docs/migration-source-inventory.md` (скрипт `scripts/migration/ms_inventory.py`). Орг «FOOD MARKET», ~31k товаров, 627 контрагентов, ~110k документов, 7558 строк остатков; gap-анализ + цели сверки. -2. [~] **Мигратор.** Существующий `MoySkladImportService` (справочники product/productfolder/ - counterparty, идемпотентность по `MoySkladExternalId`) — РАБОТАЕТ на реальных данных: - - [x] Контрагенты → **628** в новой орг (МС 627 + 1 розн. покупатель по умолчанию). - - [x] Группы → **53** (МС 52 + корень). [~] Товары — импорт запущен (31k, фон, ~3600/20с). - - [ ] uom/склад/точка/сотрудники как отдельные справочники (сейчас товары мапятся на - дефолтные ед.); externalId на Counterparty/Store/RetailPoint/Employee/UoM. - - [ ] **Документы (110k) в хронологии** — НЕ начато (основной объём; дизайн — migration-design.md). +2. [~] **Мигратор — работает на реальных данных.** + - [x] Справочники: товары **30 944**, контрагенты **628** (+externalId), группы **53**; + идемпотентность по `MoySkladExternalId`. + - [x] **Документный мигратор (сервер, фон, идемпотентный, резюмируемый)** — архитектура + проверена на ПРИЁМКАХ: `MoySkladDocumentImportService` + `StreamDocumentsAsync` + (хронология order=moment,asc, expand позиций, 429/повторы, таймаут 130с), + `Phase41` externalId на всех документах/справочниках. Приёмки переносятся ~10/с с + движениями остатков; moment МСК→UTC, суммы из тиынов, поставщик по externalId, + товары по externalId, агрегация позиций по товару, SaveChanges по документу. + Починены 3 бага: sum как decimal («900000.0»), тяжёлый expand, дубль stocks при батче. + - [ ] Остальные типы (retaildemand/loss/enter/inventory/supplier_returns/shifts/деньги) — + по ТОМУ ЖЕ проверенному шаблону (следующая итерация). + - [ ] uom/склад/точка/сотрудники как отдельные справочники с externalId (пока товары на + дефолтных ед.; склад — единственный склад орг). 3. [x] **Новая орг на стенде** «FOOD MARKET» (простой режим), admin `foodmarket-migr@food-market.local`. Демо/«Магазин у дома» не тронуты. Токен МойСклада задан в настройках орг. 4. [ ] Сверка → `docs/migration-reconciliation.md` (цели собраны в source-inventory; после переноса документов).