refactor(expense): backend derives source_wallet from operation_code #69

Open
opened 2026-06-03 16:17:52 +00:00 by claude · 0 comments
Owner

Сейчас фронт строит mapping operation_code -> source_wallet_code локально (см. SOURCE_WALLET_BY_OPERATION в components/desktop/extensions/capital/features/ProgramExpense/CreateProgramExpense/model/index.ts). Техдолг: знание о топологии кошельков должно быть на бэке.

Acceptance:

  • В controller (extension expense или capital) появляется map operation_code -> source_wallet_code (через process-registry или явный config).
  • generateExpenseProposalStatementDocument принимает operation_code и НЕ принимает source_wallet — резолверит сам.
  • capitalCreateProgramExpense / expenseCreateProposal тоже не принимают source_wallet от фронта.
  • Фронт удаляет SOURCE_WALLET_BY_OPERATION map (desktop/extensions/capital + desktop/extensions/expenses).

Зачем: добавление нового operation_code не должно требовать синхронной правки фронта. Single source of truth = backend.

Триггер: когда появится второй source_wallet (например w.cap.rid для RID-operation_code-ов) — задача становится блокером, иначе UI расходится с цепью.

Связано с PR feat/blagorost-on-chassis (откладывал follow-up).

Сейчас фронт строит mapping `operation_code -> source_wallet_code` локально (см. `SOURCE_WALLET_BY_OPERATION` в `components/desktop/extensions/capital/features/ProgramExpense/CreateProgramExpense/model/index.ts`). Техдолг: знание о топологии кошельков должно быть на бэке. **Acceptance:** - В controller (extension `expense` или `capital`) появляется map `operation_code -> source_wallet_code` (через process-registry или явный config). - `generateExpenseProposalStatementDocument` принимает `operation_code` и НЕ принимает `source_wallet` — резолверит сам. - `capitalCreateProgramExpense` / `expenseCreateProposal` тоже не принимают `source_wallet` от фронта. - Фронт удаляет `SOURCE_WALLET_BY_OPERATION` map (desktop/extensions/capital + desktop/extensions/expenses). **Зачем:** добавление нового operation_code не должно требовать синхронной правки фронта. Single source of truth = backend. **Триггер:** когда появится второй source_wallet (например `w.cap.rid` для RID-operation_code-ов) — задача становится блокером, иначе UI расходится с цепью. Связано с PR feat/blagorost-on-chassis (откладывал follow-up).
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#69