diff --git a/src/renderer/src/pages/SearchPage.tsx b/src/renderer/src/pages/SearchPage.tsx index 778095c3..5d294772 100644 --- a/src/renderer/src/pages/SearchPage.tsx +++ b/src/renderer/src/pages/SearchPage.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react' import { Input, List, Card, Modal, Empty, Typography, Tag, Button, Switch } from 'antd' -import { SendOutlined } from '@ant-design/icons' +import { SendOutlined, ExpandOutlined } from '@ant-design/icons' import { Document, Page, pdfjs } from 'react-pdf' import DocViewer, { DocViewerRenderers } from 'react-doc-viewer' import 'react-pdf/dist/Page/AnnotationLayer.css' @@ -16,7 +16,6 @@ pdfjs.GlobalWorkerOptions.workerSrc = new URL( ).toString() const { TextArea } = Input -const { Title } = Typography const SearchPage: React.FC = () => { const [loading, setLoading] = useState(false) @@ -26,6 +25,8 @@ const SearchPage: React.FC = () => { const [currentDoc, setCurrentDoc] = useState(null) const [searchValue, setSearchValue] = useState('') const [aiAnswerEnabled, setAiAnswerEnabled] = useState(false) + const [aiAnswer, setAiAnswer] = useState('') + const [aiAnswerModalVisible, setAiAnswerModalVisible] = useState(false) const handleSearch = async (value: string) => { if (!value.trim()) return @@ -34,6 +35,10 @@ const SearchPage: React.FC = () => { const response = await window.api.search(value) setResults(response.results) setTokens(response.tokens) + if (aiAnswerEnabled) { + const snippet = response.results?.[0]?.text || '' + setAiAnswer(snippet || 'AI 正在准备回答...') + } } catch (error) { console.error('Search error:', error) } finally { @@ -41,7 +46,7 @@ const SearchPage: React.FC = () => { } } - + const openPreview = (item: SearchResult) => { setCurrentDoc(item) @@ -89,14 +94,14 @@ const SearchPage: React.FC = () => { return (
-
+
{/* Search Box */} -
-