{ "title": "Cảnh báo", "subtitle": "Cảnh báo theo quy tắc cho phiên, agent, sự kiện và mức dùng token", "refresh": "Làm mới", "ackAll": "Xác nhận tất cả ({{count}})", "ruleTypes": { "event_pattern": "Mẫu sự kiện", "inactivity": "Không hoạt động", "status_duration": "Agent bị kẹt", "token_threshold": "Ngưỡng token", "cost_threshold": "Ngưỡng chi phí", "budget": "Ngân sách chi tiêu" }, "ruleTypeHints": { "event_pattern": "Kích hoạt khi một sự kiện khớp với mẫu. Đặt số lần lớn hơn 1 để yêu cầu N sự kiện khớp trong khung thời gian (ví dụ: hơn 5 lỗi trong 2 phút).", "inactivity": "Kích hoạt khi một phiên đang hoạt động không nhận được sự kiện nào trong số phút đã cấu hình.", "status_duration": "Kích hoạt khi một agent giữ nguyên trạng thái đã chọn mà không có hoạt động trong số phút đã cấu hình.", "token_threshold": "Kích hoạt khi tổng mức dùng token của phiên (đầu vào + đầu ra + bộ nhớ đệm) vượt ngưỡng.", "cost_threshold": "Kích hoạt khi chi phí của một phiên chạm mức này, tính giá như chi phí riêng của phiên.", "budget": "Kích hoạt một lần mỗi kỳ ở từng ngưỡng của hạn mức chi tiêu — theo ngày, tuần hoặc tháng theo giờ địa phương, có thể chỉ cho một công cụ AI." }, "ruleDesc": { "eventPattern": "Khớp {{pattern}}", "eventPatternCount": "≥{{count}} × {{pattern}} trong {{window}} phút", "inactivity": "Phiên không hoạt động trong {{minutes}} phút", "statusDuration": "Agent kẹt ở trạng thái {{status}} trong {{minutes}} phút", "tokenThreshold": "Token của phiên vượt {{tokens}}", "costThreshold": "Chi phí phiên chạm {{usd}}", "budget": "{{limit}} mỗi {{period}} · cảnh báo ở {{thresholds}}" }, "rules": { "title": "Quy tắc cảnh báo", "add": "Thêm quy tắc", "cancel": "Hủy", "create": "Tạo quy tắc", "saving": "Đang lưu…", "empty": "Chưa có quy tắc cảnh báo nào", "enabled": "Đang bật", "disabled": "Đang tắt", "enable": "Bật quy tắc", "disable": "Tắt quy tắc", "delete": "Xóa quy tắc", "confirmDelete": "Xóa quy tắc \"{{name}}\" và lịch sử cảnh báo của nó?", "cooldown": "thời gian chờ {{seconds}}s", "form": { "name": "Tên quy tắc", "namePlaceholder": "ví dụ: Lỗi dồn dập", "type": "Loại quy tắc", "eventType": "Loại sự kiện (chính xác)", "toolName": "Tên công cụ (chính xác)", "summaryContains": "Tóm tắt chứa", "count": "Số lần kích hoạt", "windowMinutes": "Khung thời gian (phút)", "agentStatus": "Trạng thái agent", "minutes": "Phút", "totalTokens": "Tổng token", "cooldown": "Thời gian chờ (giây)", "usd": "Chi phí (USD)", "period": "Kỳ", "limitUsd": "Hạn mức (USD)", "thresholds": "Cảnh báo ở (%)", "budgetTool": "Công cụ AI", "allTools": "Mọi công cụ AI" }, "deleteTitle": "Xóa quy tắc cảnh báo?", "help": { "name": "Nhãn cho quy tắc này. Hiển thị trong danh sách cảnh báo và đính kèm trong payload webhook (rule_name). vd: 'Lỗi Bash lặp lại'.", "type": "Quy tắc theo dõi gì. event_pattern khớp luồng sự kiện trực tiếp; inactivity = phiên đang hoạt động im lặng; status_duration = agent kẹt ở một trạng thái; token_threshold = token của phiên vượt ngưỡng.", "eventType": "Sự kiện hook của Claude Code cần khớp. Để trống để khớp mọi loại. Khớp chính xác (phân biệt hoa thường).", "toolName": "Công cụ mà agent gọi (trong sự kiện PreToolUse / PostToolUse). Để trống để khớp mọi công cụ. Khớp chính xác.", "summaryContains": "Khớp chuỗi con (không phân biệt hoa thường) trong tóm tắt sự kiện. Hữu ích để bắt lỗi hoặc cụm từ cụ thể. Để trống để bỏ qua.", "count": "Cần bao nhiêu sự kiện khớp trước khi cảnh báo kích hoạt. 1 = kích hoạt ở lần khớp đầu. Đặt lớn hơn 1 để phát hiện bùng phát (vd lỗi lặp lại).", "window": "Cửa sổ nhìn lại cho bộ đếm. vd count 5 + window 2 nghĩa là '5 sự kiện khớp trong bất kỳ khoảng 2 phút nào'.", "status": "Trạng thái agent cần theo dõi. 'working' bắt agent kẹt giữa tác vụ; 'waiting' bắt agent chờ nhập liệu/quyền.", "minutesInactivity": "Kích hoạt khi một phiên đang hoạt động không có sự kiện nào trong bấy nhiêu phút (phiên bị treo hoặc bị quên).", "minutesStatus": "Kích hoạt khi agent ở trạng thái đã chọn mà không có hoạt động trong bấy nhiêu phút (agent bị kẹt).", "totalTokens": "Kích hoạt khi tổng token của phiên (input + output + cache read + cache write) vượt số này. vd 1000000 = 1 triệu token.", "cooldown": "Số giây tối thiểu giữa các cảnh báo lặp cho cùng quy tắc + phiên + agent. Tránh trùng lặp gây nhiễu. Mặc định 300 (5 phút); 0 = không có thời gian chờ.", "usd": "Một phiên chạm số đô la này sẽ kích hoạt cảnh báo.", "period": "Ngày bắt đầu lúc nửa đêm giờ địa phương, tuần từ thứ Hai, tháng từ ngày 1.", "limitUsd": "Hạn mức chi tiêu cho một kỳ, tính bằng đô la Mỹ.", "thresholds": "Phần trăm hạn mức, cách nhau bằng dấu phẩy, vd 50, 80, 100. Mỗi ngưỡng kích hoạt một lần mỗi kỳ.", "budgetTool": "Chỉ tính các phiên của công cụ AI này." }, "preview": "Xem trước", "previewing": "Đang kiểm tra…", "previewHint": "Quy tắc này lẽ ra đã kích hoạt những gì trong 7 ngày qua — không lưu, không gửi gì", "previewResult": "Lẽ ra đã kích hoạt {{fires}} lần ở {{sessions}} phiên trong {{days}} ngày qua.", "previewBudget": "Chi tiêu mỗi kỳ (kỳ này và năm kỳ trước):", "previewUnsupported": "Loại quy tắc này không phát lại được từ lịch sử.", "edit": "Sửa quy tắc", "save": "Lưu quy tắc", "typeFixed": "Không đổi được loại của quy tắc — hãy tạo quy tắc mới.", "cooldownInvalid": "Nhập số giây nguyên (từ 0 trở lên)." }, "feed": { "title": "Luồng cảnh báo", "unackedCount": "{{count}} chưa xác nhận", "unackedOnly": "Chỉ chưa xác nhận", "ack": "Xác nhận", "viewSession": "Xem phiên", "loadMore": "Tải thêm ({{shown}} / {{total}})", "emptyTitle": "Không có cảnh báo", "emptyDescription": "Cảnh báo do các quy tắc của bạn kích hoạt sẽ hiển thị tại đây theo thời gian thực.", "emptyUnacked": "Tất cả đã được xác nhận. Cảnh báo mới sẽ hiển thị tại đây khi được kích hoạt." }, "periods": { "day": "ngày", "week": "tuần", "month": "tháng" }, "errors": { "loadRules": "Không tải được quy tắc cảnh báo: {{error}}", "loadAlerts": "Không tải được cảnh báo: {{error}}", "toggleRule": "Không thay đổi được quy tắc: {{error}}", "deleteRule": "Không xoá được quy tắc: {{error}}", "ack": "Không xác nhận được: {{error}}" } }