Lukas
9242b4709a
Add GET /api/dashboard/bans/trend endpoint
Implement time-bucketed ban aggregation for dashboard trend charts:
- Add BanTrendBucket / BanTrendResponse Pydantic models and
BUCKET_SECONDS / BUCKET_SIZE_LABEL / bucket_count helpers to ban.py
- Add ban_service.ban_trend(): queries fail2ban DB with SQL bucket
grouping, fills zero-count buckets, respects origin filter
- Add GET /api/dashboard/bans/trend route in dashboard.py
- 20 new tests (10 service, 10 router); 480 total pass, 83% coverage
- ruff + mypy --strict clean
2026-03-11 16:38:19 +01:00
..
2026-02-28 21:15:01 +01:00
2026-03-10 19:16:00 +01:00
2026-03-07 21:16:49 +01:00
2026-03-01 15:33:24 +01:00
2026-03-07 20:03:43 +01:00
2026-03-11 16:38:19 +01:00
2026-03-07 20:42:34 +01:00
2026-02-28 21:15:01 +01:00
2026-03-01 15:09:22 +01:00
2026-03-06 19:49:31 +01:00
2026-03-01 14:37:55 +01:00
2026-03-01 15:59:06 +01:00