Commit Graph

205 Commits

Author SHA1 Message Date
batmanisko fe6bb3290e feat: přidání testů – Jest unit testy + Playwright E2E + CI pipeline
ci/woodpecker/push/workflow Pipeline was canceled
ci/woodpecker/pr/workflow Pipeline was canceled
Server:
- Jest unit testy (88 testů): auth, utils, restaurants, service, voting, pizza
- in-memory storage mock pro izolaci testů
- oprava race condition při inicializaci Redis (storageReady promise)
- dev route dostupná i pro NODE_ENV=test
- getStatsMock deterministický (nahrazení Math.random)
- exporty interních helperů pro testovatelnost
- /api/health endpoint pro Playwright readiness check
- tsconfig vylučuje test soubory z produkčního buildu

E2E (e2e/):
- Playwright s Firefoxem + Chromiem
- testy: login, menu, výběr jídla, pizza day životní cyklus, QR/nastavení
- trusted-header auth bypass pro testy, video + trace při selhání

CI (Woodpecker):
- pipeline spouštěna na všech větvích a PR (nejen master)
- redis-stack-server service pro E2E – čistý Redis per větev automaticky
- kroky: unit testy, build, E2E testy (parallel kde možné)
- Docker build zůstává pouze pro master

Co-Authored-By: Claude Opus (extra usage) 4.7 <noreply@anthropic.com>
2026-04-29 00:25:22 +02:00
batmanisko 1e1e23df80 feat: úhrada za všechny jednou osobou (issue #29, SINGLE_PAYMENT)
ci/woodpecker/push/workflow Pipeline was canceled
Přidává možnost, aby jeden strávník zaplatil celý účet v restauraci a ostatní
obdrželi QR kód pro refundaci.

Prerekvizita — podpora více QR kódů na (příjemce, den):
- PendingQr.id (UUID) nahrazuje deduplikaci podle data; každý QR má vlastní klíč
- QR obrázky uloženy do Redis/storage (base64) místo tmpdir — přežijí redeploy
- GET /api/qr vyžaduje ?id= parametr; dismissQr přijímá {id} místo {date}

Feature:
- Ikona 'Zaplatit za všechny' v choices-table pro každou LunchChoice (kromě
  PIZZA/NEOBEDVAM/ROZHODUJI); viditelná jen při ≥2 strávnících a vyplněném účtu
- PayForAllModal: tabulka strávníků s prefillovanými cenami z menu, příplatky
  per-diner, celkové dýško rozpočtené rovnoměrně, generování QR přes POST /api/qr/generate
- parsePriceCzk() helper pro parsing 'N Kč' → number

Co se nemění: POST /api/qr/generate API kontrakt, PizzaOrder.hasQr boolean

Co se mění v OpenAPI: PendingQr.id (required), getPizzaQr ?id param, dismissQr body

Co-Authored-By: opmrdkazkrtkaus <opmrdkazkrtkaus@melancholik.eu>
2026-04-28 22:44:32 +02:00
mates 4e7b83b667 fix: oprava parsování pro aktuální podobu TechTower
ci/woodpecker/push/workflow Pipeline failed
2026-04-28 12:50:19 +02:00
mates d6729388ab feat: podpora salátů z Pizza Chefie
ci/woodpecker/push/workflow Pipeline failed
2026-04-02 10:51:46 +02:00
mates e9696f722c feat: automatický výběr výchozího času
ci/woodpecker/push/workflow Pipeline failed
2026-03-09 11:50:24 +01:00
mates 44cf749bc9 feat: nový způsob zobrazování novinek
ci/woodpecker/push/workflow Pipeline is pending
fix: oprava kopírování changelogů do Docker image

fix: oprava kopírování changelogů do Docker image

fix: oprava
2026-03-08 10:55:50 +01:00
batmanisko f8a65d7177 feat: detekce starého menu TechTower, příznak isStale
Pokud TechTower vrátí menu z jiného týdne, uloží data s příznakem
isStale a zobrazí varování "Data jsou z minulého týdne" místo chybové
hlášky. Odstraněno staré varování o datech starších 24 hodin.
2026-03-05 22:11:45 +01:00
batmanisko 607bcd9bf5 feat: uprava refresh menu hesel
každý může udělat refresh, jen ne tak často, bypass mimo zdrojak
2026-03-05 21:50:17 +01:00
batmanisko b6fdf1de98 feat: akce "Neobědvám" přímo z push notifikace
ci/woodpecker/push/workflow Pipeline was successful
2026-03-04 14:37:05 +01:00
batmanisko 20cc7259a3 chore: test endpoint na push 2026-03-04 14:11:22 +01:00
batmanisko d62f6c1f5a feat: push notifikace pro připomínku výběru oběda
ci/woodpecker/push/workflow Pipeline was successful
2026-03-04 13:33:58 +01:00
mates 5f79a9431c fix: oprava závislostí
ci/woodpecker/push/workflow Pipeline was successful
2026-02-20 14:32:02 +01:00
mates cc98c2be0d feat: podpora ručního generování QR kódů pro platby
ci/woodpecker/push/workflow Pipeline was successful
2026-02-20 14:17:39 +01:00
mates ac6727efa5 feat: vylepšení Pizza day
ci/woodpecker/push/workflow Pipeline was successful
2026-02-10 23:59:58 +01:00
batmanisko b8629afef2 feat: trvalé zobrazení QR kódu do ručního zavření (#31)
QR kódy pro platbu za pizza day jsou nyní zobrazeny persistentně
i po následující dny, dokud uživatel nepotvrdí platbu tlačítkem
"Zaplatil jsem". Nevyřízené QR kódy jsou uloženy per-user v storage
a zobrazeny v sekci "Nevyřízené platby".
2026-02-04 17:34:05 +01:00
batmanisko d366ac39d4 feat: podpora per-user notifikací s Discord, ntfy a Teams (#39)
Uživatelé mohou v nastavení konfigurovat vlastní webhook URL/topic
pro Discord, MS Teams a ntfy, a zvolit události k odběru.
Notifikace jsou odesílány pouze uživatelům se stejnou zvolenou lokalitou.
2026-02-04 17:33:53 +01:00
batmanisko fdd42dc46a feat: zobrazení minulého týdne o víkendu místo "Užívejte víkend" (#30)
Na víkendu se nyní zobrazuje páteční menu s možností procházet celý týden.
Editační ovládací prvky jsou automaticky skryté díky existující logice canChangeChoice.
2026-02-04 14:56:24 +01:00
batmanisko 6f43c74769 fix: resolve 6 Gitea issues (#9, #10, #12, #14, #15, #21)
- #21: Add missing await in removeChoiceIfPresent() to prevent user appearing in two restaurants
- #15: Add 1-hour TTL for menu refetching to avoid scraping on every page load
- #9: Block stats API and UI navigation for future dates
- #14: Add restaurant warnings (missing soup/prices, stale data) with warning icon
- #12: Pre-fill restaurant/departure dropdowns from existing choices on page refresh
- #10: Add voting statistics endpoint and table on stats page
2026-02-04 13:18:27 +01:00
mates f91973f1a4 Oprava parsování názvů TechTower 2026-01-19 10:18:24 +01:00
mates 54e5be6b6a Povýšení závislostí 2026-01-13 15:43:19 +01:00
mates e03ba45415 Možnost označení objednávajícího 2026-01-13 14:06:16 +01:00
mates be4cee4cdb Oprava parsování Sladovnická a TechTower 2026-01-09 08:35:35 +01:00
mates 039d8457f3 Povýšení závislostí
ci/woodpecker/push/workflow Pipeline was successful
2025-11-06 21:22:39 +01:00
mates ccfe9a9ae1 Oprava parsování Sladovnické v případě chybějících dnů
ci/woodpecker/push/workflow Pipeline was successful
2025-10-31 08:59:30 +01:00
mates fd67c0e646 Oprava buildu
ci/woodpecker/push/workflow Pipeline was successful
2025-10-11 13:15:47 +02:00
mates 60150889b0 Povýšení závislostí
ci/woodpecker/push/workflow Pipeline failed
2025-10-11 13:02:56 +02:00
mates 86c50b315a Přidání alergenů do mock dat
ci/woodpecker/push/workflow Pipeline failed
2025-10-11 11:01:42 +02:00
mates 1acf9bf092 Úprava cesty pro čtení easter eggs
ci/woodpecker/push/workflow Pipeline was successful
2025-10-10 08:49:17 +02:00
mates 81f67c8424 Podpora parsování a zobrazení alergenů
ci/woodpecker/push/workflow Pipeline was successful
2025-10-06 16:28:38 +02:00
mates c2a001b7e5 Oprava parsování TechTower dle aktuální podoby HTML
ci/woodpecker/push/workflow Pipeline was successful
2025-10-06 13:12:58 +02:00
mates 670e45b805 Nevyvolávat přenačtení u zavřených podniků
ci/woodpecker/push/workflow Pipeline was successful
2025-08-11 10:30:42 +02:00
mates 52769fc981 Opravy dle SonarQube
ci/woodpecker/push/workflow Pipeline was successful
2025-08-07 13:12:55 +02:00
mates 0d90453c38 Oprava chybného čtení .env souborů 2025-08-07 13:02:41 +02:00
mates a9709a944f Úprava pro novou podobu stránek Sladovnická
ci/woodpecker/push/workflow Pipeline was successful
2025-08-04 17:30:04 +02:00
mates b4b62870e3 Úprava .gitignore 2025-08-04 17:26:38 +02:00
mates 480fe725f1 Oprava načítání jídel pro Šenk Šeříková na přelomu měsíce
ci/woodpecker/push/workflow Pipeline was successful
2025-08-01 14:00:27 +02:00
batmanisko cfffd2b31d pro refresh endpoint nevyzadovat authtoken 2025-07-31 23:45:47 +02:00
batmanisko 58bb5f4e7d pro refresh endpoint nevyzadovat authtoken 2025-07-31 23:41:51 +02:00
batmanisko 124fdce69d tak jsem to mozna robil, ale mozna taky ne lol 2025-07-31 23:35:38 +02:00
batmanisko ff20394b97 feat: Přidání funkce pro manuální refresh jidel. 2025-07-31 23:29:19 +02:00
batmanisko a77a04bcdf umichal patek fix
ci/woodpecker/push/workflow Pipeline was successful
2025-07-30 12:00:03 +02:00
mates 42852805e0 Oprava plnění data a času poslední aktualizace menu
ci/woodpecker/push/workflow Pipeline was successful
2025-07-29 15:41:05 +02:00
batmanisko d767730b19 sonar
ci/woodpecker/push/workflow Pipeline was successful
2025-07-29 15:15:16 +02:00
batmanisko fa4f9903cb parametr forceupdate jidla
ci/woodpecker/push/workflow Pipeline was successful
2025-07-29 11:33:31 +02:00
batmanisko cf8be8c64f fix: feat jsem to dal na spatnej radaek
ci/woodpecker/push/workflow Pipeline was successful
2025-07-29 10:55:04 +02:00
batmanisko 4c2b08adf8 feat: refresh jidla endpoint
ci/woodpecker/push/workflow Pipeline failed
2025-07-29 10:43:49 +02:00
mates 62cc82da9a Úprava parsování TechTower pro aktuální týden
ci/woodpecker/push/workflow Pipeline was successful
2025-07-22 17:10:39 +02:00
mates 40c113a4c8 Oprava pádů při načítání z menicka.cz
ci/woodpecker/push/workflow Pipeline was successful
2025-07-07 08:47:39 +02:00
mates 7681584d11 Oprava parsování TechTower pro aktuální stav
ci/woodpecker/push/workflow Pipeline was successful
2025-07-07 08:24:26 +02:00
mates c670b4212a Revert "TechTower hack pro tento specifický týden"
ci/woodpecker/push/workflow Pipeline was successful
This reverts commit 5fd90de3f8.
2025-05-26 10:13:35 +02:00