Решение владельца 09.10: полный перенос магазина из МойСклада в ALL MARKET с историей. - scripts/migration/ms_inventory.py — read-only инвентаризация источника. - docs/migration-source-inventory.md: орг «FOOD MARKET», ~31k товаров, 627 контрагентов, ~110k документов (97 707 чеков, 7 125 приёмок, 3 068 списаний…), 7 558 строк остатков, 1 склад/точка/орг, касса наличных, 1 тип цены; gap-анализ модели + цели сверки. - docs/migration-design.md: идемпотентность по msId, хронология документов, МСК→UTC, тиыны, резюмируемость, порядок этапов, сверка, дельта, runbook. - docs/migration-progress.md: план Part 1–7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 KiB
3 KiB
Перенос магазина МойСклад → 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] готово · [~] частично · [ ] не начато.
План
- Инвентаризация источника (скрипт) →
docs/migration-source-inventory.md. - Мигратор MoySklad→ALL MARKET (Hangfire, идемпотентный по msId/externalId): справочники → документы в хронологии с номерами/датами(МСК→)/авторами/статусами/связями/комментариями; суммы из тиынов; прогресс + журнал ошибок.
- Новая орг на стенде (имя = орг МойСклада), простой режим; Демо/«Магазин у дома» не трогать.
- Сверка (авто) →
docs/migration-reconciliation.md: остатки по товар×склад, долги контрагентов, остатки счетов/касс, выручка+чеки по месяцам, число документов по типам. - Дельта-досинхронизация (updated>= МСК + удалённые) до дня перехода.
- Производительность/надёжность: замер, идемпотентность, продолжение после падения.
- Runbook «день перехода» + откат.
Ключевые факты 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. В МойСклад — только чтение.