# Frontend Debt Audit and Backlog Дата: 2026-06-23 Статус: выполнено ## Контекст Frontend уже прошёл крупные волны миграции: FSD-рефакторинг, дизайн-система, тестовая инфраструктура, tooling и часть архитектурных cleanup-задач. После этого в репозитории осталось два типа техдолга: 1. реальные открытые хвосты, которые ещё нужно довести до конца; 2. устаревшие или слишком широкие документы, которые описывают уже изменившееся состояние кода. Сейчас нужна отдельная SDD-фича, которая не внедряет поведение, а проводит аудит текущего frontend состояния и превращает его в приоритизированный backlog для следующих узких фич. ## Цель Зафиксировать актуальное состояние frontend-техдолга, отделить завершённые и устаревшие пункты от реально открытых, и сформировать приоритизированный backlog следующих фич с понятными границами. Этот аудит обслуживает отдельный epic `Frontend Debt Backlog` и должен приводить к разложению открытого долга на следующие независимые фичи: - `frontend-docs-sync` - `frontend-infrastructure-hardening` - `frontend-shared-boundary-cleanup` - `frontend-test-hygiene` ## Требования ### 1. Инвентаризация текущего состояния Нужно проверить актуальное состояние frontend по трём источникам: - `apps/frontend/src/` — код, экспорты, зависимости слоёв, test helpers, API surface; - `docs/features/` — существующие спецификации, планы и задачи по frontend; - `docs/inbox.md` и `docs/roadmap.md` — гипотезы и уже зафиксированные кандидатные работы. Аудит должен явно разделить находки на категории: - уже закрыто; - ещё открыто; - устарело и подлежит пересмотру; - требует отдельной новой фичи. ### 2. Приоритизация открытого долга Все открытые пункты должны быть сгруппированы в небольшие независимые фичи. Для каждой группы нужно зафиксировать: - цель; - почему это долг; - примерный риск/сложность; - рекомендуемый порядок реализации; - какие текущие документы это затрагивает. ### 3. Синхронизация проектной доки Результаты аудита должны быть отражены в проектных документах: - `docs/inbox.md` — как источник идей и низкосигнальных заметок; - `docs/roadmap.md` — как список следующих фич и кандидатов; - `docs/features/frontend-debt-audit/*` — как SDD-артефакты самой audit-фичи. Плюс результаты аудита должны служить входом для эпика `Frontend Debt Backlog`. ### 4. Никаких изменений поведения Эта фича не меняет runtime-поведение frontend, не трогает backend и не вводит продуктовые улучшения сверх формализации найденного долга. ## Ограничения - Только frontend-область и связанные с ней docs. - Не выполнять миграции кода в рамках этой фичи. - Не смешивать аудит с внедрением follow-up задач. - Не дублировать уже закрытые FSD/infra cleanup работы как новые задачи. ## Критерии приемки - Зафиксирован перечень проверенных областей frontend-аудита с доказательствами по каждой области. - Для каждого открытого debt-item есть приоритет и рекомендация по разбиению на следующую фичу. - В `docs/inbox.md` добавлена актуальная заметка о frontend debt backlog. - В `docs/roadmap.md` добавлен новый кандидат или уточнён существующий блок, отражающий audit-backlog. - `docs/features/frontend-debt-audit/plan.md` и `tasks.md` согласованы с результатом аудита. - Не изменены файлы `apps/frontend/src/**`. ## Результаты аудита ### Инвентаризация источников Проверено три источника согласно требованиям: 1. **`apps/frontend/src/`** — FSD-миграция завершена, слои clean (entities 10, features 2, widgets 18, pages 13, shared 4 категории, app 6 файлов). Найдено 0 `TODO`, 0 `FIXME`, 0 `@ts-ignore`, 0 `as any` в source-коде. 25 тестовых файлов проходят. Общий объём: 185 source-файлов + 13 mock-файлов. 2. **`docs/features/`** — существующие frontend specs/plans согласованы с epic `Frontend Debt Backlog`. 4 follow-up фичи созданы и имеют статус `completed`. 3. **`docs/inbox.md` и `docs/roadmap.md`** — `inbox.md` содержит 11 debt-пунктов (P0–P3) от 2026-06-19. `roadmap.md` содержит `frontend-debt-audit` как candidate и `table-migration` как следующий кандидат. ### Распределение находок **Закрыто:** - ✅ FSD-миграция — все 10+ фаз завершены - ✅ Дизайн-система — `@moex-vibe/design-system` с токенами, MUI theme, DataTable, Storybook - ✅ Миграция страниц на DS — broker sections, accounts, HomePage, SearchBar, Login/Register/Profile - ✅ Router migration — `react-router-dom` → `@tanstack/react-router` (code-first) - ✅ API type unification — `responses.ts` удалён, единый `types.ts` из codegen - ✅ Tooling — Biome, Vite, Husky + lint-staged - ✅ Env validation — Zod-схема в `shared/config/env.ts` - ✅ Browser mock mode — MSW v2 c `VITE_API_MOCK` - ✅ Test infra — Vitest + Testing Library + MSW, 25 test files **Открыто и покрыто follow-up фичами (созданы и выполнены):** - `frontend-docs-sync` — синхронизация inbox/roadmap - `frontend-infrastructure-hardening` — browser mock mode, env validation, tooling consistency - `frontend-shared-boundary-cleanup` — сужение shared/public API - `frontend-test-hygiene` — минимизация test helpers **Открыто и перенесено в canonical architecture backlog:** | # | Приоритет | Debt item | Риск | |---|-----------|-----------|------| | 1 | P0/P1 | T-Bank data isolation by user | multi-tenant data leak | | 2 | P1 | Local T-Bank history read-path | история читается напрямую из T-Bank | | 3 | P1/P2 | Session model for multiple surfaces | single-token, нет device-level сессий | | 4 | P2 | Reduce type unsafety (`as any`, `no-explicit-any`) | остаточная type unsafety в contract/runtime boundaries | | 5 | P2 | Expand testing strategy (coverage thresholds, E2E) | нет coverage gates, нет Playwright smoke | | 6 | P3 | Route-level lazy loading + performance budgets | eager delivery без явных budgets | Эти направления больше не должны жить как независимый frontend-only backlog. Их canonical форма и порядок ведутся в `docs/features/architecture-quality-backlog/spec.md` и `docs/roadmap.md`. **Устарело и подлежит пересмотру:** - P1 `API envelope double-wrapping` — **resolved**: закрыто фичей `api-envelope-contract` - P1 `Production config & auth security hardening` — первичный scope закрыт в `backend-architecture-refactor`; оставшийся policy/runtime backlog перенесён в `architecture-quality-backlog` - P2 «Eliminate dual frontend API type system» — **resolved**: codegen unification выполнена, `responses.ts` удалён - P2 «Decompose large modules» — частично выполнена через shared-boundary-cleanup, backend-декомпозиция вне scope audit-фичи - P3 «Prepare financial types for future ledger» — перенесена в deferred, не актуальна без инициативы ledger