initial scaffold: structure, build setup, chapter stubs, diagrams
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
\section{Zielerreichung}
|
||||
\label{sec:evaluation}
|
||||
|
||||
% TODO
|
||||
@@ -0,0 +1,6 @@
|
||||
\section{Ausblick}
|
||||
\label{sec:outlook}
|
||||
|
||||
% TODO: PBI 10070 (Race Conditions), Search Integration (von AU noch nicht verfügbar),
|
||||
% Dashboard-Kacheln (Security Assessments, zuletzt hinzugefügte Dokumente),
|
||||
% Abrechnungsdaten
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Reflexion}
|
||||
\label{sec:reflection}
|
||||
|
||||
% TODO: Lessons Learned — S3-Lookup-Entscheidung, Race Conditions als offenes Thema,
|
||||
% Infrastruktur-Vorlauf unterschätzt (AU-Kommunikation 2026-07-22 bis 2026-08-07)
|
||||
@@ -0,0 +1,4 @@
|
||||
\section{Soll-Ist-Vergleich}
|
||||
\label{sec:target-comparison}
|
||||
|
||||
% TODO: Tabelle Soll-Ist (Zeitplan, Features)
|
||||
@@ -0,0 +1 @@
|
||||
% TODO: Kapitel aus PidI 2 übernehmen und auf PidI 3 aktualisieren
|
||||
@@ -0,0 +1 @@
|
||||
% TODO: Kapitel aus PidI 2 übernehmen und auf PidI 3 aktualisieren
|
||||
@@ -0,0 +1 @@
|
||||
% TODO: Kapitel aus PidI 2 übernehmen und auf PidI 3 aktualisieren
|
||||
@@ -0,0 +1,13 @@
|
||||
\section{Autorisierungskonzept}
|
||||
\label{sec:authorization}
|
||||
|
||||
% TODO: App-Rolle Documents.Read (Entra ID), Claim efecte:company_id
|
||||
% Menüpunkt nur sichtbar mit Rolle, Direktzugriff ohne Rolle → 403 (nicht 404)
|
||||
% Sequence-Diagramm auth-sequence.pdf
|
||||
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=0.9\textwidth]{figures/diagrams/auth-sequence.pdf}
|
||||
% \caption{Autorisierungsablauf}
|
||||
% \label{fig:auth-sequence}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,7 @@
|
||||
\section{Dokumententypen und Icons}
|
||||
\label{sec:document-types}
|
||||
|
||||
% TODO: 7 Typen hardcoded in Houston (PBI 9560/9549):
|
||||
% Service-Protokoll, Abnahme Dokumente, SLA-Reports, Monitoring Reports,
|
||||
% Security Assessments, Abrechnungsdaten, Vertragsunterlagen
|
||||
% Typzuordnung über Unterordnername, Tabelle im Anhang
|
||||
@@ -0,0 +1,13 @@
|
||||
\section{Architekturentscheidung: O(1)-Fast-Path}
|
||||
\label{sec:lookup-decision}
|
||||
|
||||
% TODO: PBI 10018 — metadatenbasierter Fast-Path
|
||||
% ResolveCustomerPrefixAsync: Fast-Path → Kollisions-Fast-Path → O(n)-Fallback + Self-Healing-Rename
|
||||
% Houston als führende Instanz für Ordnerbenennung
|
||||
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=\textwidth]{figures/diagrams/lookup-flow.pdf}
|
||||
% \caption{Ablauf \texttt{ResolveCustomerPrefixAsync}}
|
||||
% \label{fig:lookup-flow}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,8 @@
|
||||
\section{Problem: Lookup des Kundenordners}
|
||||
\label{sec:lookup-research}
|
||||
|
||||
% TODO: PBI 9857 — S3 kann nicht nach Metadaten-Tags suchen → lineares Scannen aller Top-Level-Prefixes
|
||||
% Trade-off-Matrix der 6 Varianten (In-Memory Cache, Claim, Efecte-Feld, S3 SelectObject, Search Integration, Prefix im Namen)
|
||||
% \cite{aws-s3-select}, \cite{storagegrid-search-integration}
|
||||
|
||||
% Tabelle~\ref{tab:lookup-tradeoffs} im Anhang
|
||||
@@ -0,0 +1,14 @@
|
||||
\section{Ablagekonzept im S3-Speicher}
|
||||
\label{sec:s3-layout}
|
||||
|
||||
% TODO: Ordnerbaum (Feature 484):
|
||||
% Bucket → Kundenordner [meta: efecte_org-id] → Typordner/ → Dokumente
|
||||
% Typ = Unterordner, nicht Metadatum an der Datei
|
||||
% Leere Ordner werden nicht angezeigt
|
||||
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=0.75\textwidth]{figures/diagrams/s3-layout.pdf}
|
||||
% \caption{S3-Ablagestruktur}
|
||||
% \label{fig:s3-layout}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{UI-Konzept und Clickdummy}
|
||||
\label{sec:ui-concept}
|
||||
|
||||
% TODO: Hanna Ebner, Branch Clickdummy_Dokumente (2026-07-22)
|
||||
% Listenansicht, Typfilter oben als Buttons, flexible Tabellenspalten
|
||||
@@ -0,0 +1,12 @@
|
||||
\section{Architektur des Documents-Moduls}
|
||||
\label{sec:architecture}
|
||||
|
||||
% TODO: Razor Page DocumentsPage.cshtml → DocumentsService → S3DocumentsClient
|
||||
% Klassendiagramm module-components.pdf
|
||||
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=0.9\textwidth]{figures/diagrams/module-components.pdf}
|
||||
% \caption{Komponentenstruktur des Documents-Moduls}
|
||||
% \label{fig:module-components}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Document Explorer}
|
||||
\label{sec:document-explorer}
|
||||
|
||||
% TODO: PBI 9295 — /documents Seite, ListObjectsV2, Empty State, Fehlerbehandlung
|
||||
% Abbildung~\ref{fig:documents-page-model}, \ref{fig:document-view-model}, \ref{fig:documents-table-body}
|
||||
@@ -0,0 +1,13 @@
|
||||
\section{Dokumenten-Downloads}
|
||||
\label{sec:downloads}
|
||||
|
||||
% TODO: PBI 9299 (Einzeldownload), PBI 9296 (ZIP-Download)
|
||||
% Streaming: S3 GetObject → ZipArchive → HTTP Response Stream
|
||||
% Abbildung~\ref{fig:zip-download-action}
|
||||
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=0.9\textwidth]{figures/diagrams/zip-stream.pdf}
|
||||
% \caption{ZIP-Download-Ablauf}
|
||||
% \label{fig:zip-stream}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,6 @@
|
||||
\section{Typfilter und Paginierung}
|
||||
\label{sec:filter-pagination}
|
||||
|
||||
% TODO: PBI 9749 (Typfilter), PBI 9731 (Pagination)
|
||||
% ContinuationToken statt Offset-Pagination
|
||||
% Abbildung~\ref{fig:pagination-continuation-token}
|
||||
@@ -0,0 +1,8 @@
|
||||
\section{Ordnerstruktur und Kundenordner-Lookup}
|
||||
\label{sec:folder-management}
|
||||
|
||||
% TODO: PBI 9560 (Ordneranlage beim ersten Seitenaufruf), PBI 10018 (O(1)-Lookup)
|
||||
% OrgSlug: deterministische, S3-konforme Normalisierung des Efecte-Namens (Umlaute bleiben erhalten)
|
||||
% IBM-Naming-Constraints: \cite{ibm-s3-naming}
|
||||
% ResolveCustomerPrefixAsync, Self-Healing-Rename
|
||||
% Abbildung~\ref{fig:org-slug}, \ref{fig:resolve-customer-prefix}, \ref{fig:rename-customer-folder}
|
||||
@@ -0,0 +1,6 @@
|
||||
\section{PDF-Modal-Vorschau und Share-Link-Previews}
|
||||
\label{sec:pdf-preview}
|
||||
|
||||
% TODO: PBI 9300 (PDF-Modal), PBI 9294 (Share-Link-Previews)
|
||||
% Pre-Signed URLs, zeitlich begrenzte Gültigkeit
|
||||
% Abbildung~\ref{fig:presigned-url}
|
||||
@@ -0,0 +1,15 @@
|
||||
\section{Bekannte Grenze: Race Conditions im Lookup}
|
||||
\label{sec:race-conditions}
|
||||
|
||||
% TODO: PBI 10070 — Houston läuft in mehreren Instanzen, In-Memory-Lock reicht nicht
|
||||
% Szenario A: Datenverlust beim parallelen Rename (Rollback löscht Dokumente des Gewinners)
|
||||
% Szenario B: Mandantenvermischung beim gleichzeitigen Anlegen gleicher Efecte-Namen
|
||||
% Lösungsansätze: Rollback-Absicherung, Conditional Writes, verteiltes Lock, prozessuale Migration
|
||||
% Timebox: 4–6 Stunden (Stephan Janßen)
|
||||
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=0.9\textwidth]{figures/diagrams/race-condition-a.pdf}
|
||||
% \caption{Race Condition Szenario A: Datenverlust beim parallelen Rename}
|
||||
% \label{fig:race-condition-a}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Anbindung des S3-Speichers}
|
||||
\label{sec:s3-client}
|
||||
|
||||
% TODO: AWS SDK für .NET, IAmazonS3, keyed services in Program.cs, S3Settings (DEV/TEST/PROD Buckets)
|
||||
% Abbildung~\ref{fig:s3-settings-registration}, \ref{fig:s3-documents-client}
|
||||
@@ -0,0 +1,6 @@
|
||||
\section{Serverseitige Suche}
|
||||
\label{sec:search}
|
||||
|
||||
% TODO: PBI 9298 — Suchleiste, titelbasiert, Teiltreffer, serverseitiges Filtern
|
||||
% S3-API bietet keine direkte Filterung → Houston-seitiger Filter
|
||||
% Abbildung~\ref{fig:document-search}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Dokumenttypen und Icons}
|
||||
\label{sec:type-icons}
|
||||
|
||||
% TODO: PBI 9549 — Typ-Mapping aus Unterordner, .resx-Lokalisierung
|
||||
% Abbildung~\ref{fig:document-type-mapping}, \ref{fig:document-types-resx}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Support für URL-Dateien}
|
||||
\label{sec:url-files}
|
||||
|
||||
% TODO: PBI 9301 — .url-Dateien parsen, Verlinkung beliebiger URLs (Teams, SharePoint)
|
||||
% Abbildung~\ref{fig:url-file-parsing}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Ausgangssituation}
|
||||
\label{sec:initial-situation}
|
||||
|
||||
% TODO: Feature 484 lag 2,5 Jahre im Backlog (Nicole Kimmel, 2023-11-02).
|
||||
% Bisher kein zentraler Dokumentenzugang für Kunden.
|
||||
@@ -0,0 +1,4 @@
|
||||
\section{Beteiligte und Rollen}
|
||||
\label{sec:participants}
|
||||
|
||||
% TODO: Tabelle aus note-1787657238720 (Beteiligte)
|
||||
@@ -0,0 +1,4 @@
|
||||
\section{Projektbeschreibung}
|
||||
\label{sec:project-description}
|
||||
|
||||
% TODO
|
||||
@@ -0,0 +1,7 @@
|
||||
\section{Projektabgrenzung}
|
||||
\label{sec:project-scope}
|
||||
|
||||
% TODO: Out of Scope aus Feature 484:
|
||||
% - Kunde kann Dokumente nicht bearbeiten
|
||||
% - Keine neuen Ordner intern wild anlegen
|
||||
% - Filestash ist externes Admin-UI (kein Houston-Eigenbau)
|
||||
@@ -0,0 +1,12 @@
|
||||
\section{Systemlandschaft}
|
||||
\label{sec:system-landscape}
|
||||
|
||||
% TODO: Houston (ASP.NET Core, Razor Pages) — Efecte — Microsoft Entra ID — S3/StorageGRID — Filestash
|
||||
|
||||
% Diagramm:
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=0.9\textwidth]{figures/diagrams/system-context.pdf}
|
||||
% \caption{Systemkontext}
|
||||
% \label{fig:system-context}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,4 @@
|
||||
\section{Zielsituation}
|
||||
\label{sec:target-situation}
|
||||
|
||||
% TODO: Feature 484 Rev 38 — Dokumentenbereich in Houston, 7 Dokumententypen, S3-Ablage, Filestash als Admin-UI
|
||||
@@ -0,0 +1,14 @@
|
||||
\section{Backlog-Schnitt und Schätzung}
|
||||
\label{sec:backlog}
|
||||
|
||||
% TODO: 14 PBIs + 1 Bug unter Feature 484
|
||||
% Prozess: DoR, DoD, Approval-Team, Sprints 15–17.2026
|
||||
% Siehe Tabelle~\ref{tab:backlog} im Anhang
|
||||
|
||||
% Gantt:
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=\textwidth]{figures/diagrams/gantt-plan.pdf}
|
||||
% \caption{Zeitplanung über Sprints 15–17.2026}
|
||||
% \label{fig:gantt}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,7 @@
|
||||
\section{Feature-Analyse}
|
||||
\label{sec:feature-analysis}
|
||||
|
||||
% TODO: 18.06.2026 — 4 Rückfragen von Linus an Thomas, Antworten im selben Ticket (Feature 484 Rev 17–32)
|
||||
% - Autorisierung via Metadatum: ja
|
||||
% - Filestash als externe Website (kein Custom-UI): ja
|
||||
% - ...
|
||||
@@ -0,0 +1,15 @@
|
||||
\section{Infrastrukturbeschaffung}
|
||||
\label{sec:infrastructure}
|
||||
|
||||
% TODO: Service Requests an Maschinenraum (2026-07-22), Provisionierung durch Advanced Unibyte,
|
||||
% 3 Buckets (DEV/TEST/PROD), Credentials in Passbolt (2026-07-27)
|
||||
% Anfrage S3 Select (2026-07-30), Aktivierung durch AU (2026-08-07)
|
||||
% Search Integration: von AU nicht bereitgestellt (2026-08-17)
|
||||
|
||||
% Timeline-Diagramm:
|
||||
% \begin{figure}[H]
|
||||
% \centering
|
||||
% \includegraphics[width=\textwidth]{figures/diagrams/timeline-infra.pdf}
|
||||
% \caption{Chronologie der Infrastrukturbeschaffung}
|
||||
% \label{fig:timeline-infra}
|
||||
% \end{figure}
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Einarbeitung}
|
||||
\label{sec:onboarding}
|
||||
|
||||
% TODO: S3-API, AWS SDK für .NET, StorageGRID-Dokumentation
|
||||
% Quellen: note-1785344962361 (S3-Recherche mit Timo), note-1785413874041
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Anforderungserhebung}
|
||||
\label{sec:requirements}
|
||||
|
||||
% TODO: Funktionale und nichtfunktionale Anforderungen aus den PBI-ACs
|
||||
% Tabelle: Anforderungsmatrix (funktional / nichtfunktional → PBI)
|
||||
@@ -0,0 +1,4 @@
|
||||
\section{Zeit- und Aufwandsplanung}
|
||||
\label{sec:schedule}
|
||||
|
||||
% TODO: Sprints 15–17.2026, Aufwandsschätzungen (Story Points), 24 Manntage / 192 h gesamt
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Abnahmetest}
|
||||
\label{sec:acceptance-testing}
|
||||
|
||||
% TODO: Maria-Lena Andersz — Sichtbarkeitsproblem des Menüpunkts (2026-08-13)
|
||||
% Rollenzuweisung klären, Bug 10134 (Suchfunktion), finale Abnahme 2026-08-24/25
|
||||
@@ -0,0 +1,7 @@
|
||||
\section{Code-Reviews}
|
||||
\label{sec:code-reviews}
|
||||
|
||||
% TODO: 11 PRs (2154–2196), Reviewer: Timo Walter, Sarah Hinzmann, Robin Noack
|
||||
% Reviewfunde: zentrale Auth über Program.cs, keyed Settings, 403 statt 404,
|
||||
% Slug-Naming-Constraints (IBM-Doku), Fehlerbehandlung statt stiller leerer Seite
|
||||
% Tabelle~\ref{tab:pull-requests} im Anhang
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Releases}
|
||||
\label{sec:releases}
|
||||
|
||||
% TODO: DEV / TEST / PROD je eigener Bucket, Rollenvergabe vor Release
|
||||
% PR 2196 noch aktiv bei Dokumentationsabgabe
|
||||
@@ -0,0 +1,4 @@
|
||||
\section{Teststrategie}
|
||||
\label{sec:test-strategy}
|
||||
|
||||
% TODO: Unit-Tests mit gemocktem IAmazonS3, Abnahmetests durch Maria-Lena Andersz
|
||||
@@ -0,0 +1,6 @@
|
||||
\section{Unit-Tests}
|
||||
\label{sec:unit-tests}
|
||||
|
||||
% TODO: DocumentsServiceTests — gemocktes IAmazonS3
|
||||
% Pfade: Fast-Path, Fallback, Rename, Create, Kollision, Fehlerfall
|
||||
% Abbildung~\ref{fig:documents-service-tests}
|
||||
Reference in New Issue
Block a user