chore: updates from upstream

pull/1001/head
utin-francis-peter 3 weeks ago
parent 45145685d5
commit 1cbaf9bd9d

@ -1,109 +1,108 @@
{ {
"language": "普通话", "language": "普通话",
"chat": "聊天", "chat": "聊天",
"chats": "聊天", "chats": "聊天",
"newChat": "新聊天", "newChat": "新聊天",
"myPlan": "我的计划", "myPlan": "我的计划",
"about": "关于", "about": "关于",
"inputPlaceholder": "在这里输入您的消息...", "inputPlaceholder": "在这里输入您的消息...",
"tagline": "DocsGPT 使用 GenAI, 请使用来源审核关键信息.", "tagline": "DocsGPT 使用 GenAI, 请使用来源审核关键信息.",
"sourceDocs": "来源文档", "sourceDocs": "来源文档",
"none": "无", "none": "无",
"cancel":"取消", "cancel": "取消",
"demo": [ "demo": [
{ {
"header": "了解 DocsGPT", "header": "了解 DocsGPT",
"query": "DocsGPT 是什么" "query": "DocsGPT 是什么"
}, },
{ {
"header": "总结文档", "header": "总结文档",
"query": "总结当前情况" "query": "总结当前情况"
}, },
{ {
"header": "编写代码", "header": "编写代码",
"query": "为 /api/answer API 请求编写代码" "query": "为 /api/answer API 请求编写代码"
}, },
{ {
"header": "学习帮助", "header": "学习帮助",
"query": "为背景写出潜在问题" "query": "为背景写出潜在问题"
} }
], ],
"settings": { "settings": {
"label": "设置", "label": "设置",
"general": { "general": {
"label": "般", "label": "般",
"selectTheme": "选择主题", "selectTheme": "选择主题",
"light": "浅色", "light": "浅色",
"dark": "暗色", "dark": "暗色",
"selectLanguage": "选择语言", "selectLanguage": "选择语言",
"chunks": "每个查询处理的块", "chunks": "每个查询处理的块",
"prompt": "提示", "prompt": "提示",
"deleteAllLabel": "删除所有对话", "deleteAllLabel": "删除所有对话",
"deleteAllBtn": "删除所有", "deleteAllBtn": "删除所有",
"addNew": "添加新的", "addNew": "添加新的",
"convHistory":"对话历史", "convHistory": "对话历史",
"none":"无", "none": "无",
"low":"低", "low": "低",
"medium":"中", "medium": "中",
"high":"高", "high": "高",
"unlimited":"无限", "unlimited": "无限",
"default":"默认" "default": "默认"
},
"documents": {
"label": "文件",
"name": "文件名称",
"date": "向量日期",
"type": "类型",
"tokenUsage": "令牌使用"
},
"apiKeys": {
"label": "API 密钥",
"name": "名称",
"key": "API 密钥",
"sourceDoc": "源文档",
"createNew": "创建新的"
}
}, },
"modals": { "documents": {
"uploadDoc": { "label": "文件",
"label": "上传新文档资料", "name": "文件名称",
"file": "从文件", "date": "向量日期",
"remote": "远程", "type": "类型",
"name": "名称", "tokenUsage": "令牌使用"
"choose": "选择文件", },
"info": "请上传 .pdf, .txt, .rst, .docx, .md, .zip 文件,限 25MB", "apiKeys": {
"uploadedFiles": "已上传文件", "label": "API 密钥",
"cancel": "取消", "name": "名称",
"train": "训练", "key": "API 密钥",
"link": "链接", "sourceDoc": "源文档",
"urlLink": "URL 链接", "createNew": "创建新的"
"reddit": { }
"id": "客户端 ID", },
"secret": "客户端密钥", "modals": {
"agent": "用户代理", "uploadDoc": {
"searchQueries": "搜索查询", "label": "上传新文档资料",
"numberOfPosts": "帖子数量" "file": "从文件",
} "remote": "远程",
}, "name": "名称",
"createAPIKey": { "choose": "选择文件",
"label": "创建新的 API 密钥", "info": "请上传 .pdf, .txt, .rst, .docx, .md, .zip 文件,限 25MB",
"apiKeyName": "API 密钥名称", "uploadedFiles": "已上传文件",
"chunks": "每个查询处理的块", "cancel": "取消",
"prompt": "选择活动提示", "train": "训练",
"sourceDoc": "源文档", "link": "链接",
"create": "创建" "urlLink": "URL 链接",
}, "reddit": {
"saveKey": { "id": "客户端 ID",
"note": "请保存您的密钥", "secret": "客户端密钥",
"disclaimer": "这是您的密钥唯一一次展示机会。", "agent": "用户代理",
"copy": "复制", "searchQueries": "搜索查询",
"copied": "已复制", "numberOfPosts": "帖子数量"
"confirm": "我已保存密钥"
},
"deleteConv": {
"confirm": "您确定要删除所有对话吗?",
"delete": "删除"
} }
},
"createAPIKey": {
"label": "创建新的 API 密钥",
"apiKeyName": "API 密钥名称",
"chunks": "每个查询处理的块",
"prompt": "选择活动提示",
"sourceDoc": "源文档",
"create": "创建"
},
"saveKey": {
"note": "请保存您的密钥",
"disclaimer": "这是您的密钥唯一一次展示机会。",
"copy": "复制",
"copied": "已复制",
"confirm": "我已保存密钥"
},
"deleteConv": {
"confirm": "您确定要删除所有对话吗?",
"delete": "删除"
} }
} }
}

@ -4,10 +4,11 @@ import { useDropzone } from 'react-dropzone';
import { useDispatch } from 'react-redux'; import { useDispatch } from 'react-redux';
import { ActiveState } from '../models/misc'; import { ActiveState } from '../models/misc';
import { getDocs } from '../preferences/preferenceApi'; import { getDocs } from '../preferences/preferenceApi';
import { setSourceDocs } from '../preferences/preferenceSlice'; import { setSelectedDocs, setSourceDocs } from '../preferences/preferenceSlice';
import Dropdown from '../components/Dropdown'; import Dropdown from '../components/Dropdown';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
export default function Upload({
function Upload({
modalState, modalState,
setModalState, setModalState,
}: { }: {
@ -24,25 +25,28 @@ export default function Upload({
search_queries: [''], search_queries: [''],
number_posts: 10, number_posts: 10,
}); });
const [activeTab, setActiveTab] = useState<string>('file');
const [files, setfiles] = useState<File[]>([]);
const [progress, setProgress] = useState<{
type: 'UPLOAD' | 'TRAINIING';
percentage: number;
taskId?: string;
failed?: boolean;
}>();
const { t } = useTranslation(); const { t } = useTranslation();
const urlOptions: { label: string; value: string }[] = [ const urlOptions: { label: string; value: string }[] = [
{ label: 'Crawler', value: 'crawler' }, { label: 'Crawler', value: 'crawler' },
// { label: 'Sitemap', value: 'sitemap' }, // { label: 'Sitemap', value: 'sitemap' },
{ label: 'Link', value: 'url' }, { label: 'Link', value: 'url' },
{ label: 'Reddit', value: 'reddit' }, { label: 'Reddit', value: 'reddit' },
]; ];
const [urlType, setUrlType] = useState<{ label: string; value: string }>({ const [urlType, setUrlType] = useState<{ label: string; value: string }>({
label: 'Link', label: 'Link',
value: 'url', value: 'url',
}); });
const [activeTab, setActiveTab] = useState<string>('file');
const [files, setfiles] = useState<File[]>([]);
const [progress, setProgress] = useState<{
type: 'UPLOAD' | 'TRAINIING';
percentage: number;
taskId?: string;
failed?: boolean;
}>();
function Progress({ function Progress({
title, title,
@ -93,6 +97,7 @@ export default function Upload({
function TrainingProgress() { function TrainingProgress() {
const dispatch = useDispatch(); const dispatch = useDispatch();
useEffect(() => { useEffect(() => {
let timeoutID: number | undefined; let timeoutID: number | undefined;
@ -241,6 +246,7 @@ export default function Upload({
['.docx'], ['.docx'],
}, },
}); });
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const { name, value } = e.target; const { name, value } = e.target;
if (name === 'search_queries' && value.length > 0) { if (name === 'search_queries' && value.length > 0) {
@ -254,7 +260,9 @@ export default function Upload({
[name]: value, [name]: value,
}); });
}; };
let view; let view;
if (progress?.type === 'UPLOAD') { if (progress?.type === 'UPLOAD') {
view = <UploadProgress></UploadProgress>; view = <UploadProgress></UploadProgress>;
} else if (progress?.type === 'TRAINIING') { } else if (progress?.type === 'TRAINIING') {
@ -287,6 +295,7 @@ export default function Upload({
{t('modals.uploadDoc.remote')} {t('modals.uploadDoc.remote')}
</button> </button>
</div> </div>
{activeTab === 'file' && ( {activeTab === 'file' && (
<> <>
<input <input
@ -435,6 +444,7 @@ export default function Upload({
)} )}
</> </>
)} )}
<div className="flex flex-row-reverse"> <div className="flex flex-row-reverse">
{activeTab === 'file' ? ( {activeTab === 'file' ? (
<button <button
@ -486,3 +496,5 @@ export default function Upload({
</article> </article>
); );
} }
export default Upload;

Loading…
Cancel
Save