feat(web): Add Feishu and Yuque knowledge base sync support

- Add API endpoints for creating sync tasks and checking Feishu/Yuque authentication
- Add new sync-related UI components for Feishu and Yuque platform integration
- Add internationalization strings for sync operations and authentication messages in English and Chinese
- Add form fields for Feishu (App ID, App Secret, Folder Token) and Yuque (User ID, Token) credentials
- Add web crawler configuration fields (entry URL, max pages, delay, timeout, user agent)
- Add sync status messages (syncing, success, completed, timeout, failed, error states)
- Update CreateDataset component to support new data source types
- Update KnowledgeBase types to include new sync-related properties
- Enable users to synchronize knowledge base content from Feishu and Yuque platforms with proper authentication and error handling
This commit is contained in:
yujiangping
2026-02-06 17:19:56 +08:00
parent 6e0407f404
commit 1eb44defb6
8 changed files with 485 additions and 60 deletions

View File

@@ -597,6 +597,18 @@ export const en = {
last_at: 'Last Updated',
private: 'Private',
share: 'Share',
syncNow: 'Sync Now',
syncing: 'Syncing...',
syncSuccess: 'Sync started successfully',
syncCompleted: 'Sync completed, data loaded successfully',
syncTimeout: 'Sync timeout (1 minute), please try again later or check the sync status',
syncFailed: 'Sync failed',
syncError: 'Unable to sync, knowledge base not found',
yuqueAuthRequired: 'Please enter Yuque User ID and Token',
yuqueAuthSuccess: 'Yuque authentication successful',
feishuAuthRequired: 'Please enter Feishu App ID, App Secret and Folder Token',
feishuAuthSuccess: 'Feishu authentication successful',
authFailed: 'Authentication failed, please check your credentials',
recallTest: 'Recall Test',
testQuestion: 'Test Question',
doc_num: 'Document Number',
@@ -636,6 +648,7 @@ export const en = {
customText: 'Custom Text',
customContent: 'Custom Content',
createContentError: 'Failed to create custom content',
createLinkError: 'Failed to create link content',
manuallyInputText: 'Manually input a text as dataset',
importTemplate: 'Template Import',
importBackup: 'Backup Import',
@@ -835,6 +848,36 @@ export const en = {
embeddingRequired: 'Please select an embedding model',
nameRequired: 'Please enter a name',
modelRequired: 'Please select a model',
entryUrl: 'Entry URL',
entryUrlRequired: 'Please enter entry URL',
entryUrlInvalid: 'Please enter a valid URL',
maxPages: 'Max Pages',
maxPagesRequired: 'Please enter max pages',
delaySeconds: 'Delay Seconds',
delaySecondsRequired: 'Please enter delay seconds',
timeoutSeconds: 'Timeout Seconds',
timeoutSecondsRequired: 'Please enter timeout seconds',
userAgent: 'User Agent',
userAgentRequired: 'Please enter user agent',
platform: 'Platform',
platformRequired: 'Please select a platform',
yuque: 'Yuque',
feishu: 'Feishu',
yuqueUserId: 'User ID',
yuqueUserIdRequired: 'Please enter Yuque User ID',
yuqueUserIdPlaceholder: 'Enter your Yuque User ID',
yuqueToken: 'Token',
yuqueTokenRequired: 'Please enter Yuque Token',
yuqueTokenPlaceholder: 'Enter your Yuque Token',
feishuAppId: 'Feishu Application ID',
feishuAppIdRequired: 'Please enter Feishu Application ID',
feishuAppIdPlaceholder: 'Enter your Feishu Application ID',
feishuAppSecret: 'Feishu Application Secret',
feishuAppSecretRequired: 'Please enter Feishu Application Secret',
feishuAppSecretPlaceholder: 'Enter your Feishu Application Secret',
feishuFolderToken: 'Folder Token',
feishuFolderTokenRequired: 'Please enter Folder Token',
feishuFolderTokenPlaceholder: 'Enter your Feishu Folder Token',
}
},
api: {