docs(wiki): industry survey of parking tariff systems + session log
Build desktop / desktop (push) Successful in 4m14s
CI / check (push) Successful in 43s
Build & push images / images (push) Successful in 2m49s

New reference page tariff-industry-survey.md (2026-07 web research):
field taxonomy — per-started-increment hourly (per-minute tried and
rolled back in practice), degressive ladders, day caps, up-to matrices,
day tickets, evening/overnight packages, event rates, early bird
(entry-time-conditioned), day/night + weekend/holiday/seasonal windows,
category pricing, contracts, merchant validations (amount/percent/
time-credit/re-rate), SFpark-style dynamic pricing. Coverage map: our
engine expresses everything a staffed single lot advertises; real gaps =
early bird (the pick-table-by-entry-time future design, same mechanism
as weekend menus) and validation overlays; anti-features = per-minute
billing + dynamic pricing. Indexed + logged.

Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
2026-07-05 16:37:53 +02:00
parent 4f902d869e
commit 14638c2e13
3 changed files with 156 additions and 0 deletions
+30
View File
@@ -2342,3 +2342,33 @@ read as a dead click on a slow open. Root cause of the slowness recorded as an o
fold from the last z-report's signed expectedDrawerMinor forward. Also from this session: dev-DB
migrations are MANUAL (pnpm db:migrate in packages/db) — a 500 "no such column" after pulling a
migration means it was skipped; booth containers migrate on boot and are immune.
## [2026-07-05] update | Camera health-check detail bucketed — device-monitor log noise fix
The monitor logs + re-emits a device status only when state OR detail changes, but the camera
probe's detail was the exact snapshot byte count — which differs on every JPEG frame, so healthy
cameras "changed" on nearly every poll (a log line + websocket event each, inflating the freshly
budgeted container logs). Camera healthCheck detail is now a stable power-of-two bucket
("snapshot ≈16 KB" / "≈256 KB"; "<1 KB" stays exact as a suspicious-frame flag), so it moves only
on a real shift (stream/resolution change, empty body). packages/devices camera.ts + 3 tests.
## [2026-07-05] query | Industry survey: most-used parking tariff systems
Web research filed as [[tariff-industry-survey]] (reference). Field taxonomy: linear-hourly per
started increment (per-MINUTE tried and rolled back — Leuven), degressive ladders, day caps,
grace; whole-stay prices (day tickets, up-to matrices, evening/overnight packages, event rates);
entry-time-conditioned EARLY BIRD (enter-before cutoff, anti-arbitrage exit conditions); calendar
windows (day/night, weekend/holiday, seasonal); category pricing; monthly contracts; merchant
VALIDATIONS (amount/percent/time-credit/full-comp/re-rate); dynamic demand pricing (SFpark 60-80%
occupancy banding — municipal/airport scale only). Coverage map: our engine expresses everything
a staffed single lot advertises; the two real gaps are early bird (= the pick-table-by-entry-time
future design, same mechanism as weekend menus) and validation overlays. Anti-features confirmed:
per-minute billing, dynamic pricing.
## [2026-07-05] update | Composer page gets the published-versions sidebar too
The published-history sidebar built for the lab landed only there; the operator expected it on
/setup/tariff as well. TariffComposer now mirrors it: right sidebar of published versions (name or
effective date, active badge), click → formFromVersion loads it into the editor as the seed for
the next publish (which, per the sidebar hint, always creates a NEW immutable version). Details on
[[tariff]] (Composer section).