package de.gecheckt.pdf.umbenenner.domain.model;

/**
 * Enumeration of valid sources for a resolved document date.
 * <p>
 * Each enum constant represents a specific origin or determination method for the date
 * used in a naming proposal. The source is recorded for traceability.
 * <p>
 * <strong>Semantics:</strong>
 * <ul>
 *   <li>{@link #AI_PROVIDED} — the date was supplied by the AI in its response
 *       as a valid {@code YYYY-MM-DD} string.</li>
 *   <li>{@link #FALLBACK_CURRENT} — the date was set to the current system date
 *       (from {@code ClockPort}) because the AI did not provide a usable date.</li>
 * </ul>
 * <p>
 * The source is recorded in the processing attempt history for reproducibility
 * and operational transparency.
 *
 */
public enum DateSource {

    /**
     * The date was provided by the AI in its JSON response.
     * <p>
     * The AI explicitly supplied a {@code date} field in valid {@code YYYY-MM-DD} format.
     */
    AI_PROVIDED,

    /**
     * The date is the current system date used as fallback.
     * <p>
     * The AI either omitted the {@code date} field or provided no usable date.
     * The application set the fallback to the current date from {@code ClockPort}.
     */
    FALLBACK_CURRENT
}
