fischer-agentkit/tests/integration/admin
chiguyong 09feca3307 feat(admin): U7 — usage dashboard + quota enforcement
UsageRecord extended with user_id + department_id (backward compatible).
UsageStore Protocol extended: record() accepts user_id/department_id,
get_usage() accepts filters, new get_usage_by_user/department methods.
RedisUsageStore uses versioned keys (v2) for new records.

LLMGateway.chat()/chat_stream() accept user_id, department_ids, db_path.
Quota check before provider call: model whitelist + token limit + cost
limit (daily). Multi-department uses strictest-wins (any exceed → reject).
QuotaExceededError → 429 at route layer.

UsageService: summary, timeseries, by-model, top-users, export (CSV/JSON).
5 new admin endpoints under /admin/usage/*.

llm_gateway.py routes pass DepartmentContext + db_path to gateway,
catch QuotaExceededError → 429 (JSON for /chat, SSE error for /stream).

84 new tests. 441 admin+usage tests pass, no regressions.
2026-06-21 17:23:20 +08:00
..
__init__.py feat(admin): U1+U2+U4 — schema v3, department service, context filtering 2026-06-21 15:03:27 +08:00
test_department_isolation.py feat(admin): U1+U2+U4 — schema v3, department service, context filtering 2026-06-21 15:03:27 +08:00
test_department_routes.py feat(admin): U1+U2+U4 — schema v3, department service, context filtering 2026-06-21 15:03:27 +08:00
test_llm_config_routes.py feat(admin): U5 — LLM config admin endpoints + department quotas 2026-06-21 15:03:38 +08:00
test_skill_kb_routes.py feat(admin): U6 — Skill & KB management endpoints + department binding 2026-06-21 16:19:51 +08:00
test_usage_routes.py feat(admin): U7 — usage dashboard + quota enforcement 2026-06-21 17:23:20 +08:00
test_user_routes.py feat(admin): U3 — user CRUD + password reset + multi-department 2026-06-21 13:45:42 +08:00