fix: scope income and ledger sync to requested intervals (WealthLedger/backend#57)
Backend verify / commits (pull_request) Successful in 28s
Backend verify / security (pull_request) Successful in 9s
Backend verify / verify (pull_request) Successful in 4m48s

This commit is contained in:
2026-10-28 21:10:57 +03:00
parent e350146749
commit 036864b69e
7 changed files with 114 additions and 525 deletions
@@ -6,13 +6,11 @@ import { MILLISECONDS_PER_SECOND } from '../../../../common/time';
import { isTbankErrorCode, TbankErrorCode } from '../../../../integrations/tbank/tbank-error-code';
import { TbankOperationState } from '../../../../integrations/tbank/tbank-protocol';
import { TbankAccessService, TbankClient } from '../../../../integrations/tbank/tbank.api';
import { accountHistory } from '../../investment-sync-plan';
import {
type OperationInterval,
operationIntervals,
operationsSyncPriority,
planOperationRead,
uncoveredOperationIntervals,
} from '../domain/operations-sync-plan';
import {
BrokerageOperationsRepository,
@@ -48,7 +46,6 @@ export class BrokerageOperationsSyncService {
intervals: OperationInterval[],
options: {
force?: boolean;
history?: boolean;
movingEnd?: boolean;
observe?: boolean;
revision?: string;
@@ -99,30 +96,6 @@ export class BrokerageOperationsSyncService {
connection.revision,
)
: null;
if (!options.observe && !options.force && options.history) {
const accountIds = new Set(
intervals.map((interval) => interval.accountId),
);
const history = accountHistory(
connection.accounts.filter((account) =>
accountIds.has(account.accountId),
),
now,
);
const missing = planOperationRead(history, coverage, now, {
movingEnd: true,
}).load;
const remaining = uncoveredOperationIntervals(missing, targets);
if (remaining.length) {
await this.request(
userId,
remaining,
false,
'history',
connection.revision,
);
}
}
return { plan, handle };
}