{
    "ok": true,
    "generated_at": "2026-07-07T22:16:00+00:00",
    "summary": "Tableau de readiness des normalisations Winerix : verifie inputs, outputs et schemas sans lancer de script ni valider les imports DB.",
    "readiness_summary": {
        "step_count": 11,
        "ready_to_run_count": 2,
        "normalized_file_available_count": 4,
        "missing_input_count": 5,
        "status_counts": {
            "missing_input": 5,
            "ready_to_run": 2,
            "normalized_file_available": 4
        },
        "next_ready_source": "insee_tourism_occupancy",
        "top_missing_input": "sources/sirene-stock-etablissements.csv"
    },
    "rows": [
        {
            "source_key": "sirene_wine_establishments",
            "priority": 1,
            "label": "Sirene etablissements vin",
            "status": "missing_input",
            "status_label": "Input manquant",
            "input": {
                "path": "sources/sirene-stock-etablissements.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "output": {
                "path": "sources/sirene-wine-establishments-normalized.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/sirene-wine-establishments-normalized.schema.csv",
                "exists": true,
                "size_bytes": 1300,
                "updated_at": "2026-07-06T09:42:04+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_sirene_wine_establishments.php",
            "unlocks": "Densite business vin, agregats par commune/NAF, rapprochements BAN/HVE.",
            "gate": "Stock Sirene present localement ; publier agregats avant tout nominatif.",
            "caveat": "Donnees nominatives : RGPD/metier avant listing public.",
            "next_action": "Remplir ou telecharger le fichier input attendu."
        },
        {
            "source_key": "ban_address_reference",
            "priority": 2,
            "label": "BAN qualite adresse",
            "status": "missing_input",
            "status_label": "Input manquant",
            "input": {
                "path": "sources/ban-address-quality-input.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "output": {
                "path": "sources/ban-address-quality.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/ban-address-quality.schema.csv",
                "exists": true,
                "size_bytes": 1071,
                "updated_at": "2026-07-06T09:41:52+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_ban_address_quality.php",
            "unlocks": "Cartes fiables, score adresse, isolation des lieux a relire.",
            "gate": "Export lieux Winerix rempli avec adresses, communes, coordonnees ou scores BAN.",
            "caveat": "Adresse geocodee ne prouve pas ouverture au public ni frequentation.",
            "next_action": "Remplir ou telecharger le fichier input attendu."
        },
        {
            "source_key": "insee_tourism_occupancy",
            "priority": 3,
            "label": "Insee frequentation hebergements touristiques",
            "status": "ready_to_run",
            "status_label": "Pret a lancer",
            "input": {
                "path": "sources/insee-tourism-occupancy.zip",
                "exists": true,
                "size_bytes": 1402487,
                "updated_at": "2026-07-06T09:41:59+00:00",
                "is_remote": false
            },
            "output": {
                "path": "sources/insee-tourism-occupancy-normalized.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/insee-tourism-occupancy.schema.csv",
                "exists": true,
                "size_bytes": 930,
                "updated_at": "2026-07-06T09:41:59+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_insee_tourism_occupancy.php",
            "unlocks": "Demande touristique officielle, benchmarks offre/demande, contexte nuitees/arrivees/occupation.",
            "gate": "Archive Insee presente ; respecter niveaux geo, unites et confidentialite.",
            "caveat": "Demande hebergements generale, pas attribution oenotouristique directe.",
            "next_action": "Lancer la commande de normalisation puis relire le CSV produit."
        },
        {
            "source_key": "qualite_tourisme_establishments",
            "priority": 3,
            "label": "Qualite Tourisme etablissements",
            "status": "normalized_file_available",
            "status_label": "CSV normalise present",
            "input": {
                "path": "sources/qualite-tourisme-establishments.csv",
                "exists": true,
                "size_bytes": 1329982,
                "updated_at": "2026-07-06T09:41:59+00:00",
                "is_remote": false
            },
            "output": {
                "path": "sources/qualite-tourisme-establishments-normalized.csv",
                "exists": true,
                "size_bytes": 446567,
                "updated_at": "2026-07-06T09:41:59+00:00",
                "is_remote": false
            },
            "schema": {
                "path": "sources/qualite-tourisme-establishments.schema.csv",
                "exists": true,
                "size_bytes": 766,
                "updated_at": "2026-07-06T09:41:59+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_qualite_tourisme_establishments.php",
            "unlocks": "Signal qualite accueil, carte qualite, rapprochements DATAtourisme/V&D.",
            "gate": "CSV officiel present ; lien vin a relire ou a deduire par rapprochement source.",
            "caveat": "Label accueil/prestations, pas frequentation ni preuve oenotouristique directe.",
            "next_action": "Verifier qualite metier puis importer ou raccorder aux scores."
        },
        {
            "source_key": "hve_certified_estates",
            "priority": 3,
            "label": "Exploitations certifiees HVE",
            "status": "normalized_file_available",
            "status_label": "CSV normalise present",
            "input": {
                "path": "sources/hve-certified-estates.csv",
                "exists": true,
                "size_bytes": 3240226,
                "updated_at": "2026-07-06T09:41:57+00:00",
                "is_remote": false
            },
            "output": {
                "path": "sources/hve-certified-estates-normalized.csv",
                "exists": true,
                "size_bytes": 25499226,
                "updated_at": "2026-07-06T09:41:59+00:00",
                "is_remote": false
            },
            "schema": {
                "path": "sources/hve-certified-estates-normalized.schema.csv",
                "exists": true,
                "size_bytes": 1492,
                "updated_at": "2026-07-06T09:41:57+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_hve_certified_estates.php",
            "unlocks": "Signal durabilite territorial, rapprochements domaines/Sirene/BAN.",
            "gate": "CSV officiel HVE present ; relire le filtrage vin textuel avant publication forte.",
            "caveat": "Annuaire volontaire : absence du fichier ne prouve pas absence de certification.",
            "next_action": "Verifier qualite metier puis importer ou raccorder aux scores."
        },
        {
            "source_key": "bnsc_bike_parking",
            "priority": 4,
            "label": "BNSC stationnement cyclable",
            "status": "ready_to_run",
            "status_label": "Pret a lancer",
            "input": {
                "path": "sources/bnsc-bike-parking.zip",
                "exists": true,
                "size_bytes": 8631596,
                "updated_at": "2026-07-06T09:41:53+00:00",
                "is_remote": false
            },
            "output": {
                "path": "sources/bnsc-bike-parking-normalized.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/bnsc-bike-parking.schema.csv",
                "exists": true,
                "size_bytes": 807,
                "updated_at": "2026-07-06T09:41:52+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_bnsc_bike_parking.php",
            "unlocks": "Mobilite douce par commune, capacite stationnement velo, carte accessibilite velo caveatee.",
            "gate": "ZIP BNSC present ; respecter attribution OSM/ODbL et signal non exhaustif.",
            "caveat": "Source OSM contributive : ne pas presenter comme label Accueil Velo ni frequentation.",
            "next_action": "Lancer la commande de normalisation puis relire le CSV produit."
        },
        {
            "source_key": "agencebio_organic_wine",
            "priority": 4,
            "label": "Agence Bio operateurs bio vin",
            "status": "normalized_file_available",
            "status_label": "CSV normalise present",
            "input": {
                "path": "sources/agencebio-professionnels-bio.csv",
                "exists": true,
                "size_bytes": 8489986,
                "updated_at": "2026-07-06T09:41:51+00:00",
                "is_remote": false
            },
            "output": {
                "path": "sources/agencebio-organic-wine-operators-normalized.csv",
                "exists": true,
                "size_bytes": 2993223,
                "updated_at": "2026-07-06T09:41:51+00:00",
                "is_remote": false
            },
            "schema": {
                "path": "sources/agencebio-organic-wine.schema.csv",
                "exists": true,
                "size_bytes": 863,
                "updated_at": "2026-07-06T09:41:50+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_agencebio_organic_wine.php",
            "unlocks": "Signal bio vin officiel, agregats par territoire, rapprochements SIRET/Sirene/BAN.",
            "gate": "CSV operateurs bio present ; filtrage vin textuel et publication en agregat avant nominatif.",
            "caveat": "Annuaire declaratif valide par certificateurs ; groupe culture VI requis pour les surfaces bio viticoles.",
            "next_action": "Verifier qualite metier puis importer ou raccorder aux scores."
        },
        {
            "source_key": "agencebio_organic_viticulture_surfaces",
            "priority": 5,
            "label": "Agence Bio surfaces viticoles bio communales",
            "status": "normalized_file_available",
            "status_label": "CSV normalise present",
            "input": {
                "path": "https://www.data.gouv.fr/api/1/datasets/r/801d6a5a-bca8-4048-a559-e052e8f288aa",
                "exists": true,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": true
            },
            "output": {
                "path": "sources/agencebio-organic-viticulture-surfaces-normalized.csv",
                "exists": true,
                "size_bytes": 49072300,
                "updated_at": "2026-07-06T09:41:54+00:00",
                "is_remote": false
            },
            "schema": {
                "path": "sources/agencebio-organic-viticulture-surfaces.schema.csv",
                "exists": true,
                "size_bytes": 1150,
                "updated_at": "2026-07-06T09:41:50+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_agencebio_organic_viticulture_surfaces.php",
            "unlocks": "Surfaces viticoles bio/conversion par commune, agregats territoire, score bio vin plus robuste.",
            "gate": "Flux CSV Agence Bio surfaces production accessible ; filtrer code_groupe=VI et publier en agregat.",
            "caveat": "VI correspond a la viticulture et inclut une faible part de raisin de table.",
            "next_action": "Verifier qualite metier puis importer ou raccorder aux scores."
        },
        {
            "source_key": "franceagrimer_bulk_prices",
            "priority": 6,
            "label": "FranceAgriMer prix vrac",
            "status": "missing_input",
            "status_label": "Input manquant",
            "input": {
                "path": "sources/franceagrimer-prices-input.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "output": {
                "path": "sources/franceagrimer-prices.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/franceagrimer-prices.schema.csv",
                "exists": true,
                "size_bytes": 967,
                "updated_at": "2026-07-06T09:41:56+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_franceagrimer_bulk_prices.php",
            "unlocks": "Contexte prix marche, mini tendances, cartes marche caveatees.",
            "gate": "Export manuel Visionet rempli et prix controles.",
            "caveat": "Prix France/segment large, pas prix appellation/local par defaut.",
            "next_action": "Remplir ou telecharger le fichier input attendu."
        },
        {
            "source_key": "dgddi_vitivinicole_stocks_harvests",
            "priority": 7,
            "label": "DGDDI recoltes et stocks",
            "status": "missing_input",
            "status_label": "Input manquant",
            "input": {
                "path": "sources/dgddi-vitivinicole-stocks-harvests-input.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "output": {
                "path": "sources/dgddi-vitivinicole-stocks-harvests.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/dgddi-vitivinicole-stocks-harvests.schema.csv",
                "exists": true,
                "size_bytes": 1109,
                "updated_at": "2026-07-06T09:41:55+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_dgddi_vitivinicole_supply.php",
            "unlocks": "Contexte offre vitivinicole, surfaces, recoltes, stocks, declarations.",
            "gate": "XLS historiques convertis/remplis dans le template ; verifier DataDouane pour donnees recentes.",
            "caveat": "Jeu historique : ne pas publier comme conjoncture recente sans controle.",
            "next_action": "Remplir ou telecharger le fichier input attendu."
        },
        {
            "source_key": "agreste_vineyard_land_values",
            "priority": 8,
            "label": "Agreste valeur venale vignes",
            "status": "missing_input",
            "status_label": "Input manquant",
            "input": {
                "path": "sources/agreste-vineyard-land-values-input.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "output": {
                "path": "sources/agreste-vineyard-land-values.csv",
                "exists": false,
                "size_bytes": 0,
                "updated_at": null,
                "is_remote": false
            },
            "schema": {
                "path": "sources/agreste-vineyard-land-values.schema.csv",
                "exists": true,
                "size_bytes": 1052,
                "updated_at": "2026-07-06T09:41:50+00:00",
                "is_remote": false
            },
            "command": "php scripts/normalize_agreste_vineyard_land_values.php",
            "unlocks": "Contexte foncier, rarete, attractivite, slide investisseur.",
            "gate": "Lignes vignes isolees et prix moyen/min/max EUR/ha relus.",
            "caveat": "Valeurs SAFER lissees : pas transaction brute ni expertise fonciere.",
            "next_action": "Remplir ou telecharger le fichier input attendu."
        }
    ],
    "copy_markdown": "# Reference Normalization Readiness\n\nTableau de readiness des normalisations Winerix : verifie inputs, outputs et schemas sans lancer de script ni valider les imports DB.\n\n## Synthese\n- Etapes : 11\n- Pretes a lancer : 2\n- CSV normalises presents : 4\n- Inputs manquants : 5\n- Prochaine source prete : insee_tourism_occupancy\n- Premier input manquant : sources/sirene-stock-etablissements.csv\n\n## Sources\n\n### P1 - Sirene etablissements vin\n- Statut : Input manquant (`missing_input`)\n- Input : `sources/sirene-stock-etablissements.csv` - manquant\n- Output : `sources/sirene-wine-establishments-normalized.csv` - manquant\n- Schema : `sources/sirene-wine-establishments-normalized.schema.csv` - present\n- Commande : `php scripts/normalize_sirene_wine_establishments.php`\n- Debloque : Densite business vin, agregats par commune/NAF, rapprochements BAN/HVE.\n- Prochaine action : Remplir ou telecharger le fichier input attendu.\n- Caveat : Donnees nominatives : RGPD/metier avant listing public.\n\n### P2 - BAN qualite adresse\n- Statut : Input manquant (`missing_input`)\n- Input : `sources/ban-address-quality-input.csv` - manquant\n- Output : `sources/ban-address-quality.csv` - manquant\n- Schema : `sources/ban-address-quality.schema.csv` - present\n- Commande : `php scripts/normalize_ban_address_quality.php`\n- Debloque : Cartes fiables, score adresse, isolation des lieux a relire.\n- Prochaine action : Remplir ou telecharger le fichier input attendu.\n- Caveat : Adresse geocodee ne prouve pas ouverture au public ni frequentation.\n\n### P3 - Insee frequentation hebergements touristiques\n- Statut : Pret a lancer (`ready_to_run`)\n- Input : `sources/insee-tourism-occupancy.zip` - present\n- Output : `sources/insee-tourism-occupancy-normalized.csv` - manquant\n- Schema : `sources/insee-tourism-occupancy.schema.csv` - present\n- Commande : `php scripts/normalize_insee_tourism_occupancy.php`\n- Debloque : Demande touristique officielle, benchmarks offre/demande, contexte nuitees/arrivees/occupation.\n- Prochaine action : Lancer la commande de normalisation puis relire le CSV produit.\n- Caveat : Demande hebergements generale, pas attribution oenotouristique directe.\n\n### P3 - Qualite Tourisme etablissements\n- Statut : CSV normalise present (`normalized_file_available`)\n- Input : `sources/qualite-tourisme-establishments.csv` - present\n- Output : `sources/qualite-tourisme-establishments-normalized.csv` - present\n- Schema : `sources/qualite-tourisme-establishments.schema.csv` - present\n- Commande : `php scripts/normalize_qualite_tourisme_establishments.php`\n- Debloque : Signal qualite accueil, carte qualite, rapprochements DATAtourisme/V&D.\n- Prochaine action : Verifier qualite metier puis importer ou raccorder aux scores.\n- Caveat : Label accueil/prestations, pas frequentation ni preuve oenotouristique directe.\n\n### P3 - Exploitations certifiees HVE\n- Statut : CSV normalise present (`normalized_file_available`)\n- Input : `sources/hve-certified-estates.csv` - present\n- Output : `sources/hve-certified-estates-normalized.csv` - present\n- Schema : `sources/hve-certified-estates-normalized.schema.csv` - present\n- Commande : `php scripts/normalize_hve_certified_estates.php`\n- Debloque : Signal durabilite territorial, rapprochements domaines/Sirene/BAN.\n- Prochaine action : Verifier qualite metier puis importer ou raccorder aux scores.\n- Caveat : Annuaire volontaire : absence du fichier ne prouve pas absence de certification.\n\n### P4 - BNSC stationnement cyclable\n- Statut : Pret a lancer (`ready_to_run`)\n- Input : `sources/bnsc-bike-parking.zip` - present\n- Output : `sources/bnsc-bike-parking-normalized.csv` - manquant\n- Schema : `sources/bnsc-bike-parking.schema.csv` - present\n- Commande : `php scripts/normalize_bnsc_bike_parking.php`\n- Debloque : Mobilite douce par commune, capacite stationnement velo, carte accessibilite velo caveatee.\n- Prochaine action : Lancer la commande de normalisation puis relire le CSV produit.\n- Caveat : Source OSM contributive : ne pas presenter comme label Accueil Velo ni frequentation.\n\n### P4 - Agence Bio operateurs bio vin\n- Statut : CSV normalise present (`normalized_file_available`)\n- Input : `sources/agencebio-professionnels-bio.csv` - present\n- Output : `sources/agencebio-organic-wine-operators-normalized.csv` - present\n- Schema : `sources/agencebio-organic-wine.schema.csv` - present\n- Commande : `php scripts/normalize_agencebio_organic_wine.php`\n- Debloque : Signal bio vin officiel, agregats par territoire, rapprochements SIRET/Sirene/BAN.\n- Prochaine action : Verifier qualite metier puis importer ou raccorder aux scores.\n- Caveat : Annuaire declaratif valide par certificateurs ; groupe culture VI requis pour les surfaces bio viticoles.\n\n### P5 - Agence Bio surfaces viticoles bio communales\n- Statut : CSV normalise present (`normalized_file_available`)\n- Input : `https://www.data.gouv.fr/api/1/datasets/r/801d6a5a-bca8-4048-a559-e052e8f288aa` - present\n- Output : `sources/agencebio-organic-viticulture-surfaces-normalized.csv` - present\n- Schema : `sources/agencebio-organic-viticulture-surfaces.schema.csv` - present\n- Commande : `php scripts/normalize_agencebio_organic_viticulture_surfaces.php`\n- Debloque : Surfaces viticoles bio/conversion par commune, agregats territoire, score bio vin plus robuste.\n- Prochaine action : Verifier qualite metier puis importer ou raccorder aux scores.\n- Caveat : VI correspond a la viticulture et inclut une faible part de raisin de table.\n\n### P6 - FranceAgriMer prix vrac\n- Statut : Input manquant (`missing_input`)\n- Input : `sources/franceagrimer-prices-input.csv` - manquant\n- Output : `sources/franceagrimer-prices.csv` - manquant\n- Schema : `sources/franceagrimer-prices.schema.csv` - present\n- Commande : `php scripts/normalize_franceagrimer_bulk_prices.php`\n- Debloque : Contexte prix marche, mini tendances, cartes marche caveatees.\n- Prochaine action : Remplir ou telecharger le fichier input attendu.\n- Caveat : Prix France/segment large, pas prix appellation/local par defaut.\n\n### P7 - DGDDI recoltes et stocks\n- Statut : Input manquant (`missing_input`)\n- Input : `sources/dgddi-vitivinicole-stocks-harvests-input.csv` - manquant\n- Output : `sources/dgddi-vitivinicole-stocks-harvests.csv` - manquant\n- Schema : `sources/dgddi-vitivinicole-stocks-harvests.schema.csv` - present\n- Commande : `php scripts/normalize_dgddi_vitivinicole_supply.php`\n- Debloque : Contexte offre vitivinicole, surfaces, recoltes, stocks, declarations.\n- Prochaine action : Remplir ou telecharger le fichier input attendu.\n- Caveat : Jeu historique : ne pas publier comme conjoncture recente sans controle.\n\n### P8 - Agreste valeur venale vignes\n- Statut : Input manquant (`missing_input`)\n- Input : `sources/agreste-vineyard-land-values-input.csv` - manquant\n- Output : `sources/agreste-vineyard-land-values.csv` - manquant\n- Schema : `sources/agreste-vineyard-land-values.schema.csv` - present\n- Commande : `php scripts/normalize_agreste_vineyard_land_values.php`\n- Debloque : Contexte foncier, rarete, attractivite, slide investisseur.\n- Prochaine action : Remplir ou telecharger le fichier input attendu.\n- Caveat : Valeurs SAFER lissees : pas transaction brute ni expertise fonciere.\n"
}