Files
portal/docs/superpowers/specs/2026-05-09-sprint2-modernization-design.md
T
Дмитрий 42b3f3f9e4 docs(spec-sprint2): дизайн Спринта 2 «Modernization» — 12 O-* находок
Scope: 8 O-stack + 2 O-perf + 2 O-refactor (low/medium risk, без архитектурных
рефакторингов). Default-выборы для design-решений зафиксированы в spec'е.

4 фазы: A.Backend (Pest 4 browser + mutation + Laravel 13 lazy + Larastan cache)
→ B.Frontend (Vue 3.5 + Vuetify 3.12 + lazy-imports + ESLint check)
→ C.Docs (Google Fonts + CLAUDE.md §0 reorg + FD plugin checklist)
→ D.Hygiene (dead-code report).

Не входит — 6 Sprint 3 пунктов (high risk, R0.6 hard-стопы).

Бюджет: 5-6 часов агентов.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:51:55 +03:00

6.7 KiB
Raw Blame History

Spec: Спринт 2 «Modernization» — 12 O-* находок аудита 2026-05-09

Версия: 1.0 Дата: 09.05.2026 Заказчик: Дмитрий Статус: утверждён («а» в auto-mode после Sprint 1)

1. Цель

Закрыть 12 low/medium-risk O-* находок аудита (после Sprint 1 «Hygiene»). Без архитектурных рефакторингов — только модернизация стека, оптимизация O-perf без breaking-changes, гигиена tooling. Wall-clock: 5-6 часов агентов.

2. Scope — 12 правок

O-stack — модернизация (8)

  • O-stack-01: Pest 4 browser-tests setup. Default: 2 smoke E2E — login-flow (/login → /dashboard) и deal-create-flow (/deals → создать → видна в списке). Выбор — 2 ключевых сценария, не полное E2E-покрытие.
  • O-stack-02: mutation testing setup. Default: установить infection/infection, конфиг с базовым thresholdMin=50%, прогон в CI weekly (не блокировать pre-commit).
  • O-stack-03: Laravel 13 string-based lazy-loading контроллеров в routes/web.php (заменить use App\... на строки [App\...::class, 'method'] где имеет смысл).
  • O-stack-04: Vue 3.5 фичи в диалогах. Default: 3 диалога с v-model паттернами — ImpersonationDialog, DealDetailDrawer, ConfirmDialog (если есть). Migrate на defineModel() + useTemplateRef().
  • O-stack-05: Vuetify 3.12 типизированные слоты VDataTable. Default: 2 таблицы — DealsView (списке сделок) и AdminTenantsView (SaaS-админка).
  • O-stack-06: Verify Frontend Design plugin в ~/.claude/settings.json. Manual user step — Claude может только распечатать checklist + текущее состояние, не править файл вне git.
  • O-stack-07: ESLint flat-config check — app/eslint.config.js уже flat-config (подтверждено в Phase C); просто verify + добавить comment-метку.
  • O-stack-10: Google Fonts API v2 + @font-face fallback в liderra_v8_handoff/docs/DEVELOPER_HANDOFF.md. Документация only, не правка кода (handoff уже использует Google Fonts).

O-perf — оптимизация (2)

  • O-perf-06: lazy-imports на 3 views >300 строк — DealsView (852), ReportsView (592), DealDetailDrawer (580). defineAsyncComponent() для тяжёлых внутренних диалогов.
  • O-perf-07: Larastan в pre-commit → перенос в pre-push ИЛИ включение result cache. Default: result cache в pre-commit (быстрее без жёсткого изменения flow).

O-refactor — гигиена (2)

  • O-refactor-06: dead-code detection. Default: запустить npm run build -- --analyze + knip smoke; найденные unused-exports — выписать в .tmp/audit/sprint2_dead_code.md (НЕ удалять автоматически — отдельное решение).
  • O-refactor-07: CLAUDE.md §0 reorg. Default: вынести историю версий из CLAUDE.md в docs/CHANGELOG_claude_md.md (там уже есть такой файл!), оставить в CLAUDE.md только последние 2 версии. Через claude-md-management:claude-md-improver.

3. Не входит в Sprint 2 (= Sprint 3)

  • O-perf-01 N+1 DealController bulk-actions — high risk, нужны новые тесты
  • O-perf-04 OFFSET → keyset — breaking API change
  • O-perf-05 export() streaming — новая зависимость
  • O-refactor-01/02 DealController/AuthController split — архитектурное (Pravila §4.5)
  • O-refactor-04 12 Vue-компонентов >300 строк — cross-cutting refactor (R0.6)

4. Архитектура — 4 фазы / 4 коммита

[A. Backend modernization] → Pest 4 browser + mutation + lazy-loading + Larastan cache
       ↓
[B. Frontend modernization] → Vue 3.5 + Vuetify 3.12 + lazy-imports + ESLint check
       ↓
[C. Docs] → Google Fonts API + CLAUDE.md §0 reorg + FD plugin verify checklist
       ↓
[D. Hygiene] → dead-code detection report

Каждая фаза = 1 коммит. После A — Pest + Larastan; после B — Vitest + vue-tsc + ESLint; после C — npm run check:docs; после D — отчёт без правок (анализ).

5. DoD

  • 4 коммита, каждый с осмысленным scope.
  • cd app && composer test — 416/416 + новые browser tests (минимум 2).
  • cd app && composer stan — 0 errors above baseline.
  • cd app && npm run type-check — 0 errors.
  • cd app && npm run test:vue — 393/393 (или больше).
  • npm run check:docs — 0 errors на narrative.
  • .tmp/audit/sprint2_dead_code.md создан с отчётом (анализ без удалений).
  • ~/.claude/settings.json checklist распечатан в финальном отчёте Sprint 2.

6. Риски

  • O-stack-01 Pest 4 browser-tests на Windows — Pest 4 browser использует Playwright под капотом, может потребовать npx playwright install chromium. На Windows native может быть тормоза/конфликты. Митигация — установить, если падает на setup → smoke не пишем, фиксируем как «требует Linux CI» в реестре.
  • O-stack-02 infection/infection — может быть медленным на 416 тестах (>5-10 минут). Митигация — конфиг с filter по --filter='App\Http' (только наш код, не vendor), CI-only.
  • O-stack-04/05 Vue 3.5 migrationdefineModel() ломает type signatures props/events; нужно проверить ESLint + vue-tsc после каждой миграции.
  • O-perf-06 lazy-importsdefineAsyncComponent() меняет shape компонента, может ломать tests. Митигация — Vitest после каждой миграции.
  • O-refactor-07 CLAUDE.md §0 reorg — обязательно через claude-md-management:claude-md-improver (CLAUDE.md §5 п.10).

7. Не делаем

  • Pa11y prod-режим (пользователь delegated в Sprint 1 P1-12, требует браузер-сессии).
  • Pre-prod migration P1-10/11 (уже в реестре, ждут Б-1).
  • Любые из 6 Sprint 3 пунктов (high risk, отдельный spec→plan).