BCG Phase 1 — Foundation Fix
BCG Phase 1 — Foundation Fix
Section titled “BCG Phase 1 — Foundation Fix”Дата: 2026-04-20
Основание: archive/2026-04-23-bcg-planning-docs/BCG_plan.md Фаза 1, archive/2026-04-23-bcg-planning-docs/bcg-phase-1-execution.md
Цель: frontend architecture 4.0/10 → 7.0/10
Исполнитель: CX (Codex), по одной задаче за раз (без параллели)
Устранить технический долг фронтенда: перевести state на Zustand, разрезать App.tsx (487 стр) и ResultsPanel.tsx (1919 стр), добавить error boundaries, унифицировать CSS, закрыть type-safety пробелы.
Baseline (2026-04-20)
Section titled “Baseline (2026-04-20)”App.tsx— 487 строк, ~20 useState, prop-drilling черезwizardPanelProps/sidebarPanelPropsResultsPanel.tsx— 1919 строк, 11+ логических секций в одном файлеuseProjectManager.ts— 850 строк,useAnalysis.ts— 181,useDraftPersistence.ts— 170- Hook-тесты уже есть:
useAnalysis.test.tsx(292 стр),useProjectManager.test.tsx(479),useDraftPersistence.test.tsx(194) — требуют аудита покрытия против BCG 1.1 stores/директории нет,ErrorBoundaryнет, CSS частично вApp.css(214 стр)- Тесты: backend pytest + frontend vitest (~8 файлов) должны оставаться зелёными на каждом шаге
Tasks (строго последовательно)
Section titled “Tasks (строго последовательно)”-
T1 Аудит hook-тестов против BCG 1.1 чек-листа, закрыть пробелы Verify:
cd app/frontend && npx vitest run src/hooks— все зелёные, покрыты все сценарии из 1.1.1-1.1.4 -
T2 Установить Zustand, создать
themeStore+wizardStoreVerify:npm ls zustandбез ошибок, theme toggle и wizard navigation работают,npx vitest runзелёный -
T3 Создать
analysisStore+draftStore, перенести логику изuseAnalysis/useDraftPersistenceVerify: старые hook-тесты адаптированы под store,npx vitest run src/stores src/hooksзелёный -
T4 Создать
projectStore, перенести 850 строк логики изuseProjectManagerVerify:useProjectManager.test.tsxадаптирован под store и зелёный, e2e flow (new → save → load → archive → restore) работает вручную -
T5 Рефакторинг
App.tsxна stores, удалитьwizardPanelProps/sidebarPanelPropsVerify:wc -l src/App.tsx< 120,rg "wizardPanelProps\|sidebarPanelProps" src/App.tsxпусто,npx vitest runзелёный -
T6 Разрезать
ResultsPanel.tsxна 11 секций вcomponents/results/Verify:wc -l src/components/ResultsPanel.tsx< 150, каждая секция рендерится,ResultsPanel.test.tsxзелёный -
T7
ErrorBoundary+ChartErrorBoundary, обернуть layout и chart-компоненты Verify: тест с искусственной ошибкой в chart → fallback UI, остальной layout живой -
T8 Разделить
App.cssнаlayout.css/components.css/utilities.css, перевести оставшиеся компоненты на CSS Modules Verify: визуальная парность (light + dark mode),npx vitest runзелёный -
T9 Type-safety pass: enum-типы вместо string-matching, убрать
asassertions Verify:npx tsc --noEmit— 0 ошибок,rg " as " src --type ts— только осознанные случаи -
T10 Финальная верификация Phase 1 Verify:
cmd /c scripts\verify_all.cmdпроходит полностью, чек-листы изarchive/2026-04-23-bcg-planning-docs/BCG_plan.mdL186 выполнены
Done When
Section titled “Done When”-
App.tsx< 120 строк,ResultsPanel.tsx< 150 строк - 5 Zustand stores: theme, wizard, analysis, project, draft
-
ErrorBoundary+ChartErrorBoundaryобёрнуты в layout и chart-компоненты -
npx tsc --noEmit= 0 ошибок -
npx vitest runиpytestзелёные -
scripts/verify_all.cmdпроходит полностью
- Без параллельных агентов — каждая T задача отдельным CX-батчем, review перед следующей
- Тесты — контракт: все существующие 17 backend + frontend тестов должны проходить на каждом шаге
- Research done: Zustand выбран в
archive/2026-04-23-bcg-planning-docs/BCG_plan.mdL50 (vs Redux/Jotai) — лёгкий API, минимум boilerplate, совместим с текущими React 19 хуками. Альтернативы не искали повторно. - CX-таски лежат в
docs/plans/codex-tasks/bcg-p1-*.md