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

47 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Перенос магазина МойСклад → 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. [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).
3. [x] **Новая орг на стенде** «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. В МойСклад — только чтение.