# Пакеты реализации после утверждения Только план; задач в Multica не создано. Каждый пакет — одна наблюдаемая вертикаль, один MR, тест до реализации (RED → GREEN → refactor). Техлид распределяет работу скваду после утверждения spec/architecture и относящихся Q. Команды ниже **будущие**, сейчас не существуют и в STT-232 не запускались. Общая команда приёмки каждого MR: `pnpm lint && pnpm typecheck && pnpm exec tsx scripts/req-coverage`; в первых MR coverage сверяется по явно утверждённому списку REQ пакета, финальная приёмка П11 — по всем REQ без исключений. Не превращать пакет в горизонтальный слой «вся БД» или «весь UI». При росте объёма уточнить вертикаль до начала разработки, не делать бесконечный MR. | Пакет / ведущая компетенция | Вертикаль и результат одного MR | Зависимости / ворота | REQ | Тесты сначала и команда приёмки | | --- | --- | --- | --- | --- | | П1 / fullstack + QA | Войти тестовой личностью и увидеть разрешённый проект: Nuxt/Nitro composition root, схема Principal/Grant/Project/Session, shared contracts, PGlite/Postgres switch, Clock/ID, builders, тестовые scripts/req-coverage, production-negative вход. Минимальная страница и health. | Утверждены spec, ADR-0004/0005; живой OAuth не требуется | 012,032,037,038 | L1 scope policy; L2 grants/session на миграциях; L4 auth и чужой проект; L5 smoke тестового входа; миграции empty; prod-safety. `pnpm test:module -- --project access && pnpm test:api -- --project access && pnpm test:prod-safety && pnpm test:migrations` плюс L1/access и e2e/access | | П2 / backend + UI | Сотрудники и проекты из fake/Bitrix в форме выбора: SphereClient совместимый STT-215, ProjectSource, staging/status, ID mapping, деактивация, ручной run, экран справочника/ошибок. | П1; Q-01/Q-07 для real adapter; до ответа только контракт фейка, MR не объявлять живой интеграцией | 028,029,031,037 | L2 два sync не дублируют, обрыв не удаляет; L3 user/department/group pagination/errors; L4 операторский запуск; L5 деактивация; migration справочников. `pnpm test:contract -- --project sphere && pnpm test:module -- --project sync && pnpm test:api -- --project sync && pnpm test:e2e -- --grep REQ-029` | | П3 / backend + fullstack | РП создаёт заявку и просматривает свою карточку: Request/Line, точные значения FTE/R, scoped список, исправленная заявка как новая. | П1–П2; Q-02 принят, Q-11 числовой контракт | 001,002,006,012 | L1 границы и pending; L2 create/idempotency; L4 все роли create/get; компоненты FTE по месяцам; L5 создание двух строк; migration Request. `pnpm test:domain -- --project requests && pnpm test:module -- --project requests && pnpm test:api -- --project requests && pnpm test:components && pnpm test:e2e -- --grep REQ-001` | | П4 / backend + fullstack | РМ принимает первичное решение, назначение появляется в плане: Calculator из calc.js, cost snapshot (fake source), journal, транзакция и блокировка ёмкости, return/reject, six-month UI. | П3; Q-03/Q-04/Q-11 для политики ставок; real 1С не требуется | 003,004,005,007,008,009,010,011,030,033 | L1 формулы/автомат/property; L2 rollback журнала, версии и неизменность решений после sync; L4 матрица решения/redaction; L5 заявка→план; Postgres два approve; компоненты плана; миграции. `pnpm test:domain && pnpm test:module -- --project decisions && pnpm test:api -- --project decisions && pnpm test:postgres -- --project approval && pnpm test:e2e -- --grep REQ-003` | | П5 / backend + fullstack | Изменить назначение: preview/release/reduce/replace, before/after, история, защита снимка, пересчёт плана и даты освобождения. | П4 | 014,015,016,017,033 | L1 дневные инварианты; L2 один pending и stale snapshot; L4 чужое назначение; L5 замена с превышением; Postgres pending-race; миграции версий. `pnpm test:domain -- --project changes && pnpm test:module -- --project changes && pnpm test:api -- --project changes && pnpm test:postgres -- --project changes && pnpm test:e2e -- --grep REQ-017` | | П6 / fullstack + QA | Плановые отчёты и CSV: утилизация, финансы, распределение, свободный ресурс, недельный график, scope/redaction. | П4–П5; Q-10 поля распределения | 018,019,020,021 | L1 AC 41–48; L2 выборки/суммы; L4 CSV и утечки C; L5 отчёт; компоненты только сложной таблицы. `pnpm test:domain -- --project reports && pnpm test:module -- --project reports && pnpm test:api -- --project reports && pnpm test:e2e -- --grep REQ-021` | | П7 / fullstack + backend | Управленческие отчёты с ручным fallback: некоммерческие, статистика, типы, отпуска, признаки неполноты, общие фильтры. | П6; Q-05/Q-07/Q-10 приоритеты и поля | 022,023,024,025,026,027 | L1 AC 49–66, property null/0; L2 partial data, уникальность; L4 PATCH только РМ; L5 полный/неполный отчёт; миграции local data. `pnpm test:domain -- --project completeness && pnpm test:module -- --project reporting-data && pnpm test:api -- --project reporting-data && pnpm test:e2e -- --grep REQ-027` | | П8 / integrations + QA | Факт Time до экрана: adapter, raw entries, task mapping, coverage, исправления/удаления, переключение источника отчётов/плана, stale UI. | П2,П7; Q-01/Q-05 утверждены, captures предоставлены | 013,031,035 | L3 Time и task mapping; L2 идемпотентность/reconcile/quarantine; L4 нет доступа РП к чужому факту; L5 fake Time outage→recovery; миграции actuals. `pnpm test:contract -- --project time && pnpm test:module -- --project actuals && pnpm test:api -- --project actuals && pnpm test:e2e -- --grep REQ-035` | | П9 / integrations + backend | Календарь/ставки от согласованного источника до превью и решения: версии, короткие дни, unknown, сверка rateVersion. | П4–П5; Q-03/Q-04/Q-06/Q-11, схема 1С | 008,031,036 | L1 короткий день/выходной; L3 1С; L2 полная активация версии и неизменность cost snapshot; L4 RATE_CHANGED; Postgres rate/approve race; миграции calendar/rate; L5 превью после календаря. `pnpm test:contract -- --project onec && pnpm test:module -- --project calendar-rates && pnpm test:postgres -- --project rate-race && pnpm test:api -- --project rates` плюс L1/calendar и e2e/calendar | | П10 / backend + security review | Настоящий вход выбранного IdP → scoped план: OAuth/SSO adapter, безопасные cookies/CSRF, grant/revoke, freshness и передача портфеля по принятому правилу. | П1–П2; Q-08 и регистрации приложения; П6–П9 для полной матрицы | 012,029,032,038 | L3 identity captures; L2 sessions/revoke; L4 полная роль×эндпоинт×поля; prod-safety fake bypass; L5 IdP stub. `pnpm test:contract -- --project identity && pnpm test:api && pnpm test:prod-safety && pnpm test:e2e -- --grep auth` | | П11 / platform + QA | Эксплуатация синка и восстановление: worker lease/fencing, расписание тех же run, статус/алерты, backup/restore runbook, нагрузочный профиль и финальная трассировка. | Все пакеты; Q-09 утверждён | 007,031,034,037 | L2 crash/replay; L3 outage; L4 ready/status; Postgres fencing; L5 stale; migrations empty+snapshot; восстановление и нагрузка по принятому профилю. `pnpm test:postgres && pnpm test:migrations && pnpm test:e2e && pnpm test:restore && pnpm test:load && pnpm exec tsx scripts/req-coverage` | П1 добавляет именованные vitest projects/Playwright grep tags для указанных команд; если suite использует иной runner CLI, команда в tasks.md меняется вместе с MR, а не остаётся невыполнимой. Все REQ в таблице пишутся с префиксом REQ- в тестах. L3 не нужен там, где пакет не меняет внешний adapter; migrations требуются каждому пакету со схемой. L4 и финальная матрица расширяются в том же MR, где появился endpoint. Полные L1/L2/L4 и миграции изменённой схемы всегда обязательны в CI, даже если локальная строка показывает targeted run. ## Приёмка пакета командой В описании MR: пользовательский результат, принятые Q/ADR, RED/GREEN команды и итог, изменение контрактов/миграций, screenshot только для изменённого UI. Reviewer прогоняет указанные команды на чистой БД, QA воспроизводит сценарий на fake-стенде, технический владелец проверяет прямой вызов модуля без браузера. Фикстурный L3 доказывает обработку заданного формата, но не работоспособность неизвестного live API. Весь сервис готов к рабочему запуску только после закрытия соответствующих вопросов и приёмки П11; никакой код не начинается только на основании этого списка.