v4.6.2-alpah (#511)

This commit is contained in:
Archer
2023-11-24 15:29:43 +08:00
committed by GitHub
parent 60f752629f
commit 9cb4280a16
208 changed files with 5396 additions and 3500 deletions

View File

@@ -1,10 +1,10 @@
import { TaskResponseKeyEnum } from '@fastgpt/global/core/chat/constants';
import { sseResponseEventEnum } from '@fastgpt/service/common/response/constant';
import { getErrText } from '@fastgpt/global/common/error/utils';
import { parseStreamChunk, SSEParseData } from '@/utils/sse';
import type { ChatHistoryItemResType } from '@fastgpt/global/core/chat/api.d';
import { StartChatFnProps } from '@/components/ChatBox';
import { getToken } from '@/web/support/user/auth';
import { ModuleOutputKeyEnum } from '@fastgpt/global/core/module/constants';
type StreamFetchProps = {
url?: string;
@@ -12,16 +12,17 @@ type StreamFetchProps = {
onMessage: StartChatFnProps['generatingMessage'];
abortSignal: AbortController;
};
type StreamResponseType = {
responseText: string;
[ModuleOutputKeyEnum.responseData]: ChatHistoryItemResType[];
};
export const streamFetch = ({
url = '/api/v1/chat/completions',
data,
onMessage,
abortSignal
}: StreamFetchProps) =>
new Promise<{
responseText: string;
[TaskResponseKeyEnum.responseData]: ChatHistoryItemResType[];
}>(async (resolve, reject) => {
new Promise<StreamResponseType>(async (resolve, reject) => {
try {
const response = await window.fetch(url, {
method: 'POST',

View File

@@ -28,6 +28,16 @@ export const readTxtContent = (file: File) => {
*/
export const readPdfContent = (file: File) =>
new Promise<string>((resolve, reject) => {
type TokenType = {
str: string;
dir: string;
width: number;
height: number;
transform: number[];
fontName: string;
hasEOL: boolean;
};
try {
const pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.workerSrc = '/js/pdf.worker.js';
@@ -36,9 +46,19 @@ export const readPdfContent = (file: File) =>
const page = await doc.getPage(pageNo);
const tokenizedText = await page.getTextContent();
const viewport = page.getViewport({ scale: 1 });
const pageHeight = viewport.height;
const headerThreshold = pageHeight * 0.07; // 假设页头在页面顶部5%的区域内
const footerThreshold = pageHeight * 0.93; // 假设页脚在页面底部5%的区域内
const pageText = tokenizedText.items
.map((token: any) => token.str)
.filter((item: string) => item)
.filter((token: TokenType) => {
return (
!token.transform ||
(token.transform[5] > headerThreshold && token.transform[5] < footerThreshold)
);
})
.map((token: TokenType) => token.str)
.join('');
return pageText;
};
@@ -54,7 +74,7 @@ export const readPdfContent = (file: File) =>
pageTextPromises.push(readPDFPage(doc, pageNo));
}
const pageTexts = await Promise.all(pageTextPromises);
resolve(pageTexts.join('\n'));
resolve(pageTexts.join(''));
} catch (err) {
console.log(err, 'pdf load error');
reject('解析 PDF 失败');

View File

@@ -51,7 +51,7 @@ export const useEditTitle = ({
// eslint-disable-next-line react/display-name
const EditModal = useCallback(
({ maxLength = 30 }: { maxLength?: number }) => (
<MyModal isOpen={isOpen} onClose={onClose} title={title}>
<MyModal isOpen={isOpen} onClose={onClose} iconSrc="/imgs/modal/edit.svg" title={title}>
<ModalBody>
{!!tip && (
<Box mb={2} color={'myGray.500'} fontSize={'sm'}>

View File

@@ -11,6 +11,7 @@ import {
defaultVectorModels,
defaultAudioSpeechModels
} from '@fastgpt/global/core/ai/model';
import { AppSimpleEditConfigTemplateType } from '@fastgpt/global/core/app/type';
export let feConfigs: FeConfigsType = {};
export let priceMd = '';
@@ -23,6 +24,7 @@ export let cqModelList = defaultCQModels;
export let extractModelList = defaultExtractModels;
export let qgModelList = defaultQGModels;
export let audioSpeechModels = defaultAudioSpeechModels;
export let simpleModeTemplates: AppSimpleEditConfigTemplateType[] = [];
let retryTimes = 3;
@@ -43,6 +45,8 @@ export const clientInitData = async (): Promise<InitDateResponse> => {
priceMd = res.priceMd;
systemVersion = res.systemVersion;
simpleModeTemplates = res.simpleModeTemplates;
return res;
} catch (error) {
retryTimes--;

View File

@@ -1,7 +1,7 @@
import { useState, useCallback, useEffect, useMemo, useRef } from 'react';
import { useToast } from '@/web/common/hooks/useToast';
import { getErrText } from '@fastgpt/global/common/error/utils';
import { AppTTSConfigType } from '@/types/app';
import type { AppTTSConfigType } from '@fastgpt/global/core/module/type.d';
import { TTSTypeEnum } from '@/constants/app';
import { useTranslation } from 'next-i18next';
import { useRouter } from 'next/router';