"""
Stabiler URL-Hash für den NotebookLM-Kurator Idempotenz-Index.

Funktion:
    url_hash(normalized_url) -> str   — SHA-256-Hexdigest (64 Zeichen)
"""

import hashlib


def url_hash(normalized_url: str) -> str:
    """
    Gibt den SHA-256-Hexdigest der normalisierten URL zurück.

    Der Input wird als UTF-8 enkodiert. Das Ergebnis ist deterministisch
    und dient als stabiler Schlüssel im Idempotenz-Index.

    Args:
        normalized_url: Eine bereits normalisierte URL (Ausgabe von normalize()).

    Returns:
        64-stelliger Hexadezimal-String (SHA-256).
    """
    return hashlib.sha256(normalized_url.encode("utf-8")).hexdigest()
