V4.9.1 feature (#4206)

* fix: remove DefaultTeam (#4037)

* fix :Get application bound knowledge base information logical rewrite (#4057)

* fix :Get application bound knowledge base information logical rewrite

* fix :Get application bound knowledge base information logical rewrite

* fix :Get application bound knowledge base information logical rewrite

* fix :Get application bound knowledge base information logical rewrite

* update package

* fix: import dataset step error;perf: ai proxy avatar (#4074)

* perf: pg config params

* perf: ai proxy avatar

* fix: import dataset step error

* feat: data input ux

* perf: app dataset rewite

* fix: 文本提取不支持arrayString,arrayNumber等jsonSchema (#4079)

* update doc ;perf: model test (#4098)

* perf: extract array

* update doc

* perf: model test

* perf: model test

* perf: think tag parse (#4102)

* chat quote reader (#3912)

* init chat quote full text reader

* linked structure

* dataset data linked

* optimize code

* fix ts build

* test finish

* delete log

* fix

* fix ts

* fix ts

* remove nextId

* initial scroll

* fix

* fix

* perf: chunk read   (#4109)

* package

* perf: chunk read

* feat: api dataset support pdf parse;fix: chunk reader auth (#4117)

* feat: api dataset support pdf parse

* fix: chunk reader auth

* feat: invitation link (#3979)

* feat: invitation link schema and apis

* feat: add invitation link

* feat: member status: active, leave, forbidden

* fix: expires show hours and minutes

* feat: invalid invitation link hint

* fix: typo

* chore: fix typo & i18n

* fix

* pref: fe

* feat: add ttl index for 30-day-clean-up

* perf: invite member code (#4118)

* perf: invite member code

* fix: ts

* fix: model test channel id;fix: quote reader (#4123)

* fix: model test channel id

* fix: quote reader

* fix chat quote reader (#4125)

* perf: model test;perf: sidebar trigger (#4127)

* fix: import dataset step error;perf: ai proxy avatar (#4074)

* perf: pg config params

* perf: ai proxy avatar

* fix: import dataset step error

* feat: data input ux

* perf: app dataset rewite

* perf: model test

* perf: sidebar trigger

* lock

* update nanoid version

* fix: select component ux

* fix: ts

* fix: vitest

* remove test

* fix: prompt toolcall ui (#4139)

* load log error adapt

* fix: prompt toolcall ui

* perf: commercial function tip

* update package

* pref: copy link (#4147)

* fix(i18n): namespace (#4143)

* hiden dataset source (#4152)

* hiden dataset source

* perf: reader

* chore: move all tests into a single folder (#4160)

* fix modal close scroll (#4162)

* fix modal close scroll

* update refresh

* feat: rerank modal select and weight (#4164)

* fix loadInitData refresh (#4169)

* fix

* fix

* form input number default & api dataset max token

* feat: mix search weight (#4170)

* feat: mix search weight

* feat: svg render

* fix: avatar error remove (#4173)

* fix: avatar error remove

* fix: index

* fix: guide

* fix: auth

* update package;fix: input data model ui (#4181)

* update package

* fix: ts

* update config

* update jieba package

* add type sign

* fix: input data ui

* fix: page title refresh (#4186)

* fix: ts

* update jieba package

* fix: page title refresh

* fix: remove member length check when opening invite create modal (#4193)

* add env to check internal ip (#4187)

* fix: ts

* update jieba package

* add env to check internal ip

* package

* fix: jieba

* reset package

* update config

* fix: jieba package

* init shell

* init version

* change team reload

* update jieba package (#4200)

* update jieba package

* package

* update package

* remove invalid code

* action

* package (#4201)

* package

* update package

* remove invalid code

* package

* remove i18n tip (#4202)

* doc (#4205)

* fix: i18n (#4208)

* fix: next config (#4207)

* reset package

* i18n

* update config

* i18n

* remove log

---------

Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
Co-authored-by: gggaaallleee <91131304+gggaaallleee@users.noreply.github.com>
Co-authored-by: shilin <39396378+shilin66@users.noreply.github.com>
Co-authored-by: heheer <heheer@sealos.io>
This commit is contained in:
Archer
2025-03-18 14:40:41 +08:00
committed by GitHub
parent 56793114d8
commit e75d81d05a
316 changed files with 10626 additions and 8464 deletions

View File

@@ -11,3 +11,22 @@ type PaginationResponse<T = {}> = {
total: number;
list: T[];
};
type LinkedPaginationProps<T = {}> = T & {
pageSize: number;
} & RequireOnlyOne<{
initialId: string;
nextId: string;
prevId: string;
}> &
RequireOnlyOne<{
initialIndex: number;
nextIndex: number;
prevIndex: number;
}>;
type LinkedListResponse<T = {}> = {
list: Array<T & { _id: string; index: number }>;
hasMorePrev: boolean;
hasMoreNext: boolean;
};

View File

@@ -1,15 +0,0 @@
import { I18nNsType } from '../../types/i18next';
import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
export const serviceSideProps = async (content: any, ns: I18nNsType = []) => {
const lang = content.req?.cookies?.NEXT_LOCALE || content.locale;
const extraLng = content.req?.cookies?.NEXT_LOCALE ? undefined : content.locales;
// Device size
const deviceSize = content.req?.cookies?.NEXT_DEVICE_SIZE || null;
return {
...(await serverSideTranslations(lang, ['common', ...ns], null, extraLng)),
deviceSize
};
};

View File

@@ -10,15 +10,7 @@ import { Box, Flex } from '@chakra-ui/react';
* @param [groupId] - group id to make the key unique
* @returns
*/
function AvatarGroup({
avatars,
max = 3,
groupId
}: {
max?: number;
avatars: string[];
groupId?: string;
}) {
function AvatarGroup({ avatars, max = 3 }: { max?: number; avatars: string[] }) {
return (
<Flex position="relative">
{avatars.slice(0, max).map((avatar, index) => (

View File

@@ -9,6 +9,7 @@ type Props = FlexProps & {
onClick?: () => void;
hoverColor?: string;
tip?: string;
isLoading?: boolean;
};
const MyIconButton = ({
@@ -17,11 +18,13 @@ const MyIconButton = ({
hoverColor = 'primary.600',
size = '1rem',
tip,
isLoading = false,
...props
}: Props) => {
return (
<MyTooltip label={tip}>
<Flex
position={'relative'}
p={1}
color={'myGray.500'}
rounded={'sm'}
@@ -33,10 +36,14 @@ const MyIconButton = ({
bg: 'myGray.05',
color: hoverColor
}}
onClick={onClick}
onClick={() => {
if (isLoading) return;
onClick?.();
}}
sx={{ userSelect: 'none' }}
{...props}
>
<MyIcon name={icon as any} w={size} />
<MyIcon name={isLoading ? 'common/loading' : (icon as any)} w={size} />
</Flex>
</MyTooltip>
);

View File

@@ -35,10 +35,13 @@ export const iconPaths = {
'common/dingtalkFill': () => import('./icons/common/dingtalkFill.svg'),
'common/disable': () => import('./icons/common/disable.svg'),
'common/downArrowFill': () => import('./icons/common/downArrowFill.svg'),
'common/download': () => import('./icons/common/download.svg'),
'common/edit': () => import('./icons/common/edit.svg'),
'common/editor/resizer': () => import('./icons/common/editor/resizer.svg'),
'common/enable': () => import('./icons/common/enable.svg'),
'common/errorFill': () => import('./icons/common/errorFill.svg'),
'common/file/move': () => import('./icons/common/file/move.svg'),
'common/fileNotFound': () => import('./icons/common/fileNotFound.svg'),
'common/folderFill': () => import('./icons/common/folderFill.svg'),
'common/folderImport': () => import('./icons/common/folderImport.svg'),
'common/fullScreenLight': () => import('./icons/common/fullScreenLight.svg'),
@@ -58,6 +61,8 @@ export const iconPaths = {
'common/leftArrowLight': () => import('./icons/common/leftArrowLight.svg'),
'common/line': () => import('./icons/common/line.svg'),
'common/lineChange': () => import('./icons/common/lineChange.svg'),
'common/lineStop': () => import('./icons/common/lineStop.svg'),
'common/link': () => import('./icons/common/link.svg'),
'common/linkBlue': () => import('./icons/common/linkBlue.svg'),
'common/list': () => import('./icons/common/list.svg'),
'common/loading': () => import('./icons/common/loading.svg'),
@@ -86,7 +91,9 @@ export const iconPaths = {
'common/selectLight': () => import('./icons/common/selectLight.svg'),
'common/setting': () => import('./icons/common/setting.svg'),
'common/settingLight': () => import('./icons/common/settingLight.svg'),
'common/solidChevronDown': () => import('./icons/common/solidChevronDown.svg'),
'common/solidChevronRight': () => import('./icons/common/solidChevronRight.svg'),
'common/solidChevronUp': () => import('./icons/common/solidChevronUp.svg'),
'common/subtract': () => import('./icons/common/subtract.svg'),
'common/templateMarket': () => import('./icons/common/templateMarket.svg'),
'common/text/t': () => import('./icons/common/text/t.svg'),
@@ -96,6 +103,7 @@ export const iconPaths = {
'common/trash': () => import('./icons/common/trash.svg'),
'common/upRightArrowLight': () => import('./icons/common/upRightArrowLight.svg'),
'common/uploadFileFill': () => import('./icons/common/uploadFileFill.svg'),
'common/upperRight': () => import('./icons/common/upperRight.svg'),
'common/userInfo': () => import('./icons/common/userInfo.svg'),
'common/variable': () => import('./icons/common/variable.svg'),
'common/viewLight': () => import('./icons/common/viewLight.svg'),
@@ -204,7 +212,9 @@ export const iconPaths = {
'core/dataset/manualCollection': () => import('./icons/core/dataset/manualCollection.svg'),
'core/dataset/mixedRecall': () => import('./icons/core/dataset/mixedRecall.svg'),
'core/dataset/modeEmbedding': () => import('./icons/core/dataset/modeEmbedding.svg'),
'core/dataset/questionExtension': () => import('./icons/core/dataset/questionExtension.svg'),
'core/dataset/rerank': () => import('./icons/core/dataset/rerank.svg'),
'core/dataset/searchfilter': () => import('./icons/core/dataset/searchfilter.svg'),
'core/dataset/splitLight': () => import('./icons/core/dataset/splitLight.svg'),
'core/dataset/tableCollection': () => import('./icons/core/dataset/tableCollection.svg'),
'core/dataset/tag': () => import('./icons/core/dataset/tag.svg'),
@@ -373,9 +383,13 @@ export const iconPaths = {
'modal/teamPlans': () => import('./icons/modal/teamPlans.svg'),
'model/BAAI': () => import('./icons/model/BAAI.svg'),
'model/alicloud': () => import('./icons/model/alicloud.svg'),
'model/aws': () => import('./icons/model/aws.svg'),
'model/azure': () => import('./icons/model/azure.svg'),
'model/baichuan': () => import('./icons/model/baichuan.svg'),
'model/chatglm': () => import('./icons/model/chatglm.svg'),
'model/claude': () => import('./icons/model/claude.svg'),
'model/cloudflare': () => import('./icons/model/cloudflare.svg'),
'model/cohere': () => import('./icons/model/cohere.svg'),
'model/deepseek': () => import('./icons/model/deepseek.svg'),
'model/doubao': () => import('./icons/model/doubao.svg'),
'model/ernie': () => import('./icons/model/ernie.svg'),
@@ -415,6 +429,7 @@ export const iconPaths = {
'price/bg': () => import('./icons/price/bg.svg'),
'price/right': () => import('./icons/price/right.svg'),
save: () => import('./icons/save.svg'),
sliderTag: () => import('./icons/sliderTag.svg'),
stop: () => import('./icons/stop.svg'),
'support/account/laf': () => import('./icons/support/account/laf.svg'),
'support/account/loginoutLight': () => import('./icons/support/account/loginoutLight.svg'),

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" >
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.2703 9.04924C15.2703 10.8968 13.8022 12.4015 11.9689 12.4602V12.462H11.7009C11.3327 12.462 11.0342 12.1635 11.0342 11.7953C11.0342 11.4271 11.3327 11.1287 11.7009 11.1287H11.8689C13.0121 11.1226 13.937 10.1939 13.937 9.04924C13.937 8.07583 13.2669 7.25561 12.361 7.03087L11.5956 6.84096L11.3934 6.0787C10.9949 4.57696 9.62484 3.47188 8.00003 3.47188C6.37523 3.47188 5.00513 4.57696 4.60668 6.0787L4.40444 6.84096L3.63901 7.03087C2.73317 7.25561 2.06307 8.07583 2.06307 9.04924C2.06307 10.1977 2.99405 11.1287 4.14248 11.1287L4.14588 11.1286L4.33524 11.1287C4.70343 11.1287 5.00191 11.4271 5.00191 11.7953C5.00191 12.1635 4.70343 12.462 4.33524 12.462H4.14248H4.06858V12.4612C2.2179 12.4219 0.729736 10.9093 0.729736 9.04924C0.729736 7.44874 1.83149 6.10557 3.31794 5.73677C3.86757 3.6652 5.75552 2.13855 8.00003 2.13855C10.2445 2.13855 12.1325 3.6652 12.6821 5.73677C14.1686 6.10557 15.2703 7.44874 15.2703 9.04924ZM8.00002 7.30026C7.63183 7.30026 7.33335 7.59874 7.33335 7.96693V11.8435L6.96682 11.477C6.74816 11.2583 6.39364 11.2583 6.17498 11.477C5.95632 11.6957 5.95632 12.0502 6.17498 12.2688L7.50545 13.5993C7.52049 13.6159 7.53634 13.6318 7.55296 13.6468L7.60322 13.6971C7.82237 13.9162 8.17767 13.9162 8.39682 13.6971L8.44709 13.6468C8.4637 13.6318 8.47955 13.6159 8.49457 13.5993L9.82418 12.2697C10.0433 12.0506 10.0433 11.6953 9.82418 11.4761C9.60503 11.257 9.24973 11.257 9.03058 11.4761L8.66668 11.84V7.96693C8.66668 7.59874 8.36821 7.30026 8.00002 7.30026Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" fill="none">
<path d="M0.246607 10.0893C0.241922 10.0968 0.237518 10.1045 0.23341 10.1124C0.194824 10.1867 0.194824 10.2843 0.194824 10.4795V10.7803C0.194824 10.9755 0.194824 11.0731 0.23341 11.1473C0.265926 11.2099 0.316964 11.261 0.37956 11.2935C0.453841 11.3321 0.55143 11.3321 0.746607 11.3321H1.04222C1.20929 11.3321 1.30485 11.3321 1.3755 11.3079C1.38016 11.3066 1.38481 11.3052 1.38944 11.3037C1.50916 11.2658 1.61267 11.1623 1.81968 10.9553L8.4032 4.37179L7.15796 3.12655L0.574444 9.71007C0.397236 9.88728 0.29587 9.98864 0.246607 10.0893Z" />
<path d="M9.43317 3.34182L8.18793 2.09658L9.34895 0.935566C9.36436 0.920152 9.37233 0.912183 9.37902 0.905775C9.71036 0.588537 10.2328 0.588537 10.5641 0.905775C10.5708 0.91219 10.5786 0.919938 10.594 0.935383L10.5946 0.935931C10.6099 0.951255 10.6176 0.958969 10.624 0.965642C10.9412 1.29698 10.9412 1.81939 10.624 2.15073C10.6175 2.15745 10.6098 2.16524 10.5942 2.1808L9.43317 3.34182Z" />
<path d="M4.47921 10.6383C4.47921 10.2552 4.78981 9.9446 5.17296 9.9446H11.1114C11.4946 9.9446 11.8052 10.2552 11.8052 10.6383C11.8052 11.0215 11.4946 11.3321 11.1114 11.3321H5.17296C4.78981 11.3321 4.47921 11.0215 4.47921 10.6383Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
<path d="M4 5H26V10H4V5Z" fill="#ECECEC"/>
<path d="M4 12H26V17H4V12Z" fill="#ECECEC"/>
<path d="M4 19H26V24H4V19Z" fill="#ECECEC"/>
<path d="M21.8982 27.7967C18.0945 27.7967 15 24.7021 15 20.8983C15 17.0947 18.0945 14 21.8982 14C25.7019 14 28.7965 17.0947 28.7965 20.8983C28.7965 24.702 25.7019 27.7967 21.8982 27.7967ZM21.8982 15.698C19.0307 15.698 16.698 18.0309 16.698 20.8983C16.698 23.7658 19.0307 26.0988 21.8982 26.0988C24.7657 26.0988 27.0986 23.7658 27.0986 20.8983C27.0986 18.0309 24.7657 15.698 21.8982 15.698Z" fill="#BEC2C9"/>
<path d="M29.9551 30C29.6876 30 29.4203 29.8979 29.2162 29.694L25.6122 26.0902C25.2042 25.6821 25.2042 25.0205 25.6122 24.6124C26.0204 24.2044 26.6819 24.2044 27.09 24.6124L30.694 28.2162C31.102 28.6242 31.102 29.2859 30.694 29.694C30.4899 29.8979 30.2225 30 29.9551 30Z" fill="#BEC2C9"/>
</svg>

After

Width:  |  Height:  |  Size: 942 B

View File

@@ -0,0 +1,10 @@
<svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_17994_4)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.98584 2.23348C5.80108 2.23348 3.21932 4.81524 3.21932 8C3.21932 11.1848 5.80108 13.7665 8.98584 13.7665C12.1706 13.7665 14.7524 11.1848 14.7524 8C14.7524 4.81524 12.1706 2.23348 8.98584 2.23348ZM1.93787 8C1.93787 4.10751 5.09335 0.952026 8.98584 0.952026C12.8783 0.952026 16.0338 4.10751 16.0338 8C16.0338 11.8925 12.8783 15.048 8.98584 15.048C5.09335 15.048 1.93787 11.8925 1.93787 8ZM6.42294 6.07782C6.42294 5.72396 6.7098 5.4371 7.06366 5.4371H10.908C11.2619 5.4371 11.5487 5.72396 11.5487 6.07782V9.92217C11.5487 10.276 11.2619 10.5629 10.908 10.5629H7.06366C6.7098 10.5629 6.42294 10.276 6.42294 9.92217V6.07782ZM7.70439 6.71855V9.28145H10.2673V6.71855H7.70439Z" fill="#485264"/>
</g>
<defs>
<clipPath id="clip0_17994_4">
<rect width="16" height="16" fill="white" transform="translate(0.98584)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1013 B

View File

@@ -0,0 +1,3 @@
<svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.98608 2.34313C10.5482 0.78103 13.0808 0.78103 14.6429 2.34313C16.205 3.90522 16.205 6.43788 14.6429 7.99998L13.7001 8.94279C13.4398 9.20314 13.0177 9.20314 12.7573 8.94279C12.497 8.68244 12.497 8.26033 12.7573 7.99998L13.7001 7.05717C14.7415 6.01577 14.7415 4.32733 13.7001 3.28594C12.6587 2.24454 10.9703 2.24454 9.92889 3.28594L8.98608 4.22875C8.72573 4.48909 8.30362 4.48909 8.04327 4.22875C7.78292 3.9684 7.78292 3.54629 8.04327 3.28594L8.98608 2.34313ZM11.7908 5.19523C12.0512 5.45558 12.0512 5.87769 11.7908 6.13804L7.12415 10.8047C6.8638 11.0651 6.44169 11.0651 6.18134 10.8047C5.92099 10.5444 5.92099 10.1222 6.18134 9.8619L10.848 5.19523C11.1084 4.93488 11.5305 4.93488 11.7908 5.19523ZM5.21484 7.05717C5.47519 7.31752 5.47519 7.73963 5.21484 7.99998L4.27204 8.94279C3.23064 9.98419 3.23064 11.6726 4.27204 12.714C5.31343 13.7554 7.00187 13.7554 8.04327 12.714L8.98608 11.7712C9.24643 11.5109 9.66854 11.5109 9.92889 11.7712C10.1892 12.0316 10.1892 12.4537 9.92889 12.714L8.98608 13.6568C7.42398 15.2189 4.89132 15.2189 3.32923 13.6568C1.76713 12.0947 1.76713 9.56208 3.32923 7.99998L4.27204 7.05717C4.53239 6.79682 4.9545 6.79682 5.21484 7.05717Z" fill="#485264"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" fill="none">
<path d="M13.4032 6C14.7396 6 15.4088 7.61571 14.4639 8.56066L10.6388 12.3858C10.053 12.9715 9.10324 12.9715 8.51745 12.3858L4.69235 8.56066C3.7474 7.61571 4.41665 6 5.75301 6H13.4032Z" />
</svg>

After

Width:  |  Height:  |  Size: 270 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" fill="none">
<path d="M13.4032 12.0751C14.7396 12.0751 15.4088 10.4594 14.4639 9.51441L10.6388 5.68931C10.053 5.10352 9.10324 5.10352 8.51745 5.68931L4.69235 9.51441C3.7474 10.4594 4.41665 12.0751 5.75301 12.0751H13.4032Z" />
</svg>

After

Width:  |  Height:  |  Size: 294 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none">
<path d="M5.44766 4.22876C5.44765 4.59695 5.74613 4.89542 6.11432 4.89542L10.1617 4.89542L3.7573 11.2998C3.49695 11.5602 3.49695 11.9823 3.7573 12.2426C4.01765 12.503 4.43976 12.503 4.70011 12.2426L11.1045 5.83823L11.1045 9.88561C11.1045 10.2538 11.403 10.5523 11.7712 10.5523C12.1394 10.5523 12.4378 10.2538 12.4378 9.88561L12.4378 4.22876C12.4378 3.86057 12.1394 3.56209 11.7712 3.56209L6.11432 3.56209C5.74613 3.56209 5.44765 3.86057 5.44766 4.22876Z"/>
</svg>

After

Width:  |  Height:  |  Size: 539 B

View File

@@ -1,3 +1,3 @@
<svg viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.237 6.21967C4.5299 5.92678 5.00477 5.92678 5.29766 6.21967L9.26733 10.1893L13.237 6.21967C13.5299 5.92678 14.0048 5.92678 14.2977 6.21967C14.5906 6.51256 14.5906 6.98744 14.2977 7.28033L9.79766 11.7803C9.50477 12.0732 9.0299 12.0732 8.737 11.7803L4.237 7.28033C3.94411 6.98744 3.94411 6.51256 4.237 6.21967Z" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" >
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.52858 5.52876C3.78892 5.26841 4.21103 5.26841 4.47138 5.52876L7.99998 9.05735L11.5286 5.52876C11.7889 5.26841 12.211 5.26841 12.4714 5.52876C12.7317 5.78911 12.7317 6.21122 12.4714 6.47157L8.47138 10.4716C8.21103 10.7319 7.78892 10.7319 7.52858 10.4716L3.52858 6.47157C3.26823 6.21122 3.26823 5.78911 3.52858 5.52876Z" />
</svg>

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 445 B

View File

@@ -1,3 +1,3 @@
<svg viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.96967 11.7803C4.26256 12.0732 4.73744 12.0732 5.03033 11.7803L9 7.81066L12.9697 11.7803C13.2626 12.0732 13.7374 12.0732 14.0303 11.7803C14.3232 11.4874 14.3232 11.0126 14.0303 10.7197L9.53033 6.21967C9.23744 5.92678 8.76256 5.92678 8.46967 6.21967L3.96967 10.7197C3.67678 11.0126 3.67678 11.4874 3.96967 11.7803Z" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" >
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.52858 10.4712C3.78892 10.7316 4.21103 10.7316 4.47138 10.4712L7.99998 6.94265L11.5286 10.4712C11.7889 10.7316 12.211 10.7316 12.4714 10.4712C12.7317 10.2109 12.7317 9.78878 12.4714 9.52843L8.47138 5.52843C8.21103 5.26808 7.78892 5.26808 7.52858 5.52843L3.52858 9.52843C3.26823 9.78878 3.26823 10.2109 3.52858 10.4712Z" />
</svg>

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 445 B

View File

@@ -1 +1,3 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1698497259520" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10081" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M156.09136 606.57001a457.596822 457.596822 0 0 1 221.680239-392.516385 50.844091 50.844091 0 1 1 50.844091 86.943396 355.90864 355.90864 0 0 0-138.804369 152.532274h16.77855a152.532274 152.532274 0 1 1-152.532274 152.532274z m406.752731 0a457.596822 457.596822 0 0 1 221.680239-392.007944 50.844091 50.844091 0 1 1 50.844091 86.943396 355.90864 355.90864 0 0 0-138.804369 152.532274h16.77855a152.532274 152.532274 0 1 1-152.532274 152.532274z" fill="#E67E22" p-id="10082"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
<path d="M11.2308 13.6099V18.2252C11.2308 18.8663 11.0064 19.4111 10.5577 19.8599C10.109 20.3086 9.5641 20.5329 8.92307 20.5329H4.30769C3.66667 20.5329 3.12179 20.3086 2.67308 19.8599C2.22436 19.4111 2 18.8663 2 18.2252V9.76371C2 8.93038 2.16226 8.1351 2.48678 7.37789C2.8113 6.62068 3.25 5.96563 3.80288 5.41275C4.35577 4.85986 5.01082 4.42116 5.76803 4.09664C6.52524 3.77212 7.32051 3.60986 8.15384 3.60986H8.92307C9.13141 3.60986 9.3117 3.68598 9.46394 3.83823C9.61618 3.99047 9.6923 4.17076 9.6923 4.37909V5.91756C9.6923 6.12589 9.61618 6.30618 9.46394 6.45842C9.3117 6.61066 9.13141 6.68679 8.92307 6.68679H8.15384C7.30448 6.68679 6.57933 6.98727 5.97836 7.58823C5.3774 8.18919 5.07692 8.91435 5.07692 9.76371V10.1483C5.07692 10.4688 5.1891 10.7413 5.41346 10.9656C5.63782 11.19 5.91025 11.3022 6.23077 11.3022H8.92307C9.5641 11.3022 10.109 11.5265 10.5577 11.9752C11.0064 12.424 11.2308 12.9688 11.2308 13.6099ZM22 13.6099V18.2252C22 18.8663 21.7756 19.4111 21.3269 19.8599C20.8782 20.3086 20.3333 20.5329 19.6923 20.5329H15.0769C14.4359 20.5329 13.891 20.3086 13.4423 19.8599C12.9936 19.4111 12.7692 18.8663 12.7692 18.2252V9.76371C12.7692 8.93038 12.9315 8.1351 13.256 7.37789C13.5805 6.62068 14.0192 5.96563 14.5721 5.41275C15.125 4.85986 15.78 4.42116 16.5373 4.09664C17.2945 3.77212 18.0897 3.60986 18.9231 3.60986H19.6923C19.9006 3.60986 20.0809 3.68598 20.2332 3.83823C20.3854 3.99047 20.4615 4.17076 20.4615 4.37909V5.91756C20.4615 6.12589 20.3854 6.30618 20.2332 6.45842C20.0809 6.61066 19.9006 6.68679 19.6923 6.68679H18.9231C18.0737 6.68679 17.3486 6.98727 16.7476 7.58823C16.1466 8.18919 15.8461 8.91435 15.8461 9.76371V10.1483C15.8461 10.4688 15.9583 10.7413 16.1827 10.9656C16.407 11.19 16.6795 11.3022 17 11.3022H19.6923C20.3333 11.3022 20.8782 11.5265 21.3269 11.9752C21.7756 12.424 22 12.9688 22 13.6099Z" />
</svg>

Before

Width:  |  Height:  |  Size: 819 B

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 16" >
<path d="M11.3317 4.63043L12.3128 5.61147L8.98815 8.9361L6.74675 6.6947C6.68372 6.63154 6.60886 6.58144 6.52644 6.54725C6.44402 6.51306 6.35567 6.49546 6.26645 6.49546C6.17722 6.49546 6.08887 6.51306 6.00646 6.54725C5.92404 6.58144 5.84918 6.63154 5.78615 6.6947L1.69849 10.7892C1.63542 10.8522 1.58538 10.9271 1.55125 11.0095C1.51711 11.0919 1.49954 11.1803 1.49954 11.2695C1.49954 11.3587 1.51711 11.447 1.55125 11.5294C1.58538 11.6118 1.63542 11.6867 1.69849 11.7498C1.76156 11.8128 1.83644 11.8629 1.91885 11.897C2.00126 11.9312 2.08959 11.9487 2.17879 11.9487C2.26799 11.9487 2.35632 11.9312 2.43873 11.897C2.52114 11.8629 2.59601 11.8128 2.65909 11.7498L6.26304 8.13901L8.50444 10.3804C8.77014 10.6461 9.19934 10.6461 9.46504 10.3804L13.2734 6.57888L14.2544 7.55992C14.302 7.6066 14.3623 7.63828 14.4277 7.65104C14.4932 7.66379 14.5609 7.65706 14.6226 7.63167C14.6842 7.60628 14.7371 7.56336 14.7746 7.50822C14.8121 7.45308 14.8326 7.38815 14.8335 7.32147V4.39198C14.8354 4.34733 14.8281 4.30276 14.812 4.26104C14.796 4.21931 14.7716 4.18132 14.7403 4.1494C14.709 4.11747 14.6716 4.0923 14.6302 4.07544C14.5888 4.05858 14.5444 4.05038 14.4997 4.05135H11.577C11.5097 4.05095 11.4439 4.07047 11.3877 4.10745C11.3315 4.14443 11.2876 4.1972 11.2613 4.25913C11.2351 4.32106 11.2278 4.38937 11.2403 4.45544C11.2529 4.52152 11.2847 4.5824 11.3317 4.63043Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 16" >
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.8911 3.61032C15.0171 5.17598 14.8761 7.37117 13.4681 8.77915L12.6427 9.60456C12.3733 9.87396 11.9365 9.87396 11.6671 9.60456L6.97652 4.91394C6.70711 4.64454 6.70711 4.20775 6.97652 3.93834L7.80192 3.11294C9.20207 1.71279 11.3807 1.56556 12.9446 2.67127L13.8718 1.74404C14.1322 1.48369 14.5543 1.48369 14.8146 1.74404C15.075 2.00439 15.075 2.4265 14.8146 2.68685L13.8911 3.61032ZM2.18142 13.4425C1.92107 13.7029 1.92107 14.125 2.18142 14.3853C2.44177 14.6457 2.86388 14.6457 3.12423 14.3853L4.04283 13.4667C5.6079 14.5859 7.79751 14.4428 9.20286 13.0374L10.0283 12.212C10.2977 11.9426 10.2977 11.5058 10.0283 11.2364L9.44649 10.6546L9.94334 10.1578C10.2037 9.89744 10.2037 9.47533 9.94334 9.21498C9.68299 8.95463 9.26088 8.95463 9.00053 9.21498L8.50368 9.71183L6.87902 8.08717L7.37233 7.59386C7.63268 7.33351 7.63268 6.9114 7.37233 6.65105C7.11198 6.3907 6.68987 6.3907 6.42952 6.65105L5.93621 7.14436L5.33765 6.5458C5.06824 6.27639 4.63145 6.27639 4.36205 6.5458L3.53665 7.3712C2.13385 8.774 1.98872 10.9582 3.10124 12.5227L2.18142 13.4425ZM4.84985 7.94362L4.47946 8.31401C3.43548 9.35799 3.43548 11.0506 4.47946 12.0946C5.52344 13.1386 7.21607 13.1386 8.26005 12.0946L8.63044 11.7242L4.84985 7.94362ZM12.5253 7.83635L12.1549 8.20674L8.37433 4.42614L8.74473 4.05575C9.78871 3.01177 11.4813 3.01177 12.5253 4.05575C13.5693 5.09973 13.5693 6.79236 12.5253 7.83635Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg t="1741332650600" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6423" width="64" height="64"><path d="M288.695 427.886c0 12.653 1.316 22.893 3.73 30.427 2.706 7.534 6.144 15.726 10.972 24.576a14.848 14.848 0 0 1 2.34 7.9c0 3.364-2.048 6.802-6.51 10.24l-21.43 14.336a16.31 16.31 0 0 1-8.85 3.072c-3.438 0-6.803-1.683-10.24-4.755a105.618 105.618 0 0 1-12.289-16.091 263.607 263.607 0 0 1-10.532-20.114c-26.551 31.451-59.977 47.104-100.206 47.104-28.526 0-51.42-8.192-68.023-24.576-16.75-16.384-25.307-38.254-25.307-65.61 0-29.11 10.24-52.662 31.012-70.436s48.42-26.697 83.456-26.697c11.63 0 23.552 1.024 36.133 2.78 12.58 1.681 25.6 4.388 39.204 7.533V322.56c0-26.039-5.485-44.105-16.091-54.71-10.825-10.607-29.257-15.727-55.442-15.727-11.923 0-24.21 1.39-36.791 4.389a269.897 269.897 0 0 0-36.791 11.703 97.573 97.573 0 0 1-11.922 4.388 20.7 20.7 0 0 1-5.486 1.024c-4.754 0-7.168-3.364-7.168-10.605v-16.53c0-5.486 0.731-9.582 2.414-11.996a25.454 25.454 0 0 1 9.508-7.168c11.923-6.144 26.259-11.337 42.935-15.36 16.677-4.462 34.377-6.583 53.175-6.583 40.521 0 70.217 9.29 89.234 27.794 18.725 18.36 28.307 46.446 28.307 84.042v110.665h0.658z m-138.313 51.931c11.264 0 22.82-2.048 35.108-6.144 12.215-4.096 23.113-11.63 32.33-21.87a54.272 54.272 0 0 0 11.63-21.942 122.88 122.88 0 0 0 3.364-29.696v-14.336a255.927 255.927 0 0 0-63.342-7.9c-22.82 0-39.497 4.462-50.761 13.751-11.264 9.216-16.677 22.162-16.677 39.278 0 16.091 4.023 28.013 12.58 36.205 8.193 8.558 20.115 12.654 35.768 12.654z m273.554 36.937c-6.144 0-10.24-1.024-12.946-3.437-2.707-2.048-5.12-6.803-7.168-13.312l-80.019-264.192a59.83 59.83 0 0 1-3.072-13.678c0-5.486 2.707-8.558 8.12-8.558h33.426c6.436 0 10.898 1.024 13.312 3.438 2.706 2.048 4.754 6.802 6.802 13.312l57.198 226.23 53.174-226.23c1.683-6.876 3.73-11.264 6.437-13.312a23.406 23.406 0 0 1 13.605-3.438h27.282c6.51 0 10.971 1.024 13.604 3.438 2.78 2.048 5.12 6.802 6.51 13.312l53.833 228.937 58.953-228.937a29.403 29.403 0 0 1 6.803-13.312 22.235 22.235 0 0 1 13.239-3.438h31.744c5.412 0 8.484 2.706 8.484 8.558 0 1.682-0.366 3.364-0.731 5.412a50.103 50.103 0 0 1-2.34 8.558L648.118 500.37c-2.048 6.803-4.389 11.264-7.168 13.312a21.723 21.723 0 0 1-12.946 3.438h-29.258c-6.582 0-10.971-1.024-13.677-3.438-2.707-2.413-5.12-6.875-6.437-13.677l-52.809-220.453-52.517 220.16c-1.682 6.802-3.73 11.19-6.436 13.605s-7.534 3.437-13.605 3.437h-29.33z m437.76 9.216c-17.7 0-35.401-2.048-52.443-6.144a155.063 155.063 0 0 1-39.205-13.677c-5.413-3.072-9.216-6.51-10.533-9.509a24.137 24.137 0 0 1-2.048-9.655v-17.408c0-7.168 2.707-10.606 7.827-10.606 2.048 0 4.096 0.366 6.144 1.024 2.048 0.732 5.12 2.048 8.484 3.438a188.428 188.428 0 0 0 37.45 11.996c13.677 2.706 26.99 4.096 40.594 4.096 21.43 0 38.107-3.804 49.737-11.264a36.937 36.937 0 0 0 17.7-32.549 33.353 33.353 0 0 0-9.216-23.918c-6.144-6.51-17.7-12.288-34.377-17.773l-49.444-15.36c-24.869-7.9-43.228-19.456-54.492-34.89a81.554 81.554 0 0 1-7.826-87.478 87.771 87.771 0 0 1 24.503-28.014c10.24-7.9 21.87-13.678 35.474-17.774 13.605-4.096 27.94-5.851 42.935-5.851 7.46 0 15.36 0.365 22.82 1.39 7.827 1.023 14.995 2.413 22.09 3.73 6.875 1.755 13.312 3.437 19.456 5.485 6.144 2.048 10.898 4.096 14.336 6.144a29.477 29.477 0 0 1 10.24 8.558 18.432 18.432 0 0 1 2.999 11.264v16.092c0 7.168-2.707 10.971-7.827 10.971a35.109 35.109 0 0 1-12.946-4.17 155.502 155.502 0 0 0-65.39-13.311c-19.456 0-34.743 3.072-45.348 9.582-10.533 6.51-16.019 16.384-16.019 30.427 0 9.509 3.438 17.774 10.24 24.283 6.803 6.51 19.456 12.947 37.523 18.798l48.347 15.36c24.503 7.9 42.204 18.798 52.81 32.841 10.532 13.97 15.652 30.062 15.652 47.836 0 14.701-3.072 28.013-8.777 39.643-6.071 11.703-14.629 21.943-24.942 30.062a109.714 109.714 0 0 1-37.815 19.163c-15.36 4.755-31.305 7.168-48.713 7.168z" fill="#252F3E" p-id="6424"></path><path d="M926.062 692.15C814.08 775.169 651.118 819.2 511.122 819.2c-196.242 0-373.028-72.777-506.587-193.829-10.533-9.508-1.024-22.528 11.63-14.994C160.549 694.491 338.725 745.4 523.045 745.4c124.342 0 260.973-26.039 386.706-79.36 18.724-8.485 34.743 12.361 16.31 26.039z" fill="#FF9900" p-id="6425"></path><path d="M972.8 638.757c-14.336-18.432-94.793-8.85-131.218-4.389-10.972 1.317-12.58-8.265-2.707-15.36 64-45.202 169.326-32.183 181.541-17.115 12.288 15.36-3.365 120.978-63.342 171.593-9.216 7.826-18.066 3.73-13.97-6.583 13.605-33.792 43.886-110.007 29.623-128.146z" fill="#FF9900" p-id="6426"></path></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1 @@
<svg t="1741332590124" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2637" width="64" height="64"><path d="M384.032 128h227.264l-235.904 741.792a36.48 36.48 0 0 1-34.336 26.208H164.16A37.312 37.312 0 0 1 128 857.632a41.6 41.6 0 0 1 1.92-12.32l219.84-691.168A36.48 36.48 0 0 1 384.032 128" fill="#01579B" p-id="2638"></path><path d="M714.24 640H353.92a17.184 17.184 0 0 0-16.704 17.6 18.24 18.24 0 0 0 5.312 13.056l231.552 214.912a35.2 35.2 0 0 0 24.8 10.4h204.032z" fill="#1976D2" p-id="2639"></path><path d="M674.272 154.112A36.48 36.48 0 0 0 640.032 128h-253.28a36.48 36.48 0 0 1 34.304 26.08l219.776 691.168a39.04 39.04 0 0 1-22.72 48.64 35.2 35.2 0 0 1-11.584 2.048h253.28A37.312 37.312 0 0 0 896 857.6a41.6 41.6 0 0 0-1.92-12.32L674.304 154.144z" fill="#29B6F6" p-id="2640"></path></svg>

After

Width:  |  Height:  |  Size: 838 B

View File

@@ -0,0 +1 @@
<svg t="1741333125459" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11365" width="64" height="64"><path d="M704.38432 718.72c6.304-21.632 3.872-41.408-6.624-56.128-9.568-13.504-25.792-21.28-45.28-22.208l-369.472-4.8h-0.096a6.688 6.688 0 0 1-5.568-3.008l-0.032-0.032a8.192 8.192 0 0 1-0.896-6.624 10.24 10.24 0 0 1 8.672-6.656l372.736-4.8c44.16-2.08 92.16-37.824 108.96-81.632l21.28-55.52a11.584 11.584 0 0 0 0.64-7.168 242.4 242.4 0 0 0-236.8-189.664 242.656 242.656 0 0 0-229.856 164.768 110.176 110.176 0 0 0-76.544-21.28 109.28 109.28 0 0 0-94.816 135.648 155.04 155.04 0 0 0-150.656 155.168c0 7.456 0.608 15.008 1.504 22.496a7.456 7.456 0 0 0 7.2 6.304h681.888a9.312 9.312 0 0 0 8.672-6.624l5.12-18.208z m117.6-237.376c-3.296 0-6.88 0-10.176 0.48-2.4 0-4.512 1.76-5.408 4.16l-14.4 50.112c-6.304 21.632-3.904 41.408 6.592 56.16 9.632 13.504 25.824 21.248 45.344 22.176l78.656 4.832c2.368 0 4.512 1.12 5.664 3.008a8.64 8.64 0 0 1 0.928 6.656 10.24 10.24 0 0 1-8.704 6.624l-81.952 4.8c-44.416 2.08-92.096 37.824-108.928 81.664l-5.984 15.296c-1.216 3.04 0.928 6.048 4.192 6.048h281.504a7.36 7.36 0 0 0 7.2-5.376c4.8-17.408 7.488-35.712 7.488-54.624 0-111.04-90.656-201.696-202.016-201.696z" fill="#F38020" p-id="11366"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg t="1741332939210" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7576" width="64" height="64"><path d="M331.712601 609.625898c27.560944 0 82.426848-1.535904 158.112785-32.723288 88.31448-36.349728 264.004833-102.3936 390.716913-170.144032 88.655792-47.35704 127.480032-110.158448 127.480033-194.547841A212.168073 212.168073 0 0 0 795.811595 0H304.791617A304.791617 304.791617 0 0 0 0 304.791617c0 168.309481 127.736016 304.834281 331.712601 304.834281z" fill="#39594D" p-id="7577"></path><path d="M414.736746 819.490115a204.147241 204.147241 0 0 1 125.8588-188.574881l154.699665-64.166656c156.406225-64.84928 328.598129 50.044872 328.598129 219.420953a237.510489 237.510489 0 0 1-237.638481 237.510489h-167.413537a204.147241 204.147241 0 0 1-204.104576-204.189905z" fill="#D18EE2" p-id="7578"></path><path d="M175.690353 649.772723A175.690353 175.690353 0 0 0 0 825.548403v22.739912a175.690353 175.690353 0 0 0 351.423369 0v-22.739912a175.690353 175.690353 0 0 0-175.733016-175.690352z" fill="#FF7759" p-id="7579"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 11 11" >
<path d="M5.04123 0.144501L9.47821 4.82132C9.83075 5.19292 10.0273 5.68562 10.0273 6.19784V8.65565C10.0273 9.76022 9.13185 10.6557 8.02728 10.6557H2.05518C0.950606 10.6557 0.0551758 9.76022 0.0551758 8.65565V6.19785C0.0551758 5.68562 0.251705 5.19292 0.604247 4.82132L5.04123 0.144501Z" fill="#3370FF"/>
</svg>

After

Width:  |  Height:  |  Size: 375 B

View File

@@ -53,6 +53,7 @@ const MyModal = ({
allowPinchZoom
scrollBehavior={'inside'}
closeOnOverlayClick={closeOnOverlayClick}
returnFocusOnClose={false}
>
<ModalOverlay />
<ModalContent

View File

@@ -24,6 +24,7 @@ import MyIcon from '../Icon';
import { useRequest2 } from '../../../hooks/useRequest';
import MyDivider from '../MyDivider';
import { useScrollPagination } from '../../../hooks/useScrollPagination';
import Avatar from '../Avatar';
/** 选择组件 Props 类型
* value: 选中的值
@@ -32,20 +33,21 @@ import { useScrollPagination } from '../../../hooks/useScrollPagination';
* isLoading: 是否加载中
* ScrollData: 分页滚动数据控制器 [useScrollPagination] 的返回值
* */
export type SelectProps<T = any> = ButtonProps & {
export type SelectProps<T = any> = Omit<ButtonProps, 'onChange'> & {
value?: T;
placeholder?: string;
isSearch?: boolean;
list: {
alias?: string;
icon?: string;
iconSize?: string;
label: string | React.ReactNode;
description?: string;
value: T;
showBorder?: boolean;
}[];
isLoading?: boolean;
onchange?: (val: T) => any | Promise<any>;
onChange?: (val: T) => any | Promise<any>;
ScrollData?: ReturnType<typeof useScrollPagination>['ScrollData'];
};
@@ -56,7 +58,7 @@ const MySelect = <T = any,>(
isSearch = false,
width = '100%',
list = [],
onchange,
onChange,
isLoading = false,
ScrollData,
...props
@@ -115,7 +117,7 @@ const MySelect = <T = any,>(
}
}, [isSearch, isOpen]);
const { runAsync: onChange, loading } = useRequest2((val: T) => onchange?.(val));
const { runAsync: onclickChange, loading } = useRequest2((val: T) => onChange?.(val));
const ListRender = useMemo(() => {
return (
@@ -135,16 +137,17 @@ const MySelect = <T = any,>(
color: 'myGray.900'
})}
onClick={() => {
if (onChange && value !== item.value) {
onChange(item.value);
if (value !== item.value) {
onclickChange(item.value);
}
}}
whiteSpace={'pre-wrap'}
fontSize={'sm'}
display={'block'}
mb={0.5}
>
<Flex alignItems={'center'}>
{item.icon && <MyIcon mr={2} name={item.icon as any} w={'1rem'} />}
{item.icon && <Avatar mr={2} src={item.icon as any} w={item.iconSize ?? '1rem'} />}
{item.label}
</Flex>
{item.description && (
@@ -224,7 +227,9 @@ const MySelect = <T = any,>(
/>
) : (
<>
{selectItem?.icon && <MyIcon mr={2} name={selectItem.icon as any} w={'1rem'} />}
{selectItem?.icon && (
<Avatar mr={2} src={selectItem.icon as any} w={selectItem.iconSize ?? '1rem'} />
)}
{selectItem?.alias || selectItem?.label || placeholder}
</>
)}

View File

@@ -73,6 +73,11 @@ const LightRowTabs = <ValueType = string,>({
color: activeColor
}}
fontWeight={'medium'}
onClick={() => {
if (value === item.value) return;
onChange(item.value);
}}
{...inlineStyles}
{...(value === item.value
? {
color: activeColor,
@@ -82,11 +87,6 @@ const LightRowTabs = <ValueType = string,>({
: {
cursor: 'pointer'
})}
onClick={() => {
if (value === item.value) return;
onChange(item.value);
}}
{...inlineStyles}
>
{item.icon && (
<>

View File

@@ -44,7 +44,7 @@ export const useI18nLng = () => {
await i18n?.changeLanguage?.(lang);
if (!i18n.hasResourceBundle(lang, 'common') && prevLang !== lang) {
if (!i18n?.hasResourceBundle?.(lang, 'common') && prevLang !== lang) {
window?.location?.reload?.();
}
};

View File

@@ -0,0 +1,239 @@
import { useEffect, useRef, useState, ReactNode } from 'react';
import { LinkedListResponse, LinkedPaginationProps } from '../common/fetch/type';
import { Box, BoxProps } from '@chakra-ui/react';
import { useTranslation } from 'next-i18next';
import { useScroll, useMemoizedFn, useDebounceEffect } from 'ahooks';
import MyBox from '../components/common/MyBox';
import { useRequest2 } from './useRequest';
import { delay } from '../../global/common/system/utils';
const threshold = 100;
export function useLinkedScroll<
TParams extends LinkedPaginationProps & { isInitialLoad?: boolean },
TData extends LinkedListResponse
>(
api: (data: TParams) => Promise<TData>,
{
pageSize = 15,
params = {},
currentData
}: {
pageSize?: number;
params?: Record<string, any>;
currentData?: { id: string; index: number };
}
) {
const { t } = useTranslation();
const [dataList, setDataList] = useState<TData['list']>([]);
const [hasMorePrev, setHasMorePrev] = useState(true);
const [hasMoreNext, setHasMoreNext] = useState(true);
const anchorRef = useRef({
top: null as { _id: string; index: number } | null,
bottom: null as { _id: string; index: number } | null
});
const containerRef = useRef<HTMLDivElement>(null);
const itemRefs = useRef<Map<string, HTMLElement | null>>(new Map());
const scrollToItem = async (id: string, retry = 3) => {
const itemIndex = dataList.findIndex((item) => item._id === id);
if (itemIndex === -1) return;
const element = itemRefs.current.get(id);
if (!element || !containerRef.current) {
if (retry > 0) {
await delay(500);
return scrollToItem(id, retry - 1);
}
return;
}
const elementRect = element.getBoundingClientRect();
const containerRect = containerRef.current.getBoundingClientRect();
const scrollTop = containerRef.current.scrollTop + elementRect.top - containerRect.top;
containerRef.current.scrollTo({
top: scrollTop
});
};
const { runAsync: callApi, loading: isLoading } = useRequest2(api);
let scroolSign = useRef(false);
const { runAsync: loadInitData } = useRequest2(
async ({ scrollWhenFinish, refresh } = { scrollWhenFinish: true, refresh: false }) => {
console.log('loadInitData', params);
if (!currentData || isLoading) return;
const item = dataList.find((item) => item._id === currentData.id);
if (item && !refresh) {
scrollToItem(item._id);
return;
}
const response = await callApi({
initialId: currentData.id,
initialIndex: currentData.index,
pageSize,
...params
} as TParams);
setHasMorePrev(response.hasMorePrev);
setHasMoreNext(response.hasMoreNext);
scroolSign.current = scrollWhenFinish;
setDataList(response.list);
if (response.list.length > 0) {
anchorRef.current.top = response.list[0];
anchorRef.current.bottom = response.list[response.list.length - 1];
}
},
{
refreshDeps: [currentData],
manual: false
}
);
useEffect(() => {
if (scroolSign.current && currentData) {
scroolSign.current = false;
scrollToItem(currentData.id);
}
}, [dataList]);
const { runAsync: loadPrevData, loading: prevLoading } = useRequest2(
async (scrollRef = containerRef) => {
if (!anchorRef.current.top || !hasMorePrev || isLoading) return;
const prevScrollTop = scrollRef?.current?.scrollTop || 0;
const prevScrollHeight = scrollRef?.current?.scrollHeight || 0;
const response = await callApi({
prevId: anchorRef.current.top._id,
prevIndex: anchorRef.current.top.index,
pageSize,
...params
} as TParams);
if (!response) return;
setHasMorePrev(response.hasMorePrev);
if (response.list.length > 0) {
setDataList((prev) => [...response.list, ...prev]);
anchorRef.current.top = response.list[0];
setTimeout(() => {
if (scrollRef?.current) {
const newHeight = scrollRef.current.scrollHeight;
const heightDiff = newHeight - prevScrollHeight;
scrollRef.current.scrollTop = prevScrollTop + heightDiff;
}
}, 0);
}
return response;
},
{
refreshDeps: [hasMorePrev, isLoading, params, pageSize]
}
);
const { runAsync: loadNextData, loading: nextLoading } = useRequest2(
async (scrollRef = containerRef) => {
if (!anchorRef.current.bottom || !hasMoreNext || isLoading) return;
const prevScrollTop = scrollRef?.current?.scrollTop || 0;
const response = await callApi({
nextId: anchorRef.current.bottom._id,
nextIndex: anchorRef.current.bottom.index,
pageSize,
...params
} as TParams);
if (!response) return;
setHasMoreNext(response.hasMoreNext);
if (response.list.length > 0) {
setDataList((prev) => [...prev, ...response.list]);
anchorRef.current.bottom = response.list[response.list.length - 1];
setTimeout(() => {
if (scrollRef?.current) {
scrollRef.current.scrollTop = prevScrollTop;
}
}, 0);
}
return response;
},
{
refreshDeps: [hasMoreNext, isLoading, params, pageSize]
}
);
const ScrollData = useMemoizedFn(
({
children,
ScrollContainerRef,
...props
}: {
children: ReactNode;
ScrollContainerRef?: React.RefObject<HTMLDivElement>;
} & BoxProps) => {
const ref = ScrollContainerRef || containerRef;
const scroll = useScroll(ref);
useDebounceEffect(
() => {
if (!ref?.current || isLoading) return;
const { scrollTop, scrollHeight, clientHeight } = ref.current;
// 滚动到底部附近,加载更多下方数据
if (scrollTop + clientHeight >= scrollHeight - threshold) {
loadNextData(ref);
}
// 滚动到顶部附近,加载更多上方数据
if (scrollTop <= threshold) {
loadPrevData(ref);
}
},
[scroll],
{ wait: 200 }
);
return (
<MyBox ref={ref} h={'100%'} overflow={'auto'} isLoading={isLoading} {...props}>
{hasMorePrev && prevLoading && (
<Box mt={2} fontSize={'xs'} color={'blackAlpha.500'} textAlign={'center'}>
{t('common:common.is_requesting')}
</Box>
)}
{children}
{hasMoreNext && nextLoading && (
<Box mt={2} fontSize={'xs'} color={'blackAlpha.500'} textAlign={'center'}>
{t('common:common.is_requesting')}
</Box>
)}
</MyBox>
);
}
);
return {
dataList,
setDataList,
isLoading,
loadInitData,
ScrollData,
itemRefs,
scrollToItem
};
}

View File

@@ -200,7 +200,7 @@ export function usePagination<DataT, ResT = {}>(
// Watch scroll position
useThrottleEffect(
() => {
if (!ref?.current || type !== 'scroll' || noMore) return;
if (!ref?.current || type !== 'scroll' || noMore || isLoading) return;
const { scrollTop, scrollHeight, clientHeight } = ref.current;
if (
@@ -211,7 +211,7 @@ export function usePagination<DataT, ResT = {}>(
fetchData(pageNum + 1, ref);
}
},
[scroll],
[scroll, isLoading],
{ wait: 50 }
);

View File

@@ -21,7 +21,6 @@
"edit_channel": "Channel configuration",
"enable_channel": "Enable",
"forbid_channel": "Disabled",
"maxToken_tip": "The model max_tokens parameter, if left blank, means that the model does not support it.",
"key_type": "API key format:",
"log": "Call log",
"log_detail": "Log details",
@@ -29,6 +28,7 @@
"log_status": "Status",
"mapping": "Model Mapping",
"mapping_tip": "A valid Json is required. \nThe model can be mapped when sending a request to the actual address. \nFor example:\n{\n \n \"gpt-4o\": \"gpt-4o-test\"\n\n}\n\nWhen FastGPT requests the gpt-4o model, the gpt-4o-test model is sent to the actual address, instead of gpt-4o.",
"maxToken_tip": "The model max_tokens parameter, if left blank, means that the model does not support it.",
"max_temperature_tip": "If the model temperature parameter is not filled in, it means that the model does not support the temperature parameter.",
"model": "Model",
"model_name": "Model name",
@@ -43,7 +43,7 @@
"select_model_placeholder": "Select the model available under this channel",
"select_provider_placeholder": "Search for manufacturers",
"selected_model_empty": "Choose at least one model",
"start_test": "Start testing {{num}} models",
"start_test": "Batch test {{num}} models",
"test_failed": "There are {{num}} models that report errors",
"vlm_model": "Vlm",
"vlm_model_tip": "Used to generate additional indexing of images in a document in the knowledge base",

View File

@@ -1,18 +1,39 @@
{
"1person": "1 person",
"1year": "1 Year",
"30mins": "30 Minutes",
"7days": "7 Days",
"accept": "accept",
"action": "operate",
"confirm_delete_group": "Confirm to delete group?",
"confirm_delete_member": "Confirm to delete member?",
"confirm_delete_org": "Confirm to delete organization?",
"confirm_forbidden": "Confirm forbidden",
"confirm_leave_team": "Confirmed to leave the team? \nAfter exiting, all your resources in the team are transferred to the team owner.",
"copy_link": "Copy link",
"create_group": "Create group",
"create_invitation_link": "Create Invitation Link",
"create_org": "Create organization",
"create_sub_org": "Create sub-organization",
"delete": "delete",
"delete_org": "Delete organization",
"edit_info": "Edit information",
"edit_org_info": "Edit organization information",
"expires": "Expiration",
"forbid_hint": "After forbidden, this invitation link will become invalid. This action is irreversible. Are you sure you want to deactivate?",
"forbid_success": "Forbid success",
"forbidden": "Forbidden",
"group": "group",
"group_name": "Group name",
"handle_invitation": "Handle Invitation",
"has_forbidden": "Forbidden",
"has_invited": "Invited",
"ignore": "Ignore",
"invitation_link_auto_clean_hint": "Expired links will be automatically cleaned up after 30 days",
"invitation_link_description": "Link description",
"invitation_link_list": "Invitation link list",
"invite_member": "Invite members",
"invited": "Invited",
"label_sync": "Tag sync",
"leave_team_failed": "Leaving the team exception",
"manage_member": "Managing members",
@@ -31,9 +52,12 @@
"search_member_group_name": "Search member/group name",
"total_team_members": "{{amount}} members in total",
"transfer_ownership": "transfer owner",
"unlimited": "Unlimited",
"used_times_limit": "Limit",
"user_name": "username",
"user_team_invite_member": "Invite members",
"user_team_leave_team": "Leave the team",
"user_team_leave_team_failed": "Failure to leave the team",
"waiting": "To be accepted"
"waiting": "To be accepted",
"invitation_copy_link": "[{{systemName}}] {{userName}} invites you to join the {{teamName}} team, link: {{url}}"
}

View File

@@ -3,6 +3,8 @@
"Delete_all": "Clear All Lexicon",
"LLM_model_response_empty": "The model flow response is empty, please check whether the model flow output is normal.",
"ai_reasoning": "Thinking process",
"chat.quote.No Data": "The file cannot be found",
"chat.quote.deleted": "This data has been deleted ~",
"chat_history": "Conversation History",
"chat_input_guide_lexicon_is_empty": "Lexicon not configured yet",
"chat_test_app": "Debug-{{name}}",
@@ -16,8 +18,10 @@
"contextual_preview": "Contextual Preview {{num}} Items",
"csv_input_lexicon_tip": "Only CSV batch import is supported, click to download the template",
"custom_input_guide_url": "Custom Lexicon URL",
"data_source": "Source Dataset: {{name}}",
"dataset_quote_type error": "Knowledge base reference type is wrong, correct type: { datasetId: string }[]",
"delete_all_input_guide_confirm": "Are you sure you want to clear the input guide lexicon?",
"download_chunks": "Download data",
"empty_directory": "This directory is empty~",
"file_amount_over": "Exceeded maximum file quantity {{max}}",
"file_input": "File input",
@@ -40,16 +44,19 @@
"query_extension_IO_tokens": "Problem Optimization Input/Output Tokens",
"query_extension_result": "Problem optimization results",
"question_tip": "From top to bottom, the response order of each module",
"read_raw_source": "Open the original text",
"reasoning_text": "Thinking process",
"response.child total points": "Sub-workflow point consumption",
"response.dataset_concat_length": "Combined total",
"response.node_inputs": "Node Inputs",
"response_hybrid_weight": "Embedding : Full text = {{emb}} : {{text}}",
"select": "Select",
"select_file": "Upload File",
"select_file_img": "Upload file / image",
"select_img": "Upload Image",
"source_cronJob": "Scheduled execution",
"stream_output": "Stream Output",
"to_dataset": "Go to the Knowledge Base",
"unsupported_file_type": "Unsupported file types",
"upload": "Upload",
"view_citations": "View References",

View File

@@ -1,5 +1,6 @@
{
"App": "Application",
"Download": "Download",
"Export": "Export",
"FAQ.ai_point_a": "Each time you use the AI model, a certain amount of AI points will be deducted. For detailed calculation standards, please refer to the 'AI Points Calculation Standards' above.\nToken calculation uses the same formula as GPT-3.5, where 1 Token ≈ 0.7 Chinese characters ≈ 0.9 English words. Consecutive characters may be considered as 1 Token.",
"FAQ.ai_point_expire_a": "Yes, they will expire. After the current package expires, the AI points will be reset to the new package's AI points. Annual package AI points are valid for one year, not monthly.",
@@ -88,6 +89,7 @@
"code_error.team_error.group_name_duplicate": "Duplicate group name",
"code_error.team_error.group_name_empty": "Group name cannot be empty",
"code_error.team_error.group_not_exist": "Group does not exist",
"code_error.team_error.invitation_link_invalid": "The invitation link has expired",
"code_error.team_error.not_user": "The member cannot be found",
"code_error.team_error.org_member_duplicated": "Duplicate organization member",
"code_error.team_error.org_member_not_exist": "Organization member does not exist",
@@ -96,13 +98,16 @@
"code_error.team_error.over_size": "error.team.overSize",
"code_error.team_error.plugin_amount_not_enough": "Plugin Limit Reached",
"code_error.team_error.re_rank_not_enough": "Search rearrangement cannot be used in the free version~",
"code_error.team_error.too_many_invitations": "You have reached the maximum number of active invitation links, please clean up some links first",
"code_error.team_error.un_auth": "Unauthorized to Operate This Team",
"code_error.team_error.user_not_active": "The user did not accept or has left the team",
"code_error.team_error.website_sync_not_enough": "The free version cannot be synchronized with the web site ~",
"code_error.team_error.you_have_been_in_the_team": "You are already in this team",
"code_error.token_error_code.403": "Invalid Login Status, Please Re-login",
"code_error.user_error.balance_not_enough": "Insufficient Account Balance",
"code_error.user_error.bin_visitor_guest": "You Are Currently a Guest, Unauthorized to Operate",
"code_error.user_error.un_auth_user": "User Not Found",
"commercial_function_tip": "Please Upgrade to the Commercial Version to Use This Feature: https://doc.fastgpt.cn/docs/commercial/intro/",
"common.Action": "Action",
"common.Add": "Add",
"common.Add New": "Add New",
@@ -252,7 +257,6 @@
"common.submit_success": "Submitted Successfully",
"common.submitted": "Submitted",
"common.support": "Support",
"common.system.Commercial version function": "Please Upgrade to the Commercial Version to Use This Feature: https://doc.fastgpt.cn/docs/commercial/intro/",
"common.system.Help Chatbot": "Help Chatbot",
"common.system.Use Helper": "Use Helper",
"common.ui.textarea.Magnifying": "Magnifying",
@@ -268,6 +272,7 @@
"compliance.compliance.dataset": "Please ensure that your content strictly complies with relevant laws and regulations and avoid containing any illegal or infringing content. \nPlease be careful when uploading materials that may contain sensitive information.",
"compliance.dataset": "Please ensure that your content strictly complies with relevant laws and regulations and avoid containing any illegal or infringing content. \nPlease be careful when uploading materials that may contain sensitive information.",
"confirm_choice": "Confirm Choice",
"contact_way": "Contact information",
"contribute_app_template": "Contribute Template",
"core.Chat": "Chat",
"core.Max Token": "Max Token",
@@ -450,6 +455,8 @@
"core.chat.module_unexist": "Running failed: Application missing components",
"core.chat.quote.Quote Tip": "Only the actual quoted content is displayed here. If the data is updated, it will not be updated in real-time here.",
"core.chat.quote.Read Quote": "View Quote",
"core.chat.quote.afterUpdate": "After update",
"core.chat.quote.beforeUpdate": "Before update",
"core.chat.response.Complete Response": "Complete Response",
"core.chat.response.Extension model": "Question Optimization Model",
"core.chat.response.Read complete response": "View Details",
@@ -498,7 +505,6 @@
"core.dataset.Empty Dataset": "Empty Dataset",
"core.dataset.Empty Dataset Tips": "No Dataset Yet, Create One Now!",
"core.dataset.Folder placeholder": "This is a Directory",
"core.dataset.Go Dataset": "Go to Dataset",
"core.dataset.Intro Placeholder": "This Dataset Has No Introduction Yet",
"core.dataset.Manual collection": "Manual Dataset",
"core.dataset.My Dataset": "My Dataset",
@@ -534,18 +540,13 @@
"core.dataset.collection.status.active": "Ready",
"core.dataset.collection.sync.result.sameRaw": "Content Unchanged, No Update Needed",
"core.dataset.collection.sync.result.success": "Sync Started",
"core.dataset.data.Auxiliary Data": "Auxiliary Data",
"core.dataset.data.Auxiliary Data Placeholder": "This part is optional and is usually used to construct structured prompts in conjunction with the 'Data Content' above for special scenarios, up to {{maxToken}} characters.",
"core.dataset.data.Auxiliary Data Tip": "This part is optional\nThis content is usually used to construct structured prompts in conjunction with the data content above for special scenarios",
"core.dataset.data.Data Content": "Related Data Content",
"core.dataset.data.Data Content Placeholder": "This input box is required. This content is usually a description of the knowledge point or a user's question, up to {{maxToken}} characters.",
"core.dataset.data.Data Content Tip": "This input box is required\nThis content is usually a description of the knowledge point or a user's question.",
"core.dataset.data.Default Index Tip": "Cannot be edited. The default index will use the text of 'Related Data Content' and 'Auxiliary Data' to generate the index directly.",
"core.dataset.data.Edit": "Edit Data",
"core.dataset.data.Empty Tip": "This collection has no data yet",
"core.dataset.data.Main Content": "Main Content",
"core.dataset.data.Search data placeholder": "Search Related Data",
"core.dataset.data.Too Long": "Total Length Exceeded",
"core.dataset.data.Updated": "Updated",
"core.dataset.data.group": "Group",
"core.dataset.data.unit": "Items",
"core.dataset.embedding model tip": "The index model can convert natural language into vectors for semantic search.\nNote that different index models cannot be used together. Once an index model is selected, it cannot be changed.",
@@ -626,7 +627,7 @@
"core.dataset.search.score.reRank desc": "Calculate the relevance between sentences using the re-rank model, ranging from 0 to 1.",
"core.dataset.search.score.rrf": "Comprehensive Ranking",
"core.dataset.search.score.rrf desc": "Merge multiple search results using the reciprocal rank fusion method.",
"core.dataset.search.search mode": "Search Mode",
"core.dataset.search.search mode": "Search Method",
"core.dataset.status.active": "Ready",
"core.dataset.status.syncing": "Syncing",
"core.dataset.test.Batch test": "Batch Test",
@@ -832,6 +833,11 @@
"core.workflow.variable": "Variable",
"create": "Create",
"cron_job_run_app": "Scheduled Task",
"data_index_custom": "Custom index",
"data_index_default": "Default index",
"data_index_image": "Image Index",
"data_index_question": "Inferred question index",
"data_index_summary": "Summary Index",
"dataset.Confirm move the folder": "Confirm to Move to This Directory",
"dataset.Confirm to delete the data": "Confirm to Delete This Data?",
"dataset.Confirm to delete the file": "Confirm to Delete This File and All Its Data?",
@@ -867,6 +873,12 @@
"dataset.dataset_name": "Dataset Name",
"dataset.deleteFolderTips": "Confirm to Delete This Folder and All Its Contained Datasets? Data Cannot Be Recovered After Deletion, Please Confirm!",
"dataset.test.noResult": "No Search Results",
"dataset_data_import_q_placeholder": "Up to {{maxToken}} words.",
"dataset_data_input_a": "Answer",
"dataset_data_input_chunk": "Chunk",
"dataset_data_input_chunk_content": "Chunk",
"dataset_data_input_q": "question",
"dataset_data_input_qa": "QA",
"dataset_text_model_tip": "Used for text processing in the knowledge base preprocessing stage, such as automatic supplementary indexing, Q&A pair extraction.",
"deep_rag_search": "In-depth search",
"delete_api": "Are you sure you want to delete this API key? \nAfter deletion, the key will become invalid immediately and the corresponding conversation log will not be deleted. Please confirm!",
@@ -1013,6 +1025,7 @@
"question_feedback": "Work order",
"read_quote": "View citations",
"required": "Required",
"rerank_weight": "Rearrange weights",
"resume_failed": "Resume Failed",
"select_reference_variable": "Select Reference Variable",
"share_link": "Share Link",
@@ -1027,6 +1040,8 @@
"support.outlink.Max usage points": "Points Limit",
"support.outlink.Max usage points tip": "The maximum number of points allowed for this link. It cannot be used after exceeding the limit. -1 means unlimited.",
"support.outlink.Usage points": "Points Consumption",
"support.outlink.share.Chat_quote_reader": "Full text reader",
"support.outlink.share.Full_text tips": "Allows reading of the complete dataset from which the referenced fragment is derived",
"support.outlink.share.Response Quote": "Return Quote",
"support.outlink.share.Response Quote tips": "Return quoted content in the share link, but do not allow users to download the original document",
"support.outlink.share.running_node": "Running node",
@@ -1242,11 +1257,6 @@
"user.team.Check Team": "Switch",
"user.team.Confirm Invite": "Confirm Invite",
"user.team.Create Team": "Create New Team",
"user.team.Invite Member": "Invite Member",
"user.team.Invite Member Failed Tip": "Failed to Invite Member",
"user.team.Invite Member Result Tip": "Invite Result Tip",
"user.team.Invite Member Success Tip": "Member Invitation Completed\nSuccess: {{success}} people\nInvalid Username: {{inValid}}\nAlready in Team: {{inTeam}}",
"user.team.Invite Member Tips": "The other party can view or use other resources within the team",
"user.team.Leave Team": "Leave Team",
"user.team.Leave Team Failed": "Failed to Leave Team",
"user.team.Member": "Member",
@@ -1264,13 +1274,9 @@
"user.team.Team Tags Async": "Tag Sync",
"user.team.Team Tags Async Success": "Link Error Successful, Tag Information Updated",
"user.team.Update Team": "Update Team Information",
"user.team.invite.Accept Confirm": "Confirm to join this team?",
"user.team.invite.Accepted": "Joined Team",
"user.team.invite.Deal Width Footer Tip": "It will automatically close after processing",
"user.team.invite.Reject": "Invitation Rejected",
"user.team.invite.Reject Confirm": "Confirm to reject this invitation?",
"user.team.invite.accept": "Accept",
"user.team.invite.reject": "Reject",
"user.team.member.Confirm Leave": "Confirm to leave this team?",
"user.team.member.active": "Joined",
"user.team.member.reject": "Rejected",

View File

@@ -27,12 +27,7 @@
"custom_data_process_params_desc": "Customize data processing rules",
"data.ideal_chunk_length": "ideal block length",
"data_amount": "{{dataAmount}} Datas, {{indexAmount}} Indexes",
"data_index_custom": "Custom index",
"data_index_default": "Default index",
"data_index_image": "Image Index",
"data_index_num": "Index {{index}}",
"data_index_question": "Inferred question index",
"data_index_summary": "Summary index",
"data_process_params": "Params",
"data_process_setting": "Processing config",
"dataset.Unsupported operation": "dataset.Unsupported operation",
@@ -69,6 +64,7 @@
"import_model_config": "Model selection",
"import_param_setting": "Parameter settings",
"import_select_file": "Select a file",
"import_select_link": "Enter link",
"is_open_schedule": "Enable scheduled synchronization",
"keep_image": "Keep the picture",
"move.hint": "After moving, the selected knowledge base/folder will inherit the permission settings of the new folder, and the original permission settings will become invalid.",

View File

@@ -72,6 +72,5 @@
"verification_code": "验证码",
"you_can_convert": "您可以兑换",
"yuan": "元",
"contact": "联系方式",
"please_bind_contact": "请绑定联系方式"
}

View File

@@ -21,7 +21,6 @@
"edit_channel": "渠道配置",
"enable_channel": "启用",
"forbid_channel": "禁用",
"maxToken_tip": "模型 max_tokens 参数,如果留空,则代表模型不支持该参数。",
"key_type": "API key 格式: ",
"log": "调用日志",
"log_detail": "日志详情",
@@ -29,6 +28,7 @@
"log_status": "状态",
"mapping": "模型映射",
"mapping_tip": "需填写一个有效 Json。可在向实际地址发送请求时对模型进行映射。例如\n{\n \"gpt-4o\": \"gpt-4o-test\"\n}\n当 FastGPT 请求 gpt-4o 模型时,会向实际地址发送 gpt-4o-test 的模型,而不是 gpt-4o。",
"maxToken_tip": "模型 max_tokens 参数,如果留空,则代表模型不支持该参数。",
"max_temperature_tip": "模型 temperature 参数,不填则代表模型不支持 temperature 参数。",
"model": "模型",
"model_name": "模型名",
@@ -43,7 +43,7 @@
"select_model_placeholder": "选择该渠道下可用的模型",
"select_provider_placeholder": "搜索厂商",
"selected_model_empty": "至少选择一个模型",
"start_test": "开始测试{{num}}个模型",
"start_test": "批量测试{{num}}个模型",
"test_failed": "有{{num}}个模型报错",
"vlm_model": "图片理解模型",
"vlm_model_tip": "用于知识库中对文档中的图片进行额外的索引生成",

View File

@@ -1,24 +1,53 @@
{
"1person": "1人",
"1year": "1年",
"30mins": "30分钟",
"7days": "7天",
"accept": "接受",
"action": "操作",
"confirm_delete_from_org": "确认将 {{username}} 移出部门?",
"confirm_delete_from_team": "确认将 {{username}} 移出团队?",
"confirm_delete_group": "确认删除群组?",
"confirm_delete_org": "确认删除该部门?",
"confirm_forbidden": "确认停用",
"confirm_leave_team": "确认离开该团队? \n退出后您在该团队所有的资源均转让给团队所有者。",
"copy_link": "复制链接",
"create_group": "创建群组",
"create_invitation_link": "创建邀请链接",
"create_org": "创建部门",
"create_sub_org": "创建子部门",
"delete": "删除",
"delete_from_org": "移出部门",
"delete_from_team": "移出团队",
"delete_org": "删除部门",
"edit_info": "编辑信息",
"edit_org_info": "编辑部门信息",
"expires": "有效期",
"export_members": "导出成员",
"forbid_hint": "停用后,该邀请链接将失效。 该操作不可撤销,是否确认停用?",
"forbid_success": "停用成功",
"forbidden": "停用",
"group": "群组",
"group_name": "群组名称",
"handle_invitation": "处理团队邀请",
"has_forbidden": "已失效",
"has_invited": "已邀请",
"ignore": "忽略",
"invitation_link_auto_clean_hint": "已失效链接将在30天后自动清理",
"invitation_link_description": "链接描述",
"invitation_link_list": "链接列表",
"invite_member": "邀请成员",
"invited": "已邀请",
"join_update_time": "加入/更新时间",
"label_sync": "标签同步",
"leave": "已离职",
"leave_team_failed": "离开团队异常",
"manage_member": "管理成员",
"member": "成员",
"member_group": "所属群组",
"move_member": "移动成员",
"move_org": "移动部门",
"notification_recieve": "团队通知接收",
"org": "部门",
"org_description": "介绍",
"org_name": "部门名称",
@@ -29,27 +58,22 @@
"restore_tip": "确认将 {{username}} 加入团队吗?仅恢复该成员账号可用性及相关权限,无法恢复账号下资源。",
"restore_tip_title": "恢复确认",
"retain_admin_permissions": "保留管理员权限",
"search_member": "搜索成员",
"search_member_group_name": "搜索成员/群组名称",
"search_org": "搜索部门",
"set_name_avatar": "团队头像 & 团队名",
"sync_immediately": "立即同步",
"sync_member_failed": "同步成员失败",
"sync_member_success": "同步成员成功",
"total_team_members": "共 {{amount}} 名成员",
"transfer_ownership": "转让所有者",
"unlimited": "无限制",
"used_times_limit": "有效人数",
"user_name": "用户名",
"user_team_invite_member": "邀请成员",
"user_team_leave_team": "离开团队",
"user_team_leave_team_failed": "离开团队失败",
"waiting": "待接受",
"sync_immediately": "立即同步",
"sync_member_failed": "同步成员失败",
"sync_member_success": "同步成员成功",
"contact": "联系方式",
"join_update_time": "加入/更新时间",
"leave": "已离职",
"search_member": "搜索成员",
"export_members": "导出成员",
"delete_from_team": "移出团队",
"delete_from_org": "移出部门",
"confirm_delete_from_team": "确认将 {{username}} 移出团队?",
"confirm_delete_from_org": "确认将 {{username}} 移出部门?",
"search_org": "搜索部门",
"notification_recieve": "团队通知接收",
"set_name_avatar": "团队头像 & 团队名"
"invitation_copy_link": "【{{systemName}}】 {{userName}} 邀请您加入{{teamName}}团队,链接:{{url}}",
"please_bind_contact": "请绑定联系方式"
}

View File

@@ -3,6 +3,8 @@
"Delete_all": "清空词库",
"LLM_model_response_empty": "模型流响应为空,请检查模型流输出是否正常",
"ai_reasoning": "思考过程",
"chat.quote.No Data": "找不到该文件",
"chat.quote.deleted": "该数据已被删除~",
"chat_history": "聊天记录",
"chat_input_guide_lexicon_is_empty": "还没有配置词库",
"chat_test_app": "调试-{{name}}",
@@ -16,8 +18,10 @@
"contextual_preview": "上下文预览 {{num}} 条",
"csv_input_lexicon_tip": "仅支持 CSV 批量导入,点击下载模板",
"custom_input_guide_url": "自定义词库地址",
"data_source": "来源知识库: {{name}}",
"dataset_quote_type error": "知识库引用类型错误,正确类型:{ datasetId: string }[]",
"delete_all_input_guide_confirm": "确定要清空输入引导词库吗?",
"download_chunks": "下载数据",
"empty_directory": "这个目录已经没东西可选了~",
"file_amount_over": "超出最大文件数量 {{max}}",
"file_input": "系统文件",
@@ -40,16 +44,19 @@
"query_extension_IO_tokens": "问题优化输入/输出 Tokens",
"query_extension_result": "问题优化结果",
"question_tip": "从上到下,为各个模块的响应顺序",
"read_raw_source": "打开原文",
"reasoning_text": "思考过程",
"response.child total points": "子工作流积分消耗",
"response.dataset_concat_length": "合并后总数",
"response.node_inputs": "节点输入",
"response_hybrid_weight": "语义检索 : 全文检索 = {{emb}} : {{text}}",
"select": "选择",
"select_file": "上传文件",
"select_file_img": "上传文件/图片",
"select_img": "上传图片",
"source_cronJob": "定时执行",
"stream_output": "流输出",
"to_dataset": "前往知识库",
"unsupported_file_type": "不支持的文件类型",
"upload": "上传",
"view_citations": "查看引用",

View File

@@ -1,5 +1,6 @@
{
"App": "应用",
"Download": "下载",
"Export": "导出",
"FAQ.ai_point_a": "每次调用AI模型时都会消耗一定的AI积分。具体的计算标准可参考上方的“AI 积分计算标准”。\nToken计算采用GPT3.5相同公式1Token≈0.7中文字符≈0.9英文单词连续出现的字符可能被认为是1个Tokens。",
"FAQ.ai_point_expire_a": "会过期。当前套餐过期后AI积分将会清空并更新为新套餐的AI积分。年度套餐的AI积分时长为1年而不是每个月。",
@@ -92,6 +93,7 @@
"code_error.team_error.group_name_duplicate": "群组名称重复",
"code_error.team_error.group_name_empty": "群组名称不能为空",
"code_error.team_error.group_not_exist": "群组不存在",
"code_error.team_error.invitation_link_invalid": "邀请链接已失效",
"code_error.team_error.not_user": "找不到该成员",
"code_error.team_error.org_member_duplicated": "重复的部门成员",
"code_error.team_error.org_member_not_exist": "部门成员不存在",
@@ -100,13 +102,16 @@
"code_error.team_error.over_size": "error.team.overSize",
"code_error.team_error.plugin_amount_not_enough": "插件数量已达上限~",
"code_error.team_error.re_rank_not_enough": "免费版无法使用检索重排~",
"code_error.team_error.too_many_invitations": "您的有效邀请链接数已达上限,请先清理链接",
"code_error.team_error.un_auth": "无权操作该团队",
"code_error.team_error.user_not_active": "用户未接受或已离开团队",
"code_error.team_error.website_sync_not_enough": "免费版无法使用Web站点同步~",
"code_error.team_error.you_have_been_in_the_team": "你已经在该团队中",
"code_error.token_error_code.403": "登录状态无效,请重新登录",
"code_error.user_error.balance_not_enough": "账号余额不足~",
"code_error.user_error.bin_visitor_guest": "您当前身份为游客,无权操作",
"code_error.user_error.un_auth_user": "找不到该用户",
"commercial_function_tip": "请升级商业版后使用该功能https://doc.fastgpt.cn/docs/commercial/intro/",
"common.Action": "操作",
"common.Add": "添加",
"common.Add New": "新增",
@@ -256,7 +261,6 @@
"common.submit_success": "提交成功",
"common.submitted": "已提交",
"common.support": "支持",
"common.system.Commercial version function": "请升级商业版后使用该功能https://doc.fastgpt.cn/docs/commercial/intro/",
"common.system.Help Chatbot": "机器人助手",
"common.system.Use Helper": "使用帮助",
"common.ui.textarea.Magnifying": "放大",
@@ -271,6 +275,7 @@
"compliance.chat": "内容由第三方 AI 生成,无法确保真实准确,仅供参考",
"compliance.dataset": "请确保您的内容严格遵守相关法律法规,避免包含任何违法或侵权的内容。请谨慎上传可能涉及敏感信息的资料。",
"confirm_choice": "确认选择",
"contact_way": "联系方式",
"contribute_app_template": "贡献模板",
"core.Chat": "对话",
"core.Max Token": "单条数据上限",
@@ -453,6 +458,8 @@
"core.chat.module_unexist": "运行失败:应用缺失组件",
"core.chat.quote.Quote Tip": "此处仅显示实际引用内容,若数据有更新,此处不会实时更新",
"core.chat.quote.Read Quote": "查看引用",
"core.chat.quote.afterUpdate": "更新后",
"core.chat.quote.beforeUpdate": "更新前",
"core.chat.response.Complete Response": "完整响应",
"core.chat.response.Extension model": "问题优化模型",
"core.chat.response.Read complete response": "查看详情",
@@ -501,7 +508,6 @@
"core.dataset.Empty Dataset": "空数据集",
"core.dataset.Empty Dataset Tips": "还没有知识库,快去创建一个吧!",
"core.dataset.Folder placeholder": "这是一个目录",
"core.dataset.Go Dataset": "前往知识库",
"core.dataset.Intro Placeholder": "这个知识库还没有介绍~",
"core.dataset.Manual collection": "手动数据集",
"core.dataset.My Dataset": "我的知识库",
@@ -537,18 +543,13 @@
"core.dataset.collection.status.active": "已就绪",
"core.dataset.collection.sync.result.sameRaw": "内容未变动,无需更新",
"core.dataset.collection.sync.result.success": "开始同步",
"core.dataset.data.Auxiliary Data": "辅助数据",
"core.dataset.data.Auxiliary Data Placeholder": "该部分为可选填项,通常是为了与前面的【数据内容】配合,构建结构化提示词,用于特殊场景,最多 {{maxToken}} 字。",
"core.dataset.data.Auxiliary Data Tip": "该部分为可选填项\n该内容通常是为了与前面的数据内容配合构建结构化提示词用于特殊场景",
"core.dataset.data.Data Content": "相关数据内容",
"core.dataset.data.Data Content Placeholder": "该输入框是必填项,该内容通常是对于知识点的描述,也可以是用户的问题,最多 {{maxToken}} 字。",
"core.dataset.data.Data Content Tip": "该输入框是必填项\n该内容通常是对于知识点的描述也可以是用户的问题。",
"core.dataset.data.Default Index Tip": "无法编辑,默认索引会使用【相关数据内容】与【辅助数据】的文本直接生成索引。",
"core.dataset.data.Edit": "编辑数据",
"core.dataset.data.Empty Tip": "这个集合还没有数据~",
"core.dataset.data.Main Content": "主要内容",
"core.dataset.data.Search data placeholder": "搜索相关数据",
"core.dataset.data.Too Long": "总长度超长了",
"core.dataset.data.Updated": "已更新",
"core.dataset.data.group": "组",
"core.dataset.data.unit": "条",
"core.dataset.embedding model tip": "索引模型可以将自然语言转成向量,用于进行语义检索。\n注意不同索引模型无法一起使用选择完索引模型后将无法修改。",
@@ -560,6 +561,7 @@
"core.dataset.error.unAuthDatasetData": "无权操作该数据",
"core.dataset.error.unAuthDatasetFile": "无权操作该文件",
"core.dataset.error.unCreateCollection": "无权操作该数据",
"core.dataset.error.unExistDataset": "数据集不存在",
"core.dataset.error.unLinkCollection": "不是网络链接集合",
"core.dataset.externalFile": "外部文件库",
"core.dataset.file": "文件",
@@ -621,7 +623,6 @@
"core.dataset.search.mode.fullTextRecall desc": "使用传统的全文检索,适合查找一些关键词和主谓语特殊的数据",
"core.dataset.search.mode.mixedRecall": "混合检索",
"core.dataset.search.mode.mixedRecall desc": "使用向量检索与全文检索的综合结果返回,使用 RRF 算法进行排序。",
"core.dataset.search.score.embedding": "语义检索",
"core.dataset.search.score.embedding desc": "通过计算向量之间的距离获取得分,范围为 0~1。",
"core.dataset.search.score.fullText": "全文检索",
"core.dataset.search.score.fullText desc": "计算相同关键词的得分,范围为 0~无穷。",
@@ -629,7 +630,7 @@
"core.dataset.search.score.reRank desc": "通过 Rerank 模型计算句子之间的关联度,范围为 0~1。",
"core.dataset.search.score.rrf": "综合排名",
"core.dataset.search.score.rrf desc": "通过倒排计算的方式,合并多个检索结果。",
"core.dataset.search.search mode": "搜索式",
"core.dataset.search.search mode": "搜索式",
"core.dataset.status.active": "已就绪",
"core.dataset.status.syncing": "同步中",
"core.dataset.test.Batch test": "批量测试",
@@ -664,7 +665,6 @@
"core.dataset.website.Selector Course": "使用教程",
"core.dataset.website.Start Sync": "开始同步",
"core.dataset.website.UnValid Website Tip": "您的站点可能非静态站点,无法同步",
"core.dataset.error.unExistDataset": "数据集不存在",
"core.module.Add question type": "添加问题类型",
"core.module.Add_option": "添加选项",
"core.module.Can not connect self": "不能连接自身",
@@ -836,6 +836,11 @@
"core.workflow.variable": "变量",
"create": "去创建",
"cron_job_run_app": "定时任务",
"data_index_custom": "自定义索引",
"data_index_default": "默认索引",
"data_index_image": "图片索引",
"data_index_question": "推测问题索引",
"data_index_summary": "摘要索引",
"dataset.Confirm move the folder": "确认移动到该目录",
"dataset.Confirm to delete the data": "确认删除该数据?",
"dataset.Confirm to delete the file": "确认删除该文件及其所有数据?",
@@ -871,6 +876,12 @@
"dataset.dataset_name": "知识库名称",
"dataset.deleteFolderTips": "确认删除该文件夹及其包含的所有知识库?删除后数据无法恢复,请确认!",
"dataset.test.noResult": "搜索结果为空",
"dataset_data_import_q_placeholder": "最多 {{maxToken}} 字。",
"dataset_data_input_a": "答案",
"dataset_data_input_chunk": "常规模式",
"dataset_data_input_chunk_content": "内容",
"dataset_data_input_q": "问题",
"dataset_data_input_qa": "QA 模式",
"dataset_text_model_tip": "用于知识库预处理阶段的文本处理,例如自动补充索引、问答对提取。",
"deep_rag_search": "深度搜索",
"delete_api": "确认删除该API密钥删除后该密钥立即失效对应的对话日志不会删除请确认",
@@ -1017,6 +1028,7 @@
"question_feedback": "工单咨询",
"read_quote": "查看引用",
"required": "必须",
"rerank_weight": "重排权重",
"resume_failed": "恢复失败",
"select_reference_variable": "选择引用变量",
"share_link": "分享链接",
@@ -1031,6 +1043,8 @@
"support.outlink.Max usage points": "积分上限",
"support.outlink.Max usage points tip": "该链接最多允许使用多少积分,超出后将无法使用。-1 代表无限制。",
"support.outlink.Usage points": "积分消耗",
"support.outlink.share.Chat_quote_reader": "全文阅读器",
"support.outlink.share.Full_text tips": "允许阅读该引用片段来源的完整数据集",
"support.outlink.share.Response Quote": "引用内容",
"support.outlink.share.Response Quote tips": "查看知识库搜索的引用内容,不可查看完整引用文档或跳转引用网站",
"support.outlink.share.running_node": "运行节点",
@@ -1244,8 +1258,6 @@
"user.password_message": "密码最少 4 位最多 60 位",
"user.team.Balance": "团队余额",
"user.team.Check Team": "切换",
"user.team.Invite Member": "邀请成员",
"user.team.Invite Member Tips": "对方可查阅或使用团队内的其他资源",
"user.team.Leave Team": "离开团队",
"user.team.Leave Team Failed": "离开团队异常",
"user.team.Member": "成员",
@@ -1260,13 +1272,9 @@
"user.team.Tags Async": "保存",
"user.team.Team Tags Async": "标签同步",
"user.team.Team Tags Async Success": "链接报错成功,标签信息更新",
"user.team.invite.Accept Confirm": "确认加入该团队?",
"user.team.invite.Accepted": "已加入团队",
"user.team.invite.Deal Width Footer Tip": "处理完会自动关闭噢~",
"user.team.invite.Reject": "已拒绝邀请",
"user.team.invite.Reject Confirm": "确认拒绝该邀请?",
"user.team.invite.accept": "接受",
"user.team.invite.reject": "拒绝",
"user.team.member.Confirm Leave": "确认离开该团队?\n退出后您在该团队所有的资源 应用、知识库、文件夹、管理的群组等)均转让给团队所有者。",
"user.team.member.active": "已加入",
"user.team.member.reject": "拒绝",

View File

@@ -27,12 +27,7 @@
"custom_data_process_params_desc": "自定义设置数据处理规则",
"data.ideal_chunk_length": "理想分块长度",
"data_amount": "{{dataAmount}} 组数据, {{indexAmount}} 组索引",
"data_index_custom": "自定义索引",
"data_index_default": "默认索引",
"data_index_image": "图片索引",
"data_index_num": "索引 {{index}}",
"data_index_question": "推测问题索引",
"data_index_summary": "摘要索引",
"data_process_params": "处理参数",
"data_process_setting": "数据处理配置",
"dataset.Unsupported operation": "操作不支持",
@@ -69,6 +64,7 @@
"import_model_config": "模型选择",
"import_param_setting": "参数设置",
"import_select_file": "选择文件",
"import_select_link": "输入链接",
"is_open_schedule": "启用定时同步",
"keep_image": "保留图片",
"move.hint": "移动后,所选知识库/文件夹将继承新文件夹的权限设置,原先的权限设置失效。",

View File

@@ -19,7 +19,6 @@
"edit_channel": "渠道配置",
"enable_channel": "啟用",
"forbid_channel": "禁用",
"maxToken_tip": "模型 max_tokens 參數,如果留空,則代表模型不支持該參數。",
"key_type": "API key 格式:",
"log": "調用日誌",
"log_detail": "日誌詳情",
@@ -27,6 +26,7 @@
"log_status": "狀態",
"mapping": "模型映射",
"mapping_tip": "需填寫一個有效 Json。\n可在向實際地址發送請求時對模型進行映射。\n例如\n{\n \n \"gpt-4o\": \"gpt-4o-test\"\n\n}\n\n當 FastGPT 請求 gpt-4o 模型時,會向實際地址發送 gpt-4o-test 的模型,而不是 gpt-4o。",
"maxToken_tip": "模型 max_tokens 參數,如果留空,則代表模型不支持該參數。",
"max_temperature_tip": "模型 temperature 參數,不填則代表模型不支持 temperature 參數。",
"model": "模型",
"model_name": "模型名",
@@ -41,7 +41,7 @@
"select_model_placeholder": "選擇該渠道下可用的模型",
"select_provider_placeholder": "搜索廠商",
"selected_model_empty": "至少選擇一個模型",
"start_test": "開始測試{{num}}個模型",
"start_test": "批量測試{{num}}個模型",
"test_failed": "有{{num}}個模型報錯",
"vlm_model": "圖片理解模型",
"vlm_model_tip": "用於知識庫中對文檔中的圖片進行額外的索引生成",

View File

@@ -1,18 +1,39 @@
{
"1person": "1人",
"1year": "1年",
"30mins": "30分鐘",
"7days": "7天",
"accept": "接受",
"action": "操作",
"confirm_delete_group": "確認刪除群組?",
"confirm_delete_member": "確認刪除成員?",
"confirm_delete_org": "確認刪除該部門?",
"confirm_forbidden": "確認停用",
"confirm_leave_team": "確認離開該團隊? \n退出後您在該團隊所有的資源轉讓給團隊所有者。",
"copy_link": "複製連結",
"create_group": "建立群組",
"create_invitation_link": "建立邀請連結",
"create_org": "創建部門",
"create_sub_org": "創建子部門",
"delete": "刪除",
"delete_org": "刪除部門",
"edit_info": "編輯訊息",
"edit_org_info": "編輯部門資訊",
"expires": "有效期",
"forbid_hint": "停用後,該邀請連結將失效。 該操作不可撤銷,是否確認停用?",
"forbid_success": "停用成功",
"forbidden": "停用",
"group": "群組",
"group_name": "群組名稱",
"handle_invitation": "處理團隊邀請",
"has_forbidden": "已失效",
"has_invited": "已邀請",
"ignore": "忽略",
"invitation_link_auto_clean_hint": "已失效連結將在30天後自動清理",
"invitation_link_description": "連結描述",
"invitation_link_list": "連結列表",
"invite_member": "邀請成員",
"invited": "已邀請",
"label_sync": "標籤同步",
"leave_team_failed": "離開團隊異常",
"manage_member": "管理成員",
@@ -31,9 +52,12 @@
"search_member_group_name": "搜尋成員/群組名稱",
"total_team_members": "共 {{amount}} 名成員",
"transfer_ownership": "轉讓所有者",
"unlimited": "無限制",
"used_times_limit": "有效人數",
"user_name": "使用者名稱",
"user_team_invite_member": "邀請成員",
"user_team_leave_team": "離開團隊",
"user_team_leave_team_failed": "離開團隊失敗",
"waiting": "待接受"
"waiting": "待接受",
"invitation_copy_link": "【{{systemName}}】 {{userName}} 邀請您加入{{teamName}}團隊,連結:{{url}}"
}

View File

@@ -3,6 +3,8 @@
"Delete_all": "清除所有詞彙",
"LLM_model_response_empty": "模型流程回應為空,請檢查模型流程輸出是否正常",
"ai_reasoning": "思考過程",
"chat.quote.No Data": "找不到該文件",
"chat.quote.deleted": "該數據已被刪除~",
"chat_history": "對話紀錄",
"chat_input_guide_lexicon_is_empty": "尚未設定詞彙庫",
"chat_test_app": "調試-{{name}}",
@@ -16,8 +18,10 @@
"contextual_preview": "上下文預覽 {{num}} 筆",
"csv_input_lexicon_tip": "僅支援 CSV 批次匯入,點選下載範本",
"custom_input_guide_url": "自訂詞彙庫網址",
"data_source": "來源知識庫: {{name}}",
"dataset_quote_type error": "知識庫引用類型錯誤,正確類型:{ datasetId: string }[]",
"delete_all_input_guide_confirm": "確定要清除輸入導引詞彙庫嗎?",
"download_chunks": "下載數據",
"empty_directory": "此目錄中已無項目可選~",
"file_amount_over": "超出檔案數量上限 {{max}}",
"file_input": "檔案輸入",
@@ -39,16 +43,19 @@
"plugins_output": "外掛程式輸出",
"query_extension_IO_tokens": "問題優化輸入/輸出 Tokens",
"question_tip": "由上至下,各個模組的回應順序",
"read_raw_source": "打開原文",
"reasoning_text": "思考過程",
"response.child total points": "子工作流程點數消耗",
"response.dataset_concat_length": "合併總數",
"response.node_inputs": "節點輸入",
"response_hybrid_weight": "語義檢索 : 全文檢索 = {{emb}} : {{text}}",
"select": "選取",
"select_file": "上傳檔案",
"select_file_img": "上傳檔案 / 圖片",
"select_img": "上傳圖片",
"source_cronJob": "定時執行",
"stream_output": "串流輸出",
"to_dataset": "前往知識庫",
"unsupported_file_type": "不支援的檔案類型",
"upload": "上傳",
"view_citations": "檢視引用",

View File

@@ -1,5 +1,6 @@
{
"App": "應用程式",
"Download": "下載",
"Export": "匯出",
"FAQ.ai_point_a": "每次呼叫 AI 模型時,都會消耗一定數量的 AI 點數。詳細的計算標準請參考上方的「AI 點數計算標準」。\nToken 計算採用與 GPT3.5 相同的公式1 Token ≈ 0.7 個中文字 ≈ 0.9 個英文單字,連續出現的字元可能會被視為 1 個 Token。",
"FAQ.ai_point_expire_a": "會過期。目前方案過期後AI 點數將會清空並更新為新方案的 AI 點數。年度方案的 AI 點數有效期為一年,而不是每個月重置。",
@@ -87,6 +88,7 @@
"code_error.team_error.group_name_duplicate": "群組名稱重複",
"code_error.team_error.group_name_empty": "群組名稱不能為空",
"code_error.team_error.group_not_exist": "群組不存在",
"code_error.team_error.invitation_link_invalid": "邀請鏈接已失效",
"code_error.team_error.not_user": "找不到該成員",
"code_error.team_error.org_member_duplicated": "重複的組織成員",
"code_error.team_error.org_member_not_exist": "組織成員不存在",
@@ -95,13 +97,16 @@
"code_error.team_error.over_size": "error.team.overSize",
"code_error.team_error.plugin_amount_not_enough": "已達外掛程式數量上限",
"code_error.team_error.re_rank_not_enough": "免費版無法使用檢索重排~",
"code_error.team_error.too_many_invitations": "您的有效邀請連結數已達上限,請先清理連結",
"code_error.team_error.un_auth": "無權操作此團隊",
"code_error.team_error.user_not_active": "使用者未接受或已離開團隊",
"code_error.team_error.website_sync_not_enough": "免費版無法使用Web站點同步~",
"code_error.team_error.you_have_been_in_the_team": "你已經在該團隊中",
"code_error.token_error_code.403": "登入狀態無效,請重新登入",
"code_error.user_error.balance_not_enough": "帳戶餘額不足",
"code_error.user_error.bin_visitor_guest": "您目前身份為訪客,無權操作",
"code_error.user_error.un_auth_user": "找不到此使用者",
"commercial_function_tip": "請升級為商業版後使用此功能https://doc.fastgpt.cn/docs/commercial/intro/",
"common.Action": "操作",
"common.Add": "新增",
"common.Add New": "新增",
@@ -251,7 +256,6 @@
"common.submit_success": "送出成功",
"common.submitted": "已送出",
"common.support": "支援",
"common.system.Commercial version function": "請升級為商業版後使用此功能https://doc.fastgpt.cn/docs/commercial/intro/",
"common.system.Help Chatbot": "機器人助手",
"common.system.Use Helper": "使用說明",
"common.ui.textarea.Magnifying": "放大",
@@ -267,6 +271,7 @@
"compliance.compliance.dataset": "請確保您的內容嚴格遵守相關法律法規,避免包含任何違法或侵權的內容。\n在上傳可能涉及敏感資訊的資料時請務必謹慎。",
"compliance.dataset": "請確保您的內容嚴格遵守相關法律法規,避免包含任何違法或侵權的內容。\n在上傳可能涉及敏感資訊的資料時請務必謹慎。",
"confirm_choice": "確認選擇",
"contact_way": "聯繫方式",
"contribute_app_template": "貢獻範本",
"core.Chat": "對話",
"core.Max Token": "單筆資料上限",
@@ -449,6 +454,8 @@
"core.chat.module_unexist": "運行失敗:應用缺失組件",
"core.chat.quote.Quote Tip": "此處僅顯示實際引用內容,若資料有更新,此處不會即時更新",
"core.chat.quote.Read Quote": "檢視引用",
"core.chat.quote.afterUpdate": "更新後",
"core.chat.quote.beforeUpdate": "更新前",
"core.chat.response.Complete Response": "完整回應",
"core.chat.response.Extension model": "問題最佳化模型",
"core.chat.response.Read complete response": "檢視詳細資料",
@@ -497,7 +504,6 @@
"core.dataset.Empty Dataset": "空資料集",
"core.dataset.Empty Dataset Tips": "還沒有知識庫,快來建立一個吧!",
"core.dataset.Folder placeholder": "這是一個目錄",
"core.dataset.Go Dataset": "前往知識庫",
"core.dataset.Intro Placeholder": "這個知識庫還沒有介紹",
"core.dataset.Manual collection": "手動資料集",
"core.dataset.My Dataset": "我的知識庫",
@@ -533,18 +539,13 @@
"core.dataset.collection.status.active": "已就緒",
"core.dataset.collection.sync.result.sameRaw": "內容未變更,無需更新",
"core.dataset.collection.sync.result.success": "開始同步",
"core.dataset.data.Auxiliary Data": "輔助資料",
"core.dataset.data.Auxiliary Data Placeholder": "此部分為選填項目,通常是為了與前面的【資料內容】配合,建構結構化提示詞,用於特殊場景,最多 {{maxToken}} 字。",
"core.dataset.data.Auxiliary Data Tip": "此部分為選填項目\n此內容通常是為了與前面的資料內容配合建構結構化提示詞用於特殊場景",
"core.dataset.data.Data Content": "相關資料內容",
"core.dataset.data.Data Content Placeholder": "此輸入欄位為必填項目,此內容通常是知識點的描述,也可以是使用者的問題,最多 {{maxToken}} 字。",
"core.dataset.data.Data Content Tip": "此輸入欄位為必填項目\n此內容通常是知識點的描述也可以是使用者的問題。",
"core.dataset.data.Default Index Tip": "無法編輯,預設索引會使用【相關資料內容】與【輔助資料】的文字直接產生索引。",
"core.dataset.data.Edit": "編輯資料",
"core.dataset.data.Empty Tip": "此集合還沒有資料",
"core.dataset.data.Main Content": "主要內容",
"core.dataset.data.Search data placeholder": "搜尋相關資料",
"core.dataset.data.Too Long": "總長度超出上限",
"core.dataset.data.Updated": "已更新",
"core.dataset.data.group": "組",
"core.dataset.data.unit": "筆",
"core.dataset.embedding model tip": "索引模型可以將自然語言轉換成向量,用於進行語意搜尋。\n注意不同索引模型無法一起使用。選擇索引模型後就無法修改。",
@@ -625,7 +626,7 @@
"core.dataset.search.score.reRank desc": "透過重新排名模型計算句子之間的關聯度,範圍為 0 到 1。",
"core.dataset.search.score.rrf": "綜合排名",
"core.dataset.search.score.rrf desc": "使用倒數排名融合方法,合併多個搜尋結果。",
"core.dataset.search.search mode": "搜尋模式",
"core.dataset.search.search mode": "搜索方式",
"core.dataset.status.active": "已就緒",
"core.dataset.status.syncing": "同步中",
"core.dataset.test.Batch test": "批次測試",
@@ -831,6 +832,11 @@
"core.workflow.variable": "變數",
"create": "建立",
"cron_job_run_app": "排程任務",
"data_index_custom": "自定義索引",
"data_index_default": "默認索引",
"data_index_image": "圖片索引",
"data_index_question": "推測問題索引",
"data_index_summary": "摘要索引",
"dataset.Confirm move the folder": "確認移動到此目錄",
"dataset.Confirm to delete the data": "確認刪除此資料?",
"dataset.Confirm to delete the file": "確認刪除此檔案及其所有資料?",
@@ -867,6 +873,12 @@
"dataset.dataset_name": "知識庫名稱",
"dataset.deleteFolderTips": "確認刪除此資料夾及其包含的所有知識庫?刪除後資料無法復原,請確認!",
"dataset.test.noResult": "搜尋結果為空",
"dataset_data_import_q_placeholder": "最多 {{maxToken}} 字。",
"dataset_data_input_a": "答案",
"dataset_data_input_chunk": "常規模式",
"dataset_data_input_chunk_content": "內容",
"dataset_data_input_q": "問題",
"dataset_data_input_qa": "QA 模式",
"dataset_text_model_tip": "用於知識庫預處理階段的文本處理,例如自動補充索引、問答對提取。",
"deep_rag_search": "深度搜索",
"delete_api": "確認刪除此 API 金鑰?\n刪除後該金鑰將立即失效對應的對話記錄不會被刪除請確認",
@@ -1012,6 +1024,7 @@
"question_feedback": "工單諮詢",
"read_quote": "查看引用",
"required": "必填",
"rerank_weight": "重排權重",
"resume_failed": "恢復失敗",
"select_reference_variable": "選擇引用變數",
"share_link": "分享連結",
@@ -1026,6 +1039,8 @@
"support.outlink.Max usage points": "點數上限",
"support.outlink.Max usage points tip": "此連結最多允許使用多少點數,超出後將無法使用。-1 代表無限制。",
"support.outlink.Usage points": "點數消耗",
"support.outlink.share.Chat_quote_reader": "全文閱讀器",
"support.outlink.share.Full_text tips": "允許閱讀該引用片段來源的完整數據集",
"support.outlink.share.Response Quote": "回傳引用",
"support.outlink.share.Response Quote tips": "在分享連結中回傳引用內容,但不允許使用者下載原始文件",
"support.outlink.share.running_node": "執行節點",
@@ -1241,11 +1256,6 @@
"user.team.Check Team": "切換",
"user.team.Confirm Invite": "確認邀請",
"user.team.Create Team": "建立新團隊",
"user.team.Invite Member": "邀請成員",
"user.team.Invite Member Failed Tip": "邀請成員失敗",
"user.team.Invite Member Result Tip": "邀請結果提示",
"user.team.Invite Member Success Tip": "邀請成員完成\n成功{{success}} 人\n使用者名稱無效{{inValid}}\n已在團隊中{{inTeam}}",
"user.team.Invite Member Tips": "對方可檢視或使用團隊內的其他資源",
"user.team.Leave Team": "離開團隊",
"user.team.Leave Team Failed": "離開團隊失敗",
"user.team.Member": "成員",
@@ -1263,13 +1273,9 @@
"user.team.Team Tags Async": "標籤同步",
"user.team.Team Tags Async Success": "連結錯誤修正成功,標籤資訊已更新",
"user.team.Update Team": "更新團隊資訊",
"user.team.invite.Accept Confirm": "確認加入此團隊?",
"user.team.invite.Accepted": "已加入團隊",
"user.team.invite.Deal Width Footer Tip": "處理完會自動關閉",
"user.team.invite.Reject": "已拒絕邀請",
"user.team.invite.Reject Confirm": "確認拒絕此邀請?",
"user.team.invite.accept": "接受",
"user.team.invite.reject": "拒絕",
"user.team.member.Confirm Leave": "確認離開此團隊?\n離開後您在該團隊的所有資源應用程式、知識庫、資料夾、管理的群組等均會轉讓給團隊擁有者。",
"user.team.member.active": "已加入",
"user.team.member.reject": "已拒絕",

View File

@@ -27,12 +27,7 @@
"custom_data_process_params_desc": "自訂資料處理規則",
"data.ideal_chunk_length": "理想分塊長度",
"data_amount": "{{dataAmount}} 組數據, {{indexAmount}} 組索引",
"data_index_custom": "自定義索引",
"data_index_default": "默認索引",
"data_index_image": "圖片索引",
"data_index_num": "索引 {{index}}",
"data_index_question": "推測問題索引",
"data_index_summary": "摘要索引",
"data_process_params": "處理參數",
"data_process_setting": "資料處理設定",
"dataset.Unsupported operation": "操作不支持",
@@ -69,6 +64,7 @@
"import_model_config": "模型選擇",
"import_param_setting": "參數設置",
"import_select_file": "選擇文件",
"import_select_link": "輸入鏈接",
"is_open_schedule": "啟用定時同步",
"keep_image": "保留圖片",
"move.hint": "移動後,所選資料集/資料夾將繼承新資料夾的權限設定,原先的權限設定將失效。",

View File

@@ -4,8 +4,8 @@
"dependencies": {
"@chakra-ui/anatomy": "2.2.1",
"@chakra-ui/icons": "2.1.1",
"@chakra-ui/next-js": "2.1.5",
"@chakra-ui/react": "2.8.1",
"@chakra-ui/next-js": "2.4.2",
"@chakra-ui/react": "2.10.7",
"@chakra-ui/styled-system": "2.9.1",
"@chakra-ui/system": "2.6.1",
"@emotion/react": "11.11.1",
@@ -21,11 +21,11 @@
"ahooks": "^3.7.11",
"date-fns": "2.30.0",
"dayjs": "^1.11.7",
"i18next": "23.11.5",
"i18next": "23.16.8",
"js-cookie": "^3.0.5",
"lexical": "0.12.6",
"lodash": "^4.17.21",
"next-i18next": "15.3.0",
"next-i18next": "15.4.2",
"papaparse": "^5.4.1",
"react": "18.3.1",
"react-beautiful-dnd": "^13.1.1",