import {
Input,
Button,
InputNumber,
Checkbox,
Select,
Card,
Empty,
Spin,
Divider,
Tooltip,
} from 'antd';
import {
QuestionCircleOutlined,
ReloadOutlined,
EyeOutlined,
} from '@ant-design/icons';
import { useDocumentDetail } from '~/hooks/dify-dataset-manager/document-detail';
import type { DocumentDetailProps } from '~/types/dify-dataset-manager/document-detail';
/**
* 文档详情组件
* 显示文档的分段设置,支持修改并重新处理
*/
export default function DocumentDetail({
datasetId,
document,
}: DocumentDetailProps) {
const {
settings,
previewSegments,
previewLoading,
showPreview,
saving,
updateSettings,
handleReset,
handlePreview,
handleSaveAndProcess,
} = useDocumentDetail(datasetId, document);
if (!document) {
return (
);
}
return (
{/* 左侧设置区域 */}
{/* 分段设置 */}
分段设置
{/* 分块模式 */}
{/* 分段标识符 */}
updateSettings('separator', e.target.value)}
placeholder="\n\n"
className="setting-input"
/>
{/* 分段最大长度 */}
updateSettings('maxTokens', value || 500)}
min={100}
max={4000}
className="setting-input-number"
/>
characters
{/* 文本预处理规则 */}
文本预处理规则
updateSettings('removeExtraSpaces', e.target.checked)}
>
替换掉连续的空格、换行符和制表符
updateSettings('removeUrlsEmails', e.target.checked)}
>
删除所有 URL 和电子邮件地址
{/* Q&A 分段 */}
updateSettings('useQASegment', e.target.checked)}
>
使用 Q&A 分段,语言
{/* 操作按钮 */}
}
onClick={handlePreview}
loading={previewLoading}
>
预览块
}
onClick={handleReset}
>
重置
{/* 保存并处理按钮 */}
{/* 右侧预览区域 */}
预览
{showPreview ? `${previewSegments.length} 段块` : '0 段块'}
}
className="preview-card"
>
{previewLoading ? (
) : !showPreview ? (
) : previewSegments.length === 0 ? (
) : (
{previewSegments.map((segment, index) => (
#{index + 1}
{segment.word_count} 字符
{segment.content}
))}
)}
);
}