feat: analytics parity — tool cost, date ranges, budgets, query explorer, replay, snapshots (v2.4.0)
Analytics parity phases 2–7 (docs/plans/analytics-parity/), built on
138e706 and ported onto v2.3.1:
- Cost by AI tool (?tool= on cost/analytics/stats/workflows, by_tool,
Codex fast/priority and flex tiers, agenthub_cost_usd_total{tool,model})
- Date ranges (from/to) on cost/analytics/workflows; Analytics range select
with Today / This week (Monday) / This month (1st) / 7d / 30d / 90d / All /
Custom; workflow filters carried into workflow-stats.js (read worker)
- Budgets and cost alerts as alert rule types (alert_rules rebuilt without
its rule_type CHECK), GET /api/budgets/status, rule preview, spend pace,
status-bar budget chip; rules stay editable in place
- Query Explorer (/query, allowlisted sort, CSV/JSON export) and scheduled
reports (report_definitions/report_runs, Settings → Reports)
- Session Replay tab and immutable snapshots (session_snapshots, /snapshot/:token)
- Remote Codex sync, push ingest with a hashed token, privacy redaction and
ignored folders (Settings → Data), Cursor sessions (no cost)
- Read-only MCP server, statusline, Grafana/Prometheus files
Also: resizable sidebar, pet run/wave animations, the workspace home keeps a
half-typed prompt, and the pre-commit hook runs only the related tests for a
small commit.
This commit is contained in:
@@ -561,6 +561,11 @@
|
||||
"deleteAndPurge": "Xóa + xóa dữ liệu",
|
||||
"removeKeep": "Xóa (giữ dữ liệu)",
|
||||
"remoteSourceBadgeTitle": "Được thu thập từ một máy từ xa",
|
||||
"fieldSyncCodex": "Kéo cả phiên Codex",
|
||||
"fieldRemoteCodexHome": "Thư mục Codex trên máy từ xa (tùy chọn)",
|
||||
"fieldRemoteCodexHomeHint": "Mặc định ~/.codex (wsl:~/.codex khi thư mục Claude nằm trong WSL). Thư mục sessions/ của nó được sao chép về, và các phiên hiện ra như phiên Codex của nguồn này, kèm token và chi phí.",
|
||||
"codexOn": "+ Codex",
|
||||
"syncCodex": "{{n}} Codex",
|
||||
"fieldLabelPlaceholder": "Máy dev"
|
||||
},
|
||||
"cursorPathsNote": "Chỉ mang tính thông tin: phiên Cursor cũng được tính — Cursor tình cờ dùng cùng đường dẫn ~/.claude với Claude Code (cục bộ và trên máy từ xa đã đồng bộ).",
|
||||
@@ -802,6 +807,14 @@
|
||||
"about": {
|
||||
"title": "Giới thiệu",
|
||||
"description": "Phiên bản máy chủ, thời gian hoạt động và môi trường chạy."
|
||||
},
|
||||
"snapshots": {
|
||||
"title": "Snapshot",
|
||||
"description": "Các bản sao chỉ đọc, đã đóng băng của phiên, mỗi bản có liên kết riêng."
|
||||
},
|
||||
"reports": {
|
||||
"title": "Báo cáo",
|
||||
"description": "Bản tóm tắt phân tích ghi ra theo lịch, dạng HTML hoặc JSON."
|
||||
}
|
||||
},
|
||||
"backPrevious": "Quay lại",
|
||||
@@ -839,6 +852,79 @@
|
||||
"enable": "Bật",
|
||||
"disable": "Tắt"
|
||||
},
|
||||
"snapshots": {
|
||||
"title": "Snapshot phiên",
|
||||
"description": "Tạo từ trang của phiên bằng nút Snapshot. Chúng vẫn còn sau khi Xóa dữ liệu; xóa chúng ở đây.",
|
||||
"empty": "Chưa có snapshot nào.",
|
||||
"events": "{{n}} sự kiện",
|
||||
"redacted": "Đã che đường dẫn",
|
||||
"open": "Mở",
|
||||
"copyLink": "Sao chép liên kết",
|
||||
"delete": "Xóa",
|
||||
"deleteTitle": "Xóa snapshot này?",
|
||||
"deleteBody": "Liên kết của nó sẽ không dùng được nữa. Bản thân phiên không bị ảnh hưởng.",
|
||||
"cancel": "Hủy"
|
||||
},
|
||||
"pushIngest": {
|
||||
"title": "Đẩy dữ liệu về (push ingest)",
|
||||
"description": "Cho máy mà dashboard không SSH tới được: máy đó tự đẩy hook của nó tới POST /api/hooks/ingest-batch bằng token tạo ở đây. Các phiên được gắn tên máy gửi lên (push:<tên>) và có trạng thái, sự kiện trực tiếp; chi phí token cần transcript, thứ chỉ nguồn SSH mang về.",
|
||||
"on": "Đang bật — đã có token",
|
||||
"off": "Đang tắt — chưa có token",
|
||||
"create": "Tạo token",
|
||||
"rotate": "Đổi token",
|
||||
"revoke": "Thu hồi",
|
||||
"rotateConfirm": "Tạo token mới? Token hiện tại ngừng hoạt động ngay.",
|
||||
"revokeConfirm": "Thu hồi token và tắt push ingest?",
|
||||
"shownOnce": "Hãy sao chép token này ngay: chỉ bản băm của nó được lưu, nên nó không bao giờ hiện lại.",
|
||||
"copy": "Sao chép",
|
||||
"envOwned": "AGENTHUB_PUSH_TOKEN_SHA256 được đặt bởi môi trường khởi động dashboard; hãy đổi nó ở đó.",
|
||||
"reachHint": "Máy kia phải truy cập được dashboard này: khởi động với DASHBOARD_HOST (và DASHBOARD_ALLOWED_HOSTS cho tên của nó). Qua http thường, token đi trên mạng ở dạng đọc được — chỉ dùng trong mạng tin cậy, hoặc sau TLS. Script chuyển tiếp dưới đây giữ token trong một tệp header, không bao giờ trên dòng lệnh:",
|
||||
"limits": "Tối đa 500 sự kiện và 1 MB mỗi yêu cầu. Hook cho phiên thuộc nguồn khác bị từ chối; đường dẫn transcript bị bỏ (chúng trỏ tới tệp trên máy gửi). Nhận hook Codex; không nhận hook Antigravity."
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Quyền riêng tư",
|
||||
"description": "Những gì AgentHub giữ lại từ hook và lịch sử nhập vào. Cả hai mặc định tắt và chỉ áp dụng cho dữ liệu mới.",
|
||||
"redact": "Che bí mật trước khi lưu",
|
||||
"redactHint": "Khóa API và token có dạng đã biết, header bearer, khóa riêng và giá trị password=/TOKEN= trong payload và tóm tắt sự kiện được thay bằng [redacted]. Transcript trên đĩa là tệp của chính CLI và không bị thay đổi.",
|
||||
"ignore": "Thư mục bỏ qua",
|
||||
"ignoreHint": "Mỗi dòng một đường dẫn tuyệt đối. Hook từ các thư mục này, và mọi thứ bên trong, bị bỏ hoàn toàn; việc nhập lịch sử và bộ đọc Codex cũng bỏ qua phiên của chúng. AGENTHUB_IGNORE_CWD đặt cùng danh sách này.",
|
||||
"envOwned": "Một giá trị ở đây do môi trường khởi động dashboard đặt, và không thể đổi từ trang này."
|
||||
},
|
||||
"reports": {
|
||||
"title": "Báo cáo định kỳ",
|
||||
"description": "Bản tóm tắt những ngày gần nhất — phiên, sự kiện, token, chi phí theo model và theo công cụ AI, công cụ dùng nhiều nhất, ngân sách — ghi ra HTML hoặc JSON theo lịch. Báo cáo và lịch sử chạy được giữ lại khi Xóa dữ liệu.",
|
||||
"add": "Báo cáo mới",
|
||||
"defaultName": "Tóm tắt hằng tuần",
|
||||
"empty": "Chưa có báo cáo định kỳ nào.",
|
||||
"name": "Tên",
|
||||
"windowDays": "Số ngày",
|
||||
"frequency": "Tần suất",
|
||||
"daily": "Hằng ngày",
|
||||
"weekly": "Hằng tuần",
|
||||
"weekday": "Ngày",
|
||||
"hour": "Giờ",
|
||||
"windowHint": "Báo cáo gồm các ngày trọn vẹn trước ngày chạy, theo múi giờ của trình duyệt này.",
|
||||
"save": "Lưu",
|
||||
"cancel": "Hủy",
|
||||
"enabled": "Bật",
|
||||
"runNow": "Chạy ngay",
|
||||
"history": "Lịch sử",
|
||||
"edit": "Sửa",
|
||||
"delete": "Xóa",
|
||||
"everyDay": "Mỗi ngày lúc {{time}}",
|
||||
"everyWeek": "Mỗi {{day}} lúc {{time}}",
|
||||
"window_one": "{{count}} ngày gần nhất",
|
||||
"window_other": "{{count}} ngày gần nhất",
|
||||
"lastRun": "Lần chạy gần nhất {{at}}",
|
||||
"noRuns": "Chưa chạy lần nào.",
|
||||
"trigger": {
|
||||
"schedule": "Theo lịch",
|
||||
"manual": "Thủ công"
|
||||
},
|
||||
"download": "Tải {{format}}",
|
||||
"deleteTitle": "Xóa báo cáo này?",
|
||||
"deleteBody": "Lịch chạy, lịch sử chạy và các tệp nó đã ghi sẽ bị xóa."
|
||||
},
|
||||
"prefsBackup": {
|
||||
"title": "Tùy chọn của trình duyệt này",
|
||||
"description": "Giao diện, ngôn ngữ, cài đặt thông báo, thú cưng, thanh bên và bố cục không gian làm việc được lưu trong trình duyệt này. Lưu chúng ra tệp để chuyển sang trình duyệt khác, hoặc khôi phục từ tệp.",
|
||||
|
||||
Reference in New Issue
Block a user