This commit is contained in:
Archer
2024-06-12 15:17:21 +08:00
committed by GitHub
parent bc6864c3dc
commit d0085a23e6
61 changed files with 558 additions and 348 deletions

View File

@@ -12,6 +12,7 @@ import { readConfigData } from '@/service/common/system';
import { exit } from 'process';
import { FastGPTProUrl } from '@fastgpt/service/common/system/constants';
import { initFastGPTConfig } from '@fastgpt/service/common/system/tools';
import json5 from 'json5';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
await getInitConfig();
@@ -88,7 +89,7 @@ export async function initSystemConfig() {
getFastGPTConfigFromDB(),
readConfigData('config.json')
]);
const fileRes = JSON.parse(fileConfig) as FastGPTConfigFileType;
const fileRes = json5.parse(fileConfig) as FastGPTConfigFileType;
// get config from database
const config: FastGPTConfigFileType = {
@@ -131,7 +132,7 @@ export function getSystemVersion() {
if (process.env.NODE_ENV === 'development') {
global.systemVersion = process.env.npm_package_version || '0.0.0';
} else {
const packageJson = JSON.parse(readFileSync('/app/package.json', 'utf-8'));
const packageJson = json5.parse(readFileSync('/app/package.json', 'utf-8'));
global.systemVersion = packageJson?.version;
}
@@ -157,7 +158,7 @@ function getSystemPlugin() {
const fileTemplates: (PluginTemplateType & { weight: number })[] = filterFiles.map((filename) => {
const content = readFileSync(`${basePath}/${filename}`, 'utf-8');
return {
...JSON.parse(content),
...json5.parse(content),
id: `${PluginSourceEnum.community}-${filename.replace('.json', '')}`,
source: PluginSourceEnum.community
};

View File

@@ -8,8 +8,12 @@ import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun';
import { MongoAppVersion } from '@fastgpt/service/core/app/version/schema';
import { NextAPI } from '@/service/middleware/entry';
import { MongoChatInputGuide } from '@fastgpt/service/core/chat/inputGuide/schema';
import { OwnerPermissionVal } from '@fastgpt/global/support/permission/constant';
import {
OwnerPermissionVal,
PerResourceTypeEnum
} from '@fastgpt/global/support/permission/constant';
import { findAppAndAllChildren } from '@fastgpt/service/core/app/controller';
import { MongoResourcePermission } from '@fastgpt/service/support/permission/schema';
async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
const { appId } = req.query as { appId: string };
@@ -27,8 +31,6 @@ async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
fields: '_id'
});
console.log(apps);
await mongoSessionRun(async (session) => {
for await (const app of apps) {
const appId = app._id;
@@ -65,6 +67,14 @@ async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
},
{ session }
);
await MongoResourcePermission.deleteMany(
{
resourceType: PerResourceTypeEnum.app,
teamId,
resourceId: appId
},
{ session }
);
// delete app
await MongoApp.deleteOne(
{

View File

@@ -14,7 +14,6 @@ import { authApp } from '@fastgpt/service/support/permission/app/auth';
import { dispatchWorkFlow } from '@fastgpt/service/core/workflow/dispatch';
import { authCert } from '@fastgpt/service/support/permission/auth/common';
import { getUserChatInfoAndAuthTeamPoints } from '@/service/support/permission/auth/team';
import { chatValue2RuntimePrompt } from '@fastgpt/global/core/chat/adapt';
import { RuntimeEdgeItemType } from '@fastgpt/global/core/workflow/type/edge';
import { RuntimeNodeItemType } from '@fastgpt/global/core/workflow/runtime/type';
import { removeEmptyUserInput } from '@fastgpt/global/core/chat/utils';
@@ -61,7 +60,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
}
/* user auth */
const [_, { teamId, tmbId }] = await Promise.all([
const [{ app }, { teamId, tmbId }] = await Promise.all([
authApp({ req, authToken: true, appId, per: ReadPermissionVal }),
authCert({
req,
@@ -79,7 +78,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
teamId,
tmbId,
user,
appId,
app,
runtimeNodes: nodes,
runtimeEdges: edges,
variables,

View File

@@ -9,6 +9,7 @@ import { PostWorkflowDebugProps, PostWorkflowDebugResponse } from '@/global/core
import { authPluginCrud } from '@fastgpt/service/support/permission/auth/plugin';
import { NextAPI } from '@/service/middleware/entry';
import { ReadPermissionVal } from '@fastgpt/global/support/permission/constant';
import { defaultApp } from '@/web/core/app/constants';
async function handler(
req: NextApiRequest,
@@ -45,6 +46,12 @@ async function handler(
// auth balance
const { user } = await getUserChatInfoAndAuthTeamPoints(tmbId);
const app = {
...defaultApp,
teamId,
tmbId
};
/* start process */
const { flowUsages, flowResponses, debugResponse } = await dispatchWorkFlow({
res,
@@ -52,7 +59,7 @@ async function handler(
teamId,
tmbId,
user,
appId,
app,
runtimeNodes: nodes,
runtimeEdges: edges,
variables,

View File

@@ -13,6 +13,9 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
if (!requestPath) {
throw new Error('url is empty');
}
if (!FastGPTProUrl) {
throw new Error('未配置商业版链接');
}
const parsedUrl = new URL(FastGPTProUrl);
delete req.headers?.rootkey;

View File

@@ -191,7 +191,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
user,
teamId: String(teamId),
tmbId: String(tmbId),
appId: String(app._id),
app,
chatId,
responseChatItemId,
runtimeNodes: storeNodes2RuntimeNodes(nodes, getDefaultEntryNodeIds(nodes)),

View File

@@ -20,7 +20,7 @@ import Avatar from '@/components/Avatar';
import MyModal from '@fastgpt/web/components/common/MyModal';
import { useTranslation } from 'next-i18next';
import { MongoImageTypeEnum } from '@fastgpt/global/common/file/image/constants';
import { CollaboratorContextProvider } from '@/components/support/permission/MemberManager/context';
import CollaboratorContextProvider from '@/components/support/permission/MemberManager/context';
import {
postUpdateAppCollaborators,
deleteAppCollaborators,
@@ -35,6 +35,7 @@ import {
import { PermissionValueType } from '@fastgpt/global/support/permission/type';
import DefaultPermissionList from '@/components/support/permission/DefaultPerList';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { UpdateClbPermissionProps } from '@fastgpt/global/support/permission/collaborator';
const InfoModal = ({ onClose }: { onClose: () => void }) => {
const { t } = useTranslation();
@@ -123,7 +124,7 @@ const InfoModal = ({ onClose }: { onClose: () => void }) => {
[setValue, t, toast]
);
const onUpdateCollaborators = async (tmbIds: string[], permission: PermissionValueType) => {
const onUpdateCollaborators = async ({ tmbIds, permission }: UpdateClbPermissionProps) => {
await postUpdateAppCollaborators({
tmbIds,
permission,

View File

@@ -108,7 +108,7 @@ const Logs = ({ appId }: { appId: string }) => {
<Th>{appT('Mark Count')}</Th>
</Tr>
</Thead>
<Tbody>
<Tbody fontSize={'xs'}>
{logs.map((item) => (
<Tr
key={item._id}

View File

@@ -89,10 +89,23 @@ const EditForm = ({
const { setValue, getValues, handleSubmit, control, watch } = editForm;
const { fields: datasets, replace: replaceKbList } = useFieldArray({
const { fields: datasets, replace: replaceDatasetList } = useFieldArray({
control,
name: 'dataset.datasets'
});
const selectDatasets = useMemo(
() => allDatasets.filter((item) => datasets.find((dataset) => dataset.datasetId === item._id)),
[allDatasets, datasets]
);
useEffect(() => {
if (selectDatasets.length !== datasets.length) {
replaceDatasetList(
selectDatasets.map((item) => ({
datasetId: item._id
}))
);
}
}, [datasets, replaceDatasetList, selectDatasets]);
const {
isOpen: isOpenDatasetSelect,
@@ -131,11 +144,6 @@ const EditForm = ({
const scheduledTriggerConfig = watch('chatConfig.scheduledTriggerConfig');
const searchMode = watch('dataset.searchMode');
const selectDatasets = useMemo(
() => allDatasets.filter((item) => datasets.find((dataset) => dataset.datasetId === item._id)),
[allDatasets, datasets]
);
const tokenLimit = useMemo(() => {
return llmModelList.find((item) => item.model === selectLLMModel)?.quoteMaxToken || 3000;
}, [selectLLMModel, llmModelList]);
@@ -475,7 +483,7 @@ const EditForm = ({
vectorModel: item.vectorModel
}))}
onClose={onCloseKbSelect}
onChange={replaceKbList}
onChange={replaceDatasetList}
/>
)}
{isOpenDatasetParams && (

View File

@@ -271,7 +271,13 @@ const ListItem = () => {
permission: editPerApp.permission,
onGetCollaboratorList: () => getCollaboratorList(editPerApp._id),
permissionList: AppPermissionList,
onUpdateCollaborators: (tmbIds: string[], permission: number) => {
onUpdateCollaborators: ({
tmbIds,
permission
}: {
tmbIds: string[];
permission: number;
}) => {
return postUpdateAppCollaborators({
tmbIds,
permission,

View File

@@ -140,6 +140,7 @@ const MyApps = () => {
{!!folderDetail && isPc && (
<Box pt={[4, 6]}>
<FolderSlideCard
refreshDeps={[folderDetail._id]}
name={folderDetail.name}
intro={folderDetail.intro}
onEdit={() => {
@@ -163,7 +164,13 @@ const MyApps = () => {
permission: folderDetail.permission,
onGetCollaboratorList: () => getCollaboratorList(folderDetail._id),
permissionList: AppPermissionList,
onUpdateCollaborators: (tmbIds: string[], permission: number) => {
onUpdateCollaborators: ({
tmbIds,
permission
}: {
tmbIds: string[];
permission: number;
}) => {
return postUpdateAppCollaborators({
tmbIds,
permission,

View File

@@ -374,7 +374,6 @@ const DataCard = () => {
e.stopPropagation();
openConfirm(async () => {
try {
setIsLoading(true);
await delOneDatasetDataById(item._id);
getData(pageNum);
} catch (error) {
@@ -383,7 +382,6 @@ const DataCard = () => {
status: 'error'
});
}
setIsLoading(false);
})();
}}
/>
@@ -411,14 +409,8 @@ const DataCard = () => {
</DrawerHeader>
<DrawerBody>
{metadataList.map((item) => (
<Flex
key={item.label}
alignItems={'center'}
mb={5}
wordBreak={'break-all'}
fontSize={'sm'}
>
{metadataList.map((item, i) => (
<Flex key={i} alignItems={'center'} mb={5} wordBreak={'break-all'} fontSize={'sm'}>
<Box color={'myGray.500'} flex={'0 0 100px'}>
{item.label}
</Box>

View File

@@ -41,7 +41,7 @@ const Slider = ({ currentTab }: { currentTab: TabEnum }) => {
icon: 'common/overviewLight'
},
{ label: t('core.dataset.test.Search Test'), id: TabEnum.test, icon: 'kbTest' },
...(userInfo?.team.permission.hasWritePer && datasetDetail.isOwner
...(userInfo?.team.permission.hasManagePer || datasetDetail.isOwner
? [{ label: t('common.Config'), id: TabEnum.info, icon: 'common/settingLight' }]
: [])
];