diff --git a/web/src/components/table/usage-logs/UsageLogsColumnDefs.jsx b/web/src/components/table/usage-logs/UsageLogsColumnDefs.jsx
index 5e9ec073c..9af30226a 100644
--- a/web/src/components/table/usage-logs/UsageLogsColumnDefs.jsx
+++ b/web/src/components/table/usage-logs/UsageLogsColumnDefs.jsx
@@ -103,100 +103,6 @@ function renderType(type, t) {
}
}
-const endpointColorMap = {
- chat: 'blue',
- completions: 'blue',
- messages: 'purple',
- responses: 'violet',
- images: 'pink',
- image: 'pink',
- embeddings: 'green',
- embedding: 'green',
- audio: 'teal',
- speech: 'teal',
- translations: 'teal',
- transcriptions: 'teal',
- rerank: 'cyan',
- moderations: 'red',
- models: 'orange',
- engines: 'orange',
- mj: 'red',
- submit: 'red',
- suno: 'amber',
- realtime: 'indigo',
- notifications: 'violet',
-};
-
-function formatPathSegment(segment) {
- if (!segment) {
- return '';
- }
- const normalized = segment.replace(/^:/, '').replace(/[_-]/g, ' ');
- return normalized
- .split(' ')
- .filter(Boolean)
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
- .join(' ');
-}
-
-function deriveEndpointMeta(path) {
- if (!path) {
- return null;
- }
- const cleanPath = path.split('?')[0];
- const segments = cleanPath.split('/').filter(Boolean);
- if (segments.length === 0) {
- return null;
- }
- let startIndex = 0;
- if (/^v\d/i.test(segments[0])) {
- startIndex = 1;
- }
-
- const primary = segments[startIndex] || segments[segments.length - 1];
- const tailSegments = segments
- .slice(startIndex + 1)
- .filter((segment) => segment && !segment.startsWith(':'));
- const secondary = tailSegments[tailSegments.length - 1];
-
- const labelParts = [];
- const formattedPrimary = formatPathSegment(primary);
- if (formattedPrimary) {
- labelParts.push(formattedPrimary);
- }
- const formattedSecondary = formatPathSegment(secondary);
- if (formattedSecondary && formattedSecondary !== formattedPrimary) {
- labelParts.push(formattedSecondary);
- }
- const label = labelParts.join(' · ');
-
- const color =
- endpointColorMap[primary] ||
- (secondary ? endpointColorMap[secondary] : undefined) ||
- 'grey';
-
- return {
- label: label || formatPathSegment(primary),
- color,
- };
-}
-
-function renderEndpointTag(requestPath) {
- const meta = deriveEndpointMeta(requestPath);
- if (!meta) {
- return null;
- }
- const tag = (
-
- {meta.label}
-
- );
- if (requestPath) {
- return {tag};
- }
- return tag;
-}
-
function renderIsStream(bool, t) {
if (bool) {
return (
@@ -465,14 +371,7 @@ export const getLogsColumns = ({
title: t('类型'),
dataIndex: 'type',
render: (text, record, index) => {
- const other = getLogOther(record.other) || {};
- const requestPath = other.request_path;
- return (
-
- {renderType(text, t)}
- {renderEndpointTag(requestPath)}
-
- );
+ return <>{renderType(text, t)}>;
},
},
{
diff --git a/web/src/hooks/usage-logs/useUsageLogsData.jsx b/web/src/hooks/usage-logs/useUsageLogsData.jsx
index 36684c2c5..6041d7427 100644
--- a/web/src/hooks/usage-logs/useUsageLogsData.jsx
+++ b/web/src/hooks/usage-logs/useUsageLogsData.jsx
@@ -468,6 +468,12 @@ export const useLogsData = () => {
});
}
}
+ if (other?.request_path) {
+ expandDataLocal.push({
+ key: t('请求路径'),
+ value: other.request_path,
+ });
+ }
expandDatesLocal[logs[i].key] = expandDataLocal;
}
diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json
index 7ec941281..db62d5f59 100644
--- a/web/src/i18n/locales/en.json
+++ b/web/src/i18n/locales/en.json
@@ -1675,6 +1675,7 @@
"请求失败": "Request failed",
"请求头覆盖": "Request header override",
"请求并计费模型": "Request and charge model",
+ "请求路径": "Request path",
"请求时长: ${time}s": "Request time: ${time}s",
"请求次数": "Number of Requests",
"请求结束后多退少补": "Adjust after request completion",
diff --git a/web/src/i18n/locales/fr.json b/web/src/i18n/locales/fr.json
index bafe945c0..27789a191 100644
--- a/web/src/i18n/locales/fr.json
+++ b/web/src/i18n/locales/fr.json
@@ -1684,6 +1684,7 @@
"请求失败": "Échec de la demande",
"请求头覆盖": "Remplacement des en-têtes de demande",
"请求并计费模型": "Modèle de demande et de facturation",
+ "请求路径": "Chemin de requête",
"请求时长: ${time}s": "Durée de la requête : ${time}s",
"请求次数": "Nombre de demandes",
"请求结束后多退少补": "Ajuster après la fin de la demande",
@@ -2081,4 +2082,4 @@
"默认测试模型": "Modèle de test par défaut",
"默认补全倍率": "Taux de complétion par défaut"
}
-}
\ No newline at end of file
+}
diff --git a/web/src/i18n/locales/ru.json b/web/src/i18n/locales/ru.json
index 7f031dccb..db0a47626 100644
--- a/web/src/i18n/locales/ru.json
+++ b/web/src/i18n/locales/ru.json
@@ -1693,6 +1693,7 @@
"请求失败": "Запрос не удался",
"请求头覆盖": "Переопределение заголовков запроса",
"请求并计费模型": "Запрос и выставление счёта модели",
+ "请求路径": "Путь запроса",
"请求时长: ${time}s": "Время запроса: ${time}s",
"请求次数": "Количество запросов",
"请求结束后多退少补": "После вывода запроса возврат излишков и доплата недостатка",
diff --git a/web/src/i18n/locales/zh.json b/web/src/i18n/locales/zh.json
index fe085af12..62c8836be 100644
--- a/web/src/i18n/locales/zh.json
+++ b/web/src/i18n/locales/zh.json
@@ -1666,6 +1666,7 @@
"请求失败": "请求失败",
"请求头覆盖": "请求头覆盖",
"请求并计费模型": "请求并计费模型",
+ "请求路径": "请求路径",
"请求时长: ${time}s": "请求时长: ${time}s",
"请求次数": "请求次数",
"请求结束后多退少补": "请求结束后多退少补",