# Frontend backlog синхронизации `qadam-web` с backend

## Паспорт документа

- Статус документа: living document
- Актуально на: 30 марта 2026 года
- Владелец: backend/platform-команда, совместно с frontend-командой
- Пересмотр: при изменении фронтового remediation backlog, contract drift или статуса `CP-103`
- Область применения: рабочий backlog для frontend-команды по доведению `qadam-web` до текущего backend-контракта и чистого quality gate
- Связанные документы:
  - [Change Log для frontend-команды](./frontend-change-log.md)
  - [Памятка для frontend-команды](./frontend-handoff.md)
  - [Execution checkpoints](../project/execution-checkpoints.md)

## Цель документа

Этот документ не дублирует backend handoff-пакеты. Его задача другая: разложить текущую красноту `qadam-web` на понятные фронтовые remediation-пакеты, чтобы frontend-команда видела не абстрактное `CP-103 in progress`, а конкретный список проблем, их приоритет и ожидаемый результат.

## Как читать этот backlog

- `FE-BE-*` в [frontend-change-log.md](./frontend-change-log.md) отвечает на вопрос, что backend уже подготовил для frontend.
- Этот документ отвечает на вопрос, почему `qadam-web` всё ещё красный и что именно надо починить на стороне frontend.
- Приоритет `P0` означает blocker для нормальной синхронизации с backend-контрактом.
- Приоритет `P1` означает внутренний type/tooling drift, который мешает сделать quality gate предсказуемым.
- Приоритет `P2` означает неблокирующий cleanup и warnings.

## Текущий remediation backlog

## FE-WEB-2026-03-30-01 — Registration и profile contract drift

- Статус: `planned`
- Приоритет: `P0`
- Тип: `backend_contract`
- Scope: перевести registration, buyer profile и seller profile на текущий buyer/seller/account contract из `qadam-core`

### Что сломано сейчас

- `src/features/auth/ui/RegisterForm.tsx` всё ещё собирает legacy payload вида `{ type, profile }`
- `src/views/me/profile/ui/MeProfilePage.tsx` всё ещё пишет `name`, хотя backend уже ушёл на account-centric `firstName/lastName`
- `src/views/seller-dashboard/profile/ui/SellerProfilePage.tsx` всё ещё читает и пишет legacy `name/description` seller-модель

### Что нужно сделать

- перевести registration flow на `check-availability`, `register/buyer` и `register/seller`
- убрать legacy `profile` envelope из frontend transport layer
- buyer profile screen перевести на канонический write-contract account profile
- seller profile screen перевести на текущий response/write-contract из OpenAPI вместо старой `name/description` модели

### Acceptance

- в `qadam-web` больше нет опоры на legacy `AuthController_register`
- buyer profile и seller profile используют текущий OpenAPI contract
- `pnpm check-types` не падает на `RegisterForm.tsx`, `MeProfilePage.tsx` и `SellerProfilePage.tsx`

### Связанные backend-пакеты

- `FE-BE-2026-03-28-02`
- `FE-BE-2026-03-28-03`
- `FE-BE-2026-03-28-04`

## FE-WEB-2026-03-30-02 — Manual response aliases и response-shape drift

- Статус: `planned`
- Приоритет: `P0`
- Тип: `backend_contract`
- Scope: убрать устаревшие ручные response aliases и привести seller/admin/leads slices к фактическому OpenAPI response shape

### Что сломано сейчас

- `src/shared/api/api-types.ts` всё ещё ждёт `.items` там, где backend уже публикует массив напрямую
- ручные aliases скрывают реальный response shape seller/admin/leads срезов
- product web частично сидит на устаревшей ручной response-обвязке, хотя backend response coverage уже закрыт

### Что нужно сделать

- перегенерировать `openapi/openapi.json` и локальный frontend contract layer
- вычистить устаревшие `.items` assumptions из `src/shared/api/api-types.ts`
- снять ручные response wrappers там, где current OpenAPI уже описывает массивы и объекты точно
- довести seller/admin/leads/current-user aliases до текущего backend response shape

### Acceptance

- seller/admin/leads slices больше не используют ложные `.items` wrappers
- generated response layer используется как primary source-of-truth
- `pnpm check-types` больше не падает на `src/shared/api/api-types.ts`

### Связанные backend-пакеты

- `FE-BE-2026-03-30-01`
- `FE-BE-2026-03-30-02`
- `FE-BE-2026-03-30-03`

## FE-WEB-2026-03-30-03 — Tooling и type hygiene drift

- Статус: `planned`
- Приоритет: `P1`
- Тип: `tooling_quality`
- Scope: снять внутренний type/tooling drift, который не относится напрямую к backend runtime, но держит root quality gate в красном состоянии

### Что сломано сейчас

- `commitlint.config.ts` падает из-за type import на `@commitlint/types`
- `src/shared/store/__tests__/catalog-filter.types.test.ts` использует устаревшие enum literals, которые больше не совпадают с текущими типами
- root typecheck смешивает реальные contract issues и локальный frontend hygiene debt

### Что нужно сделать

- либо добавить недостающую типовую зависимость для commitlint, либо упростить конфиг без неё
- привести catalog filter tests к текущим enum values и типам
- убрать локальные type-only поломки, не связанные с backend handoff

### Acceptance

- root typecheck больше не падает на `commitlint.config.ts`
- catalog filter tests больше не конфликтуют с текущими enum values
- красный quality gate фронта отражает только реальные feature/contract проблемы, а не сломанный tooling baseline

## FE-WEB-2026-03-30-04 — Неблокирующие lint warnings и cleanup

- Статус: `planned`
- Приоритет: `P2`
- Тип: `frontend_internal`
- Scope: убрать накопившиеся warnings и локальный cleanup после закрытия contract drift

### Что сломано сейчас

- в `src/entities/item/ui/ItemCard.tsx` остаются `any`
- в `src/features/seller-item-form/ui/ItemForm.tsx` есть warning по `useEffect` dependencies
- в `src/proxy.ts` висит неиспользуемый `PUBLIC_PATHS`

### Что нужно сделать

- снять warning'и без расширения обходных suppressions
- не смешивать этот cleanup с `P0/P1` remediation-пакетами

### Acceptance

- root lint остаётся максимум с осознанными предупреждениями, а не с техническим шумом
- cleanup не ломает product routes и auth/proxy поведение
