fix(review): add JourneyItemService to C4 L3 supporting-domains diagram
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@ System_Boundary(backend, "API Backend (Spring Boot)") {
|
|||||||
Component(sseRegistry, "SseEmitterRegistry", "Spring Component", "In-memory ConcurrentHashMap of Spring SseEmitter instances per user. Handles registration, deregistration, and JSON event broadcasts.")
|
Component(sseRegistry, "SseEmitterRegistry", "Spring Component", "In-memory ConcurrentHashMap of Spring SseEmitter instances per user. Handles registration, deregistration, and JSON event broadcasts.")
|
||||||
Component(geschCtrl, "GeschichteController", "Spring MVC — /api/geschichten", "CRUD for publishable stories (STORY) and reading journeys (JOURNEY). Returns GeschichteSummary projections for list; full Geschichte with JourneyItems for detail. Requires BLOG_WRITE permission for write operations.")
|
Component(geschCtrl, "GeschichteController", "Spring MVC — /api/geschichten", "CRUD for publishable stories (STORY) and reading journeys (JOURNEY). Returns GeschichteSummary projections for list; full Geschichte with JourneyItems for detail. Requires BLOG_WRITE permission for write operations.")
|
||||||
Component(geschSvc, "GeschichteService", "Spring Service", "Manages story lifecycle (DRAFT → PUBLISHED with timestamp). Supports two subtypes: STORY (prose) and JOURNEY (ordered JourneyItem sequence). Sanitizes HTML body with an allowlist policy.")
|
Component(geschSvc, "GeschichteService", "Spring Service", "Manages story lifecycle (DRAFT → PUBLISHED with timestamp). Supports two subtypes: STORY (prose) and JOURNEY (ordered JourneyItem sequence). Sanitizes HTML body with an allowlist policy.")
|
||||||
|
Component(journeyItemSvc, "JourneyItemService", "Spring Service", "Manages journey item lifecycle: append (100-item cap), updateNote (three-way PATCH), delete, and reorder (DEFERRABLE position swap). Enforces JOURNEY-type guard on append.")
|
||||||
Component(exHandler, "GlobalExceptionHandler", "Spring @RestControllerAdvice", "Converts DomainException, validation errors, and generic exceptions to ErrorResponse JSON with machine-readable ErrorCode and HTTP status.")
|
Component(exHandler, "GlobalExceptionHandler", "Spring @RestControllerAdvice", "Converts DomainException, validation errors, and generic exceptions to ErrorResponse JSON with machine-readable ErrorCode and HTTP status.")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,6 +39,9 @@ Rel(notifCtrl, notifSvc, "Delegates to")
|
|||||||
Rel(notifCtrl, sseRegistry, "Registers client SSE connection")
|
Rel(notifCtrl, sseRegistry, "Registers client SSE connection")
|
||||||
Rel(notifSvc, sseRegistry, "Broadcasts events to connected clients")
|
Rel(notifSvc, sseRegistry, "Broadcasts events to connected clients")
|
||||||
Rel(geschCtrl, geschSvc, "Delegates to")
|
Rel(geschCtrl, geschSvc, "Delegates to")
|
||||||
|
Rel(geschCtrl, journeyItemSvc, "Delegates journey item CRUD")
|
||||||
|
Rel(geschSvc, journeyItemSvc, "Delegates getItems()")
|
||||||
|
Rel(journeyItemSvc, db, "Reads / writes journey_items", "JDBC")
|
||||||
Rel(auditSvc, db, "Writes audit_log", "JDBC")
|
Rel(auditSvc, db, "Writes audit_log", "JDBC")
|
||||||
Rel(auditQuery, db, "Reads audit_log", "JDBC")
|
Rel(auditQuery, db, "Reads audit_log", "JDBC")
|
||||||
Rel(notifSvc, db, "Reads / writes notifications", "JDBC")
|
Rel(notifSvc, db, "Reads / writes notifications", "JDBC")
|
||||||
|
|||||||
Reference in New Issue
Block a user