diff --git a/rag/svr/sync_data_source.py b/rag/svr/sync_data_source.py index 525a8bb10..4349b6f55 100644 --- a/rag/svr/sync_data_source.py +++ b/rag/svr/sync_data_source.py @@ -157,9 +157,23 @@ class Confluence(SyncBase): from common.data_source.config import DocumentSource from common.data_source.interfaces import StaticCredentialsProvider - space = (self.conf.get("space") or "").strip() - page_id = (self.conf.get("page_id") or "").strip() - index_recursively = bool(self.conf.get("index_recursively", False)) + index_mode = (self.conf.get("index_mode") or "everything").lower() + if index_mode not in {"everything", "space", "page"}: + index_mode = "everything" + + space = "" + page_id = "" + + index_recursively = False + if index_mode == "space": + space = (self.conf.get("space") or "").strip() + if not space: + raise ValueError("Space Key is required when indexing a specific Confluence space.") + elif index_mode == "page": + page_id = (self.conf.get("page_id") or "").strip() + if not page_id: + raise ValueError("Page ID is required when indexing a specific Confluence page.") + index_recursively = bool(self.conf.get("index_recursively", False)) self.connector = ConfluenceConnector( wiki_base=self.conf["wiki_base"], diff --git a/web/src/pages/user-setting/data-source/component/confluence-token-field.tsx b/web/src/pages/user-setting/data-source/component/confluence-token-field.tsx new file mode 100644 index 000000000..5fe50b931 --- /dev/null +++ b/web/src/pages/user-setting/data-source/component/confluence-token-field.tsx @@ -0,0 +1,191 @@ +import { useEffect, useMemo } from 'react'; +import { ControllerRenderProps, useFormContext } from 'react-hook-form'; + +import { Checkbox } from '@/components/ui/checkbox'; +import { Input } from '@/components/ui/input'; +import { cn } from '@/lib/utils'; + +/* ---------------- Token Field ---------------- */ + +export type ConfluenceTokenFieldProps = ControllerRenderProps & { + fieldType: 'username' | 'token'; + placeholder?: string; + disabled?: boolean; +}; + +const ConfluenceTokenField = ({ + fieldType, + value, + onChange, + placeholder, + disabled, + ...rest +}: ConfluenceTokenFieldProps) => { + return ( +
+ This connector will index all pages the provided credentials have + access to. +
+ )} + + {mode === 'space' && ( ++ The Confluence space key to index. +
++ The Confluence page ID to index. +
+ +