42b3f3f9e4
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>
6.7 KiB
6.7 KiB
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+knipsmoke; найденные 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.jsonchecklist распечатан в финальном отчёте 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 migration —
defineModel()ломает type signatures props/events; нужно проверить ESLint + vue-tsc после каждой миграции. - O-perf-06 lazy-imports —
defineAsyncComponent()меняет 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).