import PropTypes from 'prop-types';
import { TableRow, TableCell, Stack } from '@mui/material';
import { timestamp2string, renderQuota } from 'utils/common';
import Label from 'ui-component/Label';
import LogType from '../type/LogType';
function renderType(type) {
const typeOption = LogType[type];
if (typeOption) {
return (
);
} else {
return (
);
}
}
function requestTimeLabelOptions(request_time) {
let color = 'error';
if (request_time === 0) {
color = 'default';
} else if (request_time <= 1000) {
color = 'success';
} else if (request_time <= 3000) {
color = 'primary';
} else if (request_time <= 5000) {
color = 'secondary';
}
return color;
}
function requestTSLabelOptions(request_ts) {
let color = 'success';
if (request_ts === 0) {
color = 'default';
} else if (request_ts <= 10) {
color = 'error';
} else if (request_ts <= 15) {
color = 'secondary';
} else if (request_ts <= 20) {
color = 'primary';
}
return color;
}
export default function LogTableRow({ item, userIsAdmin }) {
let request_time = item.request_time / 1000;
let request_time_str = request_time.toFixed(2) + ' 秒';
let request_ts = 0;
let request_ts_str = '';
if (request_time > 0 && item.completion_tokens > 0) {
request_ts = (item.completion_tokens ? item.completion_tokens : 1) / request_time;
request_ts_str = request_ts.toFixed(2) + ' t/s';
}
return (
<>
{timestamp2string(item.created_at)}
{userIsAdmin && {(item.channel_id || '') + '(' + (item.channel?.name || '未知') + ')'}}
{userIsAdmin && (
)}
{item.token_name && (
)}
{renderType(item.type)}
{item.model_name && (
)}
{request_ts_str && }
{item.prompt_tokens || '0'}
{item.completion_tokens || '0'}
{item.quota ? renderQuota(item.quota, 6) : '$0'}
{item.content}
>
);
}
LogTableRow.propTypes = {
item: PropTypes.object,
userIsAdmin: PropTypes.bool
};