Ical export programu akcí (#352) - #358
Merged
Merged
Conversation
Nová interní servíruje odběr kalendáře na GET /api/public/program/ical (ProgramIcalService, ical-generator). Původní adresa staré interní /api/program/ical zůstává funkční, aby fungovaly už nastavené odběry v kalendářových aplikacích — v OpenAPI je označená jako deprecated. Akce jsou celodenní (DTEND je nevýlučné, tedy dateTill + 1 den), kalendář záměrně nemá timezone (ical-generator by pak psal DTSTAMP jako floating local time místo UTC). Zrušené akce zůstávají ve feedu jako STATUS:CANCELLED s prefixem "Zrušeno: ". UID je stabilní (event-<id>@bosan.cz), okno je 30 dní zpět a dopředu bez omezení. Closes #352
`webConfigStructure` a schémata `WebConfig`/`WebConfigStructure` nikdo neimportuje — zbytek po odstraněném nastavení webu. Oba soubory navíc odkazovaly na neexistující cesty (`src/app/schema/…`, `Codelist` z `codelist-editor`, který v repu není); `web-config-structure.ts` to maskoval přes `@ts-nocheck`, takže typecheck hlásil jen jednu z chyb.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Změny
https://interni.bosan.cz/api/public/program/ical— v public modulu, bez přihlášení,text/calendar.https://interni.bosan.cz/api/program/icalzase funguje a servíruje ten samý feed. Komu odběr kdysi fungoval, tomu se obnoví sám, bez zásahu. V OpenAPI je označená jakodeprecateds odkazem na novou.ical-generator(nová závislost backendu) vProgramIcalService.EventsRepository.getPublicProgramIcal()— stejný výběr akcí jako veřejný program (public + zrušené), ale bez stropu 100 řádků, který má JSON endpoint; společný query builder sdílí sgetPublicProgram().program:icalje vystavené v_linksna kořeni API, takže si ho veřejný web umí najít sám (doprovodné PR na bosan.cz).frontend/src/sdk, poznámka doCLAUDE.md.web-configve frontendu (webConfigStructure+ schémataWebConfig/WebConfigStructure). Nikdo je neimportoval a obojí odkazovalo na neexistující cesty —web-config-structure.tsto maskoval přes@ts-nocheck, takžetschlásil jen jednu z těch dvou rozbitých cest. Klidně vyhoďte z tohoto PR, pokud to chcete řešit zvlášť.Co feed obsahuje: akce jsou celodenní (
DTENDje nevýlučné, tedydateTill + 1 den), popis skládá text akce +Sraz:/Konec:+ oddíly + vedoucí,LOCATIONje místo,URLvede na přihlášku (má-li ji akce). Zrušené akce zůstávají jakoSTATUS:CANCELLEDs prefixemZrušeno:, stejně jako je ukazuje web.UIDje stabilní (event-<id>@bosan.cz), takže klienti akce aktualizují a nezdvojují. Okno je 30 dní zpět, dopředu bez omezení.Dvě věci, které stojí za zmínku, protože nejsou samozřejmé:
ical-generatorpak píšeDTSTAMPjako floating local time místo UTC, což je proti RFC 5545 (DTSTAMPtam musí být v UTC) aVTimezonegenerátor s tím nepohne, protožeformatDate()se řídí jen tím, jestli je timezone na kalendáři vůbec nastavená. Bez ní jeDTSTAMPkorektní UTC a celodenníDTSTART/DTENDto nijak neovlivní (luxonové hodnoty siEurope/Praguenesou samy).timeFrom/timeTilljsou volný text ("8:00","ráno"), takže se z nich časy nikdy neparsují a akce zůstávají celodenní — jako to dělala stará interní.Testovací scénář
https://test.interni.bosan.cz/api/public/program/ical— měl by se stáhnout.icssoubor s nadcházejícími akcemi.https://test.interni.bosan.cz/api/program/ical.Zrušeno:.web-confignic nerozbilo.Po otestování vždy napiš feedback, buď
Approve review, neboRequest changes. Návod zde: Jak na testování🤖 Generated with Claude Code
https://claude.ai/code/session_01J3H3cr1ZGK3boxU31MM2KJ