From 2491ae59f344b00462b87466ba30227b9392acb2 Mon Sep 17 00:00:00 2001 From: oskar Date: Tue, 4 Aug 2026 10:03:32 +0200 Subject: [PATCH] =?UTF-8?q?Pobieralna=20paczka=20=C5=BAr=C3=B3de=C5=82=20d?= =?UTF-8?q?la=20AI:=20pages/ski-2027-kb.zip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Przy każdej regeneracji gen_pages.py buduje archiwum do wrzucenia w okno czatu: wszystkie pliki .md bundle'a z zachowaniem struktury katalogów (28 plików: koncepty, indexy podkatalogów, log.md) plus wygenerowany AI-README.md. Nie wchodzą pages/, zdjęcia, generatory ani __pycache__ — paczka niesie samą wiedzę, nie rusztowanie. Deterministycznie: stały czas modyfikacji wpisów (1980-01-01), stała kolejność i stały poziom kompresji, więc archiwum jest bajt w bajt takie samo, dopóki nie zmieni się treść — git nie widzi diffów z niczego (zweryfikowane: dwa uruchomienia, ten sam md5). Z tego samego powodu AI-README.md podaje jako datę nie odczyt zegara, tylko najnowsze `ostatnia_aktualizacja` w bundle'u ("data treści") — data z zegara robiłaby nową wersję pliku każdego dnia, także wtedy, gdy nic nie doszło. AI-README.md (PL + EN, generowany z bundle'a): czym jest baza, format OKF (markdown + YAML frontmatter, jeden plik = jeden koncept), polecenie odpowiadania wyłącznie z tych plików i objaśnienie dwóch pól niosących pewność danych — `status_ceny` i `dostepnosc_6_13_02_2027`, z ostrzeżeniem, żeby nie zgadywać dostępności przy 🔍 i nie podawać szacunków jako cen potwierdzonych. Link "Pobierz bazę (.zip) — wrzuć do ChatGPT/Claude'a i pytaj" jako piąty kafel na start.html i pozycja w sekcji "Wejście" na linki.html. Plus wpis do log.md podsumowujący całą zmianę terminu. Co-Authored-By: Claude Opus 5 (1M context) --- gen_pages.py | 127 ++++++++++++++++++++++++++++++++++++++++++ log.md | 8 +++ pages/linki.html | 4 +- pages/ski-2027-kb.zip | Bin 0 -> 39068 bytes pages/start.html | 2 +- viz.html | 4 +- 6 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 pages/ski-2027-kb.zip diff --git a/gen_pages.py b/gen_pages.py index b216bd7..313321a 100644 --- a/gen_pages.py +++ b/gen_pages.py @@ -41,10 +41,12 @@ Uruchomienie: python3 gen_pages.py from __future__ import annotations import html +import io import posixpath import re import shutil import sys +import zipfile from dataclasses import dataclass from pathlib import Path @@ -61,6 +63,16 @@ TERM_SHORT = "6–13.02" # nagłówek kolumny w tabeli porównawczej TERM_NOTE = "tydzień Fasching, szczyt sezonu" RESERVED = {"index.md", "log.md"} +# Pobieralna paczka źródeł dla AI (patrz sekcja niżej): same .md bundle'a +# plus wygenerowany AI-README.md, bez stron, zdjęć i generatorów. +ZIP_NAME = "ski-2027-kb.zip" +ZIP_ROOT = "ski-2027-kb" # katalog wewnątrz archiwum, żeby się nie rozsypało +AI_README = "AI-README.md" +# Stały czas modyfikacji wpisów: archiwum ma być bajt w bajt identyczne, +# dopóki nie zmieni się treść — inaczej każda regeneracja robiłaby gitowi +# diff z niczego. 1980-01-01 to minimum formatu ZIP. +ZIP_TIMESTAMP = (1980, 1, 1, 0, 0, 0) + # Publiczny adres wystawki — jedyne miejsce, w którym siedzi domena. Używa go # WYŁĄCZNIE pages/linki.html (spis do kopiowania i wysyłania grupie); wszystkie # pozostałe strony linkują względnie albo root-absolutnie, żeby działały tak @@ -1190,6 +1202,9 @@ TILES = [ ("/pages/linki.html", "Wszystkie linki", "Pełne adresy wszystkich stron wystawki, z przyciskiem „kopiuj” — " "do wrzucenia grupie."), + (f"/{PAGES_DIRNAME}/{ZIP_NAME}", "Pobierz bazę (.zip) — wrzuć do ChatGPT/Claude'a i pytaj", + "Wszystkie źródła wiedzy w markdownie, bez stron i zdjęć — model " + "przeczyta całość i odpowie na pytania o wyjazd."), ] @@ -1326,6 +1341,12 @@ def link_sections( ), Link(site_url("viz.html"), "Graf powiązań", "Struktura bazy — załącznik."), Link(site_url("pages/linki.html"), "Ten spis linków", "Strona, którą czytasz."), + Link( + site_url(f"{PAGES_DIRNAME}/{ZIP_NAME}"), + "Pobierz bazę (.zip) — wrzuć do ChatGPT/Claude'a i pytaj", + "Wszystkie źródła wiedzy w markdownie, bez stron i zdjęć — model " + "przeczyta całość i odpowie na pytania o wyjazd.", + ), ] used.add("wyjazd") @@ -1494,6 +1515,110 @@ def render_links(concepts: list[Concept], regions: list[Region]) -> str: return _page_shell("Linki", 0, content, script=LINKS_JS) +# --- pobieralna paczka źródeł dla AI ---------------------------------- + +def bundle_sources() -> list[Path]: + """Pliki .md bundle'a — z zachowaniem struktury katalogów.""" + return sorted( + path + for path in BUNDLE_ROOT.rglob("*.md") + if ".git" not in path.parts + and PAGES_DIRNAME not in path.relative_to(BUNDLE_ROOT).parts + ) + + +def bundle_date(concepts: list[Concept]) -> str: + """Data treści = najnowsze `ostatnia_aktualizacja` w bundle'u. + + Świadomie NIE bierzemy zegara: paczka ma być identyczna, dopóki nie + zmieni się wiedza. Data z zegara robiłaby nową wersję pliku każdego + dnia, także wtedy, gdy nic nie doszło. + """ + dates = [ + str(c.frontmatter.get("ostatnia_aktualizacja") or "").strip() for c in concepts + ] + return max((d for d in dates if d), default="—") + + +def render_ai_readme(concepts: list[Concept]) -> str: + """AI-README.md do paczki — skrót index.md dla modelu po drugiej stronie.""" + offers = [c for c in concepts if is_offer(c)] + active = [c for c in offers if not is_archived(c)] + regions = sorted( + c.id.split("/")[0] for c in concepts if c.id.endswith("/region") + ) + date = bundle_date(concepts) + return f"""# Ski 2027 — baza wiedzy wyjazdu ({TERM_LABEL}) + +## PL + +To baza wiedzy wyjazdu narciarskiego czterech rodzin (14 osób: 8 dorosłych, +4 nastolatków, 2 dzieci) z Warszawy w Alpy w terminie **{TERM_LABEL}** +({TERM_NOTE}). Format to OKF: markdown z frontmatterem YAML, gdzie jeden +plik = jeden koncept, `index.md` w każdym katalogu jest listingiem, a +`log.md` historią zmian; porównywane są {len(regions)} regiony +({", ".join(regions)}) w schemacie `/region.md` + +`/oferty/*.md`, razem {len(active)} aktualnych kart noclegów. +Odpowiadaj na pytania o ten wyjazd **wyłącznie na podstawie tych plików** i +podawaj, z którego pliku pochodzi odpowiedź. + +O pewności danych mówią dwa pola frontmattera: `status_ceny` +(ZWERYFIKOWANE = odczytane z cennika obiektu, SZACUNEK = nasza estymacja, +do potwierdzenia) oraz `{AVAILABILITY_FIELD}` ze statusem ✅ DOSTĘPNE +(zweryfikowane) / ❌ BRAK (zweryfikowane) / 🔍 BRAK DANYCH (do +weryfikacji). Nie przedstawiaj szacunków jako cen potwierdzonych i nie +zgaduj dostępności tam, gdzie stoi 🔍. Karty z `priorytet: ARCHIWALNA` +pochodzą z riserczu na poprzedni termin (16–23.01.2027) — traktuj je jako +historyczne, nie jako aktualną ofertę. + +**Data treści (najnowsza aktualizacja w bazie): {date}.** + +## EN + +This is the knowledge base of a ski trip for four families (14 people: +8 adults, 4 teenagers, 2 children) driving from Warsaw to the Alps on +**{TERM_LABEL}** (carnival week, peak season). The format is OKF: markdown +with YAML frontmatter, one file = one concept, `index.md` in each directory +is a listing and `log.md` is the change history; {len(regions)} regions +({", ".join(regions)}) are compared using the same schema +`/region.md` + `/oferty/*.md`, with {len(active)} current +accommodation cards in total. Answer questions about this trip **only from +these files** and say which file an answer comes from. + +Two frontmatter fields carry the confidence of the data: `status_ceny` +(ZWERYFIKOWANE = read from the property's own price list, SZACUNEK = our +estimate, unconfirmed) and `{AVAILABILITY_FIELD}` (✅ AVAILABLE, +verified / ❌ NOT AVAILABLE, verified / 🔍 NO DATA, to be checked). Never +present an estimate as a confirmed price and never guess availability where +the value is 🔍. Cards marked `priorytet: ARCHIWALNA` come from research +for the previous date (16–23.01.2027) — treat them as historical. + +**Content date (latest update in the base): {date}.** +""" + + +def write_bundle_zip(concepts: list[Concept]) -> Path: + """Buduje pages/ski-2027-kb.zip — deterministycznie, bajt w bajt.""" + entries: list[tuple[str, str]] = [ + (f"{ZIP_ROOT}/{AI_README}", render_ai_readme(concepts)) + ] + for path in bundle_sources(): + rel = path.relative_to(BUNDLE_ROOT).as_posix() + entries.append((f"{ZIP_ROOT}/{rel}", path.read_text(encoding="utf-8"))) + + buffer = io.BytesIO() + with zipfile.ZipFile(buffer, "w", zipfile.ZIP_DEFLATED, compresslevel=9) as archive: + for name, text in sorted(entries): + info = zipfile.ZipInfo(name, date_time=ZIP_TIMESTAMP) + info.compress_type = zipfile.ZIP_DEFLATED + info.external_attr = 0o644 << 16 + archive.writestr(info, text.encode("utf-8")) + + target = PAGES_DIR / ZIP_NAME + target.write_bytes(buffer.getvalue()) + return target + + # --- raport braków ---------------------------------------------------- @@ -1566,6 +1691,8 @@ def main() -> int: path.write_text(markup, encoding="utf-8") written.append(path) + written.append(write_bundle_zip(concepts)) + print(f"Renderer markdown: {RENDERER}") print(f"Zapisano {len(written)} plików w {PAGES_DIR}:") for path in written: diff --git a/log.md b/log.md index d9df03e..2cb80ad 100644 --- a/log.md +++ b/log.md @@ -1,5 +1,13 @@ # Update Log +## 2026-08-04 + +* **Update**: **Zmiana terminu wyjazdu: 16–23.01 → 6–13.02.2027** i nałożenie riserczu 08.2026 na cały bundle. Nowy termin to tydzień **Fasching** (karnawał, Popielec 10.02) plus ferie bawarskie — szczyt sezonu, więc wszystkie budżety noclegowe poszły w górę, a [SFL](/sfl/region.md) traci styczniową przewagę cenową (u nich luty to pełny wysoki sezon). Zaktualizowane body i pola merytoryczne czterech regionów, dziesięciu kart noclegów i [szablonu maila](/szablon-maila.md). Każda karta noclegu ma nowe pole `dostepnosc_6_13_02_2027` z legendą ✅ DOSTĘPNE (zweryfikowane) / ❌ BRAK (zweryfikowane) / 🔍 BRAK DANYCH (do weryfikacji). Jedyny zweryfikowany status w bazie jest negatywny: [Glemm Lodge](/saalbach/oferty/glemm-lodge.md) ma na ten tydzień zajęte wszystkie 3 apartamenty (wolne 13–20.02 i 27.02–06.03) — twardy dowód presji na tydzień karnawału. [Wyjazd](/wyjazd.md) przepisany: nowa tabela porównawcza regionów, tabela dostępności i wnioski przekrojowe (Kronplatz najlepiej znosi termin), plus sekcja "Plan B na wypadek pełnego tygodnia". +* **Update**: Restrukturyzacja do symetrii — `region.md` i `oferty/` z korzenia przeniesione do [`saalbach/`](/saalbach/index.md), więc wszystkie cztery regiony siedzą w jednym schemacie `/region.md` + `/oferty/*.md`. Zdjęcia obiektów przetrwały bez ruszania: mapowanie oferta→zdjęcia jest kluczowane po polu `id`, nie po ścieżce. Dołożony [`saalbach/index.md`](/saalbach/index.md), indexy podkatalogów zaktualizowane, listing [index.md](/index.md) przebudowany na cztery równorzędne regiony. +* **Update**: Karty [dom dla grupy](/saalbach/oferty/dom-dla-grupy.md) i [AlpenParks Rehrenberg](/saalbach/oferty/alpenparks-rehrenberg.md) — spoza paczki riserczowej — oznaczone jako **ARCHIWALNE**: ich ceny i dostępność dotyczą starego terminu. Wypadają z tabeli porównawczej i ze statusów dostępności do osobnej sekcji "Archiwum" na dole porównania. +* **Update**: `gen_pages.py` — nowa kolumna "Dostępność 6–13.02" w tabeli porównawczej (emoji + werdykt w komórce, pełna notatka pod kursorem, sortowanie decyzyjne), wiersz z zweryfikowanym brakiem miejsc na czerwono, sekcja "Archiwum", termin wyjazdu w stałych `TERM_LABEL`/`TERM_SHORT`/`TERM_NOTE` (stąd biorą go nagłówki wszystkich stron i raport braków). Raport braków czyta dostępność z pola frontmattera zamiast zgadywać z nagłówków w body. +* **Update**: Nowa **pobieralna paczka źródeł dla AI**: `pages/ski-2027-kb.zip` (budowana przy każdej regeneracji, deterministycznie — bajt w bajt taka sama, dopóki nie zmieni się treść) z wszystkimi plikami `.md` bundle'a, `log.md` i wygenerowanym `AI-README.md` po polsku i angielsku (czym jest baza, jak czytać `status_ceny` i `dostepnosc_6_13_02_2027`, data treści). Link "Pobierz bazę (.zip) — wrzuć do ChatGPT/Claude'a i pytaj" na [starcie](/index.md) i w spisie linków. + ## 2026-08-03 * **Update**: Rozstrzygnięcie rozbieżności skipassowej w [Ischgl](/ischgl/region.md) (ischgl.com, cennik 26/27, sprawdzone 03.08.2026): 385/231 € to **VIP Skipass** — tylko dla nocujących w Ischgl/Mathon, 46 urządzeń, bez wyciągów Kappl; 451/257 € to **Silvretta Skipass** — dla gości spoza Ischgl/Mathon (w tym Kappl), 75 urządzeń. Przy PLANIE A (nocleg w Kappl) obowiązuje Silvretta, więc ceny w tabelach zostają. Poprawione dwa błędy w karcie: tabela 451/257 € była podpisana jako VIP, a sekcja "Teren" przypisywała VIP-owi zasięg całego Paznaun. Pułapka wiekowa 8–<17 potwierdzona, dopisany plus: dzieci <8 lat gratis — w karcie i w [wyjeździe](/wyjazd.md) (tabela porównawcza + wniosek nr 2). diff --git a/pages/linki.html b/pages/linki.html index c390cb0..b1b8a8c 100644 --- a/pages/linki.html +++ b/pages/linki.html @@ -158,9 +158,9 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius

Linki do wysłania

-

Wszystkie 24 stron wystawki jako pełne adresy — do skopiowania i wrzucenia grupie. Lista powstaje z tych samych danych co reszta stron, więc nowa oferta pojawi się tu sama.

+

Wszystkie 25 stron wystawki jako pełne adresy — do skopiowania i wrzucenia grupie. Lista powstaje z tych samych danych co reszta stron, więc nowa oferta pojawi się tu sama.

-

Wejście

+

Wejście

Regiony

Oferty — Saalbach

Oferty — Ischgl/Paznaun

diff --git a/pages/ski-2027-kb.zip b/pages/ski-2027-kb.zip new file mode 100644 index 0000000000000000000000000000000000000000..af0871aea8a4f21e97e940480d2d7c49baa5e39a GIT binary patch literal 39068 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 V@Xh0^nY$Q=9q^?}^7_|Te*Wszystkie karty · Porównanie ofert · Linki · Graf

Ski 2027 — wyjazd 6–13.02.2027

6–13.02.2027 (tydzień Fasching, szczyt sezonu), 4 rodziny / 14 osób, wyjazd z Warszawy. Od czego zacząć:

- +

Regiony

Karta regionu = skipassy, dojazd, terminy, koszty życia i budżet całkowity.

diff --git a/viz.html b/viz.html index f4bd5a2..94fd681 100644 --- a/viz.html +++ b/viz.html @@ -226,8 +226,8 @@ hr { border: none; border-top: 1px solid #e2e8f0; margin: 14px 0; }