refactor(expense): убрать оставшиеся as any через signed-doc adapter #70

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

В expenses + capital frontend остались 2 as any каста на финальной отправке:

  • statement: signed as any — DigitalDocument.sign возвращает IDocument<Cooperative.Registry.X.Meta>, mutation ждёт Zeus.ModelTypes['XSignedDocumentInput']. Generic-параметр T (cooptypes Meta) и Zeus-meta-shape расходятся номинально, хотя структура совпадает.
  • createExpenseProposal({...} as any) / createProgramExpense({...} as any) — следствие первого, плюс items[] shape.

Закрыто частично в PR feat/blagorost-on-chassis: 2 каста (generate input + result index) убраны через Mutations.X.Y.IInput['data'] + computed-name деструктуризацию.

Acceptance:

  • В components/desktop/src/shared/lib/document появляется адаптер: digitalDocumentToSignedInput<T>(signed: IDocument<T>): Zeus.ModelTypes['<X>SignedDocumentInput'] (или generic-helper, который читает registry_id и подбирает целевой type).
  • В useExpenseProposalActions.ts и useCreateProgramExpense все as any убраны, входы mutation'ов типизированы через Mutations.X.Y.IInput['data'].

Зачем: strict TS падёт на schema drift codegen-ом. Сейчас as any глотает drift тихо.

Связано с PR feat/blagorost-on-chassis (refactor R1 откладывал — нужен один общий adapter в shared/lib/document, не одиночные фиксы в каждой feature).

В expenses + capital frontend остались 2 `as any` каста на финальной отправке: - `statement: signed as any` — DigitalDocument.sign возвращает `IDocument<Cooperative.Registry.X.Meta>`, mutation ждёт `Zeus.ModelTypes['XSignedDocumentInput']`. Generic-параметр T (cooptypes Meta) и Zeus-meta-shape расходятся номинально, хотя структура совпадает. - `createExpenseProposal({...} as any)` / `createProgramExpense({...} as any)` — следствие первого, плюс `items[]` shape. Закрыто частично в PR feat/blagorost-on-chassis: 2 каста (generate input + result index) убраны через `Mutations.X.Y.IInput['data']` + computed-name деструктуризацию. **Acceptance:** - В `components/desktop/src/shared/lib/document` появляется адаптер: `digitalDocumentToSignedInput<T>(signed: IDocument<T>): Zeus.ModelTypes['<X>SignedDocumentInput']` (или generic-helper, который читает registry_id и подбирает целевой type). - В `useExpenseProposalActions.ts` и `useCreateProgramExpense` все `as any` убраны, входы mutation'ов типизированы через `Mutations.X.Y.IInput['data']`. **Зачем:** strict TS падёт на schema drift codegen-ом. Сейчас `as any` глотает drift тихо. Связано с PR feat/blagorost-on-chassis (refactor R1 откладывал — нужен один общий adapter в shared/lib/document, не одиночные фиксы в каждой feature).
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#70