fix(api): Decimal-параметр ребалансировки ломал генерацию Dart-клиента
cash_available был bare Decimal | None в Query(...) — pydantic отдаёт для Decimal anyOf[number, pattern-string], который openapi-generator не умеет свернуть в один тип и вместо этого синтезирует пустой класс CashAvailable без полей (синтаксически битый .dart, компиляция всего пакета падает). Остальные Decimal-поля в API давно оборачиваются в Money/MoneyOpt (api/schemas/common.py) ровно за счёт этого — anyOf[string, null] генератор понимает. cash_available обошёл соглашение, потому что это единственный Decimal-параметр запроса во всём API, а не тело ответа.
This commit is contained in:
@@ -21,6 +21,7 @@ from sqlalchemy import delete, select
|
||||
from fintracker.analytics.rebalance import DEFAULT_DIMENSION, compute_rebalance
|
||||
from fintracker.api.deps import CurrentUser, SessionDep
|
||||
from fintracker.api.errors import Problem
|
||||
from fintracker.api.schemas.common import MoneyOpt
|
||||
from fintracker.api.schemas.rebalance import (
|
||||
RebalanceBucketOut,
|
||||
RebalanceOut,
|
||||
@@ -180,7 +181,7 @@ async def get_rebalance(
|
||||
_: CurrentUser,
|
||||
dimension: DimensionParam = DEFAULT_DIMENSION.value,
|
||||
cash_available: Annotated[
|
||||
Decimal | None, Query(description="переопределяет остаток на счетах для what-if")
|
||||
MoneyOpt, Query(description="переопределяет остаток на счетах для what-if")
|
||||
] = None,
|
||||
) -> RebalanceOut:
|
||||
await _portfolio(session, portfolio_id)
|
||||
|
||||
Reference in New Issue
Block a user