Files
familienarchiv/docs/architecture/c4/l3-backend-timeline.puml
Marcel 788a804810 docs(timeline): pin relative issue ordinals to Gitea issue numbers
The issue body's milestone-relative ordinals ("issue 3", "issue 5") become
unreadable once the milestone closes. Resolved against the Zeitstrahl milestone:
issue 3 = #775 (CRUD API: service/controller/DTO), issue 5 = #777 (assembly
endpoint with the per-person filter). Mapping anchored by issue 6 = #778
(date-label helper) and issue 9 = #781 (curator forms) in #774's forward notes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 00:47:22 +02:00

1.6 KiB

Component Diagram: API Backend — Timeline (Zeitstrahl)Component Diagram: API Backend — Timeline (Zeitstrahl)API Backend (Spring Boot)[system]«component»TimelineEventRepository[Spring Data JPA] Reads and writesTimelineEvent rows andtheir persons/documentsjoin tables(timeline_event_persons,timeline_event_documents).Issue #774 ships therepository empty; theper-person filter querylands in #777.«component»TimelineEventService[Spring Service (planned, #775)] Will own curated-eventCRUD: assembleTimelineEventView/Summaryinside the transaction (lazyManyToMany +open-in-view=false, perADR-036/ADR-040),populatecreatedBy/updatedBy fromthe session principal, andtranslate optimistic-lockconflicts toDomainException.conflict.«component»TimelineEventController[Spring MVC (planned, #775)] Will expose /api/timelinereads (READ_ALL) andwrites (WRITE_ALL).createdBy/updatedBy arenever bound from requestbodies (CWE-639).«container»PostgreSQL[PostgreSQL 16]«external_system»Document domain Provides DatePrecision(shared value type) andDocument references forlinked letters«external_system»Person domain Provides Person referencesfor who an event involvesSQL queries[JDBC]Reads / writes events(planned)Delegates to(planned)References personsvia join tableReferencesdocuments via jointable