После фиксов списков счетов, операций и портфеля AccountPage падает в toRecentEvents на events.data?.events.slice: backend возвращает {data,meta}, а frontend использует устаревшие плоские типы и fixtures. Та же страница запрашивает income-summary; проверить его контракт вместе с events. Acceptance criteria: запросы страницы счёта читают опубликованный response shape, data:null не маскируется пустыми событиями/доходами; для списка событий и всех потребителей query используются корректные данные, регрессионные сценарии ловят прежний crash; generated types получены из предоставленного backend OpenAPI snapshot, frontend verify зелёный. Preserve existing uncommitted work.
После фиксов списков счетов, операций и портфеля AccountPage падает в toRecentEvents на events.data?.events.slice: backend возвращает {data,meta}, а frontend использует устаревшие плоские типы и fixtures. Та же страница запрашивает income-summary; проверить его контракт вместе с events. Acceptance criteria: запросы страницы счёта читают опубликованный response shape, data:null не маскируется пустыми событиями/доходами; для списка событий и всех потребителей query используются корректные данные, регрессионные сценарии ловят прежний crash; generated types получены из предоставленного backend OpenAPI snapshot, frontend verify зелёный. Preserve existing uncommitted work.
Поведенческая часть уже на develop, недостающие регрессионные тесты добавлены: PR #79.
Запросы событий и дохода читают опубликованный response shape: useBrokerageEvents, useIncomeSummary, useIncomeAnalytics идут через useResourceQuery (проекция data/meta, src/shared/api/resource-query.ts:130), типы — из snapshot; openapi:check зелёный, generated types не правились вручную.
data:null не маскируется пустыми событиями/доходами: AccountEventsPage.vm:34 и AccountIncomePage.vm:29 возвращают loading/error до разыменования, toRecentEvents/toIncomeSummary (src/pages/account/model/previews.ts) — loading, а не empty.
Фикстуры событий/дохода уже в {data, meta} (src/test/handlers.ts).
В PR #79: три теста — AccountPage (events + income-summary resource(null) → превью в загрузке, прежний краш events.data?.events.slice не воспроизводится), AccountEventsPage (data:null → загрузка, не пустой период), AccountIncomePage (resource(null) → загрузка, не пустой отчёт).
Mutation-проверка: отказ проекции data валит 25 тестов, включая новые. Проверки: typecheck, eslint, 429 тестов — зелёные.
Поведенческая часть уже на `develop`, недостающие регрессионные тесты добавлены: PR #79.
- Запросы событий и дохода читают опубликованный response shape: `useBrokerageEvents`, `useIncomeSummary`, `useIncomeAnalytics` идут через `useResourceQuery` (проекция `data`/`meta`, src/shared/api/resource-query.ts:130), типы — из snapshot; `openapi:check` зелёный, generated types не правились вручную.
- `data:null` не маскируется пустыми событиями/доходами: `AccountEventsPage.vm:34` и `AccountIncomePage.vm:29` возвращают loading/error до разыменования, `toRecentEvents`/`toIncomeSummary` (src/pages/account/model/previews.ts) — loading, а не empty.
- Фикстуры событий/дохода уже в `{data, meta}` (`src/test/handlers.ts`).
- В PR #79: три теста — AccountPage (events + income-summary `resource(null)` → превью в загрузке, прежний краш `events.data?.events.slice` не воспроизводится), AccountEventsPage (`data:null` → загрузка, не пустой период), AccountIncomePage (`resource(null)` → загрузка, не пустой отчёт).
Mutation-проверка: отказ проекции `data` валит 25 тестов, включая новые. Проверки: `typecheck`, `eslint`, 429 тестов — зелёные.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
После фиксов списков счетов, операций и портфеля AccountPage падает в toRecentEvents на events.data?.events.slice: backend возвращает {data,meta}, а frontend использует устаревшие плоские типы и fixtures. Та же страница запрашивает income-summary; проверить его контракт вместе с events. Acceptance criteria: запросы страницы счёта читают опубликованный response shape, data:null не маскируется пустыми событиями/доходами; для списка событий и всех потребителей query используются корректные данные, регрессионные сценарии ловят прежний crash; generated types получены из предоставленного backend OpenAPI snapshot, frontend verify зелёный. Preserve existing uncommitted work.
Поведенческая часть уже на
develop, недостающие регрессионные тесты добавлены: PR #79.useBrokerageEvents,useIncomeSummary,useIncomeAnalyticsидут черезuseResourceQuery(проекцияdata/meta, src/shared/api/resource-query.ts:130), типы — из snapshot;openapi:checkзелёный, generated types не правились вручную.data:nullне маскируется пустыми событиями/доходами:AccountEventsPage.vm:34иAccountIncomePage.vm:29возвращают loading/error до разыменования,toRecentEvents/toIncomeSummary(src/pages/account/model/previews.ts) — loading, а не empty.{data, meta}(src/test/handlers.ts).resource(null)→ превью в загрузке, прежний крашevents.data?.events.sliceне воспроизводится), AccountEventsPage (data:null→ загрузка, не пустой период), AccountIncomePage (resource(null)→ загрузка, не пустой отчёт).Mutation-проверка: отказ проекции
dataвалит 25 тестов, включая новые. Проверки:typecheck,eslint, 429 тестов — зелёные.