/* Copyright (C) 2025 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import React, { useMemo } from 'react'; import { Modal, Button, Empty, Space, Tag, Typography, } from '@douyinfe/semi-ui'; import { IconCopy } from '@douyinfe/semi-icons'; import { copy, showError, showSuccess } from '../../../../helpers'; const { Text } = Typography; const parseAuditLine = (line) => { if (typeof line !== 'string') { return null; } const colonIndex = line.indexOf(': '); const arrowIndex = line.indexOf(' -> ', colonIndex + 2); if (colonIndex <= 0 || arrowIndex <= colonIndex) { return null; } return { field: line.slice(0, colonIndex), before: line.slice(colonIndex + 2, arrowIndex), after: line.slice(arrowIndex + 4), raw: line, }; }; const ValuePanel = ({ label, value, tone }) => (
{label}
{value}
); const ParamOverrideModal = ({ showParamOverrideModal, setShowParamOverrideModal, paramOverrideTarget, t, }) => { const lines = Array.isArray(paramOverrideTarget?.lines) ? paramOverrideTarget.lines : []; const parsedLines = useMemo(() => { return lines.map(parseAuditLine); }, [lines]); const copyAll = async () => { const content = lines.join('\n'); if (!content) { return; } if (await copy(content)) { showSuccess(t('参数覆盖已复制')); return; } showError(t('无法复制到剪贴板,请手动复制')); }; return ( setShowParamOverrideModal(false)} footer={null} centered closable maskClosable width={760} >
{t('已应用参数覆盖')}
{t('{{count}} 项变更', { count: lines.length })} {paramOverrideTarget?.modelName ? ( {paramOverrideTarget.modelName} ) : null} {paramOverrideTarget?.requestId ? ( {t('Request ID')}: {paramOverrideTarget.requestId} ) : null}
{paramOverrideTarget?.requestPath ? (
{t('请求路径')}: {paramOverrideTarget.requestPath}
) : null}
{lines.length === 0 ? ( ) : (
{parsedLines.map((item, index) => { if (!item) { return (
{lines[index]}
); } return (
{item.field}
); })}
)}
); }; export default ParamOverrideModal;