fix: scope income and ledger sync to requested intervals (WealthLedger/backend#57) #147

Merged
codex-bot merged 1 commits from fix/57-income-ledger-sync-scope into develop 2026-10-28 21:29:53 +03:00
Owner

Summary

Income и Ledger больше не запускают membership и загрузку lifetime history аккаунта. Импортируются только недостающие интервалы внутри запрошенного периода. Неполная история по-прежнему отдаётся как incomplete, а не как нулевой Income.

Linked Issue

Refs WealthLedger/backend#57

Changes

  • brokerage-operations.service.ts: Ledger строит интервалы прямо из вычисленного range (round-trip через screen planner убран) и фильтрует from >= to → 200 с пустым списком без RPC. Income не вызывает membership; повторная проверка revision удалена (fence остаётся в readPlan({ revision })).
  • brokerage-operations-sync.service.ts: удалены опция history и ветка lifetime scheduling (больше нет вызовов).
  • investment-sync-plan.ts: удалён неиспользуемый planInvestmentScreen; accountHistory и ledgerRange сохранены.
  • HTTP/OpenAPI и схема БД не меняются. Coverage/staging/cursor/auth fences и hourly не тронуты.

Verification

  • RED до правки: cold Ledger делал 82 RPC вместо загрузки только target; cold Income делал лишние RPC.
  • Мутанты (откачены): без фильтра from < to → 500; Income отдаёт полный ноль при неполной истории → тест падает; восстановленный membership при устаревшем membershipAt → тест падает.
  • npm run verify (95 suites / 662 tests), npm run test:e2e (21 suite), npm run test:openapi-contract (4/4) — зелёные.
  • Независимый review: найденная регрессия (500 при from >= to) и мёртвый код исправлены.

Breaking Changes (если есть)

Контракт не меняется. Но после изменения meta.coverage.historyState у большинства аккаунтов останется partial, потому что lifetime history больше не догружается. Frontend трактует partial как «История догружается» — исправляется в WealthLedger/frontend#124. Выкатывать вместе с frontend#124 или после него.

## Summary Income и Ledger больше не запускают membership и загрузку lifetime history аккаунта. Импортируются только недостающие интервалы внутри запрошенного периода. Неполная история по-прежнему отдаётся как `incomplete`, а не как нулевой Income. ## Linked Issue Refs WealthLedger/backend#57 ## Changes - `brokerage-operations.service.ts`: Ledger строит интервалы прямо из вычисленного range (round-trip через screen planner убран) и фильтрует `from >= to` → 200 с пустым списком без RPC. Income не вызывает membership; повторная проверка revision удалена (fence остаётся в `readPlan({ revision })`). - `brokerage-operations-sync.service.ts`: удалены опция `history` и ветка lifetime scheduling (больше нет вызовов). - `investment-sync-plan.ts`: удалён неиспользуемый `planInvestmentScreen`; `accountHistory` и `ledgerRange` сохранены. - HTTP/OpenAPI и схема БД не меняются. Coverage/staging/cursor/auth fences и hourly не тронуты. ## Verification - RED до правки: cold Ledger делал 82 RPC вместо загрузки только target; cold Income делал лишние RPC. - Мутанты (откачены): без фильтра `from < to` → 500; Income отдаёт полный ноль при неполной истории → тест падает; восстановленный membership при устаревшем `membershipAt` → тест падает. - `npm run verify` (95 suites / 662 tests), `npm run test:e2e` (21 suite), `npm run test:openapi-contract` (4/4) — зелёные. - Независимый review: найденная регрессия (500 при `from >= to`) и мёртвый код исправлены. ## Breaking Changes (если есть) Контракт не меняется. Но после изменения `meta.coverage.historyState` у большинства аккаунтов останется `partial`, потому что lifetime history больше не догружается. Frontend трактует `partial` как «История догружается» — исправляется в WealthLedger/frontend#124. **Выкатывать вместе с frontend#124 или после него.**
ksv741 force-pushed fix/57-income-ledger-sync-scope from 439a29c6d8 to af92ac980e 2026-10-28 20:55:40 +03:00 Compare
ksv741 added 1 commit 2026-10-28 21:11:00 +03:00
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
036864b69e
ksv741 force-pushed fix/57-income-ledger-sync-scope from af92ac980e to 036864b69e 2026-10-28 21:11:00 +03:00 Compare
codex-bot scheduled this pull request to auto merge when all checks succeed 2026-10-28 21:16:04 +03:00
codex-bot merged commit 5e84e1e5f1 into develop 2026-10-28 21:29:53 +03:00
codex-bot deleted branch fix/57-income-ledger-sync-scope 2026-10-28 21:29:54 +03:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#147