server: /api/stats endpoint + per-day-per-drink trend data

New GET /api/stats — same computeStats() shared with the existing
/admin/api/stats, so the numbers stay identical. Auth is gated by
STATS_PUBLIC (default: requires the admin session, same as every other
/admin/api endpoint) rather than always-open, so a bare deploy doesn't
expose revenue by default.

Also adds per_drink_by_day (day -> per-drink sold qty) alongside the
existing all-time per_drink totals — the trend-over-time data mara asked
for on #40. Same businessDay() JS bucketing as by_day for DST correctness,
same reasoning as the existing comment on that.

Client page for /stats itself is a follow-up commit.
This commit is contained in:
iris 2026-07-30 10:19:18 +02:00 committed by mara
commit 9c75ce5243
2 changed files with 129 additions and 62 deletions

View file

@ -16,3 +16,8 @@ HOST=0.0.0.0
# previous business day, so a 03:00 sale lands on the night before.
#WUTZ_TZ=Europe/Berlin
#WUTZ_DAY_CUTOFF_HOUR=5
# /stats page: by default it requires the same admin login as /admin. Set to
# 1 to make it viewable without logging in (e.g. a screen permanently
# mounted at a festival infopoint).
#STATS_PUBLIC=0