codex/frontend-debt-audit #40
@ -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 и границ слоёв
|
||||
|
||||
@ -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-пунктов (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
|
||||
|
||||
**Открыто, не покрыто ни одной фичей (нуждается в новых задачах):**
|
||||
|
||||
| # | Приоритет | 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
|
||||
|
||||
@ -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-пунктов (P0–P3), из них:
|
||||
- 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] Проверить, что спецификация, план и задачи не противоречат друг другу
|
||||
|
||||
@ -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, сохранив вручную только
|
||||
|
||||
@ -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 2–3 — дивидендный доход, сравнение с target allocation.
|
||||
- [ ] Quality gate — завершить оставшиеся AC.
|
||||
- [ ] Broker-events — UX доработки и смешанный календарь.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user