from __future__ import annotations

from typing import Any

from .config import agency_epci_codes, load_scope


def source_catalog() -> dict[str, Any]:
    scope = load_scope()
    return {
        "territory_scope": {
            "id": scope.get("id", "aula"),
            "name": scope.get("name", "Territoire AULA"),
            "epci_codes": agency_epci_codes(),
            "extra_communes": scope.get("extra_communes", []),
        },
        "sources": [
            {
                "id": "api_geo",
                "label": "API Découpage administratif",
                "provider": "Etalab / DINUM",
                "base_url": "https://geo.api.gouv.fr",
                "ready": True,
                "use": ["référentiel communes", "rattachement commune-EPCI", "population administrative API Géo", "contours simples si besoin"],
                "storage": "cache JSON, pas PostGIS obligatoire",
                "refresh": "mensuel ou à chaque changement de périmètre",
            },
            {
                "id": "insee_melodi",
                "label": "INSEE Melodi",
                "provider": "INSEE",
                "base_url": "https://api.insee.fr/melodi",
                "ready": True,
                "use": ["population de référence", "recensement", "données socio-démographiques selon datasets Melodi"],
                "storage": "cache JSON ou CSV filtré au territoire AULA",
                "refresh": "annuel selon millésime INSEE",
                "notes": "Les filtres des jeux de données seront ajustés avec les identifiants Melodi définitifs.",
            },
            {
                "id": "artificialisation",
                "label": "Consommation ENAF / artificialisation",
                "provider": "Cerema / Portail national de l'artificialisation / data.gouv.fr / API Données foncières",
                "dataset_slug": "consommation-despaces-naturels-agricoles-et-forestiers",
                "ready": True,
                "use": ["consommation ENAF", "consommation annuelle", "comparaison EPCI / communes", "trajectoire ZAN"],
                "storage": "CSV filtré au territoire AULA dans data/cache ; API Cerema live possible à la commune",
                "refresh": "à chaque nouveau millésime Cerema",
            },
            {
                "id": "sitadel",
                "label": "Sitadel - autorisations d'urbanisme",
                "provider": "SDES / data.gouv.fr",
                "dataset_slug": "liste-des-permis-de-construire-et-autres-autorisations-durbanisme",
                "ready": True,
                "use": ["logements autorisés", "locaux autorisés", "permis d'aménager", "permis de démolir", "dynamique récente de construction"],
                "storage": "CSV filtré au territoire AULA dans data/cache",
                "refresh": "mensuel",
            },
            {
                "id": "georisques",
                "label": "Géorisques",
                "provider": "Ministère de la Transition écologique / BRGM",
                "base_url": "https://www.georisques.gouv.fr/api/v1",
                "ready": True,
                "use": ["risques par commune", "PPRN", "PPRT", "PPRM", "catastrophes naturelles", "AZI"],
                "storage": "cache JSON ; les croisements bâtiment-zone restent à faire dans PostGIS si précision parcellaire",
                "refresh": "trimestriel ou à la demande",
            },
            {
                "id": "sirene_optional",
                "label": "SIRENE",
                "provider": "INSEE",
                "base_url": "https://api.insee.fr/api-sirene",
                "ready": "optionnel",
                "use": ["établissements", "économie", "activités", "contexte territorial"],
                "storage": "cache ou téléchargement stock ; non prioritaire pour le POC foncier",
                "refresh": "mensuel ou trimestriel si utilisé",
            },
        ],
    }
