Перейти к содержимому

CrewsForge — Шаг 8: План миграции (упрощён)

Статус: подтверждено 2026-08-21 · Шаг 8 из 9 Решение Stark: данные в БД тестовые, их практически нет — старое дропаем, схему создаём сразу целевой. Expand/backfill/contract-цикл из первой редакции снят как избыточный.

  1. pg_dump один раз — не ради отката, а как архив на случай «а что там было» (дёшево).
  2. Squash миграций: история Prisma-миграций схлопывается в один baseline, schema.prisma пишется сразу в целевом виде (шаг 2 + дельты шагов 6–7: templateVersion/documentHash на Contract, ConciergeThread/Message, частичный уникальный индекс QueueItem). Никаких status_v2, временных enum’ов и маппингов старых статусов — старый ProjectStatus просто не существует в baseline.
  3. Raw-SQL в baseline-миграции: CHECK-констрейнт Settlement (шаг 2.13), частичный индекс QueueItem (шаг 7.2).
  4. prisma migrate reset на dev/staging → сиды.
  5. Прод (закрытая бета): согласованное окно, drop схемы, baseline, сиды, редеплой всех сервисов разом (единая схема — смешанных версий кода быть не должно).
  • Роли: CUSTOMER, EMPLOYEE, ADMIN, OPERATOR, ARBITER.
  • Конфиги: календарь платформы (UTC, 10–18, пн–пт), SLA-сроки (таблица 8.2 ФТ), окна (5/5/5 дней, конверт 14), комиссия-дефолт 1500 bps, порог бюджета $15k, порог LCIA (TBD).
  • Справочники: существующие сиды гео/языков/навыков переезжают без изменений.
  • Тестовые фикстуры dev: фаундер, команда с ролями/полномочиями, проект в паре опорных состояний — для ручной проверки и e2e.

3. Что сохраняет актуальность из первой редакции

Заголовок раздела «3. Что сохраняет актуальность из первой редакции»
ПунктСтатус
Список ломающих изменений API для фронтенда (переходы вместо PATCH status, новые enum’ы, обязательная currency, операторские DTO без денег)Актуален — передать команде фронта до переключения
Удаление PROJECT_STATUS_TRANSITIONS, ProjectUpdateStatusDto, PATCH-маршрутов статуса (project-api и admin-api)Выполнено в F2 (правка 2026-08-30, подтверждена Stark’ом): смена enum’а не оставляет старой таблице переходов возможности скомпилироваться, поэтому поверхность снимается вместе с baseline, а не в P1. В admin-api отдельного PATCH-маршрута статуса не было — удалено поле status в AdminProjectUpdateDto
Политика RESTRICT вместо Cascade на сделочной цепочкеАктуальна — теперь просто пишется в baseline сразу, отдельной фазы не нужно
Чек-лист верификации после переключения (инварианты-тесты, журнал+outbox на смоук-переходах, отсутствие Cascade на пути Project→Settlement, SQL-проверкой)Актуален — раздел 5 первой редакции, без пунктов про старые данные

Эпик F4 упрощается: «Expand-миграции + backfill со стоп-проверкой» → «Baseline-схема + сиды», размер M → S. Критический путь не меняется.