"""
Einheitliche Startzeit-Normalisierung für Aktivität (CSV, Legacy-Import, Dedupe).

Anbieter-agnostisch: beliebige ISO-/Export-Strings über dateutil.
"""
from __future__ import annotations

from datetime import time as dt_time
from typing import Optional

from dateutil import parser as du_parser


def normalize_activity_start(start_raw: str) -> tuple[str, Optional[dt_time]]:
    """
    Roh-String „Start“ aus Exporten → (YYYY-MM-DD, TIME ohne μs) für DB Dedupe/INSERT.

    Leerer Input → ("", None). Fallback bei Parse-Fehler: erstes Datum aus ersten 10 Zeichen.
    """
    s = (start_raw or "").strip()
    if not s:
        return "", None
    try:
        parsed = du_parser.parse(s, dayfirst=False)
        t = parsed.time().replace(microsecond=0)
        return parsed.date().isoformat(), t
    except (ValueError, TypeError, OverflowError):
        if len(s) >= 10:
            return s[:10], None
        return "", None
