feat: unify income payment cards and drop period comparisons (WealthLedger/main#33)
Backend verify / commits (pull_request) Successful in 36s
Backend verify / security (pull_request) Successful in 13s
Backend verify / verify (pull_request) Successful in 6m13s

- income analytics returns only the selected period; previous/yearAgo
  comparison payloads, dependency roles and sync planning removed
- income entries now carry saved instrument logos for payment cards
- tbank grpc diagnostics distinguish queue wait, channel state and
  response headers without logging secrets
This commit is contained in:
2026-10-13 17:45:36 +03:00
parent 90486d4237
commit 1d54e5bf3c
14 changed files with 230 additions and 274 deletions
+18 -2
View File
@@ -77,7 +77,7 @@ describe('OpenAPI contract (integration)', () => {
}
});
it('exposes required semantic income dependency roles', () => {
it('exposes only the selected income dependency role and no comparison data', () => {
const schemas = createOpenApiDocument(app).components?.schemas;
expect(schemas?.IncomeAnalyticsResourceDto).toMatchObject({
properties: {
@@ -100,9 +100,25 @@ describe('OpenAPI contract (integration)', () => {
expect(dependency.required).toContain('role');
expect(dependency).toMatchObject({
properties: {
role: { type: 'string', enum: ['selected', 'previous', 'year'] },
role: { type: 'string', enum: ['selected'] },
},
});
const analytics = schemas?.IncomeAnalyticsDto;
assert(analytics && !('$ref' in analytics));
expect(analytics.required).toEqual(
expect.arrayContaining([
'accountId',
'period',
'totalsByCurrency',
'calculatedAt',
'bucketGranularity',
'buckets',
'instruments',
'entries',
]),
);
expect(analytics.properties).not.toHaveProperty('previous');
expect(analytics.properties).not.toHaveProperty('yearComparison');
});
it('generates the runtime contract without server startup or deployment configuration', async () => {