fix: читать портфель из resource envelope без падения страницы счёта #71

Closed
opened 2026-10-13 14:16:28 +03:00 by codex-bot · 1 comment
Owner

После подключения и исправления списков/операций AccountPage падает при обращении к portfolio.data.positions.length: backend GET /api/v1/brokerage-accounts/{accountId}/portfolio отвечает {data: PortfolioDto|null, meta}, frontend ожидает плоский PortfolioDto.

Acceptance criteria: query portfolio читает backend-публикованный контракт; страница отображает подтверждённые позиции и суммы, data:null не выдаётся за пустой подтверждённый портфель; сохранены состояния refresh/error и cache; тесты используют реалистичные {data,meta}, соответствующие проверки проходят. Изменять только frontend; сохранить чужую незавершённую работу.

После подключения и исправления списков/операций AccountPage падает при обращении к portfolio.data.positions.length: backend GET /api/v1/brokerage-accounts/{accountId}/portfolio отвечает {data: PortfolioDto|null, meta}, frontend ожидает плоский PortfolioDto. Acceptance criteria: query portfolio читает backend-публикованный контракт; страница отображает подтверждённые позиции и суммы, data:null не выдаётся за пустой подтверждённый портфель; сохранены состояния refresh/error и cache; тесты используют реалистичные {data,meta}, соответствующие проверки проходят. Изменять только frontend; сохранить чужую незавершённую работу.
Author
Owner

Поведенческая часть уже на develop, добавлен недостающий регрессионный тест: PR #78.

  • Query portfolio читает backend-опубликованный контракт: useResourceQuery проецирует data/meta (src/shared/api/resource-query.ts:130); живой OpenAPI (GET /api/docs-json) совпадает со snapshot, openapi:check зелёный.
  • data:null не выдаётся за пустой подтверждённый портфель: AccountPage.vm:40 возвращает loading/error, portfolio.data.positions.length достижимо только после проверки.
  • refresh/error/cache состояния сохранены; тесты используют реалистичные {data, meta} из src/test/resource.ts.
  • В PR #78 добавлен тест: resource(null) по portfolio → загрузка, «Портфель пока пуст» не показывается, кэш остаётся {data:null}.

Контекст: issue заведён от stale-чекаута (дерево на ветке от 15.09, там envelope не проецировался).

Поведенческая часть уже на `develop`, добавлен недостающий регрессионный тест: PR #78. - Query portfolio читает backend-опубликованный контракт: `useResourceQuery` проецирует `data`/`meta` (src/shared/api/resource-query.ts:130); живой OpenAPI (`GET /api/docs-json`) совпадает со snapshot, `openapi:check` зелёный. - `data:null` не выдаётся за пустой подтверждённый портфель: `AccountPage.vm:40` возвращает loading/error, `portfolio.data.positions.length` достижимо только после проверки. - refresh/error/cache состояния сохранены; тесты используют реалистичные `{data, meta}` из `src/test/resource.ts`. - В PR #78 добавлен тест: `resource(null)` по portfolio → загрузка, «Портфель пока пуст» не показывается, кэш остаётся `{data:null}`. Контекст: issue заведён от stale-чекаута (дерево на ветке от 15.09, там envelope не проецировался).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/frontend#71