mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-10-26 08:00:12 +00:00
feat(ai): translate benchmark comparison metrics (#14182)
This commit is contained in:
@@ -1875,6 +1875,14 @@ const message = {
|
||||
'Only successful runs without request anomalies enter the median and min/max summaries. P99 is the median of per-run P99 values. Cache and external traffic are uncontrolled.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'Scenario and concurrency comparison',
|
||||
comparisonHelp: 'Click a scenario name to inspect that combination.',
|
||||
sharedPrefix: 'Shared prefix ratio',
|
||||
sharedPrefixHelp: 'Configured prefix tokens as a proportion of input length, not a measured cache hit rate.',
|
||||
singleRequestThroughput: 'Per-request output throughput',
|
||||
singleRequestThroughputHelp:
|
||||
'Output tokens from successful requests divided by their total end-to-end time, including first-token wait, for each run. Shows the median of valid runs, or — when data is missing.',
|
||||
aggregateOutputThroughput: 'Total output throughput',
|
||||
noResults: 'No valid test results. Check the failure reason and logs.',
|
||||
noGroupResults: 'No valid results for this combination. Select another scenario or concurrency.',
|
||||
partial: 'Partial results: the test did not fully succeed. Metrics cover valid points only.',
|
||||
|
||||
@@ -1890,6 +1890,15 @@ const message = {
|
||||
'La mediana y los mínimos/máximos solo incluyen ejecuciones correctas sin anomalías. P99 es la mediana de los P99 de cada ejecución. La caché y el tráfico externo no están controlados.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'Comparación de escenarios y concurrencia',
|
||||
comparisonHelp: 'Haz clic en un escenario para ver los detalles de esa combinación.',
|
||||
sharedPrefix: 'Proporción de prefijo compartido',
|
||||
sharedPrefixHelp:
|
||||
'Tokens de prefijo configurados respecto a la longitud de entrada; no es una tasa medida de aciertos de caché.',
|
||||
singleRequestThroughput: 'Rendimiento de salida por solicitud',
|
||||
singleRequestThroughputHelp:
|
||||
'Tokens de salida de solicitudes exitosas divididos por su tiempo total de extremo a extremo, incluida la espera del primer token, en cada ejecución. Se muestra la mediana de las ejecuciones válidas, o — si faltan datos.',
|
||||
aggregateOutputThroughput: 'Rendimiento total de salida',
|
||||
noResults: 'No hay resultados válidos. Consulte la causa del fallo y los registros.',
|
||||
noGroupResults: 'Esta combinación no tiene resultados válidos. Seleccione otro escenario o concurrencia.',
|
||||
partial: 'Resultados parciales: la prueba no se completó con éxito. Solo se incluyen puntos válidos.',
|
||||
|
||||
@@ -1856,6 +1856,15 @@ const message = {
|
||||
'میانه و کمینه/بیشینه فقط از اجراهای موفق بدون ناهنجاری درخواست محاسبه میشوند. P99 میانه P99 هر اجرا است. کش و ترافیک بیرونی کنترل نشدهاند.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'مقایسه سناریوها و هم\u200cزمانی',
|
||||
comparisonHelp: 'برای مشاهده جزئیات هر ترکیب روی نام سناریو کلیک کنید.',
|
||||
sharedPrefix: 'نسبت پیشوند مشترک',
|
||||
sharedPrefixHelp:
|
||||
'نسبت توکن\u200cهای پیشوند پیکربندی\u200cشده به طول ورودی است، نه نرخ اندازه\u200cگیری\u200cشده برخورد حافظه نهان.',
|
||||
singleRequestThroughput: 'توان خروجی هر درخواست',
|
||||
singleRequestThroughputHelp:
|
||||
'در هر اجرا، تعداد توکن\u200cهای خروجی درخواست\u200cهای موفق بر مجموع زمان کامل آن\u200cها، شامل انتظار اولین توکن، تقسیم می\u200cشود. میانه اجراهای معتبر نمایش داده می\u200cشود؛ در نبود داده — نمایش داده می\u200cشود.',
|
||||
aggregateOutputThroughput: 'توان خروجی کل',
|
||||
noResults: 'نتیجه معتبر وجود ندارد. علت شکست و گزارشها را بررسی کنید.',
|
||||
noGroupResults: 'برای این ترکیب نتیجه معتبر وجود ندارد. سناریو یا همزمانی دیگری انتخاب کنید.',
|
||||
partial: 'نتایج جزئی: آزمون کاملاً موفق نبوده است. معیارها فقط نقاط معتبر را شامل میشوند.',
|
||||
|
||||
@@ -1857,6 +1857,15 @@ const message = {
|
||||
'要求異常のない成功した試行のみを集計し、中央値と最小・最大値を表示します。P99 は試行ごとの P99 の中央値です。キャッシュと外部トラフィックは制御されません。',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'シナリオと同時実行数の比較',
|
||||
comparisonHelp: 'シナリオ名をクリックすると、その組み合わせの詳細を表示します。',
|
||||
sharedPrefix: '共有プレフィックス比率',
|
||||
sharedPrefixHelp:
|
||||
'入力長に対する設定済みプレフィックストークン数の割合です。実測のキャッシュヒット率ではありません。',
|
||||
singleRequestThroughput: 'リクエスト単位の出力スループット',
|
||||
singleRequestThroughputHelp:
|
||||
'各実行で成功したリクエストの出力トークン総数を、最初のトークンの待ち時間を含む合計応答時間で割ります。有効な実行の中央値を表示し、データがない場合は — を表示します。',
|
||||
aggregateOutputThroughput: '合計出力スループット',
|
||||
noResults: '有効なテスト結果がありません。失敗の原因とログを確認してください。',
|
||||
noGroupResults: 'この組み合わせに有効な結果はありません。シナリオまたは同時実行数を変更してください。',
|
||||
partial: '部分的な結果:テストは完全には成功していません。有効な測定点のみを表示します。',
|
||||
|
||||
@@ -1837,6 +1837,14 @@ const message = {
|
||||
'요청 이상이 없는 성공한 실행만 중앙값과 최솟값/최댓값에 포함합니다. P99는 각 실행 P99의 중앙값입니다. 캐시와 외부 트래픽은 통제되지 않습니다.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: '시나리오 및 동시 요청 수 비교',
|
||||
comparisonHelp: '시나리오 이름을 클릭하면 해당 조합의 상세 지표를 확인할 수 있습니다.',
|
||||
sharedPrefix: '공유 접두사 비율',
|
||||
sharedPrefixHelp: '입력 길이에 대한 설정된 접두사 토큰 수의 비율이며, 측정된 캐시 적중률이 아닙니다.',
|
||||
singleRequestThroughput: '요청별 출력 처리량',
|
||||
singleRequestThroughputHelp:
|
||||
'각 실행에서 성공한 요청의 출력 토큰 합계를 첫 토큰 대기를 포함한 전체 응답 시간 합계로 나눕니다. 유효한 실행의 중앙값을 표시하며 데이터가 없으면 —를 표시합니다.',
|
||||
aggregateOutputThroughput: '총 출력 처리량',
|
||||
noResults: '유효한 테스트 결과가 없습니다. 실패 원인과 로그를 확인하세요.',
|
||||
noGroupResults: '이 조합에 유효한 결과가 없습니다. 시나리오 또는 동시 실행 수를 변경하세요.',
|
||||
partial: '부분 결과: 테스트가 완전히 성공하지 않았습니다. 유효한 측정점만 반영합니다.',
|
||||
|
||||
@@ -1828,6 +1828,14 @@ const message = {
|
||||
'ຄ່າກາງ ແລະ ຄ່າຕ່ຳສຸດ/ສູງສຸດໃຊ້ສະເພາະການທົດສອບສຳເລັດທີ່ບໍ່ມີຄຳຮ້ອງຂໍຜິດປົກກະຕິ. P99 ແມ່ນຄ່າກາງຂອງ P99 ແຕ່ລະຄັ້ງ. ແຄຊ ແລະ ການຈະລາຈອນພາຍນອກບໍ່ໄດ້ຄວບຄຸມ.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'ປຽບທຽບສະຖານະການ ແລະ ຈຳນວນຄຳຮ້ອງພ້ອມກັນ',
|
||||
comparisonHelp: 'ຄລິກຊື່ສະຖານະການເພື່ອເບິ່ງລາຍລະອຽດຂອງຊຸດນັ້ນ.',
|
||||
sharedPrefix: 'ອັດຕາສ່ວນ prefix ຮ່ວມ',
|
||||
sharedPrefixHelp: 'ອັດຕາສ່ວນໂທເຄັນ prefix ທີ່ຕັ້ງໄວ້ຕໍ່ຄວາມຍາວອິນພຸດ ບໍ່ແມ່ນອັດຕາ cache hit ທີ່ວັດແທກໄດ້.',
|
||||
singleRequestThroughput: 'ອັດຕາອອກຕໍ່ຄຳຮ້ອງ',
|
||||
singleRequestThroughputHelp:
|
||||
'ໃນແຕ່ລະຮອບ ນຳຈຳນວນໂທເຄັນອອກຂອງຄຳຮ້ອງທີ່ສຳເລັດຫານດ້ວຍເວລາລວມຂອງຄຳຮ້ອງເຫຼົ່ານັ້ນ ລວມເວລາລໍຖ້າໂທເຄັນທຳອິດ. ສະແດງຄ່າມັດທະຍະຖານຂອງຮອບທີ່ໃຊ້ໄດ້ ຫຼື — ຖ້າຂາດຂໍ້ມູນ.',
|
||||
aggregateOutputThroughput: 'ອັດຕາອອກລວມ',
|
||||
noResults: 'ບໍ່ມີຜົນການທົດສອບທີ່ໃຊ້ໄດ້. ກວດສອບສາເຫດ ແລະ ບັນທຶກ.',
|
||||
noGroupResults: 'ບໍ່ມີຜົນທີ່ໃຊ້ໄດ້ສຳລັບຊຸດນີ້. ເລືອກສະຖານະການ ຫຼື ຈຳນວນພ້ອມກັນອື່ນ.',
|
||||
partial: 'ຜົນບາງສ່ວນ: ການທົດສອບບໍ່ສຳເລັດທັງໝົດ. ຕົວຊີ້ວັດລວມສະເພາະຈຸດທີ່ໃຊ້ໄດ້.',
|
||||
|
||||
@@ -1892,6 +1892,15 @@ const message = {
|
||||
'Median dan minimum/maksimum hanya melibatkan ujian berjaya tanpa anomali permintaan. P99 ialah median P99 setiap ujian. Cache dan trafik luaran tidak dikawal.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'Perbandingan senario dan keserentakan',
|
||||
comparisonHelp: 'Klik nama senario untuk melihat butiran gabungan itu.',
|
||||
sharedPrefix: 'Nisbah awalan dikongsi',
|
||||
sharedPrefixHelp:
|
||||
'Nisbah token awalan yang dikonfigurasi kepada panjang input, bukan kadar hit cache yang diukur.',
|
||||
singleRequestThroughput: 'Daya pemprosesan output setiap permintaan',
|
||||
singleRequestThroughputHelp:
|
||||
'Token output permintaan berjaya dibahagi dengan jumlah masa hujung ke hujungnya, termasuk masa menunggu token pertama, bagi setiap larian. Memaparkan median larian sah, atau — jika data tiada.',
|
||||
aggregateOutputThroughput: 'Jumlah daya pemprosesan output',
|
||||
noResults: 'Tiada keputusan ujian yang sah. Semak sebab kegagalan dan log.',
|
||||
noGroupResults: 'Tiada keputusan sah untuk gabungan ini. Pilih senario atau keserentakan lain.',
|
||||
partial: 'Keputusan separa: ujian tidak berjaya sepenuhnya. Metrik hanya merangkumi titik yang sah.',
|
||||
|
||||
@@ -1889,6 +1889,15 @@ const message = {
|
||||
'A mediana e os valores mínimo/máximo incluem apenas execuções bem-sucedidas sem anomalias. P99 é a mediana dos P99 de cada execução. Cache e tráfego externo não são controlados.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'Comparação de cenários e concorrência',
|
||||
comparisonHelp: 'Clique em um cenário para ver os detalhes dessa combinação.',
|
||||
sharedPrefix: 'Proporção de prefixo compartilhado',
|
||||
sharedPrefixHelp:
|
||||
'Tokens de prefixo configurados em relação ao tamanho da entrada; não é uma taxa medida de acertos de cache.',
|
||||
singleRequestThroughput: 'Vazão de saída por solicitação',
|
||||
singleRequestThroughputHelp:
|
||||
'Tokens de saída das solicitações bem-sucedidas divididos pelo tempo total de ponta a ponta, incluindo a espera pelo primeiro token, em cada execução. Exibe a mediana das execuções válidas, ou — se faltarem dados.',
|
||||
aggregateOutputThroughput: 'Vazão total de saída',
|
||||
noResults: 'Nenhum resultado válido. Consulte o motivo da falha e os logs.',
|
||||
noGroupResults: 'Nenhum resultado válido nesta combinação. Selecione outro cenário ou concorrência.',
|
||||
partial:
|
||||
|
||||
@@ -1884,6 +1884,14 @@ const message = {
|
||||
'Медиана и минимум/максимум рассчитываются только по успешным запускам без аномалий запросов. P99 — медиана P99 отдельных запусков. Кеш и внешний трафик не контролируются.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'Сравнение сценариев и параллелизма',
|
||||
comparisonHelp: 'Нажмите на название сценария, чтобы открыть показатели этой комбинации.',
|
||||
sharedPrefix: 'Доля общего префикса',
|
||||
sharedPrefixHelp: 'Доля настроенных токенов префикса во входной длине, а не измеренная доля попаданий в кеш.',
|
||||
singleRequestThroughput: 'Выходная пропускная способность на запрос',
|
||||
singleRequestThroughputHelp:
|
||||
'Для каждого прогона число выходных токенов успешных запросов делится на суммарное время их выполнения, включая ожидание первого токена. Показана медиана корректных прогонов; при отсутствии данных —.',
|
||||
aggregateOutputThroughput: 'Общая выходная пропускная способность',
|
||||
noResults: 'Нет достоверных результатов. Проверьте причину сбоя и журналы.',
|
||||
noGroupResults: 'Нет достоверных результатов для этой комбинации. Выберите другой сценарий или параллелизм.',
|
||||
partial:
|
||||
|
||||
@@ -1889,6 +1889,15 @@ const message = {
|
||||
'Medyan ve en düşük/en yüksek değerler yalnızca istek anomalisi olmayan başarılı çalışmaları içerir. P99, çalışma başına P99 değerlerinin medyanıdır. Önbellek ve dış trafik kontrol edilmez.',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: 'Senaryo ve eşzamanlılık karşılaştırması',
|
||||
comparisonHelp: 'Bu birleşimin ayrıntılarını görmek için senaryo adına tıklayın.',
|
||||
sharedPrefix: 'Paylaşılan önek oranı',
|
||||
sharedPrefixHelp:
|
||||
'Yapılandırılan önek belirteçlerinin girdi uzunluğuna oranıdır; ölçülen önbellek isabet oranı değildir.',
|
||||
singleRequestThroughput: 'İstek başına çıktı hızı',
|
||||
singleRequestThroughputHelp:
|
||||
'Her çalıştırmada başarılı isteklerin çıktı belirteçleri, ilk belirteci bekleme dahil toplam uçtan uca sürelerine bölünür. Geçerli çalıştırmaların medyanı gösterilir; veri yoksa — gösterilir.',
|
||||
aggregateOutputThroughput: 'Toplam çıktı hızı',
|
||||
noResults: 'Geçerli test sonucu yok. Hata nedenini ve günlükleri kontrol edin.',
|
||||
noGroupResults: 'Bu birleşim için geçerli sonuç yok. Başka bir senaryo veya eşzamanlılık seçin.',
|
||||
partial: 'Kısmi sonuçlar: test tamamen başarılı olmadı. Metrikler yalnızca geçerli noktaları kapsar.',
|
||||
|
||||
@@ -1771,6 +1771,14 @@ const message = {
|
||||
'彙總僅採用成功且無請求異常的重複測試,顯示中位數與最小/最大值。P99 是各次 P99 的中位數;快取與外部流量未受控。',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: '情境與並行數對照',
|
||||
comparisonHelp: '點選情境名稱查看該組合的指標詳情。',
|
||||
sharedPrefix: '共用前綴比例',
|
||||
sharedPrefixHelp: '共用前綴比例為設定的前綴 Token 數占輸入長度的比例,不代表實測快取命中率。',
|
||||
singleRequestThroughput: '單路輸出吞吐量',
|
||||
singleRequestThroughputHelp:
|
||||
'每輪成功請求的輸出 Token 總數 ÷ 成功請求總耗時(包含首 Token 等待),再對有效輪次取中位數。缺少資料時顯示 —。',
|
||||
aggregateOutputThroughput: '總輸出吞吐量',
|
||||
noResults: '沒有有效的測試結果,請查看失敗原因和日誌。',
|
||||
noGroupResults: '此組合沒有有效結果,請切換場景或並行數。',
|
||||
partial: '部分結果:本次測試未完整成功,指標僅代表有效測點。',
|
||||
|
||||
@@ -1784,6 +1784,14 @@ const message = {
|
||||
'汇总仅使用成功且无请求异常的重复测试,显示中位数和最小/最大值。P99 是每次测试 P99 的中位数;缓存和外部流量未受控。',
|
||||
},
|
||||
benchmarkOverview: {
|
||||
comparison: '场景与并发对照',
|
||||
comparisonHelp: '点击场景名称查看该组合的指标详情。',
|
||||
sharedPrefix: '共享前缀比例',
|
||||
sharedPrefixHelp: '共享前缀比例为配置的前缀 Token 数占输入长度的比例,不代表实测缓存命中率。',
|
||||
singleRequestThroughput: '单路输出吞吐',
|
||||
singleRequestThroughputHelp:
|
||||
'每轮成功请求的输出 Token 总数 ÷ 成功请求总耗时(包含首 Token 等待),再对有效轮次取中位数。缺少数据时显示 —。',
|
||||
aggregateOutputThroughput: '总输出吞吐',
|
||||
noResults: '没有有效的测试结果,请查看失败原因和日志。',
|
||||
noGroupResults: '此组合没有有效结果,请切换场景或并发数。',
|
||||
partial: '部分结果:本次测试未完整成功,指标仅代表有效测点。',
|
||||
|
||||
@@ -55,7 +55,7 @@ import { readCachedPageSize } from '@/utils/panel-cache';
|
||||
import { Website } from '@/api/interface/website';
|
||||
import { deleteAcmeAccount, searchAcmeAccount, updateAcmeAccount } from '@/api/modules/website';
|
||||
import i18n from '@/lang';
|
||||
import { useSearchReset } from '@/composables/useSearchReset';
|
||||
import { useSearchState } from '@/utils/search-reset';
|
||||
import { onMounted, reactive, ref, toRef } from 'vue';
|
||||
import Create from './create/index.vue';
|
||||
import { getAccountName, getKeyName } from '@/utils/ssl';
|
||||
@@ -120,7 +120,14 @@ const deleteAccount = async (row: any) => {
|
||||
};
|
||||
|
||||
const routerButton = [{ label: i18n.global.t('website.acmeAccountManage'), path: '/websites/ssl/acme-account' }];
|
||||
useSearchReset({ page: toRef(paginationConfig, 'currentPage') }, { onRevisit: () => search() });
|
||||
useSearchState(
|
||||
'website/ssl/acme-account/index',
|
||||
{
|
||||
page: toRef(paginationConfig, 'currentPage'),
|
||||
pageSize: toRef(paginationConfig, 'pageSize'),
|
||||
},
|
||||
{ onRevisit: () => search() },
|
||||
);
|
||||
onMounted(() => {
|
||||
search();
|
||||
});
|
||||
|
||||
@@ -51,7 +51,7 @@ import { Website } from '@/api/interface/website';
|
||||
import { deleteCA, searchCAs, downloadCAFile } from '@/api/modules/website';
|
||||
import i18n from '@/lang';
|
||||
import { onMounted, reactive, ref, toRef } from 'vue';
|
||||
import { useSearchReset } from '@/composables/useSearchReset';
|
||||
import { useSearchState } from '@/utils/search-reset';
|
||||
import Create from './create/index.vue';
|
||||
import Upload from './upload/index.vue';
|
||||
import Detail from './detail/index.vue';
|
||||
@@ -94,7 +94,14 @@ const buttons = [
|
||||
},
|
||||
];
|
||||
|
||||
useSearchReset({ page: toRef(paginationConfig, 'currentPage') }, { onRevisit: () => search() });
|
||||
useSearchState(
|
||||
'website/ssl/ca/index',
|
||||
{
|
||||
page: toRef(paginationConfig, 'currentPage'),
|
||||
pageSize: toRef(paginationConfig, 'pageSize'),
|
||||
},
|
||||
{ onRevisit: () => search() },
|
||||
);
|
||||
|
||||
const search = async () => {
|
||||
const req = {
|
||||
|
||||
@@ -51,7 +51,7 @@ import { Website } from '@/api/interface/website';
|
||||
import { deleteDnsAccount, searchDnsAccount } from '@/api/modules/website';
|
||||
import { onMounted, reactive, ref, toRef } from 'vue';
|
||||
import i18n from '@/lang';
|
||||
import { useSearchReset } from '@/composables/useSearchReset';
|
||||
import { useSearchState } from '@/utils/search-reset';
|
||||
import { getDNSName } from '@/utils/ssl';
|
||||
const paginationConfig = reactive({
|
||||
cacheSizeKey: 'dns-account-page-size',
|
||||
@@ -117,5 +117,12 @@ onMounted(() => {
|
||||
});
|
||||
|
||||
const routerButton = [{ label: i18n.global.t('website.dnsAccountManage'), path: '/websites/ssl/dns-account' }];
|
||||
useSearchReset({ page: toRef(paginationConfig, 'currentPage') }, { onRevisit: () => search() });
|
||||
useSearchState(
|
||||
'website/ssl/dns-account/index',
|
||||
{
|
||||
page: toRef(paginationConfig, 'currentPage'),
|
||||
pageSize: toRef(paginationConfig, 'pageSize'),
|
||||
},
|
||||
{ onRevisit: () => search() },
|
||||
);
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user