food-market/docs/migration-progress.md
nns 4667d8e1a7
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
docs(migration): статус — Part 1 (инвентаризация) + Part 3 (орг) done; Part 2 справочники на реальных данных
Пайплайн справочников проверен на реальном аккаунте: орг «FOOD MARKET» на стенде,
контрагенты 628 (МС 627) и группы 53 перенесены, товары (31k) импортируются в фоне.
Документы (110k), сверка и дельта — спроектированы (migration-design.md), основной
объём впереди (многочасовой прогон). global.json не трогал; в МойСклад только чтение.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:31:37 +05:00

4.6 KiB
Raw Blame History

Перенос магазина МойСклад → ALL MARKET (с историей) — прогресс

Решение владельца 09.10: перенести ВСЁ из МойСклада с историей, перейти на ALL MARKET. Фискализации нет и в МойСкладе (не блокер), маркировка не используется.

Источник: аккаунт МойСклад, орг «FOOD MARKET» (id bb8f74d4-5eb6-11ef-0a80-106e00048af9). Токен — ~/.food-market-secrets/moysklad.env (ТОЛЬКО ЧТЕНИЕ; в МойСклад ничего не писать). Опыт API — ~/.fm-watchdog/ms-api-lessons.txt; код-образцы — ~/ref/fm-server-moysklad, ~/ref/sklad. Существующий импортёр (справочники) — src/food-market.infrastructure/Integrations/MoySklad/.

Легенда: [x] готово · [~] частично · [ ] не начато.

План и статус

  1. Инвентаризация источника → docs/migration-source-inventory.md (скрипт scripts/migration/ms_inventory.py). Орг «FOOD MARKET», ~31k товаров, 627 контрагентов, ~110k документов, 7558 строк остатков; gap-анализ + цели сверки.
  2. [~] Мигратор. Существующий MoySkladImportService (справочники product/productfolder/ counterparty, идемпотентность по MoySkladExternalId) — РАБОТАЕТ на реальных данных:
    • Контрагенты → 628 в новой орг (МС 627 + 1 розн. покупатель по умолчанию).
    • Группы → 53 (МС 52 + корень). [~] Товары — импорт запущен (31k, фон, ~3600/20с).
    • uom/склад/точка/сотрудники как отдельные справочники (сейчас товары мапятся на дефолтные ед.); externalId на Counterparty/Store/RetailPoint/Employee/UoM.
    • Документы (110k) в хронологии — НЕ начато (основной объём; дизайн — migration-design.md).
  3. Новая орг на стенде «FOOD MARKET» (простой режим), admin foodmarket-migr@food-market.local. Демо/«Магазин у дома» не тронуты. Токен МойСклада задан в настройках орг.
  4. Сверка → docs/migration-reconciliation.md (цели собраны в source-inventory; после переноса документов).
  5. Дельта-досинхронизация (updated>= МСК + удалённые).
  6. Производительность/надёжность (резюмируемый курсор документов).
  7. Runbook «день перехода» + откат.

Сделано в этой сессии (честно)

Part 1 (инвентаризация) и Part 3 (орг) — выполнены. Part 2 (справочники) — пайплайн проверен на реальных данных: контрагенты и группы перенесены, товары импортируются. Parts 4–7 спроектированы (migration-design.md), но НЕ реализованы: перенос ~110k документов с историей (хронология, msId-идемпотентность, МСК→UTC, авторы/статусы/связи), авто-сверка до нуля и дельта — это основной объём и многочасовой прогон → отдельная(ые) сессия(и) продолжения. Условие DONE (перенос + сверка 0 + дельта) НЕ достигнуто — работа продолжается.

Ключевые факты API (из ms-api-lessons + проверки)

  • База https://api.moysklad.ru/api/remap/1.2, Authorization: Bearer, Accept-Encoding: gzip обязателен.
  • Время moment/фильтров — МОСКОВСКОЕ (UTC+3), формат yyyy-MM-dd HH:mm:ss.
  • Суммы — в ТИЫНАХ (÷100). Лимит 45 запросов/3с; таймаут ≥120с; expand только при limit≤100.
  • report/stock/all НЕ отдаёт нулевые остатки; номера документов повторяются по годам — ключ только id.

Что НЕ трогаем

Прод, shared-postgres, global.json, gateway nginx, sklad. В МойСклад — только чтение.