1
0

M8 Abschlussdokumentation und Betriebsdoku final geschärft

This commit is contained in:
2026-04-08 17:09:53 +02:00
parent d61316c699
commit 03689802dd
26 changed files with 75 additions and 118 deletions

View File

@@ -19,8 +19,6 @@ import java.util.Objects;
* <p>
* This context is independent of individual document processing and contains
* no business logic. It is purely a technical container for run identity and timing.
*
* @since M2-AP-003
*/
public final class BatchRunContext {

View File

@@ -9,7 +9,7 @@ import java.util.Objects;
* key for all subsequent persistence lookups and history entries. It is independent of
* the file name, path, or any metadata — only the raw file content determines the value.
* <p>
* <strong>Identification semantics (M4):</strong>
* <strong>Identification semantics:</strong>
* <ul>
* <li>Two files with identical content have the same fingerprint and are treated as
* the same document, regardless of their location or name.</li>
@@ -29,7 +29,6 @@ import java.util.Objects;
*
* @param sha256Hex lowercase hex encoding of the SHA-256 digest (exactly 64 characters,
* characters {@code [0-9a-f]})
* @since M4-AP-001
*/
public record DocumentFingerprint(String sha256Hex) {

View File

@@ -15,7 +15,6 @@ import java.util.Objects;
* (unless the source file is modified and re-scanned in a later run).
*
* @param reason a human-readable explanation of why extraction failed (non-null, non-empty)
* @since M3-AP-001
*/
public record PdfExtractionContentError(
String reason

View File

@@ -18,8 +18,6 @@ package de.gecheckt.pdf.umbenenner.domain.model;
* <li>Distinct error types: allows retry logic to differentiate recoverable from non-recoverable</li>
* <li>No PDFBox or filesystem types: pure domain representation</li>
* </ul>
*
* @since M3-AP-001
*/
public sealed interface PdfExtractionResult
permits PdfExtractionSuccess, PdfExtractionContentError, PdfExtractionTechnicalError {

View File

@@ -10,7 +10,6 @@ import java.util.Objects;
*
* @param extractedText the full text content extracted from the PDF (non-null, may be empty string)
* @param pageCount the number of pages in the PDF (non-null, validated &gt;= 1)
* @since M3-AP-001
*/
public record PdfExtractionSuccess(
String extractedText,

View File

@@ -13,7 +13,6 @@ import java.util.Objects;
*
* @param errorMessage a description of what went wrong (non-null, non-empty)
* @param cause the underlying exception, if any (may be null)
* @since M3-AP-001
*/
public record PdfExtractionTechnicalError(
String errorMessage,

View File

@@ -13,8 +13,6 @@ package de.gecheckt.pdf.umbenenner.domain.model;
* <li>Self-documenting: {@code PdfPageCount} is clearer than naked {@code int}</li>
* <li>Future-extensible: can add validation rules per milestone without signature changes</li>
* </ul>
*
* @since M3-AP-001
*/
public record PdfPageCount(int value) {
/**

View File

@@ -17,8 +17,6 @@ import java.util.Objects;
* RunId is intentionally simple: a non-null, immutable string value.
* Implementations may choose UUID format, timestamp-based IDs, or sequential IDs.
* The internal structure is opaque to consumers.
*
* @since M2-AP-003
*/
public final class RunId implements Serializable {

View File

@@ -16,14 +16,13 @@ import java.util.Objects;
* Fields:
* <ul>
* <li>{@code uniqueIdentifier} — human-readable name for logging and correlation (e.g. filename)</li>
* <li>{@code fileSizeBytes} — file size for metadata and tracing; may be zero for empty files (content evaluation happens later in AP-004)</li>
* <li>{@code fileSizeBytes} — file size for metadata and tracing; may be zero for empty files (content evaluation happens during processing)</li>
* <li>{@code locator} — opaque reference passed through unchanged to the extraction adapter;
* Domain and Application never interpret its value</li>
* </ul>
* <p>
* No java.io.File or java.nio.file.Path references appear in this record.
*
* @since M3-AP-001
*/
public record SourceDocumentCandidate(
String uniqueIdentifier,
@@ -36,12 +35,12 @@ public record SourceDocumentCandidate(
* Ensures all parameters are non-null and meaningful:
* <ul>
* <li>{@code uniqueIdentifier} must be non-null and non-empty</li>
* <li>{@code fileSizeBytes} must be non-negative (may be zero for empty files; content evaluation is AP-004)</li>
* <li>{@code fileSizeBytes} must be non-negative (may be zero for empty files; content evaluation happens during processing)</li>
* <li>{@code locator} must be non-null</li>
* </ul>
*
* @param uniqueIdentifier non-null, non-empty identifier for logging and correlation
* @param fileSizeBytes must be &gt;= 0 (may be 0; content evaluation happens in AP-004)
* @param fileSizeBytes must be &gt;= 0 (may be 0; content evaluation happens during processing)
* @param locator non-null opaque locator; only adapters interpret its value
* @throws NullPointerException if uniqueIdentifier or locator is null
* @throws IllegalArgumentException if uniqueIdentifier is empty or fileSizeBytes &lt; 0

View File

@@ -24,8 +24,6 @@ import java.util.Objects;
* Coupling: Both the scan adapter and the extraction adapter live in the same
* {@code adapter-out} module and share the same encoding convention for the value.
* This is an intentional intra-adapter contract, not a cross-layer concern.
*
* @since M3-AP-001
*/
public record SourceDocumentLocator(String value) {