Banking : domaine event-sourced (@octant/banking) #31

Closed
opened 2026-07-04 12:11:13 +00:00 by momsse · 3 comments
Owner

Migré depuis viziertronic/octant#80 — ouvert le 2026-06-26 par @momsse.

Créer le domaine event-sourced Banking (@octant/banking, packages/domain/banking) sur le modèle de packages/domain/authentication.

Périmètre / livrables

  • Agrégats : AccountingPeriod, Bank, BankAccount, BankTransaction (*.aggregate.ts : evolve + decide).
  • Commandes & événements par agrégat conformes au .estorm (BankAdded, BankAccountAdded/ConfigurationUpdated/Removed, BankTransactionDetected, TransactionsDetectionCompleted, BankLastTransactionCheckUpdated, BankTransactionCreated/Removed, AccountingPeriodCreated, SupportingDocumentAttached/Removed — selon décision #30).
  • Ids brandés, value objects (montant en BigDecimal/entier minor units, IBAN…), *.state.ts, *.errors.ts.
  • Ports repository (tags) + layers in-memory ; <entity>.fixtures.ts + tests Given/When/Then.
  • Types des read models (SupportedBanks, AccountingPeriods, BankAccounts, BankTransactions, SupportingDocuments).

Respecter la « Domain package layout » et toutes les conventions du CLAUDE.md (Effect, Duration, no as, typed errors, spans).

Dépendances

  • @octant/event-sourcing, @octant/testing.

Référence : docs/event-storming/transaction-matcher.md + le modèle transaction-matcher.estorm.

> _Migré depuis [viziertronic/octant#80](https://github.com/viziertronic/octant/issues/80) — ouvert le 2026-06-26 par @momsse._ Créer le domaine event-sourced **Banking** (`@octant/banking`, `packages/domain/banking`) sur le modèle de `packages/domain/authentication`. ## Périmètre / livrables - Agrégats : `AccountingPeriod`, `Bank`, `BankAccount`, `BankTransaction` (`*.aggregate.ts` : evolve + decide). - Commandes & événements par agrégat conformes au `.estorm` (`BankAdded`, `BankAccountAdded/ConfigurationUpdated/Removed`, `BankTransactionDetected`, `TransactionsDetectionCompleted`, `BankLastTransactionCheckUpdated`, `BankTransactionCreated/Removed`, `AccountingPeriodCreated`, `SupportingDocumentAttached/Removed` — selon décision #30). - Ids brandés, value objects (montant en `BigDecimal`/entier minor units, IBAN…), `*.state.ts`, `*.errors.ts`. - Ports repository (tags) + layers in-memory ; `<entity>.fixtures.ts` + tests Given/When/Then. - Types des read models (`SupportedBanks`, `AccountingPeriods`, `BankAccounts`, `BankTransactions`, `SupportingDocuments`). Respecter la « Domain package layout » et toutes les conventions du `CLAUDE.md` (Effect, Duration, no `as`, typed errors, spans). ## Dépendances - `@octant/event-sourcing`, `@octant/testing`. Référence : [`docs/event-storming/transaction-matcher.md`](../blob/main/docs/event-storming/transaction-matcher.md) + le modèle [`transaction-matcher.estorm`](../blob/main/docs/event-storming/transaction-matcher.estorm).
Author
Owner

@momsse — 2026-06-26 (commentaire migré) :

En cours sur la branche feat/banking-domain (PR #93, draft).

Fait (typecheck + oxlint + oxfmt + 21 tests vitest verts) : package @octant/banking + les 4 agrégats event-sourced — Bank, AccountingPeriod, BankAccount (Create/Configure/Remove/Synchronise/UpdateLastTransactionCheck), BankTransaction (Create/Remove + SupportingDocument en value object sur la transaction, cf. décision #30). Value objects partagés Money / DetectedTransaction.

Reste dans ce ticket : les types de read models (SupportedBanks, AccountingPeriods, BankAccounts, BankTransactions, SupportingDocuments) + query ports. L'intégration BankApi (#32) et l'infra Postgres/projections (#33) sont hors périmètre.

> _@momsse — 2026-06-26 (commentaire migré) :_ En cours sur la branche `feat/banking-domain` (PR #93, draft). **Fait** (typecheck + oxlint + oxfmt + 21 tests vitest verts) : package `@octant/banking` + les 4 agrégats event-sourced — `Bank`, `AccountingPeriod`, `BankAccount` (Create/Configure/Remove/Synchronise/UpdateLastTransactionCheck), `BankTransaction` (Create/Remove + `SupportingDocument` en **value object** sur la transaction, cf. décision #30). Value objects partagés `Money` / `DetectedTransaction`. **Reste dans ce ticket** : les *types* de read models (`SupportedBanks`, `AccountingPeriods`, `BankAccounts`, `BankTransactions`, `SupportingDocuments`) + query ports. L'intégration BankApi (#32) et l'infra Postgres/projections (#33) sont hors périmètre.
Author
Owner

@momsse — 2026-06-26 (commentaire migré) :

Les 4 agrégats event-sourced (Bank, AccountingPeriod, BankAccount, BankTransaction + value objects Money / DetectedTransaction / SupportingDocument) sont mergés via #93 (CI verte, retours de review traités).

Reste de ce ticket : les types de read models (SupportedBanks, AccountingPeriods, BankAccounts, BankTransactions, SupportingDocuments) + query ports. Ils seront livrés avec #33 (infra Postgres / projections), là où ils sont matérialisés et consommés — j'ai laissé ce ticket ouvert pour les suivre.

> _@momsse — 2026-06-26 (commentaire migré) :_ Les 4 agrégats event-sourced (`Bank`, `AccountingPeriod`, `BankAccount`, `BankTransaction` + value objects `Money` / `DetectedTransaction` / `SupportingDocument`) sont mergés via #93 (CI verte, retours de review traités). Reste de ce ticket : les **types de read models** (`SupportedBanks`, `AccountingPeriods`, `BankAccounts`, `BankTransactions`, `SupportingDocuments`) + query ports. Ils seront livrés avec #33 (infra Postgres / projections), là où ils sont matérialisés et consommés — j'ai laissé ce ticket ouvert pour les suivre.
Author
Owner

@momsse — 2026-07-02 (commentaire migré) :

Livré par #93 (mergée) — domaine @octant/banking complet (agrégats, fixtures, tests GWT).

> _@momsse — 2026-07-02 (commentaire migré) :_ Livré par #93 (mergée) — domaine @octant/banking complet (agrégats, fixtures, tests GWT).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
momsse/octant#31
No description provided.