Files
familienarchiv/docs/architecture/c4/l3-frontend-3b-document-workflows.puml
Marcel 301cfffd1a
Some checks failed
CI / Unit & Component Tests (pull_request) Failing after 4m4s
CI / OCR Service Tests (pull_request) Successful in 36s
CI / Backend Unit Tests (pull_request) Failing after 3m17s
CI / Unit & Component Tests (push) Failing after 4m3s
CI / OCR Service Tests (push) Successful in 40s
CI / Backend Unit Tests (push) Failing after 3m22s
docs(c4): align density breakpoint with code (≥1024px) (#385)
The widget hides below the Tailwind lg breakpoint to protect the
44×44 touch-target floor on tablet (Leonie's round-1 finding) but
the diagram still claimed 640px (sm). Update both the docsListPageTs
description, the timelineFilter description, and the relationship
label to match +page.ts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 11:07:16 +02:00

3.9 KiB

Component Diagram: Web Frontend — Document WorkflowsComponent Diagram: Web Frontend — Document WorkflowsWeb Frontend (SvelteKit / SSR)[system]«component»/ (Home / Search)[SvelteKit Route] Loader: parses URL params(q, from, to, senderId,receiverId, tags), fetches/api/documents/search and/api/persons. Renderssearch form with full-text,date range, sender/receivertypeahead, and tag filters.«component»/documents/+page.ts[SvelteKit Client Loader] Client-side load gated bymatchMedia('(min-width:1024px)') and ?view query.Fetches/api/documents/density onlyon desktop (Tailwind lgbreakpoint) and outsidecalendar view; degrades toempty buckets on networkfailure.«component»TimelineDensityFilter.svelte[Svelte Component] Per-month density barsabove the document list.Click selects a single month,emits onchange({from, to})using YYYY-MM-DDboundaries. Hidden onmobile and tablet (below lg,1024px) and in calendarview.«component»/documents/[id][SvelteKit Route] Loader: GET/api/documents/{id}. Page:metadata panel, inline fileviewer, transcription editor,annotation layer, andcomment thread.«component»/documents/[id]/edit[SvelteKit Route] Edit form withPersonTypeahead,TagInput, date/locationfields. Form action: PUT/api/documents/{id}.«component»/documents/new[SvelteKit Route] Upload form for a newdocument. Loader: GET/api/persons. Form action:POST /api/documents withmultipart file.«component»/documents/bulk-edit[SvelteKit Route] Multi-document metadataeditor. Loader: GET/api/documents/incomplete.Requires WRITE_ALL(redirects otherwise).Action: PATCH/api/documents/bulk.«component»/enrich/[id][SvelteKit Route] Guided enrichmentworkflow. Loader: GET/api/documents/{id}.Progressively savesannotations andtranscription blocks.«component»/api/persons(SvelteKit API)[SvelteKit Server Route] Proxies GET/api/persons?q=... tobackend forPersonTypeaheadsuggestions.«component»/api/tags (SvelteKitAPI)[SvelteKit Server Route] Proxies GET /api/tags tobackend for TagInputautocomplete.«component»PersonTypeahead.svelte[Svelte Component] Async autocomplete forselecting a person.Debounces input, calls/api/persons?q=.«component»TagInput.svelte[Svelte Component] Multi-tag input. Supportsfree-text entry andselecting existing tags from/api/tags.«person»User«container»API Backend[Spring Boot]Searches andbrowses[HTTPS / Browser]GET/api/documents/search,GET /api/persons[HTTP / JSON]GET/api/documents/density(desktop only,≥1024px)[HTTP / JSON]Mounts above theresult listProvides density /minDate / maxDatepropsGET/api/documents/{id},GET/api/documents/{id}/file[HTTP / JSON + Binary]PUT/api/documents/{id}[HTTP / Multipart]GET /api/persons,POST /api/documents[HTTP / JSON +Multipart]GET/api/documents/incomplete,PATCH/api/documents/bulk[HTTP / JSON]GET/POST/api/transcription,POST/api/documents/{id}/annotations[HTTP / JSON]Uses forsender/receiver filterUses forsender/receiverselectionUses for senderselectionUses for tagmanagementFetches suggestions[HTTP]Fetches existing tags[HTTP]GET /api/persons[HTTP / JSON]GET /api/tags[HTTP / JSON]