feat(prezentacja): eksport wyników do Excela — tabela robocza (DAN-23/PRE-10) #45

Merged
gitea merged 1 commits from feat/dan23-excel-export into master 2026-07-30 13:46:54 +00:00
Owner

Pierwsza iteracja z zestawu „czysto" (bez swissepha, walidacji krzyżowej i
danych od użytkownika).

Astrolog chce pracować z dopasowaniami — filtrować, sortować, zaznaczać,
usuwać — najwygodniej w Excelu. Raport z logiki jest zagnieżdżony (obiekt →
fasety → próbki), więc spłaszczamy go do jednej płaskiej tabeli: wiersz =
jedno dopasowanie z bazy.

Kolumny: Obiekt · Faseta · Typ · Token · Sygnifikator · Rozwinięcie · Opis/efekt.

  • report_export.pyreport_to_xlsx(report) (openpyxl). Auto-filtr +
    zamrożony nagłówek
    = filtrowanie/sortowanie od razu w Excelu (PRE-10); „Opis"
    zawijany. Bez ozdób — materiał roboczy. Plik składamy w prezentacji (jak PDF
    idzie przez render): logika liczy, prezentacja formatuje wyjście.
  • /interpret — akcja export → pobranie .xlsx; przycisk „Pobierz Excel"
    obok „Szukaj interpretacji".
  • Zależność: openpyxl (czysty Python).

Weryfikacja

Round-trip pliku (openpyxl wczytuje wygenerowane bajty): nagłówek, spłaszczenie
obiekt→fasety→próbki na wiersze, auto-filtr A1:G{n} + freeze_panes A2,
pusty-raport-bezpieczny, % w treści nie psuje. Testy: +7, prezentacja 180.

Domyka DAN-23 + PRE-10. Następne „czysto": PRE-26 (cache-busting), PRE-06
(aspekty/orby), PRE-04 (synastria), DAN-26 (canary — mechanizm).

Pierwsza iteracja z zestawu **„czysto"** (bez swissepha, walidacji krzyżowej i danych od użytkownika). Astrolog chce **pracować** z dopasowaniami — filtrować, sortować, zaznaczać, usuwać — najwygodniej w Excelu. Raport z logiki jest zagnieżdżony (obiekt → fasety → próbki), więc spłaszczamy go do **jednej płaskiej tabeli**: wiersz = jedno dopasowanie z bazy. Kolumny: **Obiekt · Faseta · Typ · Token · Sygnifikator · Rozwinięcie · Opis/efekt**. - `report_export.py` — `report_to_xlsx(report)` (openpyxl). **Auto-filtr + zamrożony nagłówek** = filtrowanie/sortowanie od razu w Excelu (PRE-10); „Opis" zawijany. Bez ozdób — materiał roboczy. Plik składamy w prezentacji (jak PDF idzie przez render): logika liczy, prezentacja formatuje wyjście. - `/interpret` — akcja `export` → pobranie `.xlsx`; przycisk **„Pobierz Excel"** obok „Szukaj interpretacji". - Zależność: `openpyxl` (czysty Python). ## Weryfikacja Round-trip pliku (openpyxl wczytuje wygenerowane bajty): nagłówek, spłaszczenie obiekt→fasety→próbki na wiersze, auto-filtr `A1:G{n}` + `freeze_panes A2`, pusty-raport-bezpieczny, `%` w treści nie psuje. Testy: **+7**, prezentacja **180**. Domyka **DAN-23 + PRE-10**. Następne „czysto": PRE-26 (cache-busting), PRE-06 (aspekty/orby), PRE-04 (synastria), DAN-26 (canary — mechanizm).
gitea added 1 commit 2026-07-30 13:46:32 +00:00
feat(prezentacja): eksport wyników do Excela — tabela robocza (DAN-23/PRE-10)
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 10m29s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m32s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 16s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 11s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Has been cancelled
Testy / Build obrazu silnika B (swisseph) (push) Has been cancelled
Testy / Kontrola składni wszystkich warstw (push) Has been cancelled
Testy / Testy warstwy logicznej (silnik) (push) Has been cancelled
build / build (push) Successful in 53s
8ebce816cd
Astrolog chce PRACOWAĆ z dopasowaniami: filtrować, sortować, zaznaczać, usuwać —
najwygodniej w Excelu. Raport z logiki jest zagnieżdżony (obiekt → fasety →
próbki), więc spłaszczamy go do JEDNEJ płaskiej tabeli: wiersz = jedno
dopasowanie z bazy. Kolumny: Obiekt · Faseta · Typ · Token · Sygnifikator ·
Rozwinięcie · Opis/efekt.

- `report_export.py`: `report_to_xlsx(report)` (openpyxl). Auto-filtr + zamrożony
  nagłówek = filtrowanie/sortowanie od razu; „Opis" zawijany. Bez ozdób — materiał
  roboczy. Plik składamy TU, w prezentacji (jak PDF idzie przez render): logika
  liczy, prezentacja formatuje wyjście.
- `/interpret` dostaje akcję `export` → pobranie `.xlsx` (nie strona). Przycisk
  „Pobierz Excel" obok „Szukaj interpretacji".
- Zależność: openpyxl (czysty Python).

Zero swissepha, zero walidacji krzyżowej, zero danych od użytkownika — pierwsza
z iteracji „czysto". Testy: +7 (round-trip pliku: nagłówek, spłaszczenie, auto-
filtr/zamrożenie, pusty-bezpieczny, %, wpięcie w UI). Prezentacja 180.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea force-pushed feat/dan23-excel-export from 09c3a39fa1 to 8ebce816cd 2026-07-30 13:46:32 +00:00 Compare
gitea merged commit 8ebce816cd into master 2026-07-30 13:46:54 +00:00
gitea deleted branch feat/dan23-excel-export 2026-07-30 13:46:55 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gitea/astrololo#45