feat: add per-app usage filtering (Claude/Codex/Gemini)

Add dashboard-level app type filter to usage statistics, replacing the
DataSourceBar with a more useful segmented control. All components
(summary cards, trend chart, provider stats, model stats, request logs)
now respond to the selected app filter.

Backend: add optional app_type parameter to get_usage_summary,
get_daily_trends, get_provider_stats, and get_model_stats queries.
Frontend: new AppTypeFilter type, updated query keys with appType
dimension for proper cache separation, and RequestLogTable local
filter auto-locks when dashboard filter is active.
This commit is contained in:
Jason
2026-04-06 22:41:35 +08:00
parent c0bcd19d44
commit 687ffc237d
14 changed files with 337 additions and 121 deletions
+8
View File
@@ -1019,6 +1019,14 @@
"stream": "Stream",
"nonStream": "Non-stream",
"source": "Source",
"requestsLabel": "requests",
"costLabel": "total cost",
"appFilter": {
"all": "All",
"claude": "Claude Code",
"codex": "Codex",
"gemini": "Gemini"
},
"dataSources": "Data Sources",
"dataSource": {
"proxy": "Proxy",
+8
View File
@@ -1019,6 +1019,14 @@
"stream": "ストリーム",
"nonStream": "非ストリーム",
"source": "ソース",
"requestsLabel": "リクエスト",
"costLabel": "合計コスト",
"appFilter": {
"all": "すべて",
"claude": "Claude Code",
"codex": "Codex",
"gemini": "Gemini"
},
"dataSources": "データソース",
"dataSource": {
"proxy": "プロキシ",
+8
View File
@@ -1019,6 +1019,14 @@
"stream": "流",
"nonStream": "非流",
"source": "来源",
"requestsLabel": "次请求",
"costLabel": "总成本",
"appFilter": {
"all": "全部",
"claude": "Claude Code",
"codex": "Codex",
"gemini": "Gemini"
},
"dataSources": "数据来源",
"dataSource": {
"proxy": "代理",