diff --git a/src/api/adminRemnawave.ts b/src/api/adminRemnawave.ts index ab6e5fa..946b1d6 100644 --- a/src/api/adminRemnawave.ts +++ b/src/api/adminRemnawave.ts @@ -94,6 +94,19 @@ export interface NodeInfo { created_at?: string; updated_at?: string; provider_uuid?: string; + active_plugin_uuid?: string; + config_profile?: { + active_config_profile_uuid: string | null; + active_inbounds: Array<{ + uuid: string; + profile_uuid: string; + tag: string; + type: string; + network: string | null; + security: string | null; + port: number | null; + }>; + }; } export interface NodesListResponse { diff --git a/src/api/tariffs.ts b/src/api/tariffs.ts index d3bc1cb..48d0c1c 100644 --- a/src/api/tariffs.ts +++ b/src/api/tariffs.ts @@ -86,7 +86,7 @@ export interface TariffDetail { is_daily: boolean; daily_price_kopeks: number; // Режим сброса трафика - traffic_reset_mode: string | null; // 'DAY', 'WEEK', 'MONTH', 'NO_RESET', null = глобальная настройка + traffic_reset_mode: string | null; // 'DAY', 'WEEK', 'MONTH', 'MONTH_ROLLING', 'NO_RESET', null = глобальная настройка // Внешний сквад RemnaWave external_squad_uuid: string | null; created_at: string; diff --git a/src/locales/en.json b/src/locales/en.json index c2241f4..0107dd3 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -316,7 +316,8 @@ "trafficReset": { "DAY": "Resets daily", "WEEK": "Resets weekly", - "MONTH": "Resets monthly" + "MONTH": "Resets monthly", + "MONTH_ROLLING": "Resets every 30 days" }, "traffic": "Traffic", "unlimited": "Unlimited", @@ -1490,7 +1491,7 @@ "totalUsers": "Total Users", "nodesOnline": "Nodes Online", "connections": "Connections", - "bandwidth": "Realtime Bandwidth", + "bandwidth": "Inbound Traffic", "download": "Download", "upload": "Upload", "total": "Total", @@ -2198,6 +2199,8 @@ "resetModeWeeklyDesc": "Reset every week", "resetModeMonthly": "Monthly", "resetModeMonthlyDesc": "Reset every month", + "resetModeMonthRolling": "Rolling month", + "resetModeMonthRollingDesc": "Reset every 30 days from first connection", "resetModeNever": "Never", "resetModeNeverDesc": "Traffic is not reset", "cancelButton": "Cancel", diff --git a/src/locales/fa.json b/src/locales/fa.json index 49a1740..3ad3855 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -277,7 +277,8 @@ "trafficReset": { "DAY": "بازنشانی روزانه", "WEEK": "بازنشانی هفتگی", - "MONTH": "بازنشانی ماهانه" + "MONTH": "بازنشانی ماهانه", + "MONTH_ROLLING": "بازنشانی هر ۳۰ روز" }, "traffic": "ترافیک", "unlimited": "نامحدود", @@ -1853,6 +1854,8 @@ "resetModeWeeklyDesc": "بازنشانی هر هفته", "resetModeMonthly": "ماهانه", "resetModeMonthlyDesc": "بازنشانی هر ماه", + "resetModeMonthRolling": "ماه متحرک", + "resetModeMonthRollingDesc": "بازنشانی هر ۳۰ روز از اولین اتصال", "resetModeNever": "هرگز", "resetModeNeverDesc": "ترافیک بازنشانی نمی‌شود", "cancelButton": "لغو", diff --git a/src/locales/ru.json b/src/locales/ru.json index a2c095d..dbe3b7c 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -331,7 +331,8 @@ "trafficReset": { "DAY": "Сброс ежедневно", "WEEK": "Сброс еженедельно", - "MONTH": "Сброс ежемесячно" + "MONTH": "Сброс ежемесячно", + "MONTH_ROLLING": "Сброс раз в 30 дней" }, "traffic": "Трафик", "unlimited": "Безлимит", @@ -1511,7 +1512,7 @@ "totalUsers": "Всего пользователей", "nodesOnline": "Нод онлайн", "connections": "Подключений", - "bandwidth": "Пропускная способность", + "bandwidth": "Трафик по inbounds", "download": "Загрузка", "upload": "Отдача", "total": "Всего", @@ -2712,6 +2713,8 @@ "resetModeWeeklyDesc": "Сброс каждую неделю", "resetModeMonthly": "Ежемесячно", "resetModeMonthlyDesc": "Сброс каждый месяц", + "resetModeMonthRolling": "Скользящий месяц", + "resetModeMonthRollingDesc": "Сброс через 30 дней от первого подключения", "resetModeNever": "Никогда", "resetModeNeverDesc": "Трафик не сбрасывается", "cancelButton": "Отмена", diff --git a/src/locales/zh.json b/src/locales/zh.json index 9dc56c7..158f3da 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -277,7 +277,8 @@ "trafficReset": { "DAY": "每日重置", "WEEK": "每周重置", - "MONTH": "每月重置" + "MONTH": "每月重置", + "MONTH_ROLLING": "每30天重置" }, "traffic": "流量", "unlimited": "无限", @@ -1890,6 +1891,8 @@ "resetModeWeeklyDesc": "每周重置", "resetModeMonthly": "每月", "resetModeMonthlyDesc": "每月重置", + "resetModeMonthRolling": "滚动月", + "resetModeMonthRollingDesc": "从首次连接起每30天重置", "resetModeNever": "从不", "resetModeNeverDesc": "流量不重置", "cancelButton": "取消", diff --git a/src/pages/AdminRemnawave.tsx b/src/pages/AdminRemnawave.tsx index a9b4c7c..a627d26 100644 --- a/src/pages/AdminRemnawave.tsx +++ b/src/pages/AdminRemnawave.tsx @@ -405,24 +405,24 @@ function OverviewTab({ stats, isLoading, onRefresh }: OverviewTabProps) { {/* Bandwidth */}

- {t('admin.remnawave.overview.bandwidth', 'Realtime Bandwidth')} + {t('admin.remnawave.overview.bandwidth', 'Inbound Traffic')}

↓} color="green" /> ↑} color="blue" /> ⇅} color="purple" /> diff --git a/src/pages/AdminTariffCreate.tsx b/src/pages/AdminTariffCreate.tsx index 5c0f1e6..ec2cbf4 100644 --- a/src/pages/AdminTariffCreate.tsx +++ b/src/pages/AdminTariffCreate.tsx @@ -1029,6 +1029,11 @@ export default function AdminTariffCreate() { { value: 'DAY', labelKey: 'admin.tariffs.resetModeDaily', emoji: '📅' }, { value: 'WEEK', labelKey: 'admin.tariffs.resetModeWeekly', emoji: '📆' }, { value: 'MONTH', labelKey: 'admin.tariffs.resetModeMonthly', emoji: '🗓️' }, + { + value: 'MONTH_ROLLING', + labelKey: 'admin.tariffs.resetModeMonthRolling', + emoji: '🔄', + }, { value: 'NO_RESET', labelKey: 'admin.tariffs.resetModeNever', emoji: '🚫' }, ].map((option) => (