连接器管理界面
连接器管理界面
相关源文件
本章引用的主要源码文件:
backend/onyx/connectors/factory.pybackend/tests/unit/onyx/server/test_upload_files.py- [web/src/app/admin/bots/[bot-id]/SlackChannelConfigsTable.tsx](web/src/app/admin/bots/[bot-id]/SlackChannelConfigsTable.tsx)
web/src/app/admin/bots/page.tsx- [web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx](web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx)
- [web/src/app/admin/connectors/[connector]/pages/Advanced.tsx](web/src/app/admin/connectors/[connector]/pages/Advanced.tsx)
- [web/src/app/admin/connectors/[connector]/pages/ConnectorInput/FileInput.tsx](web/src/app/admin/connectors/[connector]/pages/ConnectorInput/FileInput.tsx)
- [web/src/app/admin/connectors/[connector]/pages/DynamicConnectorCreationForm.tsx](web/src/app/admin/connectors/[connector]/pages/DynamicConnectorCreationForm.tsx)
- [web/src/app/admin/connectors/[connector]/pages/utils/google_site.ts](web/src/app/admin/connectors/[connector]/pages/utils/google_site.ts)
web/src/app/admin/discord-bot/page.tsx- [web/src/app/admin/documents/sets/[documentSetId]/page.tsx](web/src/app/admin/documents/sets/[documentSetId]/page.tsx)
web/src/app/admin/documents/sets/hooks.tsxweb/src/app/admin/documents/sets/new/page.tsxweb/src/app/admin/documents/sets/page.tsxweb/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsxweb/src/app/admin/layout.tsxweb/src/app/admin/token-rate-limits/page.tsxweb/src/app/app/components/projects/ProjectContextPanel.tsx- [web/src/app/ee/admin/standard-answer/[id]/page.tsx](web/src/app/ee/admin/standard-answer/[id]/page.tsx)
web/src/app/ee/admin/standard-answer/new/page.tsxweb/src/app/ee/admin/standard-answer/page.tsxweb/src/components/Field.tsxweb/src/components/admin/connectors/AccessTypeForm.tsxweb/src/components/admin/connectors/AccessTypeGroupSelector.tsxweb/src/components/icons/icons.tsxweb/src/components/modals/UserFilesModal.tsxweb/src/lib/connectors/connectors.tsxweb/src/lib/connectors/credentials.tsweb/src/lib/sources.tsweb/src/lib/types.ts
目的与范围
本文档描述了用于在 Onyx 中创建、配置和管理数据源连接器的管理用户界面。内容涵盖动态表单生成系统(该系统会适配每种连接器类型)、凭证关联机制,以及连接器-凭证对(CCPair)的监控界面。有关后端连接器实现的详细信息,请参阅连接器框架概述。有关凭证存储的详细信息,请参阅凭证管理。
界面架构总览
连接器管理界面构建在一个动态配置系统之上,该系统根据声明式模式生成表单。整个系统由三个主要层级组成:源元数据(图标、类别、文档)、配置模式(表单字段)和凭证模板(认证要求)。
标题:连接器管理界面架构
来源: web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:129-182,web/src/lib/connectors/connectors.tsx:145-148,web/src/lib/connectors/credentials.ts:284-285
源元数据系统
每个数据源都注册了驱动界面展示的元数据,包括显示名称、图标以及是否支持 OAuth。
关键函数与元数据
| 函数 | 用途 | 文件引用 |
|---|---|---|
SOURCE_METADATA_MAP | 图标、显示名称和 OAuth 支持状态的注册表 | web/src/lib/sources.ts:92-460 |
getSourceDisplayName | 返回 ValidSources 枚举对应的人类可读名称 | web/src/lib/sources.ts:506-508 |
getSourceMetadata | 检索特定源类型的元数据 | web/src/lib/sources.ts:464-476 |
来源: web/src/lib/sources.ts:92-508
动态表单生成
连接器配置界面是根据 ConnectionConfiguration 模式动态生成的。每种连接器类型都指定了其必需的配置字段、高级选项和校验规则。
ConnectionConfiguration 模式
ConnectionConfiguration 对象定义了 DynamicConnectorCreationForm 如何渲染输入控件。
标题:连接配置数据流
来源: web/src/lib/connectors/connectors.tsx:114-143,web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:75-127
字段选项属性
配置中的字段可以是文本、数字、布尔值或复杂标签页。
visibleCondition:一个函数,根据当前表单值或所选凭证决定是否显示某个字段web/src/lib/connectors/connectors.tsx:41-44。label:可以是静态字符串,也可以是适配凭证类型的函数web/src/lib/connectors/connectors.tsx:33-34。type:决定输入组件类型(例如select、multiselect、list、checkbox、file)web/src/lib/connectors/connectors.tsx:17-24。
来源: web/src/lib/connectors/connectors.tsx:32-112
凭证管理与关联
凭证是独立创建和管理的,但必须关联到连接器才能形成 CCPair。
凭证创建流程
CreateCredential 组件使用 credentialTemplates 来渲染特定源所需的字段。
标题:凭证关联逻辑
来源: web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:12-18,web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:75-127
多认证方式支持
某些源(如 SharePoint)支持多种认证方式。CredentialTemplateWithAuth 接口允许界面根据所选 authentication_method 切换字段 web/src/lib/connectors/credentials.ts:22-25。
来源: web/src/lib/connectors/credentials.ts:22-25
连接器状态与监控
管理界面提供了所有活跃 CCPair 的全面视图,包括其索引状态和文档数量。
索引状态仪表盘
状态表使用 ConnectorIndexingStatusLite 来获取所有连接器的摘要信息。
| 组件 | 角色 | 文件引用 |
|---|---|---|
CCPairIndexingStatusTable | 渲染按源分组的主连接器表 | web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:1-218 |
CCPairStatus | 显示状态徽章(活跃、已暂停、初始索引中、错误) | web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:175-186 |
SummaryRow | 按源显示汇总统计信息(总文档数、活跃连接器数) | web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:66-137 |
来源: web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:66-218
CCPair 详情视图
ConnectorRow 组件链接到特定 CC Pair 的管理页面 web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:151-155。该视图包含:
- 最后成功时间:连接器上次成功完成索引的时间
web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:172。 - 访问类型:指示连接器是公共、私有还是继承(同步)
web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:189-205。 - 文档数量:该特定对已索引的文档总数
web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:208。
来源: web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:139-218
CCPair 校验与创建
当用户点击新连接器的"创建"按钮时,系统会执行校验。在后端,validate_ccpair_for_user 会实例化连接器并运行设置/权限校验。
标题:CCPair 创建序列
来源: web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:75-127,backend/onyx/connectors/factory.py:141-189
访问控制
连接器的访问类型通过 AccessTypeForm 和 AccessTypeGroupSelector 进行管理,允许管理员将连接器设置为"公共"、"私有"或"同步"(从源继承权限)web/src/app/admin/connectors/[connector]/pages/DynamicConnectorCreationForm.tsx:72-76。
来源: web/src/app/admin/connectors/[connector]/pages/DynamicConnectorCreationForm.tsx:72-76
关键实体总结
| 代码实体 | 位置 | 用途 |
|---|---|---|
IndexAttemptSnapshot | web/src/lib/types.ts:204-216 | 索引进度和最后状态指标的接口 |
ConnectionConfiguration | web/src/lib/connectors/connectors.tsx:114-143 | 定义动态表单字段的接口 |
submitConnector | web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:75-127 | 用于 POST/PATCH 连接器配置的前端函数 |
instantiate_connector | backend/onyx/connectors/factory.py:105-138 | 用于创建连接器实例进行校验的后端工厂 |
ConnectorIndexingStatusLite | web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsx:144 | 用于仪表盘渲染的轻量级状态类型 |
来源: web/src/lib/types.ts:204-216,web/src/lib/connectors/connectors.tsx:114-143,web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx:75-127,backend/onyx/connectors/factory.py:105-138