codex/frontend-debt-audit #40

Merged
ksv741 merged 10 commits from codex/frontend-debt-audit into main 2026-06-24 09:10:42 +03:00
5 changed files with 119 additions and 18 deletions
Showing only changes of commit 0c4250fa6c - Show all commits

View File

@ -10,7 +10,7 @@
4. `frontend-test-hygiene` — в конце нормализуем test helpers и conventions на уже стабилизированной базе.
Features:
- [ ] [frontend-debt-audit](../features/frontend-debt-audit/spec.md) — аудит frontend-техдолга и приоритизация backlog
- [x] [frontend-debt-audit](../features/frontend-debt-audit/spec.md) — аудит frontend-техдолга и приоритизация backlog
- [x] [frontend-docs-sync](../features/frontend-docs-sync/spec.md) — синхронизация inbox/roadmap и устаревшей frontend-документации
- [x] [frontend-infrastructure-hardening](../features/frontend-infrastructure-hardening/spec.md) — завершение infrastructure/tooling debt
- [x] [frontend-shared-boundary-cleanup](../features/frontend-shared-boundary-cleanup/spec.md) — сужение shared/public API и границ слоёв

View File

@ -1,7 +1,7 @@
# Frontend Debt Audit and Backlog
Дата: 2026-06-23
Статус: спецификация
Статус: выполнено
## Контекст
@ -86,3 +86,55 @@ tooling и часть архитектурных cleanup-задач. После
- В `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-пунктов (P0P3) от 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
**Открыто, не покрыто ни одной фичей (нуждается в новых задачах):**
| # | Приоритет | Debt item | Риск |
|---|-----------|-----------|------|
| 1 | P0/P1 | T-Bank data isolation by user | multi-tenant data leak |
| 2 | P1 | API envelope double-wrapping | runtime-ответы не соответствуют Swagger |
| 3 | P1 | Production config & auth security hardening | дефолтные секреты, CORS, error leaking |
| 4 | P1 | Local T-Bank history read-path | история читается напрямую из T-Bank |
| 5 | P1/P2 | Session model for multiple surfaces | single-token, нет device-level сессий |
| 6 | P2 | Reduce type unsafety (`as any`, `no-explicit-any`) | 95+ в коде, в основном gRPC/T-Bank/screener |
| 7 | P2 | Expand testing strategy (coverage thresholds, E2E) | нет coverage gates, нет Playwright |
| 8 | P3 | Route-level lazy loading + performance budgets | 471 KB JS bundle eager, нет budgets |
**Устарело и подлежит пересмотру:**
- 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

View File

@ -1,28 +1,55 @@
# Frontend Debt Audit and Backlog — tasks
Статус: pending
Статус: completed
## 1. Снять актуальное состояние frontend-долга
- [ ] Проверить `docs/inbox.md`, `docs/roadmap.md` и существующие frontend specs/plans на предмет устаревших или пересекающихся пунктов
- [ ] Пройтись по `apps/frontend/src/` и подтвердить, что legacy FSD-cleanup хвостов больше нет
- [ ] Зафиксировать список реально открытых debt-сигналов и отметить, какие из них уже покрыты существующими фичами
- [x] Проверить `docs/inbox.md`, `docs/roadmap.md` и существующие frontend specs/plans на предмет устаревших или пересекающихся пунктов
- [x] Пройтись по `apps/frontend/src/` и подтвердить, что legacy FSD-cleanup хвостов больше нет
- [x] Зафиксировать список реально открытых debt-сигналов и отметить, какие из них уже покрыты существующими фичами
### Результат:
- **src/**: 0 TODO, 0 FIXME, 0 @ts-ignore, 0 as any в source-коде. Чисто.
- **inbox.md**: 11 debt-пунктов (P0P3), из них:
- 1 resolved (P2 dual API types)
- 7 не покрыто follow-up фичами (T-Bank isolation, API envelope, security, local read-path, session model, type unsafety, testing coverage, lazy loading)
- **roadmap.md**: sync выполнен, `frontend-debt-audit` — candidate
- **4 follow-up фичи**: созданы и выполнены (docs-sync, infra-hardening, shared-boundary-cleanup, test-hygiene)
## 2. Сформировать backlog follow-up фич
- [ ] Сгруппировать открытые пункты в независимые follow-up фичи
- [ ] Назначить приоритеты `P0/P1/P2` для каждой группы
- [ ] Отметить зависимости и порядок выполнения между группами
- [ ] Подтвердить, что follow-up фичи оформлены как части epic `Frontend Debt Backlog`
- [x] Сгруппировать открытые пункты в независимые follow-up фичи
- [x] Назначить приоритеты `P0/P1/P2` для каждой группы
- [x] Отметить зависимости и порядок выполнения между группами
- [x] Подтвердить, что follow-up фичи оформлены как части epic `Frontend Debt Backlog`
### Созданные follow-up фичи (статус completed):
1. `frontend-docs-sync` — синхронизация документации
2. `frontend-infrastructure-hardening` — browser mock mode, env validation, tooling
3. `frontend-shared-boundary-cleanup` — сужение shared/public API
4. `frontend-test-hygiene` — нормализация test infra
### Нуждаются в новых фичах (не созданы):
1. (P0/P1) T-Bank data isolation by user
2. (P1) API envelope runtime contract
3. (P1) Auth security hardening
4. (P1) Local T-Bank read-path
5. (P1/P2) Session model for multiple surfaces
6. (P2) Type safety hardening
7. (P2) Testing strategy expansion
8. (P3) Frontend delivery optimization
## 3. Синхронизировать проектную документацию
- [ ] Обновить `docs/inbox.md` новыми заметками по frontend maintenance backlog
- [ ] Обновить `docs/roadmap.md` новым candidate-элементом или уточнением существующего
- [ ] Проверить, что формулировки не обещают внедрение кода внутри audit-фичи
- [x] Обновить `docs/inbox.md` новыми заметками по frontend maintenance backlog
- [x] Обновить `docs/roadmap.md` новым candidate-элементом или уточнением существующего
- [x] Проверить, что формулировки не обещают внедрение кода внутри audit-фичи
## 4. Финальная проверка
- [ ] Убедиться, что в рамках этой фичи не изменялись файлы `apps/frontend/src/**`
- [ ] Проверить `git diff --name-only` и убедиться, что изменены только `docs/`-файлы
- [ ] Проверить, что спецификация, план и задачи не противоречат друг другу
- [x] Убедиться, что в рамках этой фичи не изменялись файлы `apps/frontend/src/**`
- [x] Проверить `git diff --name-only` и убедиться, что изменены только `docs/`-файлы
- [x] Проверить, что спецификация, план и задачи не противоречат друг другу

View File

@ -354,6 +354,11 @@ cash flow, бюджеты, аналитика, прогнозы и автома
технический эпик с границами итерации, acceptance criteria, plan и tasks. Не объединять все пункты в
один большой рефакторинг без декомпозиции.
> **Обновление 2026-06-24:** Проведён audit `frontend-debt-audit`. Созданы и выполнены 4 follow-up
> фичи: `frontend-docs-sync`, `frontend-infrastructure-hardening`, `frontend-shared-boundary-cleanup`,
> `frontend-test-hygiene`. Пункт P2 «Двойная система API-типов» — resolved (codegen unification).
> Остальные пункты ниже остаются открытыми и нуждаются в отдельных фичах.
Текущее состояние quality gates хорошее: на момент аудита проходят lint, format-check, backend build,
frontend build, 94 backend-теста и 168 frontend-тестов.
@ -408,6 +413,7 @@ frontend build, 94 backend-теста и 168 frontend-тестов.
### P2: устранить двойную систему frontend API-типов
- [x] **RESOLVED** — codegen unification выполнена, `responses.ts` удалён, единый `types.ts` из OpenAPI.
- `src/api/types.ts` генерируется из OpenAPI, но frontend в основном использует вручную поддерживаемый
`src/api/responses.ts`.
- Выбрать source of truth и миграционный путь к generated contract types, сохранив вручную только

View File

@ -80,13 +80,29 @@ Roadmap отражает порядок продуктовой работы, н
- [x] [Pilot-миграция](features/pilot-migration/spec.md) — HomePage + SearchBar на DS.
- [x] [Security screener](features/security-screener/spec.md) — Phase 1: фильтры, таблица, backend.
- [x] [MVP](features/moex-vibe/spec.md) — поиск, карточки акций/облигаций, графики, дивиденды.
- [x] [Frontend debt audit and backlog](features/frontend-debt-audit/spec.md) — audit frontend-техдолга,
разделение open items на 4 follow-up фичи, синхронизация inbox/roadmap
- [x] [frontend-docs-sync](features/frontend-docs-sync/spec.md) — синхронизация docs с состоянием кода
- [x] [frontend-infrastructure-hardening](features/frontend-infrastructure-hardening/spec.md) —
browser mock mode, env validation, tooling consistency, contract freshness
- [x] [frontend-shared-boundary-cleanup](features/frontend-shared-boundary-cleanup/spec.md) —
сужение shared/public API, устранение boundary ambiguity
- [x] [frontend-test-hygiene](features/frontend-test-hygiene/spec.md) — минимизация test helpers,
нормализация conventions
## Кандидаты следующих фич
- [ ] [Frontend debt audit and backlog](features/frontend-debt-audit/spec.md) — audit текущего
frontend-техдолга, разделение open items на follow-up фичи, синхронизация inbox/roadmap.
- [ ] [Миграция таблиц на дизайн-систему](features/table-migration/spec.md) — перевести legacy-таблицы
на `DataTable` поверх `TanStack Table`.
- [ ] T-Bank data isolation and multi-tenancy (P0/P1) — изолировать данные T-Bank по пользователям,
ownership модель
- [ ] API envelope runtime contract (P1) — устранить double-wrapping, унифицировать envelope
- [ ] Auth security hardening (P1) — production-секреты, CORS allowlist, error masking, rate limiting
- [ ] Local T-Bank read-path (P1) — чтение истории операций из локальной БД вместо прямого вызова T-Bank
- [ ] Session model for multiple surfaces (P1/P2) — device-level сессии, rotation, reuse detection
- [ ] Type safety hardening (P2) — включение `no-explicit-any`, устранение `as any` в gRPC/screener/tests
- [ ] Testing strategy expansion (P2) — coverage thresholds, contract tests, Playwright smoke
- [ ] Frontend delivery optimization (P3) — route-level lazy loading, performance budgets
- [ ] Аналитика портфеля Phases 23 — дивидендный доход, сравнение с target allocation.
- [ ] Quality gate — завершить оставшиеся AC.
- [ ] Broker-events — UX доработки и смешанный календарь.