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 };