M8 Abschlussdokumentation und Betriebsdoku final geschärft
This commit is contained in:
@@ -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 {
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 >= 1)
|
||||
* @since M3-AP-001
|
||||
*/
|
||||
public record PdfExtractionSuccess(
|
||||
String extractedText,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
/**
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 >= 0 (may be 0; content evaluation happens in AP-004)
|
||||
* @param fileSizeBytes must be >= 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 < 0
|
||||
|
||||
@@ -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) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user