This website requires JavaScript.
Explore
Help
Register
Sign In
marcel
/
familienarchiv
Watch
1
Star
0
Fork
0
You've already forked familienarchiv
Code
Issues
115
Pull Requests
Actions
Packages
Projects
Releases
Wiki
Activity
Files
aab0279405098b64de51a7f370b72149b9327312
familienarchiv
/
docs
/
architecture
/
db
/
db-orm.puml
Marcel
d4b5c14a26
docs(db): add full ORM diagram (db-orm.puml)
...
Co-Authored-By: Claude Sonnet 4.6 <
noreply@anthropic.com
>
2026-05-06 23:44:00 +02:00
11 KiB
Raw
Blame
History
Auth
Documents
Persons
Tags
Transcription
OCR
Supporting
app_users
id : UUID «PK»
email : VARCHAR(255) NOT NULL UNIQUE
password : VARCHAR(255) NOT NULL
first_name : VARCHAR(100)
last_name : VARCHAR(100)
birth_date : DATE
contact : TEXT
enabled : BOOLEAN NOT NULL
color : VARCHAR(20) NOT NULL
notify_on_reply : BOOLEAN NOT NULL
notify_on_mention : BOOLEAN NOT NULL
created_at : TIMESTAMP
user_groups
id : UUID «PK»
name : VARCHAR(255) NOT NULL UNIQUE
app_users_groups
app_user_id : UUID «FK»
group_id : UUID «FK»
group_permissions
group_id : UUID «FK»
permission : VARCHAR(255)
password_reset_tokens
id : UUID «PK»
app_user_id : UUID «FK»
token : VARCHAR(64) NOT NULL UNIQUE
expires_at : TIMESTAMP NOT NULL
used : BOOLEAN NOT NULL
created_at : TIMESTAMP NOT NULL
invite_tokens
id : UUID «PK»
code : VARCHAR(10) NOT NULL UNIQUE
label : VARCHAR(255)
max_uses : INTEGER
use_count : INTEGER NOT NULL
prefill_first_name : VARCHAR(255)
prefill_last_name : VARCHAR(255)
prefill_email : VARCHAR(255)
expires_at : TIMESTAMP
created_by : UUID «FK»
created_at : TIMESTAMP NOT NULL
revoked : BOOLEAN NOT NULL
invite_token_group_ids
invite_token_id : UUID «FK»
group_id : UUID «FK»
documents
id : UUID «PK»
title : VARCHAR(255) NOT NULL
original_filename : VARCHAR(255) NOT NULL
status : VARCHAR(255) NOT NULL
file_path : VARCHAR(255)
file_hash : VARCHAR(64)
summary : TEXT
transcription : TEXT
meta_date : DATE
meta_location : VARCHAR(255)
meta_document_location : VARCHAR(255)
archive_box : VARCHAR(255)
archive_folder : VARCHAR(255)
sender_id : UUID «FK»
metadata_complete : BOOLEAN NOT NULL
script_type : VARCHAR(30) NOT NULL
thumbnail_key : VARCHAR(255)
thumbnail_generated_at : TIMESTAMP
thumbnail_aspect : VARCHAR(16)
page_count : INTEGER
search_vector : tsvector «computed»
created_at : TIMESTAMP
updated_at : TIMESTAMP
document_receivers
document_id : UUID «FK»
person_id : UUID «FK»
document_tags
document_id : UUID «FK»
tag_id : UUID «FK»
document_versions
id : UUID «PK»
document_id : UUID «FK»
editor_id : UUID «FK»
editor_name : VARCHAR(200) NOT NULL
saved_at : TIMESTAMP NOT NULL
snapshot : JSONB NOT NULL
changed_fields : JSONB NOT NULL
document_annotations
id : UUID «PK»
document_id : UUID «FK»
page_number : INTEGER NOT NULL
x : DOUBLE PRECISION NOT NULL
y : DOUBLE PRECISION NOT NULL
width : DOUBLE PRECISION NOT NULL
height : DOUBLE PRECISION NOT NULL
color : VARCHAR(20) NOT NULL
polygon : JSONB
file_hash : VARCHAR(64)
created_by : UUID «FK»
created_at : TIMESTAMP NOT NULL
document_comments
id : UUID «PK»
document_id : UUID «FK»
annotation_id : UUID «FK»
block_id : UUID «FK»
parent_id : UUID «FK»
author_id : UUID «FK»
author_name : VARCHAR(200) NOT NULL
content : TEXT NOT NULL
created_at : TIMESTAMP NOT NULL
updated_at : TIMESTAMP NOT NULL
document_training_labels
document_id : UUID «FK»
label : VARCHAR(50) NOT NULL
comment_mentions
comment_id : UUID «FK»
app_user_id : UUID «FK»
persons
id : UUID «PK»
first_name : VARCHAR(255)
last_name : VARCHAR(255) NOT NULL
alias : VARCHAR(255)
title : VARCHAR(50)
person_type : VARCHAR(20) NOT NULL
notes : TEXT
birth_year : INTEGER
death_year : INTEGER
family_member : BOOLEAN NOT NULL
person_name_aliases
id : UUID «PK»
person_id : UUID «FK»
last_name : VARCHAR(255) NOT NULL
first_name : VARCHAR(255)
type : VARCHAR(50) NOT NULL
sort_order : INTEGER NOT NULL
created_at : TIMESTAMPTZ
person_relationships
id : UUID «PK»
person_id : UUID «FK»
related_person_id : UUID «FK»
relation_type : VARCHAR(30) NOT NULL
from_year : INTEGER
to_year : INTEGER
notes : VARCHAR(2000)
created_at : TIMESTAMPTZ NOT NULL
tag
id : UUID «PK»
name : VARCHAR(255) NOT NULL UNIQUE
parent_id : UUID «FK»
color : VARCHAR(20)
transcription_blocks
id : UUID «PK»
annotation_id : UUID «FK»
document_id : UUID «FK»
text : TEXT
label : VARCHAR(200)
sort_order : INTEGER NOT NULL
version : INTEGER NOT NULL
source : VARCHAR(10) NOT NULL
reviewed : BOOLEAN NOT NULL
created_by : UUID «FK»
updated_by : UUID «FK»
created_at : TIMESTAMP NOT NULL
updated_at : TIMESTAMP NOT NULL
transcription_block_versions
id : UUID «PK»
block_id : UUID «FK»
text : TEXT NOT NULL
changed_by : UUID «FK»
changed_at : TIMESTAMP NOT NULL
transcription_block_mentioned_persons
block_id : UUID «FK»
person_id : UUID NOT NULL
display_name : VARCHAR(200) NOT NULL
ocr_jobs
id : UUID «PK»
status : VARCHAR(20) NOT NULL
total_documents : INT NOT NULL
processed_documents : INT NOT NULL
error_count : INT NOT NULL
skipped_count : INT NOT NULL
created_by : UUID
progress_message : TEXT
created_at : TIMESTAMPTZ NOT NULL
updated_at : TIMESTAMPTZ NOT NULL
ocr_job_documents
id : UUID «PK»
job_id : UUID «FK»
document_id : UUID «FK»
status : VARCHAR(20) NOT NULL
error_message : TEXT
current_page : INT
total_pages : INT
created_at : TIMESTAMPTZ NOT NULL
updated_at : TIMESTAMPTZ NOT NULL
ocr_training_runs
id : UUID «PK»
status : VARCHAR(20) NOT NULL
block_count : INT NOT NULL
document_count : INT NOT NULL
model_name : VARCHAR(100) NOT NULL
error_message : TEXT
triggered_by : UUID «FK»
person_id : UUID «FK»
cer : DOUBLE PRECISION
loss : DOUBLE PRECISION
accuracy : DOUBLE PRECISION
epochs : INT
created_at : TIMESTAMPTZ NOT NULL
completed_at : TIMESTAMPTZ
sender_models
id : UUID «PK»
person_id : UUID «FK» UNIQUE
model_path : TEXT NOT NULL
accuracy : DOUBLE PRECISION
cer : DOUBLE PRECISION
corrected_lines_at_training : INT NOT NULL
created_at : TIMESTAMPTZ NOT NULL
updated_at : TIMESTAMPTZ NOT NULL
notifications
id : UUID «PK»
recipient_id : UUID «FK»
type : VARCHAR(32) NOT NULL
document_id : UUID
reference_id : UUID
annotation_id : UUID
actor_name : VARCHAR(255)
read : BOOLEAN NOT NULL
created_at : TIMESTAMP NOT NULL
audit_log
id : UUID «PK»
happened_at : TIMESTAMPTZ NOT NULL
actor_id : UUID «FK»
kind : VARCHAR(50) NOT NULL
document_id : UUID «FK»
payload : JSONB
geschichten
id : UUID «PK»
title : VARCHAR(255) NOT NULL
body : TEXT
status : VARCHAR(32) NOT NULL
author_id : UUID «FK»
created_at : TIMESTAMP NOT NULL
updated_at : TIMESTAMP NOT NULL
published_at : TIMESTAMP
geschichten_persons
geschichte_id : UUID «FK»
person_id : UUID «FK»
geschichten_documents
geschichte_id : UUID «FK»
document_id : UUID «FK»
app_user_id
group_id
group_id
app_user_id
created_by
invite_token_id
group_id
sender_id
document_id
person_id
document_id
tag_id
document_id
editor_id
document_id
created_by
document_id
annotation_id
block_id
author_id
parent_id
document_id
comment_id
app_user_id
person_id
person_id
related_person_id
parent_id
annotation_id
document_id
created_by
updated_by
block_id
changed_by
block_id
job_id
document_id
triggered_by
person_id
person_id
recipient_id
actor_id
document_id
author_id
geschichte_id
person_id
geschichte_id
document_id
Reference in New Issue
View Git Blame
Copy Permalink