Calendar
Calendar API and payload documentation rendered from source Markdown, inside the same product shell as the rest of Calendar.
Publiczna dokumentacja kalendarza. Ta strona renderuje treść z pliku źródłowego Markdown i jest częścią tego samego workspace co dashboard, merged view i weekly contexts.
Dokument opisuje pola w finalnym merged output:
data/calendar/markets/{MARKET}_{YEAR}.jsonTo jest warstwa końcowa po:
Finalny plik marketu ma strukturę:
{
"market": "CO",
"year": 2026,
"events": []
}
Pola:
market: kod rynku, np. CO, CH, BAyear: rok kalendarzowyevents: lista finalnych eventów po mergePola identyfikacyjne eventu:
event_id: stabilny identyfikator eventu w merged outputmarket: kod rynkucountryCode: kod krajucanonical_name: główna nazwa eventu po mergename_local: nazwa lokalna, jeśli dostępnaname_en: nazwa angielska, jeśli dostępnaname_variants: wszystkie zebrane warianty nazw po mergedate_start: data początku eventu YYYY-MM-DDdate_end: data końca eventu YYYY-MM-DDduration_days: liczba dni eventuis_fixed_date: czy event ma stałą datę w kalendarzuevent_type: typ techniczny, np. holiday, observanceevent_category: główna kategoria, np. public_holiday, observance, school_breakholiday_subtype: podtyp święta, jeśli istniejeschool_break_type: podtyp przerwy szkolnej, jeśli istniejescope: zasięg eventu, np. national, regionalis_nationwide: czy event obejmuje cały krajregions: lista regionów objętych eventemdescriptions: opisy zebrane ze źródełsource_count: liczba źródeł w scalonym evenciesources: lista surowych źródeł użytych do zbudowania eventuKażdy wpis w sources zawiera:
source_name: nazwa źródła, np. source_1, source_2, google_calendarsource_priority: priorytet źródłaraw_name: nazwa eventu w źródleraw_type: typ źródłaraw_payload: surowy payload źródłowyPola pomocnicze używane przez merge i QA:
_normalized_name: znormalizowana nazwa eventu_name_fingerprint: uproszczony fingerprint nazwy_canonical_holiday_key: finalny klucz semantyczny święta lub observanceis_day_off_holiday: czy event jest traktowany jako realny dzień wolny_canonical_holiday_key jest głównym polem semantycznym używanym do:
Pole:
"calendar_features": { ... }
Zawiera kontekst kalendarzowy eventu:
day_of_week_start: dzień tygodnia początku eventuday_of_week_end: dzień tygodnia końca eventudays_until_weekend: ile dni roboczych zostało do weekendu od startu eventuadjacent_to_weekend: czy event wypada przy weekendzie lub na weekendzieadjacent_public_holiday_before: czy dzień przed eventem jest public holidayadjacent_public_holiday_after: czy dzień po evencie jest public holidayadjacent_off_days_before: liczba bezpośrednio poprzedzających dni wolnychadjacent_off_days_after: liczba bezpośrednio następujących dni wolnychbridge_day_potential: czy układ dat sugeruje bridge / sandwich opportunitylong_weekend_potential: potencjał długiego weekendulong_weekend_potential:
nonemediumhighnaturalPole:
"time_off_features": { ... }
Zawiera interpretację czasu wolnego:
daysOffInRow: liczba kolejnych dni wolnych w oknie eventuworkingDaysLost: liczba dni roboczych objętych samym eventemofficial_working_days_lost: liczba oficjalnie utraconych dni roboczych dla realnych day-off holidaysbridgePotential: potencjał bridge w ujęciu operacyjnymbridge_days_used: ile dni bridge zostało założonych przy budowie oknaoff_day_pattern: wzorzec układu wolnych dnitravelWindow: wyliczone okno wyjazdowe związane z eventembridgePotential:
nonemediumhighoff_day_pattern może przyjmować np.:
nonesingle_midweekbridge_candidatemonday_holidayfriday_holidayweekend_holidaynatural_long_weekendschool_breaktravelWindow:
from: początek oknato: koniec oknatype: typ oknatravelWindow.type może przyjmować np.:
no_time_off_eventholiday_windowlong_weekend_candidateschool_break_peakPole:
"travel_features": { ... }
Zawiera interpretację eventu z perspektywy travel demand:
travel_segment_tags: tagi segmentów podróżnychmarket_coverage: zasięg geograficzny eventu w uproszczeniutravel_intensity_band: uproszczona klasa siły wpływu travelvfr_relevance: znaczenie dla VFRfamily_travel_relevance: znaczenie dla ruchu rodzinnegobusiness_travel_impact: wpływ na business travelleisure_travel_impact: wpływ na leisure traveltravel_relevance_score: liczbowy score relevance 0-1market_coverage:
nationwidemulti_regionsingle_regiontravel_intensity_band:
lowmediumhighpeakTypowe travel_segment_tags:
leisurecity_breakshort_breakbusiness_negativefamilyvfrhomecomingpackagesoutboundschool_breakPole:
"travel_product_impact": {
"flights": { ... },
"holiday_packages": { ... }
}
Dla każdego produktu:
direction: kierunek wpływustrength: siła wpływudrivers: lista głównych driverówdirection może być np.:
positiveneutral_to_positiveneutralmixednegativestrength:
lowmediumhighPole:
"timing_effects": {
"previous_week": { ... },
"event_week": { ... },
"next_week": { ... }
}
To jest model wpływu eventu na popyt travel w trzech oknach:
previous_week: tydzień przed eventemevent_week: tydzień, w którym wypada eventnext_week: tydzień po evencieKażde okno zawiera:
direction: kierunek wpływustrength: siła wpływueffect_types: lista typów efektówPrzykładowe effect_types:
planningpre_holiday_search_liftbooking_liftvfr_planningdepartures_peakmixed_booking_behaviorholiday_modereturn_travelpost_trip_cooldownreboundnormalizationPole:
"summary_inputs": { ... }
To jest gotowy, skondensowany kontekst pod przyszły generator summary.
Zawiera:
event_identitytime_offcalendar_contexttravel_signalproduct_impacttiming_effectsllm_summary_readyCel:
llm_summary_ready=true oznacza, że event ma już przygotowaną strukturę pod kolejny etap generacji opisu.
Ważne rozróżnienia:
workingDaysLost może być większe niż official_working_days_lost dla niektórych kategorii rozszerzanych w analizie czasu wolnegodaysOffInRow liczy całe praktyczne okno wolnych dni, a nie tylko długość samego eventutiming_effects opisuje wpływ popytowy na travel, nie status prawny świętasummary_inputs nie jest jeszcze finalnym summary tekstowym, tylko kontraktem wejściowym pod generator summary