food-market/docs/migration-progress.md
nns a2ee85bc12
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
docs(migration): инвентаризация источника МойСклад + дизайн мигратора (Part 1)
Решение владельца 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>
2026-10-09 13:26:35 +05:00

33 lines
3 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. [ ] Инвентаризация источника (скрипт) → `docs/migration-source-inventory.md`.
2. [ ] Мигратор MoySklad→ALL MARKET (Hangfire, идемпотентный по msId/externalId): справочники →
документы в хронологии с номерами/датами(МСК→)/авторами/статусами/связями/комментариями;
суммы из тиынов; прогресс + журнал ошибок.
3. [ ] Новая орг на стенде (имя = орг МойСклада), простой режим; Демо/«Магазин у дома» не трогать.
4. [ ] Сверка (авто) → `docs/migration-reconciliation.md`: остатки по товар×склад, долги
контрагентов, остатки счетов/касс, выручка+чеки по месяцам, число документов по типам.
5. [ ] Дельта-досинхронизация (updated>= МСК + удалённые) до дня перехода.
6. [ ] Производительность/надёжность: замер, идемпотентность, продолжение после падения.
7. [ ] 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. В МойСклад — только чтение.