Feat: add DingTalk AI Table connector and integration for data synch… (#13413)

### What problem does this PR solve?

Add DingTalk AI Table connector and integration for data synchronization

Issue #13400

### Type of change

- [x] New Feature (non-breaking change which adds functionality)

Co-authored-by: wangheyang <wangheyang@corp.netease.com>
This commit is contained in:
Heyang Wang
2026-03-06 21:13:23 +08:00
committed by GitHub
parent 094eae3cf5
commit c217b8f3d8
22 changed files with 602 additions and 0 deletions

View File

@ -0,0 +1,27 @@
<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<defs>
<clipPath id="4ab946_0">
<rect width="24" height="24" rx="0"></rect>
</clipPath>
<clipPath id="4ab946_1">
<rect width="20.965" height="20.965" x="1.518" y="1.518" rx="6"></rect>
</clipPath>
</defs>
<g clip-path="url(#4ab946_0)">
<g clip-path="url(#4ab946_1)">
<rect width="20.965" height="20.965" x="1.518" y="1.518" fill="#256CFB" rx="6"></rect>
<path fill="#FFF"
d="M6.089 8.679c0-.293.156-.563.409-.709l4.688-2.707a.205.205 0 0 1 .307.177v1.897c0 .364-.193.7-.508.884l-4.778 2.784a.27.27 0 0 0-.118.143v-2.47Z">
</path>
<path fill="#FFF"
d="M6.089 8.482v2.585c0 .6.32 1.154.84 1.454l4.257 2.459a.205.205 0 0 0 .307-.178V13.06c0-.473-.25-.91-.659-1.149L6.862 9.587a1.617 1.617 0 0 1-.773-1.105ZM17.62 8.63c.252.147.408.417.408.71v5.413c0 .158-.17.256-.306.177l-1.643-.948a1.023 1.023 0 0 1-.511-.882l-.022-5.53a.27.27 0 0 0-.065-.174l2.138 1.235Z">
</path>
<path fill="#FFF"
d="m17.79 8.729-2.239-1.293c-.52-.3-1.16-.3-1.679 0L9.614 9.895a.205.205 0 0 0 0 .354l1.509.87c.41.237.914.239 1.325.005l3.998-2.277c.41-.234.9-.277 1.344-.118ZM11.873 18.616a.818.818 0 0 1-.819 0l-4.688-2.707a.205.205 0 0 1 0-.354l1.642-.949a1.023 1.023 0 0 1 1.02-.002l4.8 2.746a.27.27 0 0 0 .182.032l-2.137 1.234Z">
</path>
<path fill="#FFF"
d="m11.701 18.715 2.24-1.293c.519-.3.839-.854.839-1.454V11.05a.205.205 0 0 0-.307-.177l-1.509.87c-.41.237-.663.673-.666 1.146l-.027 4.602c-.002.471-.21.918-.57 1.223Z">
</path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -998,6 +998,8 @@ The above is the content you need to summarize.`,
'Свържете GitHub за синхронизиране на pull requests и issues за извличане.',
airtableDescription:
'Свържете се с Airtable и синхронизирайте файлове от определена таблица в определено работно пространство.',
dingtalkAITableDescription:
'Свържете се с Dingtalk AI Table и синхронизирайте записи от определена таблица.',
gitlabDescription:
'Свържете GitLab за синхронизиране на хранилища, issues, merge requests и свързана документация.',
asanaDescription:

View File

@ -1016,6 +1016,8 @@ Beispiel: Virtual Hosted Style`,
'Verbinden Sie GitHub, um Pull Requests und Issues zur Recherche zu synchronisieren.',
airtableDescription:
'Verbinden Sie sich mit Airtable und synchronisieren Sie Dateien aus einer bestimmten Tabelle in einem vorgesehenen Arbeitsbereich.',
dingtalkAITableDescription:
'Verbinden Sie sich mit Dingtalk AI Table und synchronisieren Sie Datensätze aus einer bestimmten Tabelle.',
asanaDescription:
'Verbinden Sie sich mit Asana und synchronisieren Sie Dateien aus einem bestimmten Arbeitsbereich.',
imapDescription:

View File

@ -1034,6 +1034,8 @@ Example: Virtual Hosted Style`,
'Connect GitHub to sync pull requests and issues for retrieval.',
airtableDescription:
'Connect to Airtable and synchronize files from a specified table within a designated workspace.',
dingtalkAITableDescription:
'Connect to Dingtalk AI Table and synchronize records from a specified table.',
gitlabDescription:
'Connect GitLab to sync repositories, issues, merge requests, and related documentation.',
asanaDescription:

View File

@ -472,6 +472,8 @@ export default {
apiVersionMessage: '¡Por favor ingresa la versión de la API!',
modelsToBeAddedTooltip:
'Si tu proveedor de modelos no aparece en la lista pero afirma ser compatible con OpenAI, selecciona la tarjeta OpenAI-API-compatible para añadir el/los modelo(s) correspondiente(s).',
dingtalkAITableDescription:
'Conéctese a Dingtalk AI Table y sincronice registros de una tabla especificada.',
},
message: {
registered: '¡Registrado!',

View File

@ -680,6 +680,8 @@ export default {
modelsToBeAddedTooltip:
'Si votre fournisseur de modèle n\'est pas listé mais prétend être "compatible OpenAI", sélectionnez la carte compatible OpenAI-API pour ajouter le(s) modèle(s) pertinent(s).',
mcp: 'MCP',
dingtalkAITableDescription:
'Connectez-vous à Dingtalk AI Table et synchronisez les enregistrements d\'une table spécifiée.',
},
message: {
registered: 'Enregistré !',

View File

@ -669,6 +669,8 @@ export default {
apiVersionMessage: 'Silakan masukkan versi API',
modelsToBeAddedTooltip:
'Jika penyedia model Anda tidak tercantum tetapi mengklaim kompatibel dengan OpenAI, pilih kartu OpenAI-API-compatible untuk menambahkan model yang relevan.',
dingtalkAITableDescription:
'Hubungkan ke Dingtalk AI Table dan sinkronkan catatan dari tabel yang ditentukan.',
},
message: {
registered: 'Terdaftar!',

View File

@ -840,6 +840,8 @@ Quanto sopra è il contenuto che devi riassumere.`,
configuration: 'Configurazione',
view: 'Visualizza',
mcp: 'MCP',
dingtalkAITableDescription:
'Connettiti a Dingtalk AI Table e sincronizza i record da una tabella specificata.',
},
message: {
registered: 'Registrato!',

View File

@ -691,6 +691,8 @@ export default {
sureQuit: '参加したチームから退出してもよろしいですか?',
modelsToBeAddedTooltip:
'モデルプロバイダーがリストにないが「OpenAI互換」を謳っている場合は、OpenAI-API-compatible カードを選択して関連モデルを追加してください。',
dingtalkAITableDescription:
'Dingtalk AI Table に接続し、指定されたテーブルからレコードを同期します。',
},
message: {
registered: '登録完了!',

View File

@ -639,6 +639,8 @@ export default {
sureQuit: 'Tem certeza de que deseja sair da equipe que você ingressou?',
modelsToBeAddedTooltip:
'Se o seu provedor de modelo não estiver listado, mas afirmar ser compatível com a OpenAI, selecione o card OpenAI-API-compatible para adicionar o(s) modelo(s) relevante(s). ',
dingtalkAITableDescription:
'Conecte-se ao Dingtalk AI Table e sincronize registros de uma tabela especificada.',
},
message: {
registered: 'Registrado!',

View File

@ -778,6 +778,8 @@ export default {
'Подключите GitHub для синхронизации содержимого Pull Request и Issue для поиска.',
airtableDescription:
'Подключите Airtable и синхронизируйте файлы из указанной таблицы в заданном рабочем пространстве.',
dingtalkAITableDescription:
'Подключите Dingtalk AI Table и синхронизируйте записи из указанной таблицы.',
gitlabDescription:
'Подключите GitLab для синхронизации репозиториев, задач, merge requests и связанной документации.',
asanaDescription:

View File

@ -723,6 +723,8 @@ export default {
FishAudioRefIDMessage: `Vui lòng nhập ID của model tham chiếu (để trống để sử dụng model mặc định)`,
modelsToBeAddedTooltip:
'Nếu nhà cung cấp mô hình của bạn không có trong danh sách nhưng tuyên bố tương thích với "OpenAI", hãy chọn thẻ OpenAI-API-compatible để thêm mô hình liên quan.',
dingtalkAITableDescription:
'Kết nối với Dingtalk AI Table và đồng bộ hóa bản ghi từ một bảng được chỉ định.',
},
message: {
registered: 'Đã đăng ký!',

View File

@ -563,6 +563,8 @@ export default {
avatar: '头像',
avatarTip: '這會在你的個人主頁展示',
profileDescription: '在此更新您的照片和個人詳細信息。',
dingtalkAITableDescription:
'連接釘釘AI表格同步指定表格中的記錄。',
gitlabDescription:
'連接 GitLab同步儲存庫、Issue、合併請求MR及相關文件內容。',
bedrockCredentialsHint:

View File

@ -919,6 +919,8 @@ General实体和关系提取提示来自 GitHub - microsoft/graphrag基于
githubDescription:
'连接 GitHub可同步 Pull Request 与 Issue 内容用于检索。',
airtableDescription: '连接 Airtable同步指定工作区下指定表格中的文件。',
dingtalkAITableDescription:
'连接钉钉AI表格同步指定表格中的记录。',
gitlabDescription:
'连接 GitLab同步仓库、Issue、合并请求MR及相关文档内容。',
asanaDescription: '连接 Asana同步工作区中的文件。',

View File

@ -30,6 +30,7 @@ export enum DataSourceKey {
OCI_STORAGE = 'oci_storage',
GOOGLE_CLOUD_STORAGE = 'google_cloud_storage',
AIRTABLE = 'airtable',
DINGTALK_AI_TABLE = 'dingtalk_ai_table',
GITLAB = 'gitlab',
ASANA = 'asana',
IMAP = 'imap',
@ -123,6 +124,11 @@ export const generateDataSourceInfo = (t: TFunction) => {
description: t(`setting.${DataSourceKey.AIRTABLE}Description`),
icon: <SvgIcon name={'data-source/airtable'} width={38} />,
},
[DataSourceKey.DINGTALK_AI_TABLE]: {
name: 'Dingtalk AI Table',
description: t(`setting.dingtalkAITableDescription`),
icon: <SvgIcon name={'data-source/dingtalk-ai-table'} width={38} />,
},
[DataSourceKey.GITLAB]: {
name: 'GitLab',
description: t(`setting.${DataSourceKey.GITLAB}Description`),
@ -658,6 +664,26 @@ export const DataSourceFormFields = {
required: true,
},
],
[DataSourceKey.DINGTALK_AI_TABLE]: [
{
label: 'Access Token',
name: 'config.credentials.access_token',
type: FormFieldType.Password,
required: true,
},
{
label: 'Base ID',
name: 'config.table_id',
type: FormFieldType.Text,
required: true,
},
{
label: 'Operator ID',
name: 'config.operator_id',
type: FormFieldType.Text,
required: true,
},
],
[DataSourceKey.GITLAB]: [
{
label: 'Project Owner',
@ -1135,6 +1161,17 @@ export const DataSourceFormDefaultValues = {
},
},
},
[DataSourceKey.DINGTALK_AI_TABLE]: {
name: '',
source: DataSourceKey.DINGTALK_AI_TABLE,
config: {
table_id: '',
operator_id: '',
credentials: {
access_token: '',
},
},
},
[DataSourceKey.GITLAB]: {
name: '',
source: DataSourceKey.GITLAB,