Files
familienarchiv/docs/architecture/c4/l3-backend-3e-persons.puml
Marcel 300b236d7d
All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 7m1s
CI / OCR Service Tests (pull_request) Successful in 34s
CI / Backend Unit Tests (pull_request) Successful in 3m41s
CI / fail2ban Regex (pull_request) Successful in 1m23s
CI / Semgrep Security Scan (pull_request) Successful in 1m58s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m32s
docs(persons): document the directory route, triage view and endpoints
Add /persons/review to the CLAUDE.md route tables and reflect the paged,
filtered directory plus the confirm/delete endpoints in the frontend
people-stories and backend persons C4 diagrams.

Closes #667

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 13:59:31 +02:00

2.6 KiB

Component Diagram: API Backend — Persons & Family GraphComponent Diagram: API Backend — Persons & Family GraphAPI Backend (Spring Boot)[system]«component»PersonController[Spring MVC â€” /api/persons] Filtered, paginateddirectory(type/familyOnly/hasDocuments/provisional+ page/size ->PersonSearchResult).Returns documentssent/received,correspondent suggestions,person summaries withcounts. PATCH/{id}/confirm clearsprovisional; DELETE /{id}removes a person (bothWRITE_ALL).«component»RelationshipController[Spring MVC â€” /api/network,/api/persons/{id}/relationships] CRUD for explicit personrelationships and the fullfamily network graph(nodes + edges) used bythe Stammbaum view.«component»PersonService[Spring Service] Person CRUD, aliasmanagement, filteredpaged search (PersonFilter-> paired slice/count),confirm (clears provisional),delete (detaches documentrefs first), and mergeoperations (reassigns alldocument sender/receiverreferences before deletingduplicate persons).«component»RelationshipService[Spring Service] Manages explicit directionalfamily relationships(PARENT_OF, SPOUSE_OF,SIBLING_OF, etc.) withoptional date ranges andnotes.«component»RelationshipInferenceService[Spring Service] Computes transitive familyrelationships from explicitedges to infergrandparent/grandchild,aunt/uncle, and otherextended-family links forthe network graph.«component»PersonRepository[Spring Data JPA] Queries persons with namesearch (including aliases),correspondent discovery,person summaries withdocument counts, pairedfilter-aware slice + COUNTqueries (one shared WHEREclause), andmerge/reassignmenthelpers.«component»PersonRelationshipRepository[Spring Data JPA] Reads and writesPersonRelationship records.Supports lookup by personID, by relation type, andexistence checks fordeduplication.«container»Web Frontend[SvelteKit]«container»PostgreSQL[PostgreSQL 16]Person requests[HTTP / JSON]Relationship andgraph requests[HTTP / JSON]Delegates toDelegates toQueries inferredgraphReads / writespersonsReads / writesrelationshipsReads relationshipsfor inferenceSQL queries[JDBC]SQL queries[JDBC]