From c9172f73dea03f3a257ecd5d5f723a1d0a76ee99 Mon Sep 17 00:00:00 2001
From: archer <545436317@qq.com>
Date: Thu, 23 Jan 2025 17:19:48 +0800
Subject: [PATCH] perf: move components
---
.../zh-cn/docs/development/upgrading/4820.md | 3 ++-
.../app/src/components/core/app/TTSSelect.tsx | 2 +-
.../src/components/core/app/VariableEdit.tsx | 2 +-
.../components/SelectMarkCollection.tsx | 2 +-
.../src/components/core/dataset/QuoteItem.tsx | 2 +-
.../wallet/NotSufficientModal/index.tsx | 4 ++--
.../account}/AccountContainer.tsx | 0
.../account}/TeamSelector.tsx | 0
.../account/bill}/ApplyInvoiceModal.tsx | 2 +-
.../account/bill}/BillTable.tsx | 0
.../account/bill}/InvoiceHeaderForm.tsx | 2 +-
.../account/bill}/InvoiceTable.tsx | 0
.../account/info}/ConversionModal.tsx | 0
.../account/info}/UpdatePswModal.tsx | 0
.../account/info}/standardDetailModal.tsx | 0
.../account/model}/ModelConfigTable.tsx | 0
.../account/thirdParty}/OpenAIAccountModal.tsx | 0
.../thirdParty}/WorkflowVariableModal.tsx | 2 +-
.../account/usage}/Dashboard.tsx | 2 +-
.../account/usage}/UsageDetail.tsx | 0
.../account/usage}/UsageTable.tsx | 2 +-
.../account/usage/type.d.ts | 0
.../app/detail}/InfoModal.tsx | 2 +-
.../app/detail}/Logs/DetailLogsModal.tsx | 2 +-
.../app/detail}/Logs/index.tsx | 0
.../app/detail}/Plugin/Header.tsx | 0
.../app/detail}/Plugin/index.tsx | 0
.../app/detail}/Publish/API/index.tsx | 0
.../Publish/DingTalk/DingTalkEditModal.tsx | 0
.../app/detail}/Publish/DingTalk/index.tsx | 0
.../detail}/Publish/FeiShu/FeiShuEditModal.tsx | 0
.../app/detail}/Publish/FeiShu/index.tsx | 0
.../Publish/Link/SelectUsingWayModal.tsx | 0
.../app/detail}/Publish/Link/index.tsx | 0
.../OffiAccount/OffiAccountEditModal.tsx | 0
.../app/detail}/Publish/OffiAccount/index.tsx | 0
.../detail}/Publish/Wecom/WecomEditModal.tsx | 0
.../app/detail}/Publish/Wecom/index.tsx | 0
.../detail}/Publish/components/BasicInfo.tsx | 0
.../Publish/components/showShareLinkModal.tsx | 0
.../app/detail}/Publish/index.tsx | 0
.../app/detail}/PublishHistoriesSlider.tsx | 0
.../app/detail}/RouteTab.tsx | 0
.../app/detail}/SimpleApp/AppCard.tsx | 2 +-
.../app/detail}/SimpleApp/ChatTest.tsx | 0
.../app/detail}/SimpleApp/Edit.tsx | 0
.../app/detail}/SimpleApp/EditForm.tsx | 2 +-
.../app/detail}/SimpleApp/Header.tsx | 0
.../SimpleApp/components/ConfigToolModal.tsx | 0
.../SimpleApp/components/ToolSelect.tsx | 0
.../SimpleApp/components/ToolSelectModal.tsx | 0
.../app/detail}/SimpleApp/index.tsx | 0
.../app/detail}/SimpleApp/styles.module.scss | 0
.../app/detail}/SimpleApp/useSnapshots.tsx | 0
.../app/detail}/TagsEditModal.tsx | 2 +-
.../app/detail}/Workflow/Header.tsx | 0
.../detail}/Workflow/components/SaveButton.tsx | 0
.../app/detail}/Workflow/index.tsx | 0
.../app/detail}/WorkflowComponents/AppCard.tsx | 0
.../WorkflowComponents/Flow/ChatTest.tsx | 4 ++--
.../WorkflowComponents/Flow/ImportSettings.tsx | 0
.../Flow/NodeTemplatesModal.tsx | 0
.../WorkflowComponents/Flow/SelectAppModal.tsx | 0
.../Flow/components/ButtonEdge.tsx | 0
.../Flow/components/Container.tsx | 0
.../Flow/components/ContextMenu.tsx | 0
.../Flow/components/Divider.tsx | 0
.../Flow/components/FlowController.tsx | 0
.../Flow/components/HelperLines.tsx | 0
.../Flow/components/IOTitle.tsx | 0
.../Flow/components/SaveAndPublish.tsx | 0
.../Flow/components/index.module.scss | 0
.../WorkflowComponents/Flow/hooks/useDebug.tsx | 0
.../Flow/hooks/useKeyboard.tsx | 0
.../WorkflowComponents/Flow/hooks/useUtils.tsx | 0
.../Flow/hooks/useWorkflow.tsx | 0
.../detail}/WorkflowComponents/Flow/index.tsx | 0
.../Flow/nodes/Loop/NodeLoop.tsx | 0
.../Flow/nodes/Loop/NodeLoopEnd.tsx | 0
.../Flow/nodes/Loop/NodeLoopStart.tsx | 0
.../Flow/nodes/NodeAnswer.tsx | 0
.../Flow/nodes/NodeCQNode.tsx | 0
.../WorkflowComponents/Flow/nodes/NodeCode.tsx | 0
.../Flow/nodes/NodeComment.tsx | 0
.../Flow/nodes/NodeDatasetConcat.tsx | 0
.../Flow/nodes/NodeEmpty.tsx | 0
.../nodes/NodeExtract/ExtractFieldModal.tsx | 0
.../Flow/nodes/NodeExtract/index.tsx | 0
.../nodes/NodeFormInput/InputFormEditModal.tsx | 0
.../Flow/nodes/NodeFormInput/index.tsx | 0
.../Flow/nodes/NodeHttp/CurlImportModal.tsx | 0
.../Flow/nodes/NodeHttp/index.tsx | 2 +-
.../Flow/nodes/NodeIfElse/ListItem.tsx | 2 +-
.../Flow/nodes/NodeIfElse/index.tsx | 0
.../WorkflowComponents/Flow/nodes/NodeLaf.tsx | 0
.../Flow/nodes/NodePluginIO/InputEditModal.tsx | 0
.../nodes/NodePluginIO/InputTypeConfig.tsx | 0
.../nodes/NodePluginIO/NodePluginConfig.tsx | 0
.../Flow/nodes/NodePluginIO/PluginInput.tsx | 0
.../Flow/nodes/NodePluginIO/PluginOutput.tsx | 0
.../NodePluginIO/PluginOutputEditModal.tsx | 0
.../Flow/nodes/NodePluginIO/VariableTable.tsx | 0
.../Flow/nodes/NodeSimple.tsx | 0
.../Flow/nodes/NodeSystemConfig.tsx | 2 +-
.../NodeToolParams/ToolParamsEditModal.tsx | 0
.../Flow/nodes/NodeToolParams/index.tsx | 0
.../Flow/nodes/NodeTools.tsx | 0
.../Flow/nodes/NodeUserSelect.tsx | 0
.../Flow/nodes/NodeVariableUpdate.tsx | 2 +-
.../Flow/nodes/NodeWorkflowStart.tsx | 2 +-
.../nodes/render/Handle/ConnectionHandle.tsx | 0
.../Flow/nodes/render/Handle/ToolHandle.tsx | 2 +-
.../Flow/nodes/render/Handle/index.tsx | 0
.../Flow/nodes/render/Handle/style.tsx | 0
.../Flow/nodes/render/NodeCard.tsx | 0
.../render/RenderInput/FieldEditModal.tsx | 0
.../Flow/nodes/render/RenderInput/Label.tsx | 2 +-
.../Flow/nodes/render/RenderInput/index.tsx | 0
.../templates/DynamicInputs/index.tsx | 2 +-
.../RenderInput/templates/JsonEditor.tsx | 4 ++--
.../RenderInput/templates/NumberInput.tsx | 2 +-
.../render/RenderInput/templates/Reference.tsx | 4 ++--
.../render/RenderInput/templates/Select.tsx | 2 +-
.../render/RenderInput/templates/SelectApp.tsx | 2 +-
.../RenderInput/templates/SelectDataset.tsx | 2 +-
.../templates/SelectDatasetParams.tsx | 2 +-
.../RenderInput/templates/SelectLLMModel.tsx | 2 +-
.../RenderInput/templates/SettingLLMModel.tsx | 2 +-
.../templates/SettingQuotePrompt.tsx | 4 ++--
.../render/RenderInput/templates/Slider.tsx | 2 +-
.../render/RenderInput/templates/Switch.tsx | 2 +-
.../render/RenderInput/templates/TextInput.tsx | 4 ++--
.../render/RenderInput/templates/Textarea.tsx | 4 ++--
.../Flow/nodes/render/RenderInput/type.d.ts | 0
.../render/RenderOutput/FieldEditModal.tsx | 0
.../Flow/nodes/render/RenderOutput/Label.tsx | 0
.../Flow/nodes/render/RenderOutput/index.tsx | 2 +-
.../Flow/nodes/render/RenderOutput/type.d.ts | 0
.../render/RenderToolInput/EditFieldModal.tsx | 2 +-
.../nodes/render/RenderToolInput/index.tsx | 2 +-
.../nodes/render/RenderToolInput/type.d.ts | 0
.../Flow/nodes/render/ValueTypeLabel.tsx | 0
.../detail}/WorkflowComponents/constants.tsx | 0
.../WorkflowComponents/context/index.tsx | 2 +-
.../context/workflowEventContext.tsx | 0
.../context/workflowInitContext.tsx | 0
.../context/workflowStatusContext.tsx | 0
.../app/detail}/WorkflowComponents/utils.tsx | 0
.../app/detail}/constants.tsx | 0
.../app/detail}/context.tsx | 0
.../app/detail}/useChatTest.tsx | 0
.../app/list}/CreateModal.tsx | 0
.../app/list}/HttpPluginEditModal.tsx | 0
.../app/list}/JsonImportModal.tsx | 0
.../app/list}/List.tsx | 2 +-
.../app/list}/TemplateMarketModal.tsx | 0
.../app/list}/TypeTag.tsx | 1 -
.../app/list}/context.tsx | 0
.../chat}/ChatHeader.tsx | 0
.../chat}/ChatHistorySlider.tsx | 0
.../chat}/CustomPluginRunBox.tsx | 0
.../chat}/Empty.tsx | 0
.../chat}/SliderApps.tsx | 0
.../chat}/ToolMenu.tsx | 0
.../dataset}/ApiDatasetForm.tsx | 0
.../dataset}/EditFolderModal.tsx | 0
.../dataset}/MemberManager.tsx | 0
.../dataset/detail}/CollectionCard/Context.tsx | 0
.../CollectionCard/EmptyCollectionTip.tsx | 0
.../dataset/detail}/CollectionCard/Header.tsx | 4 ++--
.../CollectionCard/HeaderTagPopOver.tsx | 0
.../detail}/CollectionCard/TagManageModal.tsx | 0
.../detail}/CollectionCard/TagsPopOver.tsx | 0
.../detail}/CollectionCard/WebsiteConfig.tsx | 0
.../dataset/detail}/CollectionCard/index.tsx | 2 +-
.../dataset/detail}/DataCard.tsx | 2 +-
.../dataset/detail}/Import/Context.tsx | 0
.../Import/commonProgress/DataProcess.tsx | 0
.../Import/commonProgress/PreviewData.tsx | 0
.../detail}/Import/commonProgress/Upload.tsx | 2 +-
.../detail}/Import/components/FileSelector.tsx | 0
.../Import/components/FileSourceSelector.tsx | 2 +-
.../detail}/Import/components/Preview.tsx | 0
.../Import/components/PreviewChunks.tsx | 0
.../Import/components/PreviewRawText.tsx | 0
.../detail}/Import/components/RenderFiles.tsx | 0
.../detail}/Import/diffSource/APIDataset.tsx | 0
.../detail}/Import/diffSource/ExternalFile.tsx | 0
.../Import/diffSource/FileCustomText.tsx | 0
.../detail}/Import/diffSource/FileLink.tsx | 0
.../detail}/Import/diffSource/FileLocal.tsx | 0
.../detail}/Import/diffSource/ReTraining.tsx | 0
.../detail}/Import/diffSource/TableLocal.tsx | 0
.../dataset/detail}/Import/index.tsx | 0
.../dataset/detail}/Import/type.d.ts | 0
.../dataset/detail}/Import/utils.tsx | 0
.../Info/components/EditApiServiceModal.tsx | 2 +-
.../dataset/detail}/Info/index.tsx | 2 +-
.../dataset/detail}/InputDataModal.tsx | 0
.../dataset/detail}/MetaDataCard.tsx | 0
.../dataset/detail}/NavBar.tsx | 0
.../dataset/detail}/Test.tsx | 1 -
.../dataset/detail}/styles.module.scss | 0
.../dataset/list}/CreateModal.tsx | 2 +-
.../dataset/list}/List.tsx | 2 +-
.../dataset/list}/SideTag.tsx | 0
.../login}/ForgetPasswordForm.tsx | 0
.../login/LoginForm}/FormLayout.tsx | 0
.../login}/LoginForm/LoginForm.tsx | 2 +-
.../login}/LoginForm/WechatForm.tsx | 2 +-
.../login}/RegisterForm.tsx | 0
.../price}/ExtraPlan.tsx | 0
.../price}/FAQ.tsx | 0
.../price}/Points.tsx | 0
.../price}/Standard.tsx | 0
.../toolkit}/PluginCard.tsx | 0
projects/app/src/pages/account/apikey.tsx | 2 +-
projects/app/src/pages/account/bill/index.tsx | 10 +++++-----
projects/app/src/pages/account/info/index.tsx | 13 ++++++++-----
projects/app/src/pages/account/inform.tsx | 2 +-
projects/app/src/pages/account/model/index.tsx | 4 ++--
projects/app/src/pages/account/promotion.tsx | 2 +-
projects/app/src/pages/account/setting.tsx | 2 +-
projects/app/src/pages/account/team/index.tsx | 4 ++--
.../app/src/pages/account/thirdParty/index.tsx | 8 +++++---
projects/app/src/pages/account/usage/index.tsx | 8 ++++----
projects/app/src/pages/app/detail/index.tsx | 8 ++++----
projects/app/src/pages/app/list/index.tsx | 14 +++++++-------
projects/app/src/pages/chat/index.module.scss | 18 ------------------
projects/app/src/pages/chat/index.tsx | 8 ++++----
projects/app/src/pages/chat/share.tsx | 6 +++---
projects/app/src/pages/chat/team.tsx | 8 ++++----
.../app/src/pages/dataset/detail/index.tsx | 18 ++++++++++--------
projects/app/src/pages/dataset/list/index.tsx | 6 +++---
projects/app/src/pages/login/index.tsx | 8 ++++----
projects/app/src/pages/price/index.tsx | 9 ++++-----
projects/app/src/pages/toolkit/index.tsx | 2 +-
237 files changed, 138 insertions(+), 151 deletions(-)
rename projects/app/src/{pages/account/components => pageComponents/account}/AccountContainer.tsx (100%)
rename projects/app/src/{pages/account/components => pageComponents/account}/TeamSelector.tsx (100%)
rename projects/app/src/{pages/account/bill/components => pageComponents/account/bill}/ApplyInvoiceModal.tsx (98%)
rename projects/app/src/{pages/account/bill/components => pageComponents/account/bill}/BillTable.tsx (100%)
rename projects/app/src/{pages/account/bill/components => pageComponents/account/bill}/InvoiceHeaderForm.tsx (98%)
rename projects/app/src/{pages/account/bill/components => pageComponents/account/bill}/InvoiceTable.tsx (100%)
rename projects/app/src/{pages/account/info/components => pageComponents/account/info}/ConversionModal.tsx (100%)
rename projects/app/src/{pages/account/info/components => pageComponents/account/info}/UpdatePswModal.tsx (100%)
rename projects/app/src/{pages/account/info/components => pageComponents/account/info}/standardDetailModal.tsx (100%)
rename projects/app/src/{pages/account/model/components => pageComponents/account/model}/ModelConfigTable.tsx (100%)
rename projects/app/src/{pages/account/thirdParty/components => pageComponents/account/thirdParty}/OpenAIAccountModal.tsx (100%)
rename projects/app/src/{pages/account/thirdParty/components => pageComponents/account/thirdParty}/WorkflowVariableModal.tsx (96%)
rename projects/app/src/{pages/account/usage/components => pageComponents/account/usage}/Dashboard.tsx (98%)
rename projects/app/src/{pages/account/usage/components => pageComponents/account/usage}/UsageDetail.tsx (100%)
rename projects/app/src/{pages/account/usage/components => pageComponents/account/usage}/UsageTable.tsx (99%)
rename projects/app/src/{pages => pageComponents}/account/usage/type.d.ts (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/InfoModal.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Logs/DetailLogsModal.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Logs/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Plugin/Header.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Plugin/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/API/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/DingTalk/DingTalkEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/DingTalk/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/FeiShu/FeiShuEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/FeiShu/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/Link/SelectUsingWayModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/Link/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/OffiAccount/OffiAccountEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/OffiAccount/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/Wecom/WecomEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/Wecom/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/components/BasicInfo.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/components/showShareLinkModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Publish/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/PublishHistoriesSlider.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/RouteTab.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/AppCard.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/ChatTest.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/Edit.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/EditForm.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/Header.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/components/ConfigToolModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/components/ToolSelect.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/components/ToolSelectModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/styles.module.scss (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/SimpleApp/useSnapshots.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/TagsEditModal.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Workflow/Header.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Workflow/components/SaveButton.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/Workflow/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/AppCard.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/ChatTest.tsx (97%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/ImportSettings.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/NodeTemplatesModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/SelectAppModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/ButtonEdge.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/Container.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/ContextMenu.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/Divider.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/FlowController.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/HelperLines.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/IOTitle.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/SaveAndPublish.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/components/index.module.scss (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/hooks/useDebug.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/hooks/useKeyboard.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/hooks/useUtils.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/hooks/useWorkflow.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/Loop/NodeLoopEnd.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeAnswer.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeCQNode.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeCode.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeComment.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeDatasetConcat.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeEmpty.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeExtract/ExtractFieldModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeExtract/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeFormInput/InputFormEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeHttp/CurlImportModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeLaf.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/NodePluginConfig.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/PluginInput.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutput.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutputEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodePluginIO/VariableTable.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeSimple.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeToolParams/ToolParamsEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeToolParams/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeTools.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx (97%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/Handle/ConnectionHandle.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx (97%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/Handle/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/Handle/style.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/NodeCard.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/FieldEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx (96%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/index.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx (92%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx (90%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx (90%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx (96%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx (97%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx (94%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx (95%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx (92%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx (89%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx (92%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx (94%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderInput/type.d.ts (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderOutput/FieldEditModal.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderOutput/Label.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderOutput/type.d.ts (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx (98%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx (97%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/RenderToolInput/type.d.ts (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/constants.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/context/index.tsx (99%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/context/workflowEventContext.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/context/workflowInitContext.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/context/workflowStatusContext.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/WorkflowComponents/utils.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/constants.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/context.tsx (100%)
rename projects/app/src/{pages/app/detail/components => pageComponents/app/detail}/useChatTest.tsx (100%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/CreateModal.tsx (100%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/HttpPluginEditModal.tsx (100%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/JsonImportModal.tsx (100%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/List.tsx (99%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/TemplateMarketModal.tsx (100%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/TypeTag.tsx (95%)
rename projects/app/src/{pages/app/list/components => pageComponents/app/list}/context.tsx (100%)
rename projects/app/src/{pages/chat/components => pageComponents/chat}/ChatHeader.tsx (100%)
rename projects/app/src/{pages/chat/components => pageComponents/chat}/ChatHistorySlider.tsx (100%)
rename projects/app/src/{pages/chat/components => pageComponents/chat}/CustomPluginRunBox.tsx (100%)
rename projects/app/src/{pages/chat/components => pageComponents/chat}/Empty.tsx (100%)
rename projects/app/src/{pages/chat/components => pageComponents/chat}/SliderApps.tsx (100%)
rename projects/app/src/{pages/chat/components => pageComponents/chat}/ToolMenu.tsx (100%)
rename projects/app/src/{pages/dataset/component => pageComponents/dataset}/ApiDatasetForm.tsx (100%)
rename projects/app/src/{pages/dataset/component => pageComponents/dataset}/EditFolderModal.tsx (100%)
rename projects/app/src/{pages/dataset/component => pageComponents/dataset}/MemberManager.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/Context.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/EmptyCollectionTip.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/Header.tsx (99%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/HeaderTagPopOver.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/TagManageModal.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/TagsPopOver.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/WebsiteConfig.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/CollectionCard/index.tsx (99%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/DataCard.tsx (99%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/Context.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/commonProgress/DataProcess.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/commonProgress/PreviewData.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/commonProgress/Upload.tsx (99%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/components/FileSelector.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/components/FileSourceSelector.tsx (96%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/components/Preview.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/components/PreviewChunks.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/components/PreviewRawText.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/components/RenderFiles.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/APIDataset.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/ExternalFile.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/FileCustomText.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/FileLink.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/FileLocal.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/ReTraining.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/diffSource/TableLocal.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/index.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/type.d.ts (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Import/utils.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Info/components/EditApiServiceModal.tsx (97%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Info/index.tsx (99%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/InputDataModal.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/MetaDataCard.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/NavBar.tsx (100%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/Test.tsx (99%)
rename projects/app/src/{pages/dataset/detail/components => pageComponents/dataset/detail}/styles.module.scss (100%)
rename projects/app/src/{pages/dataset/list/component => pageComponents/dataset/list}/CreateModal.tsx (99%)
rename projects/app/src/{pages/dataset/list/component => pageComponents/dataset/list}/List.tsx (99%)
rename projects/app/src/{pages/dataset/list/component => pageComponents/dataset/list}/SideTag.tsx (100%)
rename projects/app/src/{pages/login/components => pageComponents/login}/ForgetPasswordForm.tsx (100%)
rename projects/app/src/{pages/login/components/LoginForm/components => pageComponents/login/LoginForm}/FormLayout.tsx (100%)
rename projects/app/src/{pages/login/components => pageComponents/login}/LoginForm/LoginForm.tsx (99%)
rename projects/app/src/{pages/login/components => pageComponents/login}/LoginForm/WechatForm.tsx (97%)
rename projects/app/src/{pages/login/components => pageComponents/login}/RegisterForm.tsx (100%)
rename projects/app/src/{pages/price/components => pageComponents/price}/ExtraPlan.tsx (100%)
rename projects/app/src/{pages/price/components => pageComponents/price}/FAQ.tsx (100%)
rename projects/app/src/{pages/price/components => pageComponents/price}/Points.tsx (100%)
rename projects/app/src/{pages/price/components => pageComponents/price}/Standard.tsx (100%)
rename projects/app/src/{pages/toolkit/components => pageComponents/toolkit}/PluginCard.tsx (100%)
delete mode 100644 projects/app/src/pages/chat/index.module.scss
diff --git a/docSite/content/zh-cn/docs/development/upgrading/4820.md b/docSite/content/zh-cn/docs/development/upgrading/4820.md
index 8ccfb4627178..124ddc65420f 100644
--- a/docSite/content/zh-cn/docs/development/upgrading/4820.md
+++ b/docSite/content/zh-cn/docs/development/upgrading/4820.md
@@ -27,4 +27,5 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4820' \
## 完整更新内容
1. 新增 - 可视化模型配置。预设超过 100 个模型,方便进行模型配置。
-2. 新增 - 使用记录导出和仪表盘。
\ No newline at end of file
+2. 新增 - 使用记录导出和仪表盘。
+3. 优化 - 页面组件抽离,减少页面组件路由。
\ No newline at end of file
diff --git a/projects/app/src/components/core/app/TTSSelect.tsx b/projects/app/src/components/core/app/TTSSelect.tsx
index 8037cb6e2462..6c2a12428ffd 100644
--- a/projects/app/src/components/core/app/TTSSelect.tsx
+++ b/projects/app/src/components/core/app/TTSSelect.tsx
@@ -15,7 +15,7 @@ import ChatFunctionTip from './Tip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import MyImage from '@fastgpt/web/components/common/Image/MyImage';
import { useContextSelector } from 'use-context-selector';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
const TTSSelect = ({
value = defaultTTSConfig,
diff --git a/projects/app/src/components/core/app/VariableEdit.tsx b/projects/app/src/components/core/app/VariableEdit.tsx
index bc4b873f4c7b..30ae8d83b182 100644
--- a/projects/app/src/components/core/app/VariableEdit.tsx
+++ b/projects/app/src/components/core/app/VariableEdit.tsx
@@ -30,7 +30,7 @@ import { formatEditorVariablePickerIcon } from '@fastgpt/global/core/workflow/ut
import ChatFunctionTip from './Tip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
-import InputTypeConfig from '@/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig';
+import InputTypeConfig from '@/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig';
import MyIconButton from '@fastgpt/web/components/common/Icon/button';
export const defaultVariable: VariableItemType = {
diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/SelectMarkCollection.tsx b/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/SelectMarkCollection.tsx
index be059f965953..f60bfa5aa854 100644
--- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/SelectMarkCollection.tsx
+++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/SelectMarkCollection.tsx
@@ -10,7 +10,7 @@ import { AdminFbkType } from '@fastgpt/global/core/chat/type.d';
import SelectCollections from '@/web/core/dataset/components/SelectCollections';
import EmptyTip from '@fastgpt/web/components/common/EmptyTip';
-const InputDataModal = dynamic(() => import('@/pages/dataset/detail/components/InputDataModal'));
+const InputDataModal = dynamic(() => import('@/pageComponents/dataset/detail/InputDataModal'));
export type AdminMarkType = {
feedbackDataId?: string;
diff --git a/projects/app/src/components/core/dataset/QuoteItem.tsx b/projects/app/src/components/core/dataset/QuoteItem.tsx
index b9ad40ce2204..a897138b5633 100644
--- a/projects/app/src/components/core/dataset/QuoteItem.tsx
+++ b/projects/app/src/components/core/dataset/QuoteItem.tsx
@@ -12,7 +12,7 @@ import { SearchScoreTypeEnum, SearchScoreTypeMap } from '@fastgpt/global/core/da
import type { readCollectionSourceBody } from '@/pages/api/core/dataset/collection/read';
import Markdown from '@/components/Markdown';
-const InputDataModal = dynamic(() => import('@/pages/dataset/detail/components/InputDataModal'));
+const InputDataModal = dynamic(() => import('@/pageComponents/dataset/detail/InputDataModal'));
type ScoreItemType = SearchDataResponseItemType['score'][0];
const scoreTheme: Record<
diff --git a/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx b/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx
index fa4590428c93..551bc43af28c 100644
--- a/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx
+++ b/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx
@@ -3,8 +3,8 @@ import MyModal from '@fastgpt/web/components/common/MyModal';
import { useTranslation } from 'next-i18next';
import { Box, Button, Flex, ModalBody, ModalFooter, useDisclosure } from '@chakra-ui/react';
import { NotSufficientModalType, useSystemStore } from '@/web/common/system/useSystemStore';
-import ExtraPlan from '@/pages/price/components/ExtraPlan';
-import StandardPlan from '@/pages/price/components/Standard';
+import ExtraPlan from '@/pageComponents/price/ExtraPlan';
+import StandardPlan from '@/pageComponents/price/Standard';
import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import { useUserStore } from '@/web/support/user/useUserStore';
diff --git a/projects/app/src/pages/account/components/AccountContainer.tsx b/projects/app/src/pageComponents/account/AccountContainer.tsx
similarity index 100%
rename from projects/app/src/pages/account/components/AccountContainer.tsx
rename to projects/app/src/pageComponents/account/AccountContainer.tsx
diff --git a/projects/app/src/pages/account/components/TeamSelector.tsx b/projects/app/src/pageComponents/account/TeamSelector.tsx
similarity index 100%
rename from projects/app/src/pages/account/components/TeamSelector.tsx
rename to projects/app/src/pageComponents/account/TeamSelector.tsx
diff --git a/projects/app/src/pages/account/bill/components/ApplyInvoiceModal.tsx b/projects/app/src/pageComponents/account/bill/ApplyInvoiceModal.tsx
similarity index 98%
rename from projects/app/src/pages/account/bill/components/ApplyInvoiceModal.tsx
rename to projects/app/src/pageComponents/account/bill/ApplyInvoiceModal.tsx
index 557dd227ace9..ce8aad28c0b7 100644
--- a/projects/app/src/pages/account/bill/components/ApplyInvoiceModal.tsx
+++ b/projects/app/src/pageComponents/account/bill/ApplyInvoiceModal.tsx
@@ -27,7 +27,7 @@ import dayjs from 'dayjs';
import { useTranslation } from 'next-i18next';
import { useCallback, useState } from 'react';
import MyIcon from '@fastgpt/web/components/common/Icon';
-import Divider from '@/pages/app/detail/components/WorkflowComponents/Flow/components/Divider';
+import Divider from '@/pageComponents/app/detail/WorkflowComponents/Flow/components/Divider';
import { TeamInvoiceHeaderType } from '@fastgpt/global/support/user/team/type';
import { InvoiceHeaderSingleForm } from './InvoiceHeaderForm';
import MyBox from '@fastgpt/web/components/common/MyBox';
diff --git a/projects/app/src/pages/account/bill/components/BillTable.tsx b/projects/app/src/pageComponents/account/bill/BillTable.tsx
similarity index 100%
rename from projects/app/src/pages/account/bill/components/BillTable.tsx
rename to projects/app/src/pageComponents/account/bill/BillTable.tsx
diff --git a/projects/app/src/pages/account/bill/components/InvoiceHeaderForm.tsx b/projects/app/src/pageComponents/account/bill/InvoiceHeaderForm.tsx
similarity index 98%
rename from projects/app/src/pages/account/bill/components/InvoiceHeaderForm.tsx
rename to projects/app/src/pageComponents/account/bill/InvoiceHeaderForm.tsx
index 69c6658a6434..94f2c641c457 100644
--- a/projects/app/src/pages/account/bill/components/InvoiceHeaderForm.tsx
+++ b/projects/app/src/pageComponents/account/bill/InvoiceHeaderForm.tsx
@@ -1,4 +1,4 @@
-import Divider from '@/pages/app/detail/components/WorkflowComponents/Flow/components/Divider';
+import Divider from '@/pageComponents/app/detail/WorkflowComponents/Flow/components/Divider';
import { getTeamInvoiceHeader, updateTeamInvoiceHeader } from '@/web/support/user/team/api';
import { Box, Button, Flex, HStack, Input, InputProps, Radio, RadioGroup } from '@chakra-ui/react';
import { TeamInvoiceHeaderType } from '@fastgpt/global/support/user/team/type';
diff --git a/projects/app/src/pages/account/bill/components/InvoiceTable.tsx b/projects/app/src/pageComponents/account/bill/InvoiceTable.tsx
similarity index 100%
rename from projects/app/src/pages/account/bill/components/InvoiceTable.tsx
rename to projects/app/src/pageComponents/account/bill/InvoiceTable.tsx
diff --git a/projects/app/src/pages/account/info/components/ConversionModal.tsx b/projects/app/src/pageComponents/account/info/ConversionModal.tsx
similarity index 100%
rename from projects/app/src/pages/account/info/components/ConversionModal.tsx
rename to projects/app/src/pageComponents/account/info/ConversionModal.tsx
diff --git a/projects/app/src/pages/account/info/components/UpdatePswModal.tsx b/projects/app/src/pageComponents/account/info/UpdatePswModal.tsx
similarity index 100%
rename from projects/app/src/pages/account/info/components/UpdatePswModal.tsx
rename to projects/app/src/pageComponents/account/info/UpdatePswModal.tsx
diff --git a/projects/app/src/pages/account/info/components/standardDetailModal.tsx b/projects/app/src/pageComponents/account/info/standardDetailModal.tsx
similarity index 100%
rename from projects/app/src/pages/account/info/components/standardDetailModal.tsx
rename to projects/app/src/pageComponents/account/info/standardDetailModal.tsx
diff --git a/projects/app/src/pages/account/model/components/ModelConfigTable.tsx b/projects/app/src/pageComponents/account/model/ModelConfigTable.tsx
similarity index 100%
rename from projects/app/src/pages/account/model/components/ModelConfigTable.tsx
rename to projects/app/src/pageComponents/account/model/ModelConfigTable.tsx
diff --git a/projects/app/src/pages/account/thirdParty/components/OpenAIAccountModal.tsx b/projects/app/src/pageComponents/account/thirdParty/OpenAIAccountModal.tsx
similarity index 100%
rename from projects/app/src/pages/account/thirdParty/components/OpenAIAccountModal.tsx
rename to projects/app/src/pageComponents/account/thirdParty/OpenAIAccountModal.tsx
diff --git a/projects/app/src/pages/account/thirdParty/components/WorkflowVariableModal.tsx b/projects/app/src/pageComponents/account/thirdParty/WorkflowVariableModal.tsx
similarity index 96%
rename from projects/app/src/pages/account/thirdParty/components/WorkflowVariableModal.tsx
rename to projects/app/src/pageComponents/account/thirdParty/WorkflowVariableModal.tsx
index dc9719fec310..6bd4ee383c45 100644
--- a/projects/app/src/pages/account/thirdParty/components/WorkflowVariableModal.tsx
+++ b/projects/app/src/pageComponents/account/thirdParty/WorkflowVariableModal.tsx
@@ -1,7 +1,7 @@
import { Box, Button, Flex, Input, ModalBody, ModalFooter } from '@chakra-ui/react';
import MyModal from '@fastgpt/web/components/common/MyModal';
import React from 'react';
-import { ThirdPartyAccountType } from '../index';
+import { ThirdPartyAccountType } from '../../../pages/account/thirdParty/index';
import { useTranslation } from 'next-i18next';
import { useForm } from 'react-hook-form';
import { useUserStore } from '@/web/support/user/useUserStore';
diff --git a/projects/app/src/pages/account/usage/components/Dashboard.tsx b/projects/app/src/pageComponents/account/usage/Dashboard.tsx
similarity index 98%
rename from projects/app/src/pages/account/usage/components/Dashboard.tsx
rename to projects/app/src/pageComponents/account/usage/Dashboard.tsx
index 41513239ce4f..fa4a55a32bcc 100644
--- a/projects/app/src/pages/account/usage/components/Dashboard.tsx
+++ b/projects/app/src/pageComponents/account/usage/Dashboard.tsx
@@ -17,7 +17,7 @@ import {
TooltipProps
} from 'recharts';
import { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent';
-import { UnitType, UsageFilterParams } from '../type';
+import { UnitType, UsageFilterParams } from './type';
import dayjs from 'dayjs';
export type usageFormType = {
diff --git a/projects/app/src/pages/account/usage/components/UsageDetail.tsx b/projects/app/src/pageComponents/account/usage/UsageDetail.tsx
similarity index 100%
rename from projects/app/src/pages/account/usage/components/UsageDetail.tsx
rename to projects/app/src/pageComponents/account/usage/UsageDetail.tsx
diff --git a/projects/app/src/pages/account/usage/components/UsageTable.tsx b/projects/app/src/pageComponents/account/usage/UsageTable.tsx
similarity index 99%
rename from projects/app/src/pages/account/usage/components/UsageTable.tsx
rename to projects/app/src/pageComponents/account/usage/UsageTable.tsx
index 55baf5bc2bb7..00c9a2437f6d 100644
--- a/projects/app/src/pages/account/usage/components/UsageTable.tsx
+++ b/projects/app/src/pageComponents/account/usage/UsageTable.tsx
@@ -23,7 +23,7 @@ import { usePagination } from '@fastgpt/web/hooks/usePagination';
import { getUserUsages } from '@/web/support/wallet/usage/api';
import { addDays } from 'date-fns';
import dynamic from 'next/dynamic';
-import { UsageFilterParams } from '../type';
+import { UsageFilterParams } from './type';
import PopoverConfirm from '@fastgpt/web/components/common/MyPopover/PopoverConfirm';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { downloadFetch } from '@/web/common/system/utils';
diff --git a/projects/app/src/pages/account/usage/type.d.ts b/projects/app/src/pageComponents/account/usage/type.d.ts
similarity index 100%
rename from projects/app/src/pages/account/usage/type.d.ts
rename to projects/app/src/pageComponents/account/usage/type.d.ts
diff --git a/projects/app/src/pages/app/detail/components/InfoModal.tsx b/projects/app/src/pageComponents/app/detail/InfoModal.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/InfoModal.tsx
rename to projects/app/src/pageComponents/app/detail/InfoModal.tsx
index f82b1e931e21..3d0c1beb4a88 100644
--- a/projects/app/src/pages/app/detail/components/InfoModal.tsx
+++ b/projects/app/src/pageComponents/app/detail/InfoModal.tsx
@@ -1,6 +1,6 @@
import CollaboratorContextProvider from '@/components/support/permission/MemberManager/context';
import ResumeInherit from '@/components/support/permission/ResumeInheritText';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from './context';
import { useSelectFile } from '@/web/common/file/hooks/useSelectFile';
import { useI18n } from '@/web/context/I18n';
import { resumeInheritPer } from '@/web/core/app/api';
diff --git a/projects/app/src/pages/app/detail/components/Logs/DetailLogsModal.tsx b/projects/app/src/pageComponents/app/detail/Logs/DetailLogsModal.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/Logs/DetailLogsModal.tsx
rename to projects/app/src/pageComponents/app/detail/Logs/DetailLogsModal.tsx
index 0098e8cec3b0..4a20b9d87270 100644
--- a/projects/app/src/pages/app/detail/components/Logs/DetailLogsModal.tsx
+++ b/projects/app/src/pageComponents/app/detail/Logs/DetailLogsModal.tsx
@@ -11,7 +11,7 @@ import LightRowTabs from '@fastgpt/web/components/common/Tabs/LightRowTabs';
import { PluginRunBoxTabEnum } from '@/components/core/chat/ChatContainer/PluginRunBox/constants';
import CloseIcon from '@fastgpt/web/components/common/Icon/close';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
-import { PcHeader } from '@/pages/chat/components/ChatHeader';
+import { PcHeader } from '@/pageComponents/chat/ChatHeader';
import { GetChatTypeEnum } from '@/global/core/chat/constants';
import ChatItemContextProvider, { ChatItemContext } from '@/web/core/chat/context/chatItemContext';
import ChatRecordContextProvider, {
diff --git a/projects/app/src/pages/app/detail/components/Logs/index.tsx b/projects/app/src/pageComponents/app/detail/Logs/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Logs/index.tsx
rename to projects/app/src/pageComponents/app/detail/Logs/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Plugin/Header.tsx b/projects/app/src/pageComponents/app/detail/Plugin/Header.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Plugin/Header.tsx
rename to projects/app/src/pageComponents/app/detail/Plugin/Header.tsx
diff --git a/projects/app/src/pages/app/detail/components/Plugin/index.tsx b/projects/app/src/pageComponents/app/detail/Plugin/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Plugin/index.tsx
rename to projects/app/src/pageComponents/app/detail/Plugin/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/API/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/API/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/API/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/API/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/DingTalk/DingTalkEditModal.tsx b/projects/app/src/pageComponents/app/detail/Publish/DingTalk/DingTalkEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/DingTalk/DingTalkEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/DingTalk/DingTalkEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/DingTalk/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/DingTalk/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/DingTalk/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/DingTalk/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/FeiShu/FeiShuEditModal.tsx b/projects/app/src/pageComponents/app/detail/Publish/FeiShu/FeiShuEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/FeiShu/FeiShuEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/FeiShu/FeiShuEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/FeiShu/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/FeiShu/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/FeiShu/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/FeiShu/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/Link/SelectUsingWayModal.tsx b/projects/app/src/pageComponents/app/detail/Publish/Link/SelectUsingWayModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/Link/SelectUsingWayModal.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/Link/SelectUsingWayModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/Link/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/Link/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/Link/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/Link/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/OffiAccount/OffiAccountEditModal.tsx b/projects/app/src/pageComponents/app/detail/Publish/OffiAccount/OffiAccountEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/OffiAccount/OffiAccountEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/OffiAccount/OffiAccountEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/OffiAccount/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/OffiAccount/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/OffiAccount/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/OffiAccount/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/Wecom/WecomEditModal.tsx b/projects/app/src/pageComponents/app/detail/Publish/Wecom/WecomEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/Wecom/WecomEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/Wecom/WecomEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/Wecom/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/Wecom/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/Wecom/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/Wecom/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/components/BasicInfo.tsx b/projects/app/src/pageComponents/app/detail/Publish/components/BasicInfo.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/components/BasicInfo.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/components/BasicInfo.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/components/showShareLinkModal.tsx b/projects/app/src/pageComponents/app/detail/Publish/components/showShareLinkModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/components/showShareLinkModal.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/components/showShareLinkModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/Publish/index.tsx b/projects/app/src/pageComponents/app/detail/Publish/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Publish/index.tsx
rename to projects/app/src/pageComponents/app/detail/Publish/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/PublishHistoriesSlider.tsx b/projects/app/src/pageComponents/app/detail/PublishHistoriesSlider.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/PublishHistoriesSlider.tsx
rename to projects/app/src/pageComponents/app/detail/PublishHistoriesSlider.tsx
diff --git a/projects/app/src/pages/app/detail/components/RouteTab.tsx b/projects/app/src/pageComponents/app/detail/RouteTab.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/RouteTab.tsx
rename to projects/app/src/pageComponents/app/detail/RouteTab.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/AppCard.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/AppCard.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/SimpleApp/AppCard.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/AppCard.tsx
index 59c4543228b5..cef63d3dcc5e 100644
--- a/projects/app/src/pages/app/detail/components/SimpleApp/AppCard.tsx
+++ b/projects/app/src/pageComponents/app/detail/SimpleApp/AppCard.tsx
@@ -16,7 +16,7 @@ import Avatar from '@fastgpt/web/components/common/Avatar';
import MyIcon from '@fastgpt/web/components/common/Icon';
import TagsEditModal from '../TagsEditModal';
import { useSystemStore } from '@/web/common/system/useSystemStore';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import { useContextSelector } from 'use-context-selector';
import MyMenu from '@fastgpt/web/components/common/MyMenu';
import MyModal from '@fastgpt/web/components/common/MyModal';
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/ChatTest.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/ChatTest.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/ChatTest.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/ChatTest.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/Edit.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/Edit.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/Edit.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/Edit.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/EditForm.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/EditForm.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/SimpleApp/EditForm.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/EditForm.tsx
index eb083263caa4..44d407692916 100644
--- a/projects/app/src/pages/app/detail/components/SimpleApp/EditForm.tsx
+++ b/projects/app/src/pageComponents/app/detail/SimpleApp/EditForm.tsx
@@ -27,7 +27,7 @@ import type { SettingAIDataType } from '@fastgpt/global/core/app/type.d';
import { TTSTypeEnum } from '@/web/core/app/constants';
import { workflowSystemVariables } from '@/web/core/app/utils';
import { useContextSelector } from 'use-context-selector';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import VariableTip from '@/components/common/Textarea/MyTextarea/VariableTip';
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/Header.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/Header.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/Header.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/Header.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/components/ConfigToolModal.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/components/ConfigToolModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/components/ConfigToolModal.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/components/ConfigToolModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/components/ToolSelect.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/components/ToolSelect.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/components/ToolSelect.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/components/ToolSelect.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/components/ToolSelectModal.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/components/ToolSelectModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/components/ToolSelectModal.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/components/ToolSelectModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/index.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/index.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/styles.module.scss b/projects/app/src/pageComponents/app/detail/SimpleApp/styles.module.scss
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/styles.module.scss
rename to projects/app/src/pageComponents/app/detail/SimpleApp/styles.module.scss
diff --git a/projects/app/src/pages/app/detail/components/SimpleApp/useSnapshots.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/useSnapshots.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/SimpleApp/useSnapshots.tsx
rename to projects/app/src/pageComponents/app/detail/SimpleApp/useSnapshots.tsx
diff --git a/projects/app/src/pages/app/detail/components/TagsEditModal.tsx b/projects/app/src/pageComponents/app/detail/TagsEditModal.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/TagsEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/TagsEditModal.tsx
index 20a322864745..db33023decce 100644
--- a/projects/app/src/pages/app/detail/components/TagsEditModal.tsx
+++ b/projects/app/src/pageComponents/app/detail/TagsEditModal.tsx
@@ -23,7 +23,7 @@ import { useRequest } from '@fastgpt/web/hooks/useRequest';
import { getTeamsTags } from '@/web/support/user/team/api';
import { useQuery } from '@tanstack/react-query';
import { useContextSelector } from 'use-context-selector';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from './context';
const TagsEditModal = ({ onClose }: { onClose: () => void }) => {
const { t } = useTranslation();
diff --git a/projects/app/src/pages/app/detail/components/Workflow/Header.tsx b/projects/app/src/pageComponents/app/detail/Workflow/Header.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Workflow/Header.tsx
rename to projects/app/src/pageComponents/app/detail/Workflow/Header.tsx
diff --git a/projects/app/src/pages/app/detail/components/Workflow/components/SaveButton.tsx b/projects/app/src/pageComponents/app/detail/Workflow/components/SaveButton.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Workflow/components/SaveButton.tsx
rename to projects/app/src/pageComponents/app/detail/Workflow/components/SaveButton.tsx
diff --git a/projects/app/src/pages/app/detail/components/Workflow/index.tsx b/projects/app/src/pageComponents/app/detail/Workflow/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/Workflow/index.tsx
rename to projects/app/src/pageComponents/app/detail/Workflow/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/AppCard.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/AppCard.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/AppCard.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/AppCard.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/ChatTest.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/ChatTest.tsx
similarity index 97%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/ChatTest.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/ChatTest.tsx
index 4834f09706b1..94c6057a05b9 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/ChatTest.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/ChatTest.tsx
@@ -8,8 +8,8 @@ import { useTranslation } from 'next-i18next';
import { StoreEdgeItemType } from '@fastgpt/global/core/workflow/type/edge';
import { useContextSelector } from 'use-context-selector';
-import { AppContext } from '@/pages/app/detail/components/context';
-import { useChatTest } from '@/pages/app/detail/components/useChatTest';
+import { AppContext } from '@/pageComponents/app/detail/context';
+import { useChatTest } from '../../useChatTest';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
import LightRowTabs from '@fastgpt/web/components/common/Tabs/LightRowTabs';
import { PluginRunBoxTabEnum } from '@/components/core/chat/ChatContainer/PluginRunBox/constants';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/ImportSettings.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/ImportSettings.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/ImportSettings.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/ImportSettings.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/NodeTemplatesModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/NodeTemplatesModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/SelectAppModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/SelectAppModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/SelectAppModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/SelectAppModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/ButtonEdge.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ButtonEdge.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/ButtonEdge.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ButtonEdge.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/Container.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/Container.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/Container.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/Container.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/ContextMenu.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ContextMenu.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/ContextMenu.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ContextMenu.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/Divider.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/Divider.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/Divider.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/Divider.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/FlowController.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/FlowController.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/FlowController.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/FlowController.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/HelperLines.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/HelperLines.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/HelperLines.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/HelperLines.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/IOTitle.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/IOTitle.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/IOTitle.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/IOTitle.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/SaveAndPublish.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/SaveAndPublish.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/SaveAndPublish.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/SaveAndPublish.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/index.module.scss b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/index.module.scss
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/components/index.module.scss
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/index.module.scss
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useDebug.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useDebug.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useDebug.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useDebug.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useKeyboard.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useKeyboard.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useKeyboard.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useKeyboard.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useUtils.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useUtils.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useUtils.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useUtils.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useWorkflow.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useWorkflow.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/hooks/useWorkflow.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/hooks/useWorkflow.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/Loop/NodeLoopEnd.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopEnd.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/Loop/NodeLoopEnd.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopEnd.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeAnswer.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeAnswer.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeAnswer.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeAnswer.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeCQNode.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeCQNode.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeCQNode.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeCQNode.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeCode.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeCode.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeCode.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeCode.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeComment.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeComment.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeComment.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeComment.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeDatasetConcat.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeDatasetConcat.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeDatasetConcat.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeDatasetConcat.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeEmpty.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeEmpty.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeEmpty.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeEmpty.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeExtract/ExtractFieldModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeExtract/ExtractFieldModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeExtract/ExtractFieldModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeExtract/ExtractFieldModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeExtract/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeExtract/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeExtract/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeExtract/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeFormInput/InputFormEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/InputFormEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeFormInput/InputFormEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/InputFormEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeHttp/CurlImportModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/CurlImportModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeHttp/CurlImportModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/CurlImportModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx
index e19f2af13bbd..9a0a5bcc0f93 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx
@@ -44,7 +44,7 @@ import IOTitle from '../../components/IOTitle';
import { useContextSelector } from 'use-context-selector';
import { WorkflowContext } from '../../../context';
import { useCreation, useMemoizedFn } from 'ahooks';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import { getEditorVariables } from '../../../utils';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx
index e1017d740bdd..0a0de9788f2d 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/ListItem.tsx
@@ -30,7 +30,7 @@ import { SourceHandle } from '../render/Handle';
import { Position, useReactFlow } from 'reactflow';
import { getRefData } from '@/web/core/workflow/utils';
import DragIcon from '@fastgpt/web/components/common/DndDrag/DragIcon';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import { useI18n } from '@/web/context/I18n';
const ListItem = ({
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeLaf.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeLaf.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeLaf.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeLaf.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/NodePluginConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/NodePluginConfig.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/NodePluginConfig.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/NodePluginConfig.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/PluginInput.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/PluginInput.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/PluginInput.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/PluginInput.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutput.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutput.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutput.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutput.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutputEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutputEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutputEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/PluginOutputEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/VariableTable.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/VariableTable.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodePluginIO/VariableTable.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/VariableTable.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeSimple.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSimple.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeSimple.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSimple.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx
index d7c20432ef07..8f9660224656 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx
@@ -21,7 +21,7 @@ import {
} from '@fastgpt/global/core/app/type';
import { useMemoizedFn } from 'ahooks';
import VariableEdit from '@/components/core/app/VariableEdit';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import WelcomeTextConfig from '@/components/core/app/WelcomeTextConfig';
import FileSelect from '@/components/core/app/FileSelect';
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeToolParams/ToolParamsEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolParams/ToolParamsEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeToolParams/ToolParamsEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolParams/ToolParamsEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeToolParams/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolParams/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeToolParams/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolParams/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeTools.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeTools.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeTools.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeTools.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx
index 4be1f4dc4461..0e5689678644 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx
@@ -29,7 +29,7 @@ import MyTooltip from '@fastgpt/web/components/common/MyTooltip';
import { ReferenceItemValueType, ReferenceValueType } from '@fastgpt/global/core/workflow/type/io';
import { ReferSelector, useReference } from './render/RenderInput/templates/Reference';
import { getRefData } from '@/web/core/workflow/utils';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import PromptEditor from '@fastgpt/web/components/common/Textarea/PromptEditor';
import { useCreation, useMemoizedFn } from 'ahooks';
import { getEditorVariables } from '../../utils';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx
similarity index 97%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx
index 41ee01117ada..d61d90a3935a 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeWorkflowStart.tsx
@@ -12,7 +12,7 @@ import { useCreation } from 'ahooks';
import { FlowNodeOutputItemType } from '@fastgpt/global/core/workflow/type/io';
import { FlowNodeOutputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import { workflowSystemVariables } from '@/web/core/app/utils';
import {
formatEditorVariablePickerIcon,
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/ConnectionHandle.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/ConnectionHandle.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/ConnectionHandle.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/ConnectionHandle.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx
similarity index 97%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx
index 428dea606ea1..e7bc2f7d9238 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/ToolHandle.tsx
@@ -5,7 +5,7 @@ import { useTranslation } from 'next-i18next';
import { Connection, Handle, Position } from 'reactflow';
import { useCallback, useMemo } from 'react';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { WorkflowNodeEdgeContext } from '../../../../context/workflowInitContext';
const handleSize = '16px';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/style.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/style.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/Handle/style.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/Handle/style.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/NodeCard.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/NodeCard.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/NodeCard.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/NodeCard.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/FieldEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/FieldEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/FieldEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/FieldEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx
similarity index 96%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx
index b372f2655186..9a53ce94da69 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/Label.tsx
@@ -7,7 +7,7 @@ import NodeInputSelect from '@fastgpt/web/components/core/workflow/NodeInputSele
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import ValueTypeLabel from '../ValueTypeLabel';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/index.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/index.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
index 36ab6454d684..30799758ea3e 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
@@ -7,7 +7,7 @@ import dynamic from 'next/dynamic';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import { FlowNodeInputItemType, ReferenceValueType } from '@fastgpt/global/core/workflow/type/io';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { defaultInput } from '../../FieldEditModal';
import { getInputComponentProps } from '@fastgpt/global/core/workflow/node/io/utils';
import { ReferSelector, useReference } from '../Reference';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx
similarity index 92%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx
index 4636e74b6c21..786d6504c262 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/JsonEditor.tsx
@@ -3,11 +3,11 @@ import type { RenderInputProps } from '../type';
import JSONEditor from '@fastgpt/web/components/common/Textarea/JsonEditor';
import { formatEditorVariablePickerIcon } from '@fastgpt/global/core/workflow/utils';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { getWorkflowGlobalVariables } from '@/web/core/workflow/utils';
import { useCreation } from 'ahooks';
import { useTranslation } from 'next-i18next';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
const JsonEditor = ({ inputs = [], item, nodeId }: RenderInputProps) => {
const { t } = useTranslation();
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx
similarity index 90%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx
index 2a7b8416c9d5..35db09e7b36b 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/NumberInput.tsx
@@ -1,7 +1,7 @@
import React, { useMemo } from 'react';
import type { RenderInputProps } from '../type';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import MyNumberInput from '@fastgpt/web/components/common/Input/NumberInput';
const NumberInputRender = ({ item, nodeId }: RenderInputProps) => {
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx
index 6df07b6f1ba9..9c5775da5c5f 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Reference.tsx
@@ -18,9 +18,9 @@ import type {
} from '@fastgpt/global/core/workflow/type/io';
import dynamic from 'next/dynamic';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import { WorkflowNodeEdgeContext } from '../../../../../context/workflowInitContext';
const MultipleRowSelect = dynamic(() =>
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx
similarity index 90%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx
index 7a4aa5093bb1..10be856252f4 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Select.tsx
@@ -1,7 +1,7 @@
import React, { useMemo } from 'react';
import type { RenderInputProps } from '../type';
import MySelect from '@fastgpt/web/components/common/MySelect';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { useContextSelector } from 'use-context-selector';
const SelectRender = ({ item, nodeId }: RenderInputProps) => {
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx
similarity index 96%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx
index a7a9145998cd..6bcf640d6a14 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectApp.tsx
@@ -6,7 +6,7 @@ import Avatar from '@fastgpt/web/components/common/Avatar';
import SelectAppModal from '../../../../SelectAppModal';
import { useTranslation } from 'next-i18next';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { getAppDetailById } from '@/web/core/app/api';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx
index b4bdb70e8888..89d2aa6778f4 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDataset.tsx
@@ -11,7 +11,7 @@ import { DatasetSearchModeEnum } from '@fastgpt/global/core/dataset/constants';
import dynamic from 'next/dynamic';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx
similarity index 97%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx
index e3834f6df02a..cd5ebeba7a68 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectDatasetParams.tsx
@@ -10,7 +10,7 @@ import DatasetParamsModal, { DatasetParamsProps } from '@/components/core/app/Da
import { useSystemStore } from '@/web/common/system/useSystemStore';
import SearchParamsTip from '@/components/core/dataset/SearchParamsTip';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { getWebLLMModel } from '@/web/common/system/utils';
import { defaultDatasetMaxTokens } from '@fastgpt/global/core/app/constants';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx
similarity index 94%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx
index b4c3dfca98d3..870e57e5cc06 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SelectLLMModel.tsx
@@ -4,7 +4,7 @@ import { useSystemStore } from '@/web/common/system/useSystemStore';
import { llmModelTypeFilterMap } from '@fastgpt/global/core/ai/constants';
import AIModelSelector from '@/components/Select/AIModelSelector';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
const SelectAiModelRender = ({ item, nodeId }: RenderInputProps) => {
const { llmModelList } = useSystemStore();
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx
similarity index 95%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx
index 13038c26da35..5fbb8601e87a 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingLLMModel.tsx
@@ -4,7 +4,7 @@ import type { SettingAIDataType } from '@fastgpt/global/core/app/type.d';
import SettingLLMModel from '@/components/core/ai/SettingLLMModel';
import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
const SelectAiModelRender = ({ item, inputs = [], nodeId }: RenderInputProps) => {
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx
index 29a8476037dc..846ed3105bdf 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx
@@ -19,10 +19,10 @@ import MyIcon from '@fastgpt/web/components/common/Icon';
import Reference from './Reference';
import ValueTypeLabel from '../../ValueTypeLabel';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { getWorkflowGlobalVariables } from '@/web/core/workflow/utils';
import { useCreation } from 'ahooks';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import { datasetQuoteValueDesc } from '@fastgpt/global/core/workflow/node/constant';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx
similarity index 92%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx
index bcbbcd6202fa..451c612395b7 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Slider.tsx
@@ -4,7 +4,7 @@ import { useTranslation } from 'next-i18next';
import { Box } from '@chakra-ui/react';
import MySlider from '@/components/Slider';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
const SliderRender = ({ item, nodeId }: RenderInputProps) => {
const { t } = useTranslation();
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx
similarity index 89%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx
index 5520d91af4ea..e5ddc80029a6 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Switch.tsx
@@ -2,7 +2,7 @@ import React, { useMemo } from 'react';
import type { RenderInputProps } from '../type';
import { Switch } from '@chakra-ui/react';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
const SwitchRender = ({ item, nodeId }: RenderInputProps) => {
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx
similarity index 92%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx
index a7c82f363a20..d2895497faf7 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/TextInput.tsx
@@ -3,9 +3,9 @@ import type { RenderInputProps } from '../type';
import { useTranslation } from 'next-i18next';
import PromptEditor from '@fastgpt/web/components/common/Textarea/PromptEditor';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { useCreation } from 'ahooks';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import { getEditorVariables } from '../../../../../utils';
import { WorkflowNodeEdgeContext } from '../../../../../context/workflowInitContext';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx
similarity index 94%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx
index d190e6fb2839..3c18d23f242f 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/Textarea.tsx
@@ -3,9 +3,9 @@ import type { RenderInputProps } from '../type';
import { useTranslation } from 'next-i18next';
import PromptEditor from '@fastgpt/web/components/common/Textarea/PromptEditor';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { useCreation } from 'ahooks';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import { getEditorVariables } from '../../../../../utils';
import { WorkflowNodeEdgeContext } from '../../../../../context/workflowInitContext';
import { useSystemStore } from '@/web/common/system/useSystemStore';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/type.d.ts b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/type.d.ts
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderInput/type.d.ts
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/type.d.ts
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/FieldEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/FieldEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/FieldEditModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/FieldEditModal.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/Label.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/Label.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/Label.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/Label.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx
index 35ef4609c783..22f040f85e36 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/index.tsx
@@ -9,7 +9,7 @@ import { SmallAddIcon } from '@chakra-ui/icons';
import VariableTable from '../../NodePluginIO/VariableTable';
import { FlowValueTypeMap } from '@fastgpt/global/core/workflow/node/constant';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import dynamic from 'next/dynamic';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/type.d.ts b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/type.d.ts
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderOutput/type.d.ts
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/type.d.ts
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx
similarity index 98%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx
index dfadba769e7e..a1a87f63062d 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/EditFieldModal.tsx
@@ -18,7 +18,7 @@ import { useRequest } from '@fastgpt/web/hooks/useRequest';
import { useToast } from '@fastgpt/web/hooks/useToast';
import { FlowNodeInputItemType } from '@fastgpt/global/core/workflow/type/io.d';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import { toolValueTypeList } from '@fastgpt/global/core/workflow/constants';
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx
similarity index 97%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx
index cf6513739593..fb7e478ca572 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/index.tsx
@@ -18,7 +18,7 @@ import MyIcon from '@fastgpt/web/components/common/Icon';
import dynamic from 'next/dynamic';
import { defaultEditFormData } from './EditFieldModal';
import { useContextSelector } from 'use-context-selector';
-import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
+import { WorkflowContext } from '@/pageComponents/app/detail/WorkflowComponents/context';
import IOTitle from '../../../components/IOTitle';
import { SmallAddIcon } from '@chakra-ui/icons';
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/type.d.ts b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/type.d.ts
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/RenderToolInput/type.d.ts
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderToolInput/type.d.ts
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/constants.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/constants.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/constants.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/constants.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/context/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/context/index.tsx
similarity index 99%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/context/index.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/context/index.tsx
index f2fe96350c64..5b8ff1f50b5d 100644
--- a/projects/app/src/pages/app/detail/components/WorkflowComponents/context/index.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/context/index.tsx
@@ -23,7 +23,7 @@ import { defaultRunningStatus } from '../constants';
import { checkNodeRunStatus } from '@fastgpt/global/core/workflow/runtime/utils';
import { getHandleId } from '@fastgpt/global/core/workflow/utils';
import { AppChatConfigType } from '@fastgpt/global/core/app/type';
-import { AppContext } from '@/pages/app/detail/components/context';
+import { AppContext } from '@/pageComponents/app/detail/context';
import ChatTest from '../Flow/ChatTest';
import { useDisclosure } from '@chakra-ui/react';
import { uiWorkflow2StoreWorkflow } from '../utils';
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/context/workflowEventContext.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/context/workflowEventContext.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/context/workflowEventContext.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/context/workflowEventContext.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/context/workflowInitContext.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/context/workflowInitContext.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/context/workflowInitContext.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/context/workflowInitContext.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/context/workflowStatusContext.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/context/workflowStatusContext.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/context/workflowStatusContext.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/context/workflowStatusContext.tsx
diff --git a/projects/app/src/pages/app/detail/components/WorkflowComponents/utils.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/utils.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/WorkflowComponents/utils.tsx
rename to projects/app/src/pageComponents/app/detail/WorkflowComponents/utils.tsx
diff --git a/projects/app/src/pages/app/detail/components/constants.tsx b/projects/app/src/pageComponents/app/detail/constants.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/constants.tsx
rename to projects/app/src/pageComponents/app/detail/constants.tsx
diff --git a/projects/app/src/pages/app/detail/components/context.tsx b/projects/app/src/pageComponents/app/detail/context.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/context.tsx
rename to projects/app/src/pageComponents/app/detail/context.tsx
diff --git a/projects/app/src/pages/app/detail/components/useChatTest.tsx b/projects/app/src/pageComponents/app/detail/useChatTest.tsx
similarity index 100%
rename from projects/app/src/pages/app/detail/components/useChatTest.tsx
rename to projects/app/src/pageComponents/app/detail/useChatTest.tsx
diff --git a/projects/app/src/pages/app/list/components/CreateModal.tsx b/projects/app/src/pageComponents/app/list/CreateModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/list/components/CreateModal.tsx
rename to projects/app/src/pageComponents/app/list/CreateModal.tsx
diff --git a/projects/app/src/pages/app/list/components/HttpPluginEditModal.tsx b/projects/app/src/pageComponents/app/list/HttpPluginEditModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/list/components/HttpPluginEditModal.tsx
rename to projects/app/src/pageComponents/app/list/HttpPluginEditModal.tsx
diff --git a/projects/app/src/pages/app/list/components/JsonImportModal.tsx b/projects/app/src/pageComponents/app/list/JsonImportModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/list/components/JsonImportModal.tsx
rename to projects/app/src/pageComponents/app/list/JsonImportModal.tsx
diff --git a/projects/app/src/pages/app/list/components/List.tsx b/projects/app/src/pageComponents/app/list/List.tsx
similarity index 99%
rename from projects/app/src/pages/app/list/components/List.tsx
rename to projects/app/src/pageComponents/app/list/List.tsx
index 66af89fbe16a..234ba48b2737 100644
--- a/projects/app/src/pages/app/list/components/List.tsx
+++ b/projects/app/src/pageComponents/app/list/List.tsx
@@ -24,7 +24,7 @@ import {
postUpdateAppCollaborators
} from '@/web/core/app/api/collaborator';
import MyTooltip from '@fastgpt/web/components/common/MyTooltip';
-import AppTypeTag from '@/pages/app/list/components/TypeTag';
+import AppTypeTag from './TypeTag';
const EditResourceModal = dynamic(() => import('@/components/common/Modal/EditResourceModal'));
const ConfigPerModal = dynamic(() => import('@/components/support/permission/ConfigPerModal'));
diff --git a/projects/app/src/pages/app/list/components/TemplateMarketModal.tsx b/projects/app/src/pageComponents/app/list/TemplateMarketModal.tsx
similarity index 100%
rename from projects/app/src/pages/app/list/components/TemplateMarketModal.tsx
rename to projects/app/src/pageComponents/app/list/TemplateMarketModal.tsx
diff --git a/projects/app/src/pages/app/list/components/TypeTag.tsx b/projects/app/src/pageComponents/app/list/TypeTag.tsx
similarity index 95%
rename from projects/app/src/pages/app/list/components/TypeTag.tsx
rename to projects/app/src/pageComponents/app/list/TypeTag.tsx
index 63111dfff253..9fa4d3e6efb6 100644
--- a/projects/app/src/pages/app/list/components/TypeTag.tsx
+++ b/projects/app/src/pageComponents/app/list/TypeTag.tsx
@@ -1,6 +1,5 @@
import React, { useRef } from 'react';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
-import MyTag from '@fastgpt/web/components/common/Tag/index';
import { useI18n } from '@/web/context/I18n';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { Box, Flex } from '@chakra-ui/react';
diff --git a/projects/app/src/pages/app/list/components/context.tsx b/projects/app/src/pageComponents/app/list/context.tsx
similarity index 100%
rename from projects/app/src/pages/app/list/components/context.tsx
rename to projects/app/src/pageComponents/app/list/context.tsx
diff --git a/projects/app/src/pages/chat/components/ChatHeader.tsx b/projects/app/src/pageComponents/chat/ChatHeader.tsx
similarity index 100%
rename from projects/app/src/pages/chat/components/ChatHeader.tsx
rename to projects/app/src/pageComponents/chat/ChatHeader.tsx
diff --git a/projects/app/src/pages/chat/components/ChatHistorySlider.tsx b/projects/app/src/pageComponents/chat/ChatHistorySlider.tsx
similarity index 100%
rename from projects/app/src/pages/chat/components/ChatHistorySlider.tsx
rename to projects/app/src/pageComponents/chat/ChatHistorySlider.tsx
diff --git a/projects/app/src/pages/chat/components/CustomPluginRunBox.tsx b/projects/app/src/pageComponents/chat/CustomPluginRunBox.tsx
similarity index 100%
rename from projects/app/src/pages/chat/components/CustomPluginRunBox.tsx
rename to projects/app/src/pageComponents/chat/CustomPluginRunBox.tsx
diff --git a/projects/app/src/pages/chat/components/Empty.tsx b/projects/app/src/pageComponents/chat/Empty.tsx
similarity index 100%
rename from projects/app/src/pages/chat/components/Empty.tsx
rename to projects/app/src/pageComponents/chat/Empty.tsx
diff --git a/projects/app/src/pages/chat/components/SliderApps.tsx b/projects/app/src/pageComponents/chat/SliderApps.tsx
similarity index 100%
rename from projects/app/src/pages/chat/components/SliderApps.tsx
rename to projects/app/src/pageComponents/chat/SliderApps.tsx
diff --git a/projects/app/src/pages/chat/components/ToolMenu.tsx b/projects/app/src/pageComponents/chat/ToolMenu.tsx
similarity index 100%
rename from projects/app/src/pages/chat/components/ToolMenu.tsx
rename to projects/app/src/pageComponents/chat/ToolMenu.tsx
diff --git a/projects/app/src/pages/dataset/component/ApiDatasetForm.tsx b/projects/app/src/pageComponents/dataset/ApiDatasetForm.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/component/ApiDatasetForm.tsx
rename to projects/app/src/pageComponents/dataset/ApiDatasetForm.tsx
diff --git a/projects/app/src/pages/dataset/component/EditFolderModal.tsx b/projects/app/src/pageComponents/dataset/EditFolderModal.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/component/EditFolderModal.tsx
rename to projects/app/src/pageComponents/dataset/EditFolderModal.tsx
diff --git a/projects/app/src/pages/dataset/component/MemberManager.tsx b/projects/app/src/pageComponents/dataset/MemberManager.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/component/MemberManager.tsx
rename to projects/app/src/pageComponents/dataset/MemberManager.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/Context.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/Context.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/Context.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/Context.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/EmptyCollectionTip.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/EmptyCollectionTip.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/EmptyCollectionTip.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/EmptyCollectionTip.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/Header.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/Header.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/Header.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/Header.tsx
index 45ecf4ed6b45..1462ab563a09 100644
--- a/projects/app/src/pages/dataset/detail/components/CollectionCard/Header.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/CollectionCard/Header.tsx
@@ -30,8 +30,8 @@ import {
DatasetTypeMap,
DatasetStatusEnum
} from '@fastgpt/global/core/dataset/constants';
-import EditFolderModal, { useEditFolder } from '../../../component/EditFolderModal';
-import { TabEnum } from '../../index';
+import EditFolderModal, { useEditFolder } from '../../EditFolderModal';
+import { TabEnum } from '../../../../pages/dataset/detail/index';
import ParentPath from '@/components/common/ParentPaths';
import dynamic from 'next/dynamic';
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/HeaderTagPopOver.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/HeaderTagPopOver.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/HeaderTagPopOver.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/HeaderTagPopOver.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/TagManageModal.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/TagManageModal.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/TagManageModal.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/TagManageModal.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/TagsPopOver.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/TagsPopOver.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/TagsPopOver.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/TagsPopOver.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/WebsiteConfig.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/WebsiteConfig.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/WebsiteConfig.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/WebsiteConfig.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/CollectionCard/index.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/index.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/detail/components/CollectionCard/index.tsx
rename to projects/app/src/pageComponents/dataset/detail/CollectionCard/index.tsx
index 26cb172437f2..d298da150aef 100644
--- a/projects/app/src/pages/dataset/detail/components/CollectionCard/index.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/CollectionCard/index.tsx
@@ -32,7 +32,7 @@ import {
DatasetTypeEnum
} from '@fastgpt/global/core/dataset/constants';
import { getCollectionIcon } from '@fastgpt/global/core/dataset/utils';
-import { TabEnum } from '../../index';
+import { TabEnum } from '../../../../pages/dataset/detail/index';
import dynamic from 'next/dynamic';
import SelectCollections from '@/web/core/dataset/components/SelectCollections';
import { useToast } from '@fastgpt/web/hooks/useToast';
diff --git a/projects/app/src/pages/dataset/detail/components/DataCard.tsx b/projects/app/src/pageComponents/dataset/detail/DataCard.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/detail/components/DataCard.tsx
rename to projects/app/src/pageComponents/dataset/detail/DataCard.tsx
index 4b2f5f4fcc9a..99b3ff701642 100644
--- a/projects/app/src/pages/dataset/detail/components/DataCard.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/DataCard.tsx
@@ -13,7 +13,7 @@ import { useTranslation } from 'next-i18next';
import { useRouter } from 'next/router';
import MyIcon from '@fastgpt/web/components/common/Icon';
import MyInput from '@/components/MyInput';
-import InputDataModal from '../components/InputDataModal';
+import InputDataModal from './InputDataModal';
import RawSourceBox from '@/components/core/dataset/RawSourceBox';
import { getCollectionSourceData } from '@fastgpt/global/core/dataset/collection/utils';
import EmptyTip from '@fastgpt/web/components/common/EmptyTip';
diff --git a/projects/app/src/pages/dataset/detail/components/Import/Context.tsx b/projects/app/src/pageComponents/dataset/detail/Import/Context.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/Context.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/Context.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/commonProgress/DataProcess.tsx b/projects/app/src/pageComponents/dataset/detail/Import/commonProgress/DataProcess.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/commonProgress/DataProcess.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/commonProgress/DataProcess.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/commonProgress/PreviewData.tsx b/projects/app/src/pageComponents/dataset/detail/Import/commonProgress/PreviewData.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/commonProgress/PreviewData.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/commonProgress/PreviewData.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/commonProgress/Upload.tsx b/projects/app/src/pageComponents/dataset/detail/Import/commonProgress/Upload.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/detail/components/Import/commonProgress/Upload.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/commonProgress/Upload.tsx
index b51c53dad07d..e811a52540dd 100644
--- a/projects/app/src/pages/dataset/detail/components/Import/commonProgress/Upload.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/Import/commonProgress/Upload.tsx
@@ -20,7 +20,7 @@ import MyIcon from '@fastgpt/web/components/common/Icon';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { useToast } from '@fastgpt/web/hooks/useToast';
import { useRouter } from 'next/router';
-import { TabEnum } from '../../../index';
+import { TabEnum } from '../../../../../pages/dataset/detail/index';
import {
postCreateDatasetApiDatasetCollection,
postCreateDatasetCsvTableCollection,
diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/FileSelector.tsx b/projects/app/src/pageComponents/dataset/detail/Import/components/FileSelector.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/components/FileSelector.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/components/FileSelector.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/FileSourceSelector.tsx b/projects/app/src/pageComponents/dataset/detail/Import/components/FileSourceSelector.tsx
similarity index 96%
rename from projects/app/src/pages/dataset/detail/components/Import/components/FileSourceSelector.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/components/FileSourceSelector.tsx
index 604f2a9de6d1..293bf24375b1 100644
--- a/projects/app/src/pages/dataset/detail/components/Import/components/FileSourceSelector.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/Import/components/FileSourceSelector.tsx
@@ -4,7 +4,7 @@ import { ModalBody, ModalFooter, Button } from '@chakra-ui/react';
import { useTranslation } from 'next-i18next';
import LeftRadio from '@fastgpt/web/components/common/Radio/LeftRadio';
import { useRouter } from 'next/router';
-import { TabEnum } from '../../..';
+import { TabEnum } from '../../../../../pages/dataset/detail';
import { ImportDataSourceEnum } from '@fastgpt/global/core/dataset/constants';
const FileModeSelector = ({ onClose }: { onClose: () => void }) => {
diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/Preview.tsx b/projects/app/src/pageComponents/dataset/detail/Import/components/Preview.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/components/Preview.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/components/Preview.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/PreviewChunks.tsx b/projects/app/src/pageComponents/dataset/detail/Import/components/PreviewChunks.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/components/PreviewChunks.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/components/PreviewChunks.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/PreviewRawText.tsx b/projects/app/src/pageComponents/dataset/detail/Import/components/PreviewRawText.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/components/PreviewRawText.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/components/PreviewRawText.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/RenderFiles.tsx b/projects/app/src/pageComponents/dataset/detail/Import/components/RenderFiles.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/components/RenderFiles.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/components/RenderFiles.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/APIDataset.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/APIDataset.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/APIDataset.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/APIDataset.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/ExternalFile.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/ExternalFile.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/ExternalFile.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/ExternalFile.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/FileCustomText.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/FileCustomText.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/FileCustomText.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/FileCustomText.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/FileLink.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/FileLink.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/FileLink.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/FileLink.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/FileLocal.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/FileLocal.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/FileLocal.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/FileLocal.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/ReTraining.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/ReTraining.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/ReTraining.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/ReTraining.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/diffSource/TableLocal.tsx b/projects/app/src/pageComponents/dataset/detail/Import/diffSource/TableLocal.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/diffSource/TableLocal.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/diffSource/TableLocal.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/index.tsx b/projects/app/src/pageComponents/dataset/detail/Import/index.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/index.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/index.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Import/type.d.ts b/projects/app/src/pageComponents/dataset/detail/Import/type.d.ts
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/type.d.ts
rename to projects/app/src/pageComponents/dataset/detail/Import/type.d.ts
diff --git a/projects/app/src/pages/dataset/detail/components/Import/utils.tsx b/projects/app/src/pageComponents/dataset/detail/Import/utils.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/Import/utils.tsx
rename to projects/app/src/pageComponents/dataset/detail/Import/utils.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Info/components/EditApiServiceModal.tsx b/projects/app/src/pageComponents/dataset/detail/Info/components/EditApiServiceModal.tsx
similarity index 97%
rename from projects/app/src/pages/dataset/detail/components/Info/components/EditApiServiceModal.tsx
rename to projects/app/src/pageComponents/dataset/detail/Info/components/EditApiServiceModal.tsx
index d46a6ee81f72..57fee7f5953d 100644
--- a/projects/app/src/pages/dataset/detail/components/Info/components/EditApiServiceModal.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/Info/components/EditApiServiceModal.tsx
@@ -6,7 +6,7 @@ import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { useForm } from 'react-hook-form';
import { useToast } from '@fastgpt/web/hooks/useToast';
import { APIFileServer, FeishuServer, YuqueServer } from '@fastgpt/global/core/dataset/apiDataset';
-import ApiDatasetForm from '@/pages/dataset/component/ApiDatasetForm';
+import ApiDatasetForm from '@/pageComponents/dataset/ApiDatasetForm';
import { useContextSelector } from 'use-context-selector';
import { DatasetPageContext } from '@/web/core/dataset/context/datasetPageContext';
import { datasetTypeCourseMap } from '@/web/core/dataset/constants';
diff --git a/projects/app/src/pages/dataset/detail/components/Info/index.tsx b/projects/app/src/pageComponents/dataset/detail/Info/index.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/detail/components/Info/index.tsx
rename to projects/app/src/pageComponents/dataset/detail/Info/index.tsx
index a91bd38c5bec..c35a0515b358 100644
--- a/projects/app/src/pages/dataset/detail/components/Info/index.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/Info/index.tsx
@@ -18,7 +18,7 @@ import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { DatasetPermissionList } from '@fastgpt/global/support/permission/dataset/constant';
-import MemberManager from '../../../component/MemberManager';
+import MemberManager from '../../MemberManager';
import {
getCollaboratorList,
postUpdateDatasetCollaborators,
diff --git a/projects/app/src/pages/dataset/detail/components/InputDataModal.tsx b/projects/app/src/pageComponents/dataset/detail/InputDataModal.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/InputDataModal.tsx
rename to projects/app/src/pageComponents/dataset/detail/InputDataModal.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/MetaDataCard.tsx b/projects/app/src/pageComponents/dataset/detail/MetaDataCard.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/MetaDataCard.tsx
rename to projects/app/src/pageComponents/dataset/detail/MetaDataCard.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/NavBar.tsx b/projects/app/src/pageComponents/dataset/detail/NavBar.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/NavBar.tsx
rename to projects/app/src/pageComponents/dataset/detail/NavBar.tsx
diff --git a/projects/app/src/pages/dataset/detail/components/Test.tsx b/projects/app/src/pageComponents/dataset/detail/Test.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/detail/components/Test.tsx
rename to projects/app/src/pageComponents/dataset/detail/Test.tsx
index 1e65f5d78889..14c217d54750 100644
--- a/projects/app/src/pages/dataset/detail/components/Test.tsx
+++ b/projects/app/src/pageComponents/dataset/detail/Test.tsx
@@ -1,6 +1,5 @@
import React, { useEffect, useMemo, useState } from 'react';
import { Box, Textarea, Button, Flex, useTheme, useDisclosure } from '@chakra-ui/react';
-import { useDatasetStore } from '@/web/core/dataset/store/dataset';
import { useSearchTestStore, SearchTestStoreItemType } from '@/web/core/dataset/store/searchTest';
import { postSearchText } from '@/web/core/dataset/api';
import MyIcon from '@fastgpt/web/components/common/Icon';
diff --git a/projects/app/src/pages/dataset/detail/components/styles.module.scss b/projects/app/src/pageComponents/dataset/detail/styles.module.scss
similarity index 100%
rename from projects/app/src/pages/dataset/detail/components/styles.module.scss
rename to projects/app/src/pageComponents/dataset/detail/styles.module.scss
diff --git a/projects/app/src/pages/dataset/list/component/CreateModal.tsx b/projects/app/src/pageComponents/dataset/list/CreateModal.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/list/component/CreateModal.tsx
rename to projects/app/src/pageComponents/dataset/list/CreateModal.tsx
index b4b73985990a..5aff9f8616ed 100644
--- a/projects/app/src/pages/dataset/list/component/CreateModal.tsx
+++ b/projects/app/src/pageComponents/dataset/list/CreateModal.tsx
@@ -20,7 +20,7 @@ import ComplianceTip from '@/components/common/ComplianceTip/index';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { getDocPath } from '@/web/common/system/doc';
import { datasetTypeCourseMap } from '@/web/core/dataset/constants';
-import ApiDatasetForm from '../../component/ApiDatasetForm';
+import ApiDatasetForm from '../ApiDatasetForm';
export type CreateDatasetType =
| DatasetTypeEnum.dataset
diff --git a/projects/app/src/pages/dataset/list/component/List.tsx b/projects/app/src/pageComponents/dataset/list/List.tsx
similarity index 99%
rename from projects/app/src/pages/dataset/list/component/List.tsx
rename to projects/app/src/pageComponents/dataset/list/List.tsx
index db711e176b87..19c5c77a2ca0 100644
--- a/projects/app/src/pages/dataset/list/component/List.tsx
+++ b/projects/app/src/pageComponents/dataset/list/List.tsx
@@ -16,7 +16,7 @@ import { downloadFetch } from '@/web/common/system/utils';
import MyTooltip from '@fastgpt/web/components/common/MyTooltip';
import dynamic from 'next/dynamic';
import { useContextSelector } from 'use-context-selector';
-import { DatasetsContext } from '../context';
+import { DatasetsContext } from '../../../pages/dataset/list/context';
import { DatasetPermissionList } from '@fastgpt/global/support/permission/dataset/constant';
import ConfigPerModal from '@/components/support/permission/ConfigPerModal';
import {
diff --git a/projects/app/src/pages/dataset/list/component/SideTag.tsx b/projects/app/src/pageComponents/dataset/list/SideTag.tsx
similarity index 100%
rename from projects/app/src/pages/dataset/list/component/SideTag.tsx
rename to projects/app/src/pageComponents/dataset/list/SideTag.tsx
diff --git a/projects/app/src/pages/login/components/ForgetPasswordForm.tsx b/projects/app/src/pageComponents/login/ForgetPasswordForm.tsx
similarity index 100%
rename from projects/app/src/pages/login/components/ForgetPasswordForm.tsx
rename to projects/app/src/pageComponents/login/ForgetPasswordForm.tsx
diff --git a/projects/app/src/pages/login/components/LoginForm/components/FormLayout.tsx b/projects/app/src/pageComponents/login/LoginForm/FormLayout.tsx
similarity index 100%
rename from projects/app/src/pages/login/components/LoginForm/components/FormLayout.tsx
rename to projects/app/src/pageComponents/login/LoginForm/FormLayout.tsx
diff --git a/projects/app/src/pages/login/components/LoginForm/LoginForm.tsx b/projects/app/src/pageComponents/login/LoginForm/LoginForm.tsx
similarity index 99%
rename from projects/app/src/pages/login/components/LoginForm/LoginForm.tsx
rename to projects/app/src/pageComponents/login/LoginForm/LoginForm.tsx
index ad365e4b2b26..4fad6e61c8e3 100644
--- a/projects/app/src/pages/login/components/LoginForm/LoginForm.tsx
+++ b/projects/app/src/pageComponents/login/LoginForm/LoginForm.tsx
@@ -8,7 +8,7 @@ import { useToast } from '@fastgpt/web/hooks/useToast';
import { useSystemStore } from '@/web/common/system/useSystemStore';
import { getDocPath } from '@/web/common/system/doc';
import { useTranslation } from 'next-i18next';
-import FormLayout from './components/FormLayout';
+import FormLayout from './FormLayout';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
interface Props {
diff --git a/projects/app/src/pages/login/components/LoginForm/WechatForm.tsx b/projects/app/src/pageComponents/login/LoginForm/WechatForm.tsx
similarity index 97%
rename from projects/app/src/pages/login/components/LoginForm/WechatForm.tsx
rename to projects/app/src/pageComponents/login/LoginForm/WechatForm.tsx
index 4d08509f9c04..d1d8c2c2c77e 100644
--- a/projects/app/src/pages/login/components/LoginForm/WechatForm.tsx
+++ b/projects/app/src/pageComponents/login/LoginForm/WechatForm.tsx
@@ -6,7 +6,7 @@ import { useQuery } from '@tanstack/react-query';
import { getWXLoginQR, getWXLoginResult } from '@/web/support/user/api';
import { getErrText } from '@fastgpt/global/common/error/utils';
import { useToast } from '@fastgpt/web/hooks/useToast';
-import FormLayout from './components/FormLayout';
+import FormLayout from './FormLayout';
import { useTranslation } from 'next-i18next';
import Loading from '@fastgpt/web/components/common/MyLoading';
import MyImage from '@fastgpt/web/components/common/Image/MyImage';
diff --git a/projects/app/src/pages/login/components/RegisterForm.tsx b/projects/app/src/pageComponents/login/RegisterForm.tsx
similarity index 100%
rename from projects/app/src/pages/login/components/RegisterForm.tsx
rename to projects/app/src/pageComponents/login/RegisterForm.tsx
diff --git a/projects/app/src/pages/price/components/ExtraPlan.tsx b/projects/app/src/pageComponents/price/ExtraPlan.tsx
similarity index 100%
rename from projects/app/src/pages/price/components/ExtraPlan.tsx
rename to projects/app/src/pageComponents/price/ExtraPlan.tsx
diff --git a/projects/app/src/pages/price/components/FAQ.tsx b/projects/app/src/pageComponents/price/FAQ.tsx
similarity index 100%
rename from projects/app/src/pages/price/components/FAQ.tsx
rename to projects/app/src/pageComponents/price/FAQ.tsx
diff --git a/projects/app/src/pages/price/components/Points.tsx b/projects/app/src/pageComponents/price/Points.tsx
similarity index 100%
rename from projects/app/src/pages/price/components/Points.tsx
rename to projects/app/src/pageComponents/price/Points.tsx
diff --git a/projects/app/src/pages/price/components/Standard.tsx b/projects/app/src/pageComponents/price/Standard.tsx
similarity index 100%
rename from projects/app/src/pages/price/components/Standard.tsx
rename to projects/app/src/pageComponents/price/Standard.tsx
diff --git a/projects/app/src/pages/toolkit/components/PluginCard.tsx b/projects/app/src/pageComponents/toolkit/PluginCard.tsx
similarity index 100%
rename from projects/app/src/pages/toolkit/components/PluginCard.tsx
rename to projects/app/src/pageComponents/toolkit/PluginCard.tsx
diff --git a/projects/app/src/pages/account/apikey.tsx b/projects/app/src/pages/account/apikey.tsx
index eef200b5123a..0294a00947a6 100644
--- a/projects/app/src/pages/account/apikey.tsx
+++ b/projects/app/src/pages/account/apikey.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import ApiKeyTable from '@/components/support/apikey/Table';
import { useTranslation } from 'next-i18next';
import { Box } from '@chakra-ui/react';
-import AccountContainer, { TabEnum } from './components/AccountContainer';
+import AccountContainer, { TabEnum } from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
const ApiKey = () => {
diff --git a/projects/app/src/pages/account/bill/index.tsx b/projects/app/src/pages/account/bill/index.tsx
index 477baa082696..5bda548de4a9 100644
--- a/projects/app/src/pages/account/bill/index.tsx
+++ b/projects/app/src/pages/account/bill/index.tsx
@@ -3,9 +3,9 @@ import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs';
import dynamic from 'next/dynamic';
import { useState } from 'react';
import { useTranslation } from 'next-i18next';
-import ApplyInvoiceModal from './components/ApplyInvoiceModal';
+import ApplyInvoiceModal from '@/pageComponents/account/bill/ApplyInvoiceModal';
import { useRouter } from 'next/router';
-import AccountContainer, { TabEnum } from '../components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
export enum InvoiceTabEnum {
@@ -14,9 +14,9 @@ export enum InvoiceTabEnum {
invoiceHeader = 'invoiceHeader'
}
-const BillTable = dynamic(() => import('./components/BillTable'));
-const InvoiceHeaderForm = dynamic(() => import('./components/InvoiceHeaderForm'));
-const InvoiceTable = dynamic(() => import('./components/InvoiceTable'));
+const BillTable = dynamic(() => import('@/pageComponents/account/bill/BillTable'));
+const InvoiceHeaderForm = dynamic(() => import('@/pageComponents/account/bill/InvoiceHeaderForm'));
+const InvoiceTable = dynamic(() => import('@/pageComponents/account/bill/InvoiceTable'));
const BillAndInvoice = () => {
const { t } = useTranslation();
const router = useRouter();
diff --git a/projects/app/src/pages/account/info/index.tsx b/projects/app/src/pages/account/info/index.tsx
index 1adbff2167d6..8d516f971dde 100644
--- a/projects/app/src/pages/account/info/index.tsx
+++ b/projects/app/src/pages/account/info/index.tsx
@@ -38,14 +38,17 @@ import StandardPlanContentList from '@/components/support/wallet/StandardPlanCon
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
import { getWebReqUrl } from '@fastgpt/web/common/system/utils';
-import AccountContainer from '../components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { useRouter } from 'next/router';
-import TeamSelector from '../components/TeamSelector';
+import TeamSelector from '@/pageComponents/account/TeamSelector';
-const StandDetailModal = dynamic(() => import('./components/standardDetailModal'), { ssr: false });
-const ConversionModal = dynamic(() => import('./components/ConversionModal'));
-const UpdatePswModal = dynamic(() => import('./components/UpdatePswModal'));
+const StandDetailModal = dynamic(
+ () => import('@/pageComponents/account/info/standardDetailModal'),
+ { ssr: false }
+);
+const ConversionModal = dynamic(() => import('@/pageComponents/account/info/ConversionModal'));
+const UpdatePswModal = dynamic(() => import('@/pageComponents/account/info/UpdatePswModal'));
const UpdateNotification = dynamic(
() => import('@/components/support/user/inform/UpdateNotificationModal')
);
diff --git a/projects/app/src/pages/account/inform.tsx b/projects/app/src/pages/account/inform.tsx
index d0612c3385f7..e2fa08c1bc02 100644
--- a/projects/app/src/pages/account/inform.tsx
+++ b/projects/app/src/pages/account/inform.tsx
@@ -6,7 +6,7 @@ import { usePagination } from '@fastgpt/web/hooks/usePagination';
import { useLoading } from '@fastgpt/web/hooks/useLoading';
import { useTranslation } from 'next-i18next';
import EmptyTip from '@fastgpt/web/components/common/EmptyTip';
-import AccountContainer from './components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
const InformTable = () => {
diff --git a/projects/app/src/pages/account/model/index.tsx b/projects/app/src/pages/account/model/index.tsx
index b912b93052d5..4c796bb0024d 100644
--- a/projects/app/src/pages/account/model/index.tsx
+++ b/projects/app/src/pages/account/model/index.tsx
@@ -1,6 +1,6 @@
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import React, { useMemo, useState } from 'react';
-import AccountContainer from '../components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { Box, Flex } from '@chakra-ui/react';
import ModelTable from '@/components/core/ai/ModelTable';
import { useUserStore } from '@/web/support/user/useUserStore';
@@ -8,7 +8,7 @@ import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs';
import { useTranslation } from 'next-i18next';
import dynamic from 'next/dynamic';
-const ModelConfigTable = dynamic(() => import('./components/ModelConfigTable'));
+const ModelConfigTable = dynamic(() => import('@/pageComponents/account/model/ModelConfigTable'));
type TabType = 'model' | 'config' | 'channel';
diff --git a/projects/app/src/pages/account/promotion.tsx b/projects/app/src/pages/account/promotion.tsx
index 306853ab04cf..5933737d74af 100644
--- a/projects/app/src/pages/account/promotion.tsx
+++ b/projects/app/src/pages/account/promotion.tsx
@@ -25,7 +25,7 @@ import { usePagination } from '@fastgpt/web/hooks/usePagination';
import { useLoading } from '@fastgpt/web/hooks/useLoading';
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
import EmptyTip from '@fastgpt/web/components/common/EmptyTip';
-import AccountContainer from './components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
const Promotion = () => {
diff --git a/projects/app/src/pages/account/setting.tsx b/projects/app/src/pages/account/setting.tsx
index b276ada5a900..2660fd5c3c5e 100644
--- a/projects/app/src/pages/account/setting.tsx
+++ b/projects/app/src/pages/account/setting.tsx
@@ -9,7 +9,7 @@ import { useForm } from 'react-hook-form';
import { UserUpdateParams } from '@/types/user';
import TimezoneSelect from '@fastgpt/web/components/common/MySelect/TimezoneSelect';
import I18nLngSelector from '@/components/Select/I18nLngSelector';
-import AccountContainer from './components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
const Individuation = () => {
diff --git a/projects/app/src/pages/account/team/index.tsx b/projects/app/src/pages/account/team/index.tsx
index f8e41ef21425..9d70cea81924 100644
--- a/projects/app/src/pages/account/team/index.tsx
+++ b/projects/app/src/pages/account/team/index.tsx
@@ -1,9 +1,9 @@
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
-import AccountContainer from '../components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { Box, Flex } from '@chakra-ui/react';
import Icon from '@fastgpt/web/components/common/Icon';
import { useTranslation } from 'next-i18next';
-import TeamSelector from '../components/TeamSelector';
+import TeamSelector from '@/pageComponents/account/TeamSelector';
import { useUserStore } from '@/web/support/user/useUserStore';
import React, { useMemo } from 'react';
import { useContextSelector } from 'use-context-selector';
diff --git a/projects/app/src/pages/account/thirdParty/index.tsx b/projects/app/src/pages/account/thirdParty/index.tsx
index eb73ce2d5bc7..392af56c1fb4 100644
--- a/projects/app/src/pages/account/thirdParty/index.tsx
+++ b/projects/app/src/pages/account/thirdParty/index.tsx
@@ -1,4 +1,4 @@
-import AccountContainer from '../components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { Box, Flex, Grid, Progress, useDisclosure } from '@chakra-ui/react';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useTranslation } from 'next-i18next';
@@ -7,7 +7,7 @@ import { useUserStore } from '@/web/support/user/useUserStore';
import { TeamMemberRoleEnum } from '@fastgpt/global/support/user/team/constant';
import dynamic from 'next/dynamic';
import { useState, useMemo } from 'react';
-import WorkflowVariableModal from './components/WorkflowVariableModal';
+import WorkflowVariableModal from '@/pageComponents/account/thirdParty/WorkflowVariableModal';
import { useToast } from '@fastgpt/web/hooks/useToast';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
@@ -16,7 +16,9 @@ import type { checkUsageResponse } from '@/pages/api/support/user/team/thirtdPar
import MyBox from '@fastgpt/web/components/common/MyBox';
const LafAccountModal = dynamic(() => import('@/components/support/laf/LafAccountModal'));
-const OpenAIAccountModal = dynamic(() => import('./components/OpenAIAccountModal'));
+const OpenAIAccountModal = dynamic(
+ () => import('@/pageComponents/account/thirdParty/OpenAIAccountModal')
+);
export type ThirdPartyAccountType = {
name: string;
diff --git a/projects/app/src/pages/account/usage/index.tsx b/projects/app/src/pages/account/usage/index.tsx
index 856fcb85c4ce..c09c32fa3038 100644
--- a/projects/app/src/pages/account/usage/index.tsx
+++ b/projects/app/src/pages/account/usage/index.tsx
@@ -8,7 +8,7 @@ import { addDays, startOfMonth, startOfWeek } from 'date-fns';
import { useTranslation } from 'next-i18next';
import { useUserStore } from '@/web/support/user/useUserStore';
import Avatar from '@fastgpt/web/components/common/Avatar';
-import AccountContainer from '../components/AccountContainer';
+import AccountContainer from '@/pageComponents/account/AccountContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { useScrollPagination } from '@fastgpt/web/hooks/useScrollPagination';
import { getTeamMembers } from '@/web/support/user/team/api';
@@ -21,10 +21,10 @@ import MySelect from '@fastgpt/web/components/common/MySelect';
import { useRouter } from 'next/router';
import dynamic from 'next/dynamic';
-import UsageTableList from './components/UsageTable';
-import { UnitType } from './type';
+import UsageTableList from '@/pageComponents/account/usage/UsageTable';
+import { UnitType } from '@/pageComponents/account/usage/type';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
-const UsageDashboard = dynamic(() => import('./components/Dashboard'));
+const UsageDashboard = dynamic(() => import('@/pageComponents/account/usage/Dashboard'));
export enum UsageTabEnum {
detail = 'detail',
diff --git a/projects/app/src/pages/app/detail/index.tsx b/projects/app/src/pages/app/detail/index.tsx
index 54da870e5f19..9fad08f51f40 100644
--- a/projects/app/src/pages/app/detail/index.tsx
+++ b/projects/app/src/pages/app/detail/index.tsx
@@ -5,19 +5,19 @@ import Loading from '@fastgpt/web/components/common/MyLoading';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import NextHead from '@/components/common/NextHead';
import { useContextSelector } from 'use-context-selector';
-import AppContextProvider, { AppContext } from './components/context';
+import AppContextProvider, { AppContext } from '@/pageComponents/app/detail/context';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
import { useChatStore } from '@/web/core/chat/context/useChatStore';
-const SimpleEdit = dynamic(() => import('./components/SimpleApp'), {
+const SimpleEdit = dynamic(() => import('@/pageComponents/app/detail/SimpleApp'), {
ssr: false,
loading: () =>
});
-const Workflow = dynamic(() => import('./components/Workflow'), {
+const Workflow = dynamic(() => import('@/pageComponents/app/detail/Workflow'), {
ssr: false,
loading: () =>
});
-const Plugin = dynamic(() => import('./components/Plugin'), {
+const Plugin = dynamic(() => import('@/pageComponents/app/detail/Plugin'), {
ssr: false,
loading: () =>
});
diff --git a/projects/app/src/pages/app/list/index.tsx b/projects/app/src/pages/app/list/index.tsx
index 118674d884e2..86d7da1ee18b 100644
--- a/projects/app/src/pages/app/list/index.tsx
+++ b/projects/app/src/pages/app/list/index.tsx
@@ -11,7 +11,7 @@ import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { postCreateAppFolder } from '@/web/core/app/api/app';
import type { EditFolderFormType } from '@fastgpt/web/components/common/MyModal/EditFolderModal';
import { useContextSelector } from 'use-context-selector';
-import AppListContextProvider, { AppListContext } from './components/context';
+import AppListContextProvider, { AppListContext } from '@/pageComponents/app/list/context';
import FolderPath from '@/components/common/folder/Path';
import { useRouter } from 'next/router';
import FolderSlideCard from '@/components/common/folder/SlideCard';
@@ -22,22 +22,22 @@ import {
getCollaboratorList,
postUpdateAppCollaborators
} from '@/web/core/app/api/collaborator';
-import type { CreateAppType } from './components/CreateModal';
+import type { CreateAppType } from '@/pageComponents/app/list/CreateModal';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
import MyBox from '@fastgpt/web/components/common/MyBox';
import LightRowTabs from '@fastgpt/web/components/common/Tabs/LightRowTabs';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
import MyIcon from '@fastgpt/web/components/common/Icon';
-import TemplateMarketModal from './components/TemplateMarketModal';
+import TemplateMarketModal from '@/pageComponents/app/list/TemplateMarketModal';
import MyImage from '@fastgpt/web/components/common/Image/MyImage';
-import JsonImportModal from './components/JsonImportModal';
+import JsonImportModal from '@/pageComponents/app/list/JsonImportModal';
-const CreateModal = dynamic(() => import('./components/CreateModal'));
+const CreateModal = dynamic(() => import('@/pageComponents/app/list/CreateModal'));
const EditFolderModal = dynamic(
() => import('@fastgpt/web/components/common/MyModal/EditFolderModal')
);
-const HttpEditModal = dynamic(() => import('./components/HttpPluginEditModal'));
-const List = dynamic(() => import('./components/List'));
+const HttpEditModal = dynamic(() => import('@/pageComponents/app/list/HttpPluginEditModal'));
+const List = dynamic(() => import('@/pageComponents/app/list/List'));
const MyApps = () => {
const { t } = useTranslation();
diff --git a/projects/app/src/pages/chat/index.module.scss b/projects/app/src/pages/chat/index.module.scss
deleted file mode 100644
index aea66fef6a7a..000000000000
--- a/projects/app/src/pages/chat/index.module.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-.newChat {
- .modelListContainer {
- height: 0;
- overflow: hidden;
- }
- .modelList {
- border-radius: 6px;
- }
- &:hover {
- .modelListContainer {
- height: 60vh;
- }
- .modelList {
- box-shadow: 0 0 5px rgba($color: #000000, $alpha: 0.05);
- border: 1px solid #dee0e2;
- }
- }
-}
diff --git a/projects/app/src/pages/chat/index.tsx b/projects/app/src/pages/chat/index.tsx
index e574d0ff0dab..f9339b1d27de 100644
--- a/projects/app/src/pages/chat/index.tsx
+++ b/projects/app/src/pages/chat/index.tsx
@@ -11,9 +11,9 @@ import { useTranslation } from 'next-i18next';
import type { StartChatFnProps } from '@/components/core/chat/ChatContainer/type';
import PageContainer from '@/components/PageContainer';
import SideBar from '@/components/SideBar';
-import ChatHistorySlider from './components/ChatHistorySlider';
-import SliderApps from './components/SliderApps';
-import ChatHeader from './components/ChatHeader';
+import ChatHistorySlider from '@/pageComponents/chat/ChatHistorySlider';
+import SliderApps from '@/pageComponents/chat/SliderApps';
+import ChatHeader from '@/pageComponents/chat/ChatHeader';
import { useUserStore } from '@/web/support/user/useUserStore';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { getChatTitleFromChatMessage } from '@fastgpt/global/core/chat/utils';
@@ -37,7 +37,7 @@ import ChatRecordContextProvider, {
ChatRecordContext
} from '@/web/core/chat/context/chatRecordContext';
-const CustomPluginRunBox = dynamic(() => import('./components/CustomPluginRunBox'));
+const CustomPluginRunBox = dynamic(() => import('@/pageComponents/chat/CustomPluginRunBox'));
const Chat = ({ myApps }: { myApps: AppListItemType[] }) => {
const router = useRouter();
diff --git a/projects/app/src/pages/chat/share.tsx b/projects/app/src/pages/chat/share.tsx
index 2dd85c879525..7f010f3e65d3 100644
--- a/projects/app/src/pages/chat/share.tsx
+++ b/projects/app/src/pages/chat/share.tsx
@@ -9,8 +9,8 @@ import ChatBox from '@/components/core/chat/ChatContainer/ChatBox';
import type { StartChatFnProps } from '@/components/core/chat/ChatContainer/type';
import PageContainer from '@/components/PageContainer';
-import ChatHeader from './components/ChatHeader';
-import ChatHistorySlider from './components/ChatHistorySlider';
+import ChatHeader from '@/pageComponents/chat/ChatHeader';
+import ChatHistorySlider from '@/pageComponents/chat/ChatHistorySlider';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { useTranslation } from 'next-i18next';
import { getInitOutLinkChatInfo } from '@/web/core/chat/api';
@@ -38,7 +38,7 @@ import { ChatSourceEnum } from '@fastgpt/global/core/chat/constants';
import { useI18nLng } from '@fastgpt/web/hooks/useI18n';
import { AppSchema } from '@fastgpt/global/core/app/type';
-const CustomPluginRunBox = dynamic(() => import('./components/CustomPluginRunBox'));
+const CustomPluginRunBox = dynamic(() => import('@/pageComponents/chat/CustomPluginRunBox'));
type Props = {
appId: string;
diff --git a/projects/app/src/pages/chat/team.tsx b/projects/app/src/pages/chat/team.tsx
index db0c5af31b1b..cc0b9409791c 100644
--- a/projects/app/src/pages/chat/team.tsx
+++ b/projects/app/src/pages/chat/team.tsx
@@ -6,15 +6,15 @@ import { Box, Flex, Drawer, DrawerOverlay, DrawerContent, useTheme } from '@chak
import SideBar from '@/components/SideBar';
import PageContainer from '@/components/PageContainer';
import { getMyTokensApps } from '@/web/core/chat/api';
-import ChatHistorySlider from './components/ChatHistorySlider';
-import ChatHeader from './components/ChatHeader';
+import ChatHistorySlider from '@/pageComponents/chat/ChatHistorySlider';
+import ChatHeader from '@/pageComponents/chat/ChatHeader';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { useTranslation } from 'next-i18next';
import ChatBox from '@/components/core/chat/ChatContainer/ChatBox';
import type { StartChatFnProps } from '@/components/core/chat/ChatContainer/type';
import { streamFetch } from '@/web/common/api/fetch';
import { getChatTitleFromChatMessage } from '@fastgpt/global/core/chat/utils';
-import SliderApps from './components/SliderApps';
+import SliderApps from '@/pageComponents/chat/SliderApps';
import { GPTMessages2Chats } from '@fastgpt/global/core/chat/adapt';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import ChatContextProvider, { ChatContext } from '@/web/core/chat/context/chatContext';
@@ -33,7 +33,7 @@ import ChatRecordContextProvider, {
import { useChatStore } from '@/web/core/chat/context/useChatStore';
import { useMount } from 'ahooks';
import { ChatSourceEnum } from '@fastgpt/global/core/chat/constants';
-const CustomPluginRunBox = dynamic(() => import('./components/CustomPluginRunBox'));
+const CustomPluginRunBox = dynamic(() => import('@/pageComponents/chat/CustomPluginRunBox'));
type Props = { appId: string; chatId: string; teamId: string; teamToken: string };
diff --git a/projects/app/src/pages/dataset/detail/index.tsx b/projects/app/src/pages/dataset/detail/index.tsx
index 809ac15dd306..50bf043a780f 100644
--- a/projects/app/src/pages/dataset/detail/index.tsx
+++ b/projects/app/src/pages/dataset/detail/index.tsx
@@ -7,24 +7,26 @@ import dynamic from 'next/dynamic';
import PageContainer from '@/components/PageContainer';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { useTranslation } from 'next-i18next';
-import MetaDataCard from './components/MetaDataCard';
-import NavBar from './components/NavBar';
+import MetaDataCard from '@/pageComponents/dataset/detail/MetaDataCard';
+import NavBar from '@/pageComponents/dataset/detail/NavBar';
import MyBox from '@fastgpt/web/components/common/MyBox';
import {
DatasetPageContext,
DatasetPageContextProvider
} from '@/web/core/dataset/context/datasetPageContext';
-import CollectionPageContextProvider from './components/CollectionCard/Context';
+import CollectionPageContextProvider from '@/pageComponents/dataset/detail/CollectionCard/Context';
import { useContextSelector } from 'use-context-selector';
import NextHead from '@/components/common/NextHead';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
-const CollectionCard = dynamic(() => import('./components/CollectionCard/index'));
-const DataCard = dynamic(() => import('./components/DataCard'));
-const Test = dynamic(() => import('./components/Test'));
-const Info = dynamic(() => import('./components/Info/index'));
-const Import = dynamic(() => import('./components/Import'));
+const CollectionCard = dynamic(
+ () => import('@/pageComponents/dataset/detail/CollectionCard/index')
+);
+const DataCard = dynamic(() => import('@/pageComponents/dataset/detail/DataCard'));
+const Test = dynamic(() => import('@/pageComponents/dataset/detail/Test'));
+const Info = dynamic(() => import('@/pageComponents/dataset/detail/Info/index'));
+const Import = dynamic(() => import('@/pageComponents/dataset/detail/Import'));
export enum TabEnum {
dataCard = 'dataCard',
diff --git a/projects/app/src/pages/dataset/list/index.tsx b/projects/app/src/pages/dataset/list/index.tsx
index a1f96c350fbc..f50cd52ba99c 100644
--- a/projects/app/src/pages/dataset/list/index.tsx
+++ b/projects/app/src/pages/dataset/list/index.tsx
@@ -4,7 +4,7 @@ import { useRouter } from 'next/router';
import { useTranslation } from 'next-i18next';
import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import ParentPaths from '@/components/common/folder/Path';
-import List from './component/List';
+import List from '@/pageComponents/dataset/list/List';
import { DatasetsContext } from './context';
import DatasetContextProvider from './context';
import { useContextSelector } from 'use-context-selector';
@@ -24,7 +24,7 @@ import {
getCollaboratorList
} from '@/web/core/dataset/api/collaborator';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
-import { CreateDatasetType } from './component/CreateModal';
+import { CreateDatasetType } from '@/pageComponents/dataset/list/CreateModal';
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
import { useToast } from '@fastgpt/web/hooks/useToast';
import MyBox from '@fastgpt/web/components/common/MyBox';
@@ -34,7 +34,7 @@ const EditFolderModal = dynamic(
() => import('@fastgpt/web/components/common/MyModal/EditFolderModal')
);
-const CreateModal = dynamic(() => import('./component/CreateModal'));
+const CreateModal = dynamic(() => import('@/pageComponents/dataset/list/CreateModal'));
const Dataset = () => {
const { isPc } = useSystem();
diff --git a/projects/app/src/pages/login/index.tsx b/projects/app/src/pages/login/index.tsx
index fd12521db56a..44cd6c73c88a 100644
--- a/projects/app/src/pages/login/index.tsx
+++ b/projects/app/src/pages/login/index.tsx
@@ -28,11 +28,11 @@ import { useSystem } from '@fastgpt/web/hooks/useSystem';
import { GET } from '@/web/common/api/request';
import { getDocPath } from '@/web/common/system/doc';
import { getWebReqUrl } from '@fastgpt/web/common/system/utils';
-import LoginForm from './components/LoginForm/LoginForm';
+import LoginForm from '@/pageComponents/login/LoginForm/LoginForm';
-const RegisterForm = dynamic(() => import('./components/RegisterForm'));
-const ForgetPasswordForm = dynamic(() => import('./components/ForgetPasswordForm'));
-const WechatForm = dynamic(() => import('./components/LoginForm/WechatForm'));
+const RegisterForm = dynamic(() => import('@/pageComponents/login/RegisterForm'));
+const ForgetPasswordForm = dynamic(() => import('@/pageComponents/login/ForgetPasswordForm'));
+const WechatForm = dynamic(() => import('@/pageComponents/login/LoginForm/WechatForm'));
const CommunityModal = dynamic(() => import('@/components/CommunityModal'));
const ipDetectURL = 'https://qifu-api.baidubce.com/ip/local/geo/v1/district';
diff --git a/projects/app/src/pages/price/index.tsx b/projects/app/src/pages/price/index.tsx
index ff5c065eefad..53f9965b561e 100644
--- a/projects/app/src/pages/price/index.tsx
+++ b/projects/app/src/pages/price/index.tsx
@@ -3,12 +3,11 @@ import { serviceSideProps } from '@fastgpt/web/common/system/nextjs';
import { Box, Flex, HStack, VStack } from '@chakra-ui/react';
import { useUserStore } from '@/web/support/user/useUserStore';
import { getTeamPlanStatus } from '@/web/support/user/team/api';
-import { useQuery } from '@tanstack/react-query';
-import StandardPlan from './components/Standard';
-import ExtraPlan from './components/ExtraPlan';
-import PointsCard from './components/Points';
-import FAQ from './components/FAQ';
+import StandardPlan from '@/pageComponents/price/Standard';
+import ExtraPlan from '@/pageComponents/price/ExtraPlan';
+import PointsCard from '@/pageComponents/price/Points';
+import FAQ from '@/pageComponents/price/FAQ';
import { useTranslation } from 'next-i18next';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useSystemStore } from '@/web/common/system/useSystemStore';
diff --git a/projects/app/src/pages/toolkit/index.tsx b/projects/app/src/pages/toolkit/index.tsx
index 3b15815f770a..9dcea82a3b97 100644
--- a/projects/app/src/pages/toolkit/index.tsx
+++ b/projects/app/src/pages/toolkit/index.tsx
@@ -4,7 +4,7 @@ import { Box, Flex, Grid, useDisclosure } from '@chakra-ui/react';
import Avatar from '@fastgpt/web/components/common/Avatar';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { useMemo, useState } from 'react';
-import PluginCard from './components/PluginCard';
+import PluginCard from '@/pageComponents/toolkit/PluginCard';
import { i18nT } from '@fastgpt/web/i18n/utils';
import { useTranslation } from 'next-i18next';
import { useRouter } from 'next/router';