"""Konfiguration für die Zuordnung von Platzhaltern zu Metadaten-Pfaden.

Alle Platzhalter haben eindeutige Präfixe pro Kapitel:
  META_   = Kapitel 1 (Metadaten)
  KONTAKT_= Kapitel 2 (Ansprechpartner)
  BIZ_    = Kapitel 3 (Business-Kontext)
  KPI_    = Kapitel 4 (KPIs)
  GLOSSAR_= Kapitel 4.3 (Glossar)
  DS_     = Kapitel 5 (Datenquellen)
  PQ_     = Kapitel 6.1 (Power Query Übersicht)
  PQT_    = Kapitel 6.2 (Transformationsschritte)
  PARAM_  = Kapitel 6.3 (Parameter)
  COL_    = Kapitel 6.4 (Spalten)
  MODELL_ = Kapitel 7 (Modell)
  DAX_    = Kapitel 7.3 (Measures)
  RLS_    = Kapitel 8.1 (Rollen)
  SEC_    = Kapitel 8 (Sicherheit)
  REFRESH_= Kapitel 9.1 (Refresh)
  OPS_    = Kapitel 9 (Betrieb)
  ENDORSEMENT_ = Kapitel 10 (Endorsement)
  VER_    = Kapitel 11 (Versionierung)
  LOG_    = Kapitel 11.2 (Changelog)
  REVIEW_ = Kapitel 12 (Freigabe)
"""

# ---------------------------------------------------------------------------
# Zuordnungsregeln: Platzhalter-Name → Metadaten-Pfad
# ---------------------------------------------------------------------------

MAPPING_RULES: dict[str, str] = {
    # Kapitel 1: Metadaten
    "META_ReportName": "report_name",

    # Kapitel 5: Datenquellen (Tabellen-Expansion)
    "DS_Quelle": "data_sources[*].name",
    "DS_System": "data_sources[*].source_type",
    "DS_SchemaTabellen": "data_sources[*].tables",
    "DS_Owner": "data_sources[*].name",

    # Kapitel 6.1: Power Query Übersicht (Tabellen-Expansion)
    "PQ_Name": "power_queries[*].name",
    "PQ_Quelle": "power_queries[*].source",
    "PQ_ZielTabelle": "power_queries[*].target_table",
    "PQ_Beschreibung": "power_queries[*].description",

    # Kapitel 6.2: Transformationsschritte (Tabellen-Expansion)
    "PQT_Abfrage": "power_queries[*].name",
    "PQT_MCode": "power_queries[*].m_expression",
    "PQT_Schrittname": "power_queries[*].name",

    # Kapitel 6.4: Spalten (Tabellen-Expansion)
    "COL_Abfrage": "columns[*].table_name",
    "COL_Spalte": "columns[*].name",
    "COL_QuellTyp": "columns[*].data_type",
    "COL_ZielTyp": "columns[*].data_type",

    # Kapitel 7: Modell
    "MODELL_DatasetName": "report_name",
    "MODELL_BerichtName": "report_name",

    # Kapitel 7.2: Abhängige Berichte (Tabellen-Expansion)
    "DEP_BerichtName": "dependent_reports[*].name",
    "DEP_BerichtID": "dependent_reports[*].report_id",
    "DEP_BerichtURL": "dependent_reports[*].web_url",

    # Kapitel 7.3: Tabellentypen (Tabellen-Expansion)
    "TBLTYP_Tabelle": "tables[*].name",
    "TBLTYP_Typ": "tables[*].table_type",
    "TBLTYP_Beschreibung": "tables[*].description",

    # Kapitel 7.2: Beziehungen (Tabellen-Expansion)
    "REL_Von": "relationships[*].from_table",
    "REL_Nach": "relationships[*].to_table",
    "REL_Kardinalität": "relationships[*].cardinality",
    "REL_Kreuzfilter": "relationships[*].cross_filter",
    "REL_Aktiv": "relationships[*].is_active",

    # Kapitel 7.3: Measures (Tabellen-Expansion)
    "DAX_Measure": "measures[*].name",
    "DAX_Beschreibung": "measures[*].description",
    "DAX_Formel": "measures[*].expression",

    # Kapitel 8.1: RLS-Rollen (Tabellen-Expansion)
    "RLS_Rolle": "rls_roles[*].name",
    "RLS_Beschreibung": "rls_roles[*].description",
    "RLS_Tabelle": "rls_roles[*].filter_expressions",
    "RLS_FilterLogik": "rls_roles[*].filter_expressions",

    # Kapitel 9.1: Refresh
    "REFRESH_Frequenz": "refresh_schedule.frequency",
    "REFRESH_Uhrzeit": "refresh_schedule.times",

    # Kapitel 10: Endorsement (automatisch vom EndorsementAnalyzer befüllt)
    "ENDORSEMENT_Analyse": "endorsement_analysis",
}


# ---------------------------------------------------------------------------
# Platzhalter, die IMMER manuell eingegeben werden müssen
# ---------------------------------------------------------------------------

ALWAYS_MANUAL: list[str] = [
    # Kapitel 1
    "META_Kurzbeschreibung",
    "META_Fachbereich",
    "META_Konzerndomäne",
    "META_ProduktivDatum",
    "META_Version",
    "META_LetzteAktualisierung",
    # Kapitel 2
    "KONTAKT_BusinessOwner",
    "KONTAKT_BusinessOwnerMail",
    "KONTAKT_TechOwner",
    "KONTAKT_TechOwnerMail",
    "KONTAKT_DataSteward",
    "KONTAKT_DataStewardMail",
    "KONTAKT_Betrieb",
    "KONTAKT_BetriebMail",
    # Kapitel 3
    "BIZ_Zielsetzung",
    "BIZ_Anwendungsfall",
    "BIZ_Abhängigkeiten",
    # Kapitel 4
    "KPI_Name",
    "KPI_Beschreibung",
    "KPI_Definition",
    "GLOSSAR_Begriff",
    "GLOSSAR_Definition",
    # Kapitel 5 (manuelle Felder)
    "DS_Detailbeschreibung",
    "DS_PipelineReferenz",
    # Kapitel 6 (manuelle Felder)
    "PQ_ServiceHinweis",
    "PARAM_Name",
    "PARAM_Beschreibung",
    "PARAM_Standardwert",
    "PQ_NullHandling",
    "PQ_ErrorHandling",
    "PQ_Validierungsregeln",
    "PQ_QueryFolding",
    "PQ_PerformanceHinweise",
    "PQ_Optimierungen",
    # Kapitel 7
    "MODELL_AppName",
    "MODELL_CalcBeschreibung",
    # Kapitel 8
    "SEC_RLSBeschreibung",
    "SEC_OLSBeschreibung",
    "SEC_Labels",
    "SEC_Risiken",
    # Kapitel 9
    "REFRESH_Typ",
    "REFRESH_Jobs",
    "OPS_Monitoring",
    "OPS_BekannteProbleme",
    # Kapitel 10
    "VER_Repository",
    "LOG_Version",
    "LOG_Datum",
    "LOG_Änderung",
    "LOG_AlterWert",
    "LOG_NeuerWert",
    "LOG_Typ",
    "LOG_Autor",
    # Kapitel 11
    "REVIEW_FachName",
    "REVIEW_FachDatum",
    "REVIEW_FachKommentar",
    "REVIEW_TechName",
    "REVIEW_TechDatum",
    "REVIEW_TechKommentar",
]


# ---------------------------------------------------------------------------
# Verfügbarkeitsmatrix
# ---------------------------------------------------------------------------

AVAILABILITY_MATRIX: dict[str, list[str]] = {
    "fabric": [
        "report_name",
        "tables",
        "columns",
        "measures",
        "relationships",
        "data_sources",
        "power_queries",
        "rls_roles",
        "refresh_schedule",
        "dependent_reports",
        "endorsement_analysis",
    ],
    "local": [
        "report_name",
        "tables",
        "columns",
        "measures",
        "relationships",
        "data_sources",
        "power_queries",
        "rls_roles",
        "endorsement_analysis",
    ],
    "pbip": [
        "report_name",
        "tables",
        "columns",
        "measures",
        "relationships",
        "data_sources",
        "power_queries",
        "rls_roles",
        "visuals",
        "endorsement_analysis",
    ],
}
