Files
familienarchiv/docs/architecture/db/db-relationships.puml
Marcel 663bb57334
All checks were successful
CI / fail2ban Regex (pull_request) Successful in 44s
CI / Semgrep Security Scan (pull_request) Successful in 23s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m8s
SDD Gate / RTM Check (pull_request) Successful in 18s
SDD Gate / Contract Validate (pull_request) Successful in 29s
SDD Gate / Constitution Impact (pull_request) Successful in 20s
CI / Unit & Component Tests (pull_request) Successful in 4m38s
CI / OCR Service Tests (pull_request) Successful in 25s
CI / Backend Unit Tests (pull_request) Successful in 5m58s
docs(relationship): ADR-044, DB diagrams, deploy runbook, RTM rows
- ADR-044 extends ADR-039 to the relationship edge: LocalDate+DatePrecision,
  update re-validation of create invariants, no @Version (last-write-wins),
  DELETE→404 anti-enumeration alignment, precise derived marriage date, and the
  relationshipDates.ts location reusing the existing person→shared boundary.
- db-orm.puml: person_relationships now carries from_date/from_date_precision/
  to_date/to_date_precision; db-relationships.puml gets a V78 columns-only note.
- DEPLOYMENT.md §5: V78 deploy note — no maintenance window, stop-old-then-start
  ordering (not rolling-deploy-safe), targeted pg_restore rollback.
- CLAUDE.md error-code list gains INVALID_RELATIONSHIP_DATES.
- rtm.md: REQ-001..REQ-019 for #837 mapped to impl + tests, all Done.

Refs #837
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 19:29:08 +02:00

5.4 KiB

AuthDocumentsPersonsTagsTranscriptionOCRSupportingTimelineapp_usersuser_groupsapp_users_groupsgroup_permissionspassword_reset_tokensinvite_tokensinvite_token_group_idsdocumentsdocument_receiversdocument_tagsdocument_versionsdocument_annotationsdocument_commentsdocument_training_labelscomment_mentionspersonsperson_name_aliasesperson_relationshipstagtranscription_blockstranscription_block_versionstranscription_block_mentioned_personsocr_jobsocr_job_documentsocr_training_runssender_modelsnotificationsaudit_loggeschichtengeschichten_personsjourney_itemstimeline_eventstimeline_event_personstimeline_event_documentspartial UNIQUE (geschichte_id, document_id)WHERE document_id IS NOT NULL (V74)CHECK length(body) <= 4000for type = JOURNEY (V75)CHECK event_date_end non-null IFF RANGECHECK date_precision <> 'UNKNOWN' (V77)app_user_idgroup_idgroup_idapp_user_idcreated_byinvite_token_idgroup_idsender_id (ON DELETE SET NULL)document_idperson_id (ON DELETE CASCADE)document_idtag_iddocument_ideditor_iddocument_idcreated_bydocument_idannotation_idblock_idauthor_idparent_iddocument_idcomment_idapp_user_idperson_idperson_idrelated_person_idparent_idannotation_iddocument_idcreated_byupdated_byblock_idchanged_byblock_idperson_id (ON DELETE CASCADE)job_iddocument_idtriggered_byperson_idperson_idrecipient_idactor_iddocument_idauthor_idgeschichte_idperson_idgeschichte_id (ON DELETE CASCADE)document_id (ON DELETE SET NULL)timeline_event_id (ON DELETE CASCADE)person_id (ON DELETE CASCADE)timeline_event_id (ON DELETE CASCADE)document_id (ON DELETE CASCADE)