docs(timeline): register timeline domain in package tables and diagrams
Some checks failed
CI / Unit & Component Tests (pull_request) Failing after 47s
CI / OCR Service Tests (pull_request) Successful in 25s
CI / Backend Unit Tests (pull_request) Failing after 5m29s
CI / fail2ban Regex (pull_request) Successful in 47s
CI / Semgrep Security Scan (pull_request) Successful in 26s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m7s
Some checks failed
CI / Unit & Component Tests (pull_request) Failing after 47s
CI / OCR Service Tests (pull_request) Successful in 25s
CI / Backend Unit Tests (pull_request) Failing after 5m29s
CI / fail2ban Regex (pull_request) Successful in 47s
CI / Semgrep Security Scan (pull_request) Successful in 26s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m7s
Add timeline/ to the root and backend package tables, TimelineEvent to the domain-model entity tables, TimelineEvent/EventType/Zeitstrahl to the glossary, a new l3-backend-timeline C4 component diagram, and the timeline_events table + two join tables (with their CHECKs and cascade FKs) to the db-orm and db-relationships ER diagrams. Bumps the db-orm snapshot to V77. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
@startuml db-orm
|
||||
' Schema source: Flyway V1–V76 (excl. V37, V43 — intentionally removed)
|
||||
' Schema as of: V76 (2026-06-12)
|
||||
' Schema source: Flyway V1–V77 (excl. V37, V43 — intentionally removed)
|
||||
' Schema as of: V77 (2026-06-12)
|
||||
' ⚠ This is a versioned snapshot. Update when the schema changes significantly.
|
||||
|
||||
hide circle
|
||||
@@ -386,6 +386,39 @@ package "Supporting" {
|
||||
}
|
||||
}
|
||||
|
||||
' ── Timeline (Zeitstrahl) ──
|
||||
package "Timeline" {
|
||||
|
||||
entity timeline_events {
|
||||
id : UUID <<PK>>
|
||||
--
|
||||
title : VARCHAR(255) NOT NULL
|
||||
type : VARCHAR(16) NOT NULL
|
||||
event_date : DATE NOT NULL
|
||||
date_precision : VARCHAR(16) NOT NULL DEFAULT 'YEAR'
|
||||
event_date_end : DATE
|
||||
description : TEXT
|
||||
created_by : UUID NOT NULL
|
||||
created_at : TIMESTAMP
|
||||
updated_by : UUID NOT NULL
|
||||
updated_at : TIMESTAMP
|
||||
version : BIGINT
|
||||
==
|
||||
CHECK ((date_precision = 'RANGE') = (event_date_end IS NOT NULL))
|
||||
CHECK (date_precision <> 'UNKNOWN')
|
||||
}
|
||||
|
||||
entity timeline_event_persons {
|
||||
timeline_event_id : UUID <<FK>>
|
||||
person_id : UUID <<FK>>
|
||||
}
|
||||
|
||||
entity timeline_event_documents {
|
||||
timeline_event_id : UUID <<FK>>
|
||||
document_id : UUID <<FK>>
|
||||
}
|
||||
}
|
||||
|
||||
' Auth relationships
|
||||
app_users_groups }o--|| app_users : app_user_id
|
||||
app_users_groups }o--|| user_groups : group_id
|
||||
@@ -449,4 +482,10 @@ geschichten_persons }o--|| persons : person_id
|
||||
journey_items }o--|| geschichten : geschichte_id (ON DELETE CASCADE)
|
||||
journey_items }o--o| documents : document_id (ON DELETE SET NULL)
|
||||
|
||||
' Timeline relationships
|
||||
timeline_event_persons }o--|| timeline_events : timeline_event_id (ON DELETE CASCADE)
|
||||
timeline_event_persons }o--|| persons : person_id (ON DELETE CASCADE)
|
||||
timeline_event_documents }o--|| timeline_events : timeline_event_id (ON DELETE CASCADE)
|
||||
timeline_event_documents }o--|| documents : document_id (ON DELETE CASCADE)
|
||||
|
||||
@enduml
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
' precision/attribution fields); no new FK relationships, so this diagram is unchanged.
|
||||
' Note: V76 swaps persons.birth_year/death_year for birth_date/death_date +
|
||||
' precision columns; columns only, no new FK relationships, diagram unchanged.
|
||||
' Note: V77 adds the timeline_events table + two join tables (Timeline package below).
|
||||
|
||||
hide circle
|
||||
skinparam linetype ortho
|
||||
@@ -71,6 +72,13 @@ package "Supporting" {
|
||||
entity journey_items
|
||||
}
|
||||
|
||||
' ── Timeline (Zeitstrahl) ──
|
||||
package "Timeline" {
|
||||
entity timeline_events
|
||||
entity timeline_event_persons
|
||||
entity timeline_event_documents
|
||||
}
|
||||
|
||||
' Auth relationships
|
||||
app_users_groups }o--|| app_users : app_user_id
|
||||
app_users_groups }o--|| user_groups : group_id
|
||||
@@ -136,4 +144,11 @@ journey_items }o--o| documents : document_id (ON DELETE SET NULL)
|
||||
note right of journey_items : partial UNIQUE (geschichte_id, document_id)\nWHERE document_id IS NOT NULL (V74)
|
||||
note right of geschichten : CHECK length(body) <= 4000\nfor type = JOURNEY (V75)
|
||||
|
||||
' Timeline relationships (V77)
|
||||
timeline_event_persons }o--|| timeline_events : timeline_event_id (ON DELETE CASCADE)
|
||||
timeline_event_persons }o--|| persons : person_id (ON DELETE CASCADE)
|
||||
timeline_event_documents }o--|| timeline_events : timeline_event_id (ON DELETE CASCADE)
|
||||
timeline_event_documents }o--|| documents : document_id (ON DELETE CASCADE)
|
||||
note right of timeline_events : CHECK event_date_end non-null IFF RANGE\nCHECK date_precision <> 'UNKNOWN' (V77)
|
||||
|
||||
@enduml
|
||||
|
||||
Reference in New Issue
Block a user