refactor!: support RUB only (WealthLedger/main#55)
Frontend verify / commits (pull_request) Successful in 35s
Frontend verify / security (pull_request) Successful in 10s
Frontend verify / verify (pull_request) Successful in 7m20s

Adopt RUB-only API contract; remove currency cards, selectors,
screener currency filter and multi-currency branches.

BREAKING CHANGE: requires the RUB-only backend contract.
This commit is contained in:
2026-11-11 08:22:44 +03:00
parent e2062ce837
commit b40066838c
55 changed files with 540 additions and 1153 deletions
+42 -99
View File
@@ -5871,33 +5871,6 @@
"sharePercent"
]
},
"PortfolioStructureCurrencyDto": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"totalValue": {
"type": "string"
},
"hasNegativeValues": {
"type": "boolean",
"description": "Any negative constituent, even if netted positive."
},
"categories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PortfolioStructureCategoryDto"
}
}
},
"required": [
"currency",
"totalValue",
"hasNegativeValues",
"categories"
]
},
"PortfolioUnvaluedCategoryDto": {
"type": "object",
"properties": {
@@ -5922,14 +5895,22 @@
"PortfolioStructureDto": {
"type": "object",
"properties": {
"currencies": {
"totalValue": {
"type": "string",
"description": "Exact known total as a decimal string."
},
"hasNegativeValues": {
"type": "boolean",
"description": "Any negative constituent, even if netted positive."
},
"categories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PortfolioStructureCurrencyDto"
"$ref": "#/components/schemas/PortfolioStructureCategoryDto"
}
},
"unvaluedCategories": {
"description": "Positions without current value and known valuation currency. Shares are unavailable across all currencies when nonempty.",
"description": "Positions without current value. Shares are unavailable when nonempty.",
"type": "array",
"items": {
"$ref": "#/components/schemas/PortfolioUnvaluedCategoryDto"
@@ -5937,16 +5918,15 @@
}
},
"required": [
"currencies",
"totalValue",
"hasNegativeValues",
"categories",
"unvaluedCategories"
]
},
"UnrealizedReturnDto": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"absolute": {
"type": "string",
"example": "12.345678901"
@@ -5965,7 +5945,6 @@
}
},
"required": [
"currency",
"absolute",
"costBasis",
"percent",
@@ -5975,26 +5954,17 @@
"PortfolioSummaryDto": {
"type": "object",
"properties": {
"totalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
"totals": {
"$ref": "#/components/schemas/MoneyDto"
},
"cashBalances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
"cash": {
"$ref": "#/components/schemas/MoneyDto"
},
"structure": {
"$ref": "#/components/schemas/PortfolioStructureDto"
},
"unrealizedReturnByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UnrealizedReturnDto"
}
"unrealizedReturn": {
"$ref": "#/components/schemas/UnrealizedReturnDto"
},
"stockPositionCount": {
"type": "integer",
@@ -6018,10 +5988,10 @@
}
},
"required": [
"totalsByCurrency",
"cashBalances",
"totals",
"cash",
"structure",
"unrealizedReturnByCurrency",
"unrealizedReturn",
"stockPositionCount",
"bondPositionCount",
"fundPositionCount",
@@ -6537,11 +6507,8 @@
"isStale": {
"type": "boolean"
},
"totalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
"totals": {
"$ref": "#/components/schemas/MoneyDto"
},
"positions": {
"type": "array",
@@ -6549,11 +6516,8 @@
"$ref": "#/components/schemas/PortfolioPositionDto"
}
},
"cashBalances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
"cash": {
"$ref": "#/components/schemas/MoneyDto"
},
"structure": {
"$ref": "#/components/schemas/PortfolioStructureDto"
@@ -6562,9 +6526,9 @@
"required": [
"lastSuccessfulAt",
"isStale",
"totalsByCurrency",
"totals",
"positions",
"cashBalances",
"cash",
"structure"
]
},
@@ -6617,7 +6581,6 @@
"AMBIGUOUS_RETURN",
"HISTORY_START_UNKNOWN",
"INDEX_HISTORY_UNAVAILABLE",
"NON_RUB_ACTIVITY",
"NO_SOLUTION",
"OPERATIONS_HISTORY_INCOMPLETE",
"PORTFOLIO_VALUATION_INCOMPLETE",
@@ -7060,12 +7023,9 @@
"to"
]
},
"IncomeCurrencySummaryDto": {
"IncomeTotalDto": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"coupon": {
"$ref": "#/components/schemas/MoneyDto"
},
@@ -7077,7 +7037,6 @@
}
},
"required": [
"currency",
"coupon",
"dividend",
"total"
@@ -7092,11 +7051,8 @@
"period": {
"$ref": "#/components/schemas/IncomePeriodDto"
},
"totalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IncomeCurrencySummaryDto"
}
"total": {
"$ref": "#/components/schemas/IncomeTotalDto"
},
"calculatedAt": {
"type": "string",
@@ -7106,7 +7062,7 @@
"required": [
"accountId",
"period",
"totalsByCurrency",
"total",
"calculatedAt"
]
},
@@ -7137,16 +7093,13 @@
"period": {
"$ref": "#/components/schemas/IncomePeriodDto"
},
"totalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IncomeCurrencySummaryDto"
}
"total": {
"$ref": "#/components/schemas/IncomeTotalDto"
}
},
"required": [
"period",
"totalsByCurrency"
"total"
]
},
"IncomeInstrumentDto": {
@@ -7322,11 +7275,8 @@
"period": {
"$ref": "#/components/schemas/IncomePeriodDto"
},
"totalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IncomeCurrencySummaryDto"
}
"total": {
"$ref": "#/components/schemas/IncomeTotalDto"
},
"calculatedAt": {
"type": "string",
@@ -7362,7 +7312,7 @@
"required": [
"accountId",
"period",
"totalsByCurrency",
"total",
"calculatedAt",
"bucketGranularity",
"buckets",
@@ -7634,11 +7584,8 @@
"$ref": "#/components/schemas/UpcomingEventDto"
}
},
"incomeTotalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
"incomeTotal": {
"$ref": "#/components/schemas/MoneyDto"
}
},
"required": [
@@ -7646,7 +7593,7 @@
"calculatedAt",
"window",
"events",
"incomeTotalsByCurrency"
"incomeTotal"
]
},
"UpcomingEventsResourceDto": {
@@ -7895,10 +7842,6 @@
"type": "string",
"minLength": 1
},
"currency": {
"type": "string",
"minLength": 1
},
"realExchange": {
"type": "string",
"minLength": 1