Skip to content

Commit

Permalink
feat: 0.2.2.6
Browse files Browse the repository at this point in the history
  • Loading branch information
dolphin0618 committed Feb 20, 2024
1 parent d1b43a2 commit a08de45
Show file tree
Hide file tree
Showing 7 changed files with 2,559 additions and 2,900 deletions.
5,370 changes: 2,481 additions & 2,889 deletions src/frontend/package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bisheng",
"version": "0.2.2.5",
"version": "0.2.2.6",
"private": true,
"dependencies": {
"@emotion/react": "^11.11.1",
Expand Down
1 change: 1 addition & 0 deletions src/frontend/public/locales/en/bs.json
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@
"1008": "The current skill is not online, and direct conversation is not possible.",
"1005": ""
},
"all": "All",
"confirmButton": "Confirm",
"add": "Add",
"back": "Back",
Expand Down
1 change: 1 addition & 0 deletions src/frontend/public/locales/zh/bs.json
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@
"1008": "当前技能未上线,无法直接对话",
"1005": ""
},
"all": "全部",
"confirmButton": "确定",
"add": "添加",
"back": "返回",
Expand Down
17 changes: 17 additions & 0 deletions src/frontend/src/components/ui/select1.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,22 @@ const SelectTrigger = React.forwardRef<
));
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;

const SelectIconTrigger = React.forwardRef<
React.ElementRef<typeof SelectPrimitive.Trigger>,
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>
>(({ className, children, ...props }, ref) => (
<SelectPrimitive.Trigger
ref={ref}
className={cn('focus:outline-none outline-none',
className
)}
{...props}
>
{children}
</SelectPrimitive.Trigger>
));
SelectIconTrigger.displayName = SelectPrimitive.Trigger.displayName;

const SelectContent = React.forwardRef<
React.ElementRef<typeof SelectPrimitive.Content>,
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>
Expand Down Expand Up @@ -116,5 +132,6 @@ export {
SelectLabel,
SelectSeparator,
SelectTrigger,
SelectIconTrigger,
SelectValue,
};
13 changes: 11 additions & 2 deletions src/frontend/src/controllers/API/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,17 +93,26 @@ export async function readFileLibDatabase(page = 1, pageSize = 40) {
throw error;
}
}

/**
* 获取知识库下文件列表
*
*/
export async function readFileByLibDatabase(id, page) {
export async function readFileByLibDatabase(id, page, status) {
const pageSize = 20
const response: { data: any[], total: number, writeable: any } = await axios.get(`/api/v1/knowledge/file_list/${id}?page_size=${pageSize}&page_num=${page}`);
const statusStr = status === 999 ? '' : `&status=${status}`;
const response: { data: any[], total: number, writeable: any } = await axios.get(`/api/v1/knowledge/file_list/${id}?page_size=${pageSize}&page_num=${page}${statusStr}`);
const { data, total, writeable } = response
return { data, writeable, pages: Math.ceil(total / pageSize) }
}

/**
* 重试解析文件
*/
export async function retryKnowledgeFileApi(id) {
await axios.post(`/api/v1/knowledge/retry`, { file_ids: [id] });
}

/**
* 上传文件
*/
Expand Down
55 changes: 47 additions & 8 deletions src/frontend/src/pages/FileLibPage/files.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@ import {
TabsTrigger,
} from "../../components/ui/tabs";

import { ArrowLeft } from "lucide-react";
import { ArrowLeft, Filter, RotateCw } from "lucide-react";
import { useContext, useEffect, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { bsconfirm } from "../../alerts/confirm";
import ShadTooltip from "../../components/ShadTooltipComponent";
import { Select, SelectContent, SelectGroup, SelectItem, SelectIconTrigger } from "../../components/ui/select1";
import { locationContext } from "../../contexts/locationContext";
import { deleteFile, readFileByLibDatabase } from "../../controllers/API";
import UploadModal from "../../modals/UploadModal";
import { bsconfirm } from "../../alerts/confirm";
import { deleteFile, readFileByLibDatabase, retryKnowledgeFileApi } from "../../controllers/API";
import { captureAndAlertRequestErrorHoc } from "../../controllers/request";
import UploadModal from "../../modals/UploadModal";

export default function FilesPage() {
const { t } = useTranslation()
Expand All @@ -43,9 +44,12 @@ export default function FilesPage() {
const [hasPermission, setHasPermission] = useState(true)
const { appConfig } = useContext(locationContext)

// filter
const [filter, setFilter] = useState(999)

const loadPage = (_page) => {
setLoading(true)
readFileByLibDatabase(id, _page).then(res => {
readFileByLibDatabase(id, _page, filter).then(res => {
const { data, writeable, pages: ps } = res
pages.current = ps
setDataList(data)
Expand Down Expand Up @@ -91,6 +95,23 @@ export default function FilesPage() {
})
}

// 重试解析
const handleRetry = (id) => {
captureAndAlertRequestErrorHoc(retryKnowledgeFileApi(id).then(res => {
// 乐观更新
setDataList(list => {
return list.map(item => item.id === id ? { ...item, status: 1 } : item)
})
}))
}

useEffect(() => {
loadPage(1)
}, [filter])
const selectChange = (id) => {
setFilter(Number(id))
}

return <div className="w-full h-screen p-6 relative overflow-y-auto">
{loading && <div className="absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared">
<span className="loading loading-infinity loading-lg"></span>
Expand Down Expand Up @@ -120,7 +141,22 @@ export default function FilesPage() {
<TableHeader>
<TableRow>
<TableHead className="w-[600px]">{t('lib.fileName')}</TableHead>
<TableHead>{t('lib.status')}</TableHead>
<TableHead className="flex items-center gap-4">{t('lib.status')}
{/* Select component */}
<Select onValueChange={selectChange}>
<SelectIconTrigger className="">
<Filter size={16} className={`cursor-pointer ${filter === 999 ? '' : 'text-gray-950'}`} />
</SelectIconTrigger>
<SelectContent className="">
<SelectGroup>
<SelectItem value={'999'}>{t('all')}</SelectItem>
<SelectItem value={'1'}>{t('lib.parsing')}</SelectItem>
<SelectItem value={'2'}>{t('lib.completed')}</SelectItem>
<SelectItem value={'3'}>{t('lib.parseFailed')}</SelectItem>
</SelectGroup>
</SelectContent>
</Select>
</TableHead>
<TableHead>{t('lib.uploadTime')}</TableHead>
<TableHead>{t('operations')}</TableHead>
</TableRow>
Expand All @@ -130,8 +166,11 @@ export default function FilesPage() {
<TableRow key={el.id}>
<TableCell className="font-medium">{el.file_name}</TableCell>
<TableCell>
{el.status === 3 ? <div className="tooltip" data-tip={el.remark}>
<span className='text-red-500'>{t('lib.parseFailed')}</span>
{el.status === 3 ? <div className="flex items-center">
<div className="tooltip" data-tip={el.remark}>
<span className='text-red-500'>{t('lib.parseFailed')}</span>
</div>
<Button variant="link"><RotateCw size={16} onClick={() => handleRetry(el.id)} /></Button>
</div> :
<span className={el.status === 3 && 'text-red-500'}>{[t('lib.parseFailed'), t('lib.parsing'), t('lib.completed'), t('lib.parseFailed')][el.status]}</span>
}
Expand Down

0 comments on commit a08de45

Please sign in to comment.