Development

Data Status

Lesbarer Status aus DataRepository::getStatusReport().

KeyValue
Data Modedemo
Systemcheckok
Systemcheck JSON Total106
Systemcheck JSON Invalid0
Data Mode aus Statedemo
Pfadstatus Eintraege46
Demo JSON Count8
Project JSON Count89
AeroDataBox JSON Count5
BookingServiceavailable
DashboardServiceavailable
AnalysisServiceavailable
CompanionServiceavailable
CompanionLocationServiceavailable
HrcServiceavailable
HRC Cafes37
HRC Risk LevelLOW
HRC Files41
Companion Warning Levelyellow
Accommodation Suggestions3
Club Options2
Sleep Zones3
Club Windows2
Taxi Recommendedyes
Party Window20:30 - 22:30
Taxi Hint Levelyellow
Loop Files1
Availability Files0
Collapse Files2
Survivability Files1
Found Loop Data2

Status JSON

{
    "data_mode": "demo",
    "demo_path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo",
    "project_path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project",
    "aerodatabox_path": "/home/u404456982/domains/test.flyloina.com/public_html/data/aerodatabox",
    "demo_json_count": 8,
    "project_json_count": 89,
    "aerodatabox_json_count": 5,
    "important_files": {
        "demo": {
            "airports.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/airports.demo.json"
            },
            "flights.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/flights.demo.json"
            },
            "loops.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/loops.demo.json"
            },
            "collapse.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/collapse.demo.json"
            },
            "survivability.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/survivability.demo.json"
            },
            "recovery.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/recovery.demo.json"
            },
            "hrc.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/hrc.demo.json"
            },
            "companion.demo.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/demo/companion.demo.json"
            }
        },
        "project": {
            "system/airline-priority.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project/system/airline-priority.json"
            },
            "system/airport-index.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project/system/airport-index.json"
            },
            "system/loop-config.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project/system/loop-config.json"
            },
            "hrc/masterlist.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/masterlist.json"
            },
            "hrc/risk-matrix.json": {
                "found": true,
                "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/risk-matrix.json"
            }
        }
    },
    "missing_important_files": {
        "demo": [],
        "project": []
    },
    "found_project_files": [
        "access/access-tiers.json",
        "access/loop-unlocks.json",
        "access/mock-entitlements.json",
        "access/mock-products.json",
        "analysis/collapse/collapse_summer_2026.json",
        "analysis/rescue/ALL_rescue_routes.json",
        "analysis/season/season_summer_2026_routes.json",
        "booking/airport-risk-matrix.json",
        "booking/archive-rules.json",
        "booking/booking-block-rules.json",
        "booking/booking-provider-rules.json",
        "booking/booking-rules.json",
        "booking/collapse-thresholds.json",
        "booking/command-grid-rules.json",
        "booking/confidence-rules.json",
        "booking/daily-operations-rules.json",
        "booking/daily-risk-thresholds.json",
        "booking/event-types.json",
        "booking/execution-rules.json",
        "booking/grid-thresholds.json",
        "booking/grid-zones.json",
        "booking/incident-rules.json",
        "booking/incident-thresholds.json",
        "booking/intelligence-rules.json",
        "booking/kiwi-link-rules.json",
        "booking/mission-control-rules.json",
        "booking/mission-thresholds.json",
        "booking/recovery-rules.json",
        "booking/risk-thresholds.json",
        "booking/runtime-rules.json",
        "booking/runtime-thresholds.json",
        "booking/session-rules.json",
        "booking/stability-rules.json",
        "booking/verification-rules.json",
        "booking/weekly-carousel.json",
        "hrc/archived_inactive/naples.json",
        "hrc/cafes/amsterdam.json",
        "hrc/cafes/athens.json",
        "hrc/cafes/barcelona.json",
        "hrc/cafes/berlin.json",
        "hrc/cafes/budapest.json",
        "hrc/cafes/cgn.json",
        "hrc/cafes/copenhagen.json",
        "hrc/cafes/cyprus_ayia_napa.json",
        "hrc/cafes/dublin.json",
        "hrc/cafes/dubrovnik.json",
        "hrc/cafes/flr.json",
        "hrc/cafes/fmm.json",
        "hrc/cafes/gdn.json",
        "hrc/cafes/gran_canaria.json",
        "hrc/cafes/ham.json",
        "hrc/cafes/kef.json",
        "hrc/cafes/krk.json",
        "hrc/cafes/lisbon.json",
        "hrc/cafes/london.json",
        "hrc/cafes/madrid.json",
        "hrc/cafes/mallorca_palma.json",
        "hrc/cafes/malta_valletta.json",
        "hrc/cafes/milan.json",
        "hrc/cafes/muc.json",
        "hrc/cafes/opo.json",
        "hrc/cafes/oslo.json",
        "hrc/cafes/otp.json",
        "hrc/cafes/prague.json",
        "hrc/cafes/psa.json",
        "hrc/cafes/rome.json",
        "hrc/cafes/stockholm.json",
        "hrc/cafes/tsf.json",
        "hrc/cafes/vce.json",
        "hrc/cafes/vienna.json",
        "hrc/cafes/warsaw.json",
        "hrc/cafes/wro.json",
        "hrc/masterlist.json",
        "hrc/risk-matrix.json",
        "hrc/scoring_rules.json",
        "hrc/visit_rules.json",
        "loops/S26_7d_template.json",
        "loops/S26_14d_template.json",
        "network/airport-clusters.json",
        "network/core-airlines.json",
        "network/hrc-airports.json",
        "network/rescue-routes.json",
        "routes/generated/7d_demo_loop.json",
        "routes/generated/14d_demo_loop.json",
        "support/airport-transfers.json",
        "system/airline-priority.json",
        "system/airport-index.json",
        "system/loop-config.json",
        "weekly/BCN_2026-06-15.json"
    ],
    "errors": [],
    "system_check": {
        "ok": true,
        "php": {
            "version": "8.3.30",
            "status": "ok"
        },
        "data_mode": "demo",
        "paths": [
            {
                "path": "data/demo",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/system",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/hrc",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/hrc/cafes",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/network",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/support",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/loops",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/routes/generated",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/availability",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/analysis",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/weekly",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/aerodatabox",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/aerodatabox/raw",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/aerodatabox/normalized",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/aerodatabox/logs",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/state",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/collapse",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/survivability",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/recovery",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/rejoin",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/emergency",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/hrc",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/evidence",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/scoring",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/user",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/access",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/reports/booking",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/evidence",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/evidence/pending",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/evidence/verified",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/evidence/rejected",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/evidence/review",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/profiles",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/sessions",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/progress",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/loops",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/cache",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/access",
                "exists": true,
                "writable": true
            },
            {
                "path": "storage/user/booking",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/access",
                "exists": true,
                "writable": true
            },
            {
                "path": "data/project/booking",
                "exists": true,
                "writable": true
            },
            {
                "path": "public",
                "exists": true,
                "writable": true
            },
            {
                "path": "app",
                "exists": true,
                "writable": true
            }
        ],
        "json": {
            "total": 106,
            "valid": 106,
            "invalid": 0,
            "files": [
                {
                    "file": "data/demo/airports.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/collapse.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/companion.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/flights.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/hrc.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/loops.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/recovery.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/demo/survivability.demo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/access/access-tiers.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/access/loop-unlocks.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/access/mock-entitlements.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/access/mock-products.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/analysis/collapse/collapse_summer_2026.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/analysis/rescue/ALL_rescue_routes.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/analysis/season/season_summer_2026_routes.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/airport-risk-matrix.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/archive-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/booking-block-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/booking-provider-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/booking-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/collapse-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/command-grid-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/confidence-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/daily-operations-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/daily-risk-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/event-types.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/execution-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/grid-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/grid-zones.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/incident-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/incident-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/intelligence-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/kiwi-link-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/mission-control-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/mission-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/recovery-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/risk-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/runtime-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/runtime-thresholds.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/session-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/stability-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/verification-rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/booking/weekly-carousel.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/archived_inactive/naples.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/amsterdam.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/athens.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/barcelona.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/berlin.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/budapest.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/cgn.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/copenhagen.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/cyprus_ayia_napa.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/dublin.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/dubrovnik.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/flr.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/fmm.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/gdn.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/gran_canaria.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/ham.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/kef.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/krk.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/lisbon.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/london.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/madrid.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/mallorca_palma.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/malta_valletta.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/milan.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/muc.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/opo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/oslo.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/otp.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/prague.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/psa.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/rome.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/stockholm.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/tsf.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/vce.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/vienna.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/warsaw.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/wro.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/masterlist.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/risk-matrix.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/scoring_rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/visit_rules.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/loops/S26_7d_template.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/loops/S26_14d_template.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/network/airport-clusters.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/network/core-airlines.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/network/hrc-airports.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/network/rescue-routes.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/routes/generated/7d_demo_loop.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/routes/generated/14d_demo_loop.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/support/airport-transfers.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/system/airline-priority.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/system/airport-index.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/system/loop-config.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/project/weekly/BCN_2026-06-15.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/aerodatabox/json/daily/2026-05-18/BCN.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/aerodatabox/json/daily/2026-05-18/BER.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/aerodatabox/json/daily/2026-05-18/BGY.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/aerodatabox/json/daily/2026-05-18/LIS.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/aerodatabox/json/daily/2026-05-18/PMI.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/state/data_mode.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/state/import_state/import_chunk_f8ee370918864a5ce470773cb5e8889e.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/state/import_state/import_cron_state.json",
                    "ok": true,
                    "error": null
                },
                {
                    "file": "data/state/import_state/import_step_22ab03bbce441b4b1fdfac518eb11a25.json",
                    "ok": true,
                    "error": null
                }
            ]
        },
        "project_data_foundation": {
            "ok": true,
            "items": [
                {
                    "file": "data/project/hrc/masterlist.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/hrc/risk-matrix.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/hrc/visit_rules.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/hrc/scoring_rules.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/system/airport-index.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/system/airline-priority.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/system/loop-config.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/network/core-airlines.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/network/hrc-airports.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/network/airport-clusters.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/network/rescue-routes.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/support/airport-transfers.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": false,
                    "error": null
                },
                {
                    "file": "data/project/loops/S26_7d_template.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": true,
                    "error": null
                },
                {
                    "file": "data/project/loops/S26_14d_template.json",
                    "status": "OK",
                    "exists": true,
                    "empty_allowed": true,
                    "error": null
                },
                {
                    "file": "data/project/hrc/cafes/*.json",
                    "status": "OK",
                    "exists": true,
                    "json_count": 36,
                    "empty_allowed": false,
                    "error": null
                }
            ]
        },
        "project_data_audit": {
            "status": "OK",
            "warnings": []
        },
        "daily_data_status": {
            "status": "OK",
            "flight_count": 5,
            "warnings": []
        },
        "route_integrity": {
            "status": "VALID",
            "route": [
                "BER",
                "PMI",
                "BCN",
                "LIS",
                "BGY",
                "BER"
            ],
            "segments": [
                {
                    "route": "BER-PMI",
                    "status": "VALID",
                    "flight_number": "FR 226",
                    "departure_time": "2026-05-18T07:15:00",
                    "arrival_time": "2026-05-18T10:00:00",
                    "overnight_needed": false,
                    "layer": "core"
                },
                {
                    "route": "PMI-BCN",
                    "status": "VALID",
                    "flight_number": "FR 1342",
                    "departure_time": "2026-05-18T11:10:00",
                    "arrival_time": "2026-05-18T12:05:00",
                    "overnight_needed": false,
                    "layer": "core"
                },
                {
                    "route": "BCN-LIS",
                    "status": "VALID",
                    "flight_number": "FR 3078",
                    "departure_time": "2026-05-18T13:35:00",
                    "arrival_time": "2026-05-18T14:40:00",
                    "overnight_needed": false,
                    "layer": "core"
                },
                {
                    "route": "LIS-BGY",
                    "status": "VALID",
                    "flight_number": "FR 2089",
                    "departure_time": "2026-05-18T16:15:00",
                    "arrival_time": "2026-05-18T19:45:00",
                    "overnight_needed": false,
                    "layer": "core"
                },
                {
                    "route": "BGY-BER",
                    "status": "VALID",
                    "flight_number": "FR 3310",
                    "departure_time": "2026-05-18T21:00:00",
                    "arrival_time": "2026-05-18T22:45:00",
                    "overnight_needed": false,
                    "layer": "core"
                }
            ],
            "overnight_needed": false,
            "weak_segments": 0,
            "collapse_risk": "low",
            "core_rescue_ratio": {
                "core": 5,
                "rescue": 0
            },
            "warnings": []
        },
        "loop_integrity": {
            "status": "OK",
            "items": [
                {
                    "file": "S26_7d_template.json",
                    "status": "EMPTY_ALLOWED",
                    "warnings": []
                },
                {
                    "file": "S26_14d_template.json",
                    "status": "EMPTY_ALLOWED",
                    "warnings": []
                }
            ],
            "warnings": []
        },
        "daily_route_intelligence": {
            "status": "USABLE",
            "daily_files_found": 5,
            "airports_analyzed": 5,
            "strong_airports": 0,
            "weak_airports": 1,
            "dead_airports": 0,
            "report_status": "READY"
        },
        "loop_generator": {
            "status": "STRONG",
            "generated_loops": 2,
            "airport_density": 38,
            "survivability_status": "STRONG",
            "fragile_loops": 0,
            "reports_available": true,
            "expanded_14d_airports_loaded": 14
        },
        "collapse_intelligence": {
            "status": "FRAGILE",
            "collapse_score": 44,
            "collapse_reports": 5,
            "weak_airports": 38,
            "dead_windows": 16,
            "rescue_dependency": 17,
            "fragile_loops": 1
        },
        "survivability_scoring": {
            "reports_available": true,
            "loops_scored": 2,
            "average_survival_score": 28,
            "critical_loops": 1,
            "weak_airports": 21,
            "emergency_strength_status": "WEAK_EXIT"
        },
        "recovery_engine": {
            "recovery_reports": 5,
            "cluster_recovery": 3,
            "rescue_escalation": 1,
            "overnight_recovery": 2,
            "recoverable_loops": 0,
            "unrecoverable_loops": 0,
            "status": "RECOVERABLE"
        },
        "rejoin_system": {
            "rejoin_reports": 5,
            "direct_rejoin_options": 1,
            "cluster_rejoin_options": 0,
            "day_shift_rejoin": 1,
            "loop_continuation": 2,
            "no_rejoin_warnings": 2,
            "status": "CLUSTER_REJOIN"
        },
        "emergency_layer": {
            "emergency_reports": 5,
            "safe_exits": 1,
            "cluster_escapes": 3,
            "critical_airports": 20,
            "homebound_status": "STRONG_HOMEBOUND",
            "weak_exits": 6,
            "status": "MANAGEABLE_EXIT"
        },
        "hrc_intelligence": {
            "total_cafes": 36,
            "cafes_validated": 36,
            "active_cafes": 35,
            "expansion_14d_cafes": 14,
            "invalid_mappings": 0,
            "weak_hrcs": 20,
            "challenge_eligible_cafes": 16,
            "eligible_cafes": 16,
            "risky_cafes": 20,
            "cluster_dependent_cafes": 4,
            "geo_warnings": 2,
            "hrc_reports": 6
        },
        "evidence_system": {
            "status": "READY",
            "evidence_reports": 5,
            "visit_states": 4,
            "review_flags": 3,
            "verified_placeholders": 1,
            "timestamp_validation": 1,
            "geo_proof_placeholders": 4
        },
        "scoring_layer": {
            "survivor_score": 618,
            "survivor_status": "NETWORK_RUNNER",
            "prestige_level": "SURVIVOR",
            "survivor_scores": 1,
            "prestige_reports": 1,
            "unlocked_badges": 7,
            "challenge_progress": "EARLY_PROGRESS",
            "risk_reward_reports": 1,
            "scoring_reports": 6
        },
        "user_layer": {
            "status": "READY",
            "survivor_profiles": 1,
            "session_states": 1,
            "saved_loops": 2,
            "local_progress": 4,
            "user_reports": 5
        },
        "access_layer": {
            "status": "READY",
            "tier": "SURVIVOR",
            "premium_active": true,
            "active_entitlements": 2,
            "unlocked_loops": 2,
            "access_reports": 3
        },
        "booking_foundation": {
            "status": "READY",
            "carousel_legs": 21,
            "expanded_legs": 21,
            "booking_blocks": 3,
            "start_airport": "BER",
            "start_index": 0,
            "no_live_booking": true,
            "warnings": 0,
            "errors": 0
        },
        "survivor_booking": {
            "status": "READY",
            "provider": "kiwi",
            "mode": "booking_preparation_only",
            "total_legs": 21,
            "booking_blocks": 3,
            "kiwi_links": 3,
            "safety_notice": 6
        },
        "required_files": [
            {
                "file": "app/bootstrap.php",
                "exists": true
            },
            {
                "file": "app/config/app.php",
                "exists": true
            },
            {
                "file": "app/core/Data/DataRepository.php",
                "exists": true
            },
            {
                "file": "app/core/Support/JsonFile.php",
                "exists": true
            },
            {
                "file": "app/core/Booking/BookingService.php",
                "exists": true
            },
            {
                "file": "app/core/Dashboard/DashboardService.php",
                "exists": true
            },
            {
                "file": "app/core/Analysis/AnalysisService.php",
                "exists": true
            },
            {
                "file": "app/core/Companion/CompanionService.php",
                "exists": true
            },
            {
                "file": "app/core/Companion/CompanionLocationService.php",
                "exists": true
            },
            {
                "file": "app/modules/hrc/HrcService.php",
                "exists": true
            },
            {
                "file": "data/demo/airports.demo.json",
                "exists": true
            },
            {
                "file": "data/demo/flights.demo.json",
                "exists": true
            },
            {
                "file": "data/demo/loops.demo.json",
                "exists": true
            },
            {
                "file": "data/demo/companion.demo.json",
                "exists": true
            },
            {
                "file": "data/project/system/airline-priority.json",
                "exists": true
            },
            {
                "file": "data/project/system/airport-index.json",
                "exists": true
            },
            {
                "file": "data/project/system/loop-config.json",
                "exists": true
            },
            {
                "file": "data/project/hrc/masterlist.json",
                "exists": true
            },
            {
                "file": "data/project/hrc/risk-matrix.json",
                "exists": true
            },
            {
                "file": "data/project/hrc/visit_rules.json",
                "exists": true
            },
            {
                "file": "data/project/hrc/scoring_rules.json",
                "exists": true
            },
            {
                "file": "data/project/network/core-airlines.json",
                "exists": true
            },
            {
                "file": "data/project/network/hrc-airports.json",
                "exists": true
            },
            {
                "file": "data/project/network/airport-clusters.json",
                "exists": true
            },
            {
                "file": "data/project/network/rescue-routes.json",
                "exists": true
            },
            {
                "file": "data/project/support/airport-transfers.json",
                "exists": true
            },
            {
                "file": "data/project/loops/S26_7d_template.json",
                "exists": true
            },
            {
                "file": "data/project/loops/S26_14d_template.json",
                "exists": true
            },
            {
                "file": "data/project/access/access-tiers.json",
                "exists": true
            },
            {
                "file": "data/project/access/loop-unlocks.json",
                "exists": true
            },
            {
                "file": "data/project/access/mock-products.json",
                "exists": true
            },
            {
                "file": "data/project/access/mock-entitlements.json",
                "exists": true
            },
            {
                "file": "data/project/booking/weekly-carousel.json",
                "exists": true
            },
            {
                "file": "data/project/booking/booking-rules.json",
                "exists": true
            },
            {
                "file": "data/project/booking/booking-block-rules.json",
                "exists": true
            },
            {
                "file": "data/project/booking/kiwi-link-rules.json",
                "exists": true
            },
            {
                "file": "data/project/booking/booking-provider-rules.json",
                "exists": true
            }
        ],
        "services": {
            "DataRepository": true,
            "BookingService": true,
            "DashboardService": true,
            "AnalysisService": true,
            "CompanionService": true,
            "CompanionLocationService": true,
            "HrcService": true,
            "AuditService": true,
            "DailyRouteAnalyzer": true,
            "LoopGenerator": true,
            "CollapseAnalyzer": true,
            "SurvivabilityCalculator": true,
            "RecoveryPlanner": true,
            "RejoinPlanner": true,
            "EmergencyExitPlanner": true,
            "HrcIntelligenceRunner": true,
            "EvidenceManager": true,
            "SurvivorScoreEngine": true,
            "SurvivorIdentityManager": true,
            "AccessManager": true,
            "BookingReadinessValidator": true,
            "SurvivorBookingSummaryBuilder": true
        },
        "warnings": [],
        "errors": []
    },
    "analysis_service": {
        "available": true,
        "collapse_files": [
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/analysis/collapse/collapse_summer_2026.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/booking/collapse-thresholds.json"
        ],
        "survivability_files": [
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/analysis/season/season_summer_2026_routes.json"
        ],
        "network_status_summary": {
            "ok": true,
            "summary": {
                "stable": 22,
                "weakening": 0,
                "collapsing": 0,
                "severe_collapse": 0,
                "dead_route": 0,
                "core_collapsed": 0,
                "rescue_only": 0
            },
            "segments": [
                {
                    "route": "BCN-AMS",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-ARN",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-ATH",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-BER",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-BGY",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-BUD",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-CIA",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-CPH",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-DBV",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-DUB",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-FCO",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-LCA",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-LIS",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-LPA",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-MAD",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-MLA",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-OSL",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-PMI",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-PRG",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-STN",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-VIE",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                },
                {
                    "route": "BCN-WAW",
                    "status": "STABLE",
                    "signal": "green",
                    "message": "Segment aktuell stabil."
                }
            ],
            "critical_warnings": [],
            "collapse_files": [
                "/home/u404456982/domains/test.flyloina.com/public_html/data/project/analysis/collapse/collapse_summer_2026.json",
                "/home/u404456982/domains/test.flyloina.com/public_html/data/project/booking/collapse-thresholds.json"
            ],
            "survivability_files": [
                "/home/u404456982/domains/test.flyloina.com/public_html/data/project/analysis/season/season_summer_2026_routes.json"
            ],
            "errors": []
        }
    },
    "booking_service": {
        "available": true,
        "loop_types": [
            {
                "id": "7d",
                "label": "7 Tage"
            },
            {
                "id": "14d",
                "label": "14 Tage"
            }
        ],
        "start_airport_count": 22,
        "loop_template_count": 2,
        "weekly_files": [
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/weekly/BCN_2026-06-15.json"
        ],
        "availability_files": []
    },
    "dashboard_service": {
        "available": true,
        "default_ok": true,
        "default_loop_type": "7d",
        "default_start_airport": "AMS",
        "default_start_date": "2026-05-17",
        "loop_days": 7,
        "found_loop_data": 2
    },
    "dashboard_default_state": {
        "ok": true,
        "data_mode": "demo",
        "loop_type": "7d",
        "start_airport": "AMS",
        "start_date": "2026-05-17",
        "current_day": {
            "day": 1,
            "date": "2026-05-17",
            "from": "AMS",
            "to": "BCN",
            "airline": "Ryanair",
            "flight_number": "FR-DEMO1",
            "departure": "07:00",
            "arrival": "09:35",
            "hrc_target": "Hard Rock Cafe Barcelona",
            "notes": [
                "Backpack empfohlen",
                "Keine Gepaeckaufgabe"
            ],
            "status": "today",
            "status_label": "Heute",
            "signal": "green",
            "segment_status": "STABLE",
            "segment_signal": "green",
            "segment_message": "Segment aktuell stabil."
        },
        "days": [
            {
                "day": 1,
                "date": "2026-05-17",
                "from": "AMS",
                "to": "BCN",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Barcelona",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "today",
                "status_label": "Heute",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            },
            {
                "day": 2,
                "date": "2026-05-18",
                "from": "BCN",
                "to": "BCN",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Barcelona",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "upcoming",
                "status_label": "Kommend",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            },
            {
                "day": 3,
                "date": "2026-05-19",
                "from": "BCN",
                "to": "BER",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Berlin",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "upcoming",
                "status_label": "Kommend",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            },
            {
                "day": 4,
                "date": "2026-05-20",
                "from": "BER",
                "to": "BCN",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Barcelona",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "upcoming",
                "status_label": "Kommend",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            },
            {
                "day": 5,
                "date": "2026-05-21",
                "from": "BCN",
                "to": "BUD",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Budapest",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "upcoming",
                "status_label": "Kommend",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            },
            {
                "day": 6,
                "date": "2026-05-22",
                "from": "BUD",
                "to": "BCN",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Barcelona",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "upcoming",
                "status_label": "Kommend",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            },
            {
                "day": 7,
                "date": "2026-05-23",
                "from": "BCN",
                "to": "CPH",
                "airline": "Ryanair",
                "flight_number": "FR-DEMO1",
                "departure": "07:00",
                "arrival": "09:35",
                "hrc_target": "Hard Rock Cafe Copenhagen",
                "notes": [
                    "Backpack empfohlen",
                    "Keine Gepaeckaufgabe"
                ],
                "status": "upcoming",
                "status_label": "Kommend",
                "signal": "green",
                "segment_status": "STABLE",
                "segment_signal": "green",
                "segment_message": "Segment aktuell stabil."
            }
        ],
        "summary": {
            "total_days": 7,
            "completed_days": 0,
            "remaining_days": 7,
            "next_airport": "BCN"
        },
        "network_status": {
            "stable": 22,
            "weakening": 0,
            "collapsing": 0,
            "severe_collapse": 0,
            "dead_route": 0,
            "core_collapsed": 0,
            "rescue_only": 0
        },
        "network_signal": "green",
        "warnings": []
    },
    "companion_service": {
        "available": true,
        "daily_ok": true,
        "critical_time_count": 2,
        "recovery_status": "standby",
        "rejoin_status": "possible",
        "emergency_status": "standby",
        "warning_level": "yellow",
        "accommodation_count": 3,
        "club_count": 2,
        "party_window_level": "yellow",
        "taxi_hint_level": "yellow"
    },
    "companion_daily_state": {
        "ok": true,
        "data_mode": "demo",
        "day": {
            "day": 1,
            "date": "2026-05-17",
            "from": "AMS",
            "to": "BCN",
            "airline": "Ryanair",
            "flight_number": "FR-DEMO1",
            "departure": "07:00",
            "arrival": "09:35",
            "hrc_target": "Hard Rock Cafe Barcelona",
            "notes": [
                "Backpack empfohlen",
                "Keine Gepaeckaufgabe"
            ],
            "status": "today",
            "status_label": "Heute",
            "signal": "green",
            "segment_status": "STABLE",
            "segment_signal": "green",
            "segment_message": "Segment aktuell stabil."
        },
        "survivor_message": "Heute beginnt dein Survivor Loop.",
        "critical_times": [
            {
                "time": "04:50",
                "label": "Airport Transfer empfohlen",
                "level": "yellow"
            },
            {
                "time": "06:15",
                "label": "Spaetestens am Airport sein",
                "level": "yellow"
            }
        ],
        "airport_warning": {
            "level": "yellow",
            "message": "Frueher Morgenflug. Wenig Puffer einplanen."
        },
        "recovery": {
            "status": "standby",
            "message": "Recovery aktuell nicht noetig."
        },
        "rejoin": {
            "status": "possible",
            "message": "Rejoin spaeter ueber BCN moeglich."
        },
        "emergency": {
            "status": "standby",
            "message": "Emergency Exit aktuell nicht empfohlen."
        },
        "practical_assist": {
            "city": "Barcelona",
            "accommodations": [
                {
                    "name": "Placa Catalunya Hostel",
                    "type": "hostel",
                    "transit_note": "Nahe Aerobus und Metro.",
                    "area": "Placa Catalunya"
                },
                {
                    "name": "Eixample Budget Hotel",
                    "type": "hotel",
                    "transit_note": "Gute Metro-Anbindung, kurzer Weg zum HRC.",
                    "area": "Eixample"
                },
                {
                    "name": "Airport Bus Corridor Rooms",
                    "type": "hostel",
                    "transit_note": "Praktisch fuer fruehen Aerobus.",
                    "area": "Gran Via"
                }
            ],
            "distance_chain": {
                "airport_to_hrc": "Airport -> HRC ca. 15 km.",
                "hrc_to_accommodation": "Zentralen OPNV-Knoten nahe HRC bevorzugen.",
                "accommodation_to_airport": "Unterkunft -> Airport Taxi ca. 25-40 Minuten."
            },
            "transit_note": "airport_bus Aerobús A1: Unterkunft nahe dieser Achse bevorzugen.",
            "clubs": [
                {
                    "name": "Razzmatazz Area",
                    "area": "Poblenou",
                    "note": "Rueckweg vorab klaeren."
                },
                {
                    "name": "Gothic Quarter Bars",
                    "area": "Barri Gotic",
                    "note": "Besser kurzes Barfenster als langer Clubabend."
                }
            ],
            "party_window": {
                "start": "20:30",
                "end": "22:30",
                "level": "yellow",
                "message": "Frueher Morgenflug. Partyfenster kurz halten."
            },
            "taxi_hint": {
                "level": "yellow",
                "message": "Bei sehr fruehem Flug Taxi oder Aerobus-Zeitfenster vorher pruefen."
            }
        },
        "backpack_notice": {
            "enabled": true,
            "message": "Backpack empfohlen. Keine Gepaeckaufgabe."
        }
    },
    "companion_location_state": {
        "ok": true,
        "data_mode": "demo",
        "day": {
            "departure": "07:00",
            "arrival": "09:35",
            "from": "AMS",
            "to": "BCN",
            "hrc_target": "Hard Rock Cafe Barcelona",
            "segment_status": "STABLE"
        },
        "city": "Barcelona",
        "sleep_zones": [
            {
                "name": "Placa Catalunya Hostel",
                "type": "hostel",
                "transport_note": "Nahe Aerobus und Metro.",
                "distance_flow": {
                    "airport_to_hrc": "35 min",
                    "hrc_to_sleep": "10-20 min, Lage vor Ort pruefen",
                    "sleep_to_airport": "25-40 min Taxi"
                },
                "signal": "green"
            },
            {
                "name": "Eixample Budget Hotel",
                "type": "hotel",
                "transport_note": "Gute Metro-Anbindung, kurzer Weg zum HRC.",
                "distance_flow": {
                    "airport_to_hrc": "35 min",
                    "hrc_to_sleep": "10-20 min, Lage vor Ort pruefen",
                    "sleep_to_airport": "25-40 min Taxi"
                },
                "signal": "green"
            },
            {
                "name": "Airport Bus Corridor Rooms",
                "type": "hostel",
                "transport_note": "Praktisch fuer fruehen Aerobus.",
                "distance_flow": {
                    "airport_to_hrc": "35 min",
                    "hrc_to_sleep": "10-20 min, Lage vor Ort pruefen",
                    "sleep_to_airport": "25-40 min Taxi"
                },
                "signal": "green"
            }
        ],
        "clubs": [
            {
                "name": "Razzmatazz Area",
                "zone": "Poblenou",
                "party_window": {
                    "recommended_until": "00:30"
                },
                "warning": "Frueher Rueckweg empfohlen."
            },
            {
                "name": "Gothic Quarter Bars",
                "zone": "Barri Gotic",
                "party_window": {
                    "recommended_until": "00:30"
                },
                "warning": "Frueher Rueckweg empfohlen."
            }
        ],
        "transport": {
            "public_transport_possible": true,
            "night_bus_possible": true,
            "taxi_recommended": true,
            "notes": [
                "airport_bus Aerobús A1 (35 min)",
                "airport_bus Aerobús A2 (35 min)",
                "Bei sehr fruehem Flug Taxi oder Aerobus-Zeitfenster vorher pruefen."
            ]
        },
        "early_flight_warning": {
            "enabled": true,
            "level": "yellow",
            "message": "Abflug 07:00. Airport-Transfer spaetestens 04:50 planen."
        },
        "survivor_advice": [
            "Backpack spart Zeit.",
            "Maximal bis 00:30 feiern.",
            "Frueher Morgenflug beachten.",
            "Wenig Schlaf realistisch einplanen.",
            "Taxi-Backup vor dem Schlafen klaeren."
        ]
    },
    "hrc_service": {
        "available": true,
        "cafe_count": 37,
        "masterlist_found": true,
        "risk_matrix_found": true,
        "hrc_files": [
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/archived_inactive/naples.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/amsterdam.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/athens.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/barcelona.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/berlin.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/budapest.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/cgn.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/copenhagen.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/cyprus_ayia_napa.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/dublin.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/dubrovnik.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/flr.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/fmm.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/gdn.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/gran_canaria.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/ham.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/kef.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/krk.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/lisbon.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/london.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/madrid.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/mallorca_palma.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/malta_valletta.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/milan.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/muc.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/opo.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/oslo.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/otp.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/prague.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/psa.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/rome.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/stockholm.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/tsf.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/vce.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/vienna.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/warsaw.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/wro.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/masterlist.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/risk-matrix.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/scoring_rules.json",
            "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/visit_rules.json"
        ]
    },
    "today_hrc_target": {
        "ok": true,
        "city": "Barcelona",
        "cafe": {
            "name": "Hard Rock Cafe Barcelona",
            "slug": "barcelona",
            "country": "Spain",
            "status": "OPEN",
            "risk_level": "LOW",
            "risk_signal": "green",
            "risk_explanation": "Normale Challenge-Bedingungen.",
            "opening_hours": "approx. 11:00-01:00/02:00",
            "rock_shop": {
                "available": true,
                "note": "Rock Shop vorhanden"
            },
            "address": "Plaça de Catalunya 21, 08002 Barcelona, Spain",
            "notes": [
                "excellent 24h airport bus"
            ]
        },
        "visit_rules": [
            "Selfie empfohlen",
            "Rock Shop Besuch empfohlen",
            "Kassenbeleg optional"
        ],
        "evidence_placeholder": {
            "enabled": true,
            "message": "Evidence Upload folgt in spaeterem Segment."
        }
    },
    "hrc_risk_level": "LOW",
    "recognized_hrc_files": [
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/archived_inactive/naples.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/amsterdam.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/athens.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/barcelona.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/berlin.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/budapest.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/cgn.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/copenhagen.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/cyprus_ayia_napa.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/dublin.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/dubrovnik.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/flr.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/fmm.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/gdn.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/gran_canaria.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/ham.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/kef.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/krk.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/lisbon.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/london.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/madrid.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/mallorca_palma.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/malta_valletta.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/milan.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/muc.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/opo.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/oslo.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/otp.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/prague.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/psa.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/rome.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/stockholm.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/tsf.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/vce.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/vienna.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/warsaw.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/cafes/wro.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/masterlist.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/risk-matrix.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/scoring_rules.json",
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/hrc/visit_rules.json"
    ],
    "recognized_recovery_hints": {
        "status": "standby",
        "message": "Recovery aktuell nicht noetig."
    },
    "recognized_warning_level": "yellow",
    "companion_day_assist": {
        "city": "Barcelona",
        "accommodations": [
            {
                "name": "Placa Catalunya Hostel",
                "type": "hostel",
                "transit_note": "Nahe Aerobus und Metro.",
                "area": "Placa Catalunya"
            },
            {
                "name": "Eixample Budget Hotel",
                "type": "hotel",
                "transit_note": "Gute Metro-Anbindung, kurzer Weg zum HRC.",
                "area": "Eixample"
            },
            {
                "name": "Airport Bus Corridor Rooms",
                "type": "hostel",
                "transit_note": "Praktisch fuer fruehen Aerobus.",
                "area": "Gran Via"
            }
        ],
        "distance_chain": {
            "airport_to_hrc": "Airport -> HRC ca. 15 km.",
            "hrc_to_accommodation": "Zentralen OPNV-Knoten nahe HRC bevorzugen.",
            "accommodation_to_airport": "Unterkunft -> Airport Taxi ca. 25-40 Minuten."
        },
        "transit_note": "airport_bus Aerobús A1: Unterkunft nahe dieser Achse bevorzugen.",
        "clubs": [
            {
                "name": "Razzmatazz Area",
                "area": "Poblenou",
                "note": "Rueckweg vorab klaeren."
            },
            {
                "name": "Gothic Quarter Bars",
                "area": "Barri Gotic",
                "note": "Besser kurzes Barfenster als langer Clubabend."
            }
        ],
        "party_window": {
            "start": "20:30",
            "end": "22:30",
            "level": "yellow",
            "message": "Frueher Morgenflug. Partyfenster kurz halten."
        },
        "taxi_hint": {
            "level": "yellow",
            "message": "Bei sehr fruehem Flug Taxi oder Aerobus-Zeitfenster vorher pruefen."
        }
    },
    "party_window": {
        "start": "20:30",
        "end": "22:30",
        "level": "yellow",
        "message": "Frueher Morgenflug. Partyfenster kurz halten."
    },
    "taxi_hint": {
        "level": "yellow",
        "message": "Bei sehr fruehem Flug Taxi oder Aerobus-Zeitfenster vorher pruefen."
    },
    "sleep_zone_data": [
        {
            "name": "Placa Catalunya Hostel",
            "type": "hostel",
            "transport_note": "Nahe Aerobus und Metro.",
            "distance_flow": {
                "airport_to_hrc": "35 min",
                "hrc_to_sleep": "10-20 min, Lage vor Ort pruefen",
                "sleep_to_airport": "25-40 min Taxi"
            },
            "signal": "green"
        },
        {
            "name": "Eixample Budget Hotel",
            "type": "hotel",
            "transport_note": "Gute Metro-Anbindung, kurzer Weg zum HRC.",
            "distance_flow": {
                "airport_to_hrc": "35 min",
                "hrc_to_sleep": "10-20 min, Lage vor Ort pruefen",
                "sleep_to_airport": "25-40 min Taxi"
            },
            "signal": "green"
        },
        {
            "name": "Airport Bus Corridor Rooms",
            "type": "hostel",
            "transport_note": "Praktisch fuer fruehen Aerobus.",
            "distance_flow": {
                "airport_to_hrc": "35 min",
                "hrc_to_sleep": "10-20 min, Lage vor Ort pruefen",
                "sleep_to_airport": "25-40 min Taxi"
            },
            "signal": "green"
        }
    ],
    "club_window_data": [
        {
            "name": "Razzmatazz Area",
            "zone": "Poblenou",
            "party_window": {
                "recommended_until": "00:30"
            },
            "warning": "Frueher Rueckweg empfohlen."
        },
        {
            "name": "Gothic Quarter Bars",
            "zone": "Barri Gotic",
            "party_window": {
                "recommended_until": "00:30"
            },
            "warning": "Frueher Rueckweg empfohlen."
        }
    ],
    "transport_hints": {
        "public_transport_possible": true,
        "night_bus_possible": true,
        "taxi_recommended": true,
        "notes": [
            "airport_bus Aerobús A1 (35 min)",
            "airport_bus Aerobús A2 (35 min)",
            "Bei sehr fruehem Flug Taxi oder Aerobus-Zeitfenster vorher pruefen."
        ]
    },
    "found_loop_data": [
        {
            "source": "project_weekly",
            "path": "/home/u404456982/domains/test.flyloina.com/public_html/data/project/weekly/BCN_2026-06-15.json",
            "meta": {
                "airport": "BCN",
                "start_date": "2026-06-15",
                "end_date": "2026-06-21",
                "generated_at": "2026-05-10T07:52:11+00:00",
                "source": "HRC import_week.php"
            },
            "days_available": 7,
            "flights_available": 872
        },
        {
            "source": "demo_loop",
            "meta": {
                "type": "7d",
                "season": "S26",
                "start_airport": "BER",
                "start_date": "2026-06-01",
                "days": [
                    {
                        "day": 1,
                        "city": "Barcelona",
                        "airport": "BCN",
                        "hrc": "Barcelona"
                    }
                ]
            },
            "days_available": 1
        }
    ],
    "recognized_loop_files": [
        "/home/u404456982/domains/test.flyloina.com/public_html/data/project/weekly/BCN_2026-06-15.json"
    ],
    "recognized_availability_files": [],
    "system_check_short": {
        "ok": true,
        "json_total": 106,
        "json_invalid": 0,
        "data_mode_from_state": "demo",
        "path_count": 46
    }
}

Zurueck | Admin