Status field
Change from Greenfield — no code yet, epics defined to:
Active — Layer 1 (naive baseline) and Layer 2 (casehub-work) complete
What is now implemented in casehubio/aml
Layer 1 (casehubio/aml#12 — closed):
api/: domain records (SuspiciousTransaction, EntityResolutionResult, PatternAnalysisResult, OsintResult, InvestigationSummary, AmlInvestigationResult) + service interfaces (EntityResolutionService, PatternAnalysisService, OsintScreeningService, SarDraftingService)
api/: AmlInvestigationApplicationService use-case port interface
app/tutorial/: 4 package-private naive stubs + NaiveAmlInvestigationService (@ApplicationScoped @DefaultBean, 4 LAYER 1 GAP comments)
app/: AmlInvestigationResource — POST /api/investigations returning AmlInvestigationResult
Layer 2 (casehubio/aml#15 — closed):
app/tutorial/: WorkItemAmlInvestigationService (@ApplicationScoped, displaces @DefaultBean)
- Creates compliance officer
WorkItem via casehub-work on every investigation: candidateGroups=compliance-officers, claimDeadline=now+30days, callerRef=aml:investigation/{txId}
- Response:
{ summary: {...}, complianceReviewTaskId: "..." }
- 8 tests passing (4 unit + 4
@QuarkusTest)
Architecture note to add
The AML repo follows hexagonal architecture (PP-20260512-9b8847 — parent#18 pending):
api/ = domain layer (pure Java, no framework deps)
app/ = application + infrastructure layer (CDI, REST, Quarkus)
Status field
Change from
Greenfield — no code yet, epics definedto:Active — Layer 1 (naive baseline) and Layer 2 (casehub-work) completeWhat is now implemented in casehubio/aml
Layer 1 (casehubio/aml#12 — closed):
api/: domain records (SuspiciousTransaction,EntityResolutionResult,PatternAnalysisResult,OsintResult,InvestigationSummary,AmlInvestigationResult) + service interfaces (EntityResolutionService,PatternAnalysisService,OsintScreeningService,SarDraftingService)api/:AmlInvestigationApplicationServiceuse-case port interfaceapp/tutorial/: 4 package-private naive stubs +NaiveAmlInvestigationService(@ApplicationScoped @DefaultBean, 4 LAYER 1 GAP comments)app/:AmlInvestigationResource—POST /api/investigationsreturningAmlInvestigationResultLayer 2 (casehubio/aml#15 — closed):
app/tutorial/:WorkItemAmlInvestigationService(@ApplicationScoped, displaces@DefaultBean)WorkItemviacasehub-workon every investigation:candidateGroups=compliance-officers,claimDeadline=now+30days,callerRef=aml:investigation/{txId}{ summary: {...}, complianceReviewTaskId: "..." }@QuarkusTest)Architecture note to add
The AML repo follows hexagonal architecture (PP-20260512-9b8847 — parent#18 pending):
api/= domain layer (pure Java, no framework deps)app/= application + infrastructure layer (CDI, REST, Quarkus)