aitable-workflow-cli 0.1.15 → 0.1.16-beta.1786022310508

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/package.json +3 -3
  2. package/templates/support-qa/lib/__tests__/declarative-matcher.test.ts +240 -0
  3. package/templates/support-qa/lib/__tests__/dingtalk-group-membership.test.ts +127 -0
  4. package/templates/support-qa/lib/__tests__/memory-events.test.ts +90 -0
  5. package/templates/support-qa/lib/action-dispatch.ts +1 -1
  6. package/templates/support-qa/lib/declarative-matcher.ts +398 -0
  7. package/templates/support-qa/lib/dingtalk-group-membership.ts +151 -0
  8. package/templates/support-qa/lib/guards.ts +18 -0
  9. package/templates/support-qa/lib/memory-events.ts +60 -41
  10. package/templates/support-qa/lib/preflight.ts +294 -0
  11. package/templates/support-qa/package.json +2 -4
  12. package/templates/support-qa/profiles/aitable/profile/fastpath/known-answers.yml +1 -1
  13. package/templates/support-qa/profiles/aitable/profile/troubleshoot/classifiers.yml +1 -1
  14. package/templates/support-qa/workflows/config-sync/recipes/config_sync.recipe.ts +10 -8
  15. package/templates/support-qa/workflows/daily-review/recipes/daily_review.recipe.ts +1 -1
  16. package/templates/support-qa/workflows/group-qa/recipes/answer.recipe.ts +2 -7
  17. package/templates/support-qa/workflows/group-qa/recipes/conversation_handler.recipe.ts +3 -3
  18. package/templates/support-qa/workflows/group-qa/recipes/fastpath.recipe.ts +5 -11
  19. package/templates/support-qa/workflows/group-qa/recipes/on-action.recipe.ts +4 -2
  20. package/templates/support-qa/workflows/group-qa/recipes/reply-to-group.recipe.ts +13 -7
  21. package/templates/support-qa/workflows/group-qa/recipes/troubleshoot.recipe.ts +12 -18
  22. package/templates/support-qa/workspaces/support/AGENTS.md +1 -1
  23. package/templates/aitable-handoff/.env.example +0 -17
  24. package/templates/aitable-handoff/aitable-workflow.config.yml +0 -64
  25. package/templates/aitable-handoff/coding-agents.config.json +0 -17
  26. package/templates/aitable-handoff/npmrc +0 -1
  27. package/templates/aitable-handoff/package.json +0 -16
  28. package/templates/aitable-handoff/roles/config-syncer.role.yml +0 -4
  29. package/templates/aitable-handoff/roles/daily-review.role.yml +0 -4
  30. package/templates/aitable-handoff/roles/faq-support.role.yml +0 -9
  31. package/templates/aitable-handoff/roles/faq-troubleshooter.role.yml +0 -17
  32. package/templates/aitable-handoff/roles/kb-editor.role.yml +0 -19
  33. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250/6/350/212/202/350/257/276/345/270/246/344/275/240/345/277/253/351/200/237/344/270/212/346/211/213AI/350/241/250/346/240/274.md +0 -43
  34. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250/AI/350/241/250/346/240/274/350/241/214/346/225/260/350/257/264/346/230/216.md +0 -85
  35. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250//344/275/277/347/224/250/345/277/253/346/215/267/351/224/256.md +0 -34
  36. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250//345/260/206Excel/346/226/207/344/273/266/345/257/274/345/205/245AI/350/241/250/346/240/274.md +0 -48
  37. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250//345/270/270/350/247/201/351/227/256/351/242/230.md +0 -88
  38. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250//346/250/241/346/235/277/344/270/255/345/277/203.md +0 -59
  39. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250//351/222/211/351/222/211AI/350/241/250/346/240/274/345/270/270/350/247/201/344/270/212/351/231/220.md +0 -181
  40. package/templates/aitable-handoff/wiki/faq-support/01-/345/277/253/351/200/237/345/205/245/351/227/250//351/222/211/351/222/211AI/350/241/250/346/240/274/345/277/253/351/200/237/344/270/212/346/211/213.md +0 -177
  41. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234/AI/350/241/250/346/240/274/347/232/204/345/257/274/345/207/272.md +0 -27
  42. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//344/275/277/347/224/250/345/210/206/347/273/204.md +0 -67
  43. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//344/275/277/347/224/250/345/241/253/350/211/262.md +0 -99
  44. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//344/275/277/347/224/250/346/216/222/345/272/217.md +0 -66
  45. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//344/275/277/347/224/250/347/255/233/351/200/211/345/222/214/347/255/233/351/200/211/346/235/241/344/273/266/347/273/204.md +0 -104
  46. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//346/237/245/347/234/213/345/216/206/345/217/262/350/256/260/345/275/225.md +0 -79
  47. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//347/224/250AI/350/241/250/346/240/274/344/270/200/350/241/250/344/270/200/345/212/251/347/220/206/345/217/221/346/266/210/346/201/257.md +0 -94
  48. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//350/207/252/345/256/232/344/271/211/350/256/260/345/275/225/345/220/215/347/247/260.md +0 -35
  49. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//350/207/252/345/256/232/344/271/211/350/256/260/345/275/225/350/257/246/346/203/205/351/241/265/345/222/214/345/241/253/345/206/231/351/241/265.md +0 -141
  50. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//350/260/203/346/225/264/345/210/227/345/256/275.md +0 -42
  51. package/templates/aitable-handoff/wiki/faq-support/02-/345/237/272/347/241/200/346/223/215/344/275/234//350/260/203/346/225/264/350/241/214/351/253/230.md +0 -40
  52. package/templates/aitable-handoff/wiki/faq-support/03-/344/275/277/347/224/250/345/255/227/346/256/265//344/270/272/350/241/250/346/240/274/346/267/273/345/212/240/345/255/227/346/256/265.md +0 -188
  53. package/templates/aitable-handoff/wiki/faq-support/03-/344/275/277/347/224/250/345/255/227/346/256/265//345/215/225/351/200/211/345/244/232/351/200/211/345/255/227/346/256/265/345/220/214/346/255/245/345/205/266/344/273/226/350/241/250/351/200/211/351/241/271.md +0 -142
  54. package/templates/aitable-handoff/wiki/faq-support/03-/344/275/277/347/224/250/345/255/227/346/256/265//345/255/227/346/256/265/347/256/241/347/220/206.md +0 -44
  55. package/templates/aitable-handoff/wiki/faq-support/03-/344/275/277/347/224/250/345/255/227/346/256/265//345/255/227/346/256/265/347/261/273/345/236/213/345/210/227/350/241/250.md +0 -95
  56. package/templates/aitable-handoff/wiki/faq-support/03-/344/275/277/347/224/250/345/255/227/346/256/265//345/255/227/346/256/265/347/274/226/347/273/204.md +0 -138
  57. package/templates/aitable-handoff/wiki/faq-support/04-/344/275/277/347/224/250/350/241/250/345/215/225//350/241/250/345/215/225/345/221/250/346/234/237/345/210/206/350/241/250.md +0 -42
  58. package/templates/aitable-handoff/wiki/faq-support/04-/344/275/277/347/224/250/350/241/250/345/215/225//350/241/250/345/215/225/345/237/272/347/241/200/346/223/215/344/275/234.md +0 -344
  59. package/templates/aitable-handoff/wiki/faq-support/04-/344/275/277/347/224/250/350/241/250/345/215/225//350/241/250/345/215/225/346/230/216/347/273/206/350/241/250-/344/270/200/346/254/241/345/241/253/345/206/231/345/244/232/346/235/241/346/217/220/344/272/244.md +0 -174
  60. package/templates/aitable-handoff/wiki/faq-support/04-/344/275/277/347/224/250/350/241/250/345/215/225//350/241/250/345/215/225/351/242/204/345/241/253/351/273/230/350/256/244/345/200/274.md +0 -97
  61. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//344/275/277/347/224/250AI/347/224/237/346/210/220/345/205/254/345/274/217.md +0 -26
  62. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//344/275/277/347/224/250/345/205/254/345/274/217/345/207/275/346/225/260/345/270/270/350/247/201/351/227/256/351/242/230.md +0 -179
  63. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//344/275/277/347/224/250/345/205/254/345/274/217/345/255/227/346/256/265.md +0 -81
  64. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//344/275/277/347/224/250/345/207/275/346/225/260.md +0 -21
  65. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//345/205/254/345/274/217/345/207/275/346/225/260/345/244/247/345/205/250.md +0 -433
  66. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//345/205/254/345/274/217/346/224/257/346/214/201/346/230/276/347/244/272/346/240/274/345/274/217.md +0 -126
  67. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//345/205/254/345/274/217/351/224/231/350/257/257/344/273/243/347/240/201/345/210/227/350/241/250.md +0 -30
  68. package/templates/aitable-handoff/wiki/faq-support/05-/345/205/254/345/274/217/345/207/275/346/225/260//345/207/275/346/225/260/345/256/236/350/267/265.md +0 -13
  69. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203.md +0 -169
  70. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//347/273/204/347/273/207/345/206/205/345/205/261/344/272/253/346/225/260/346/215/256/346/272/220.md +0 -106
  71. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//350/267/250AI/350/241/250/346/240/274/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -176
  72. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211AI/345/220/254/350/256/260/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -100
  73. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211OA/345/256/241/346/211/271/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -194
  74. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211/345/276/205/345/212/236/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -87
  75. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211/346/227/245/347/250/213/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -92
  76. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211/350/200/203/345/213/244/346/211/223/345/215/241/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -129
  77. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211/350/241/250/346/240/274/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -229
  78. package/templates/aitable-handoff/wiki/faq-support/06-/346/225/260/346/215/256/350/277/236/346/216/245/344/270/255/345/277/203//351/222/211/351/222/211/351/200/232/350/256/257/345/275/225/346/225/260/346/215/256/345/220/214/346/255/245.md +0 -120
  79. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//344/275/277/347/224/250AI/350/241/250/346/240/274/350/247/206/345/233/276.md +0 -219
  80. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//345/210/206/344/272/253/350/247/206/345/233/276.md +0 -71
  81. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//346/225/260/346/215/256/350/241/250/345/222/214/350/247/206/345/233/276/347/232/204/345/205/263/347/263/273.md +0 -48
  82. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//346/227/245/345/216/206/350/247/206/345/233/276.md +0 -89
  83. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//346/237/245/350/257/242/351/241/265/351/235/242.md +0 -116
  84. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//347/224/230/347/211/271/345/233/276.md +0 -135
  85. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//347/224/273/345/206/214/350/247/206/345/233/276.md +0 -28
  86. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//347/234/213/346/235/277/350/247/206/345/233/276.md +0 -35
  87. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//350/241/250/346/240/274/350/247/206/345/233/276.md +0 -116
  88. package/templates/aitable-handoff/wiki/faq-support/07-/344/275/277/347/224/250/350/247/206/345/233/276//351/200/217/350/247/206/350/241/250/350/247/206/345/233/276.md +0 -123
  89. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230/TOP_N/345/210/206/346/236/220.md +0 -78
  90. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/273/252/350/241/250/347/233/230/344/270/255/346/267/273/345/212/240/345/244/232/344/270/252/346/225/260/346/215/256/346/272/220.md +0 -129
  91. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/273/252/350/241/250/347/233/230/345/215/225/345/233/276/350/241/250/345/222/214AI/350/247/243/350/257/273/345/206/205/345/256/271/345/210/206/344/272/253.md +0 -104
  92. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/273/252/350/241/250/347/233/230/345/270/270/350/247/201/351/227/256/351/242/230.md +0 -31
  93. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/273/252/350/241/250/347/233/230/346/231/272/350/203/275/346/200/273/347/273/223/345/210/206/346/236/220.md +0 -57
  94. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/273/252/350/241/250/347/233/230/347/273/204/344/273/266.md +0 -47
  95. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/275/277/347/224/250AI/350/241/250/346/240/274/344/273/252/350/241/250/347/233/230.md +0 -226
  96. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//344/275/277/347/224/250/350/207/252/345/212/250/345/214/226/346/265/201/347/250/213/345/217/221/351/200/201/344/273/252/350/241/250/347/233/230.md +0 -49
  97. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//345/210/206/344/272/253/344/273/252/350/241/250/347/233/230.md +0 -74
  98. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//345/234/250/344/273/252/350/241/250/347/233/230/344/270/255/347/255/233/351/200/211/346/225/260/346/215/256.md +0 -65
  99. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//350/207/252/345/256/232/344/271/211/344/273/252/350/241/250/347/233/230/344/270/255/345/277/203.md +0 -93
  100. package/templates/aitable-handoff/wiki/faq-support/08-/344/275/277/347/224/250/344/273/252/350/241/250/347/233/230//350/267/237/351/232/217/350/256/277/351/227/256/350/200/205/346/235/203/351/231/220/347/273/237/350/256/241.md +0 -48
  101. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//345/205/250/346/226/260/345/272/224/347/224/250/346/250/241/345/274/217.md +0 -155
  102. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//345/210/227/350/241/250/347/273/204/344/273/266.md +0 -228
  103. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//345/233/276/347/211/207.md +0 -93
  104. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//346/214/211/351/222/256.md +0 -86
  105. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//346/240/207/347/255/276/351/241/265.md +0 -97
  106. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//350/247/206/345/233/276/347/273/204/344/273/266.md +0 -125
  107. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//350/277/207/346/273/244/345/231/250.md +0 -110
  108. package/templates/aitable-handoff/wiki/faq-support/09-/345/272/224/347/224/250/346/250/241/345/274/217//351/200/217/350/247/206/350/241/250/347/273/204/344/273/266.md +0 -142
  109. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201/Webhook/345/217/202/346/225/260/347/232/204/350/257/246/347/273/206/350/257/264/346/230/216.md +0 -76
  110. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//344/270/200/350/241/250/344/270/200/345/217/267Agent/346/224/257/346/214/201/347/276/244/346/224/266/351/233/206.md +0 -150
  111. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//344/275/277/347/224/250webhook/350/247/246/345/217/221/350/207/252/345/212/250/345/214/226.md +0 -163
  112. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//344/275/277/347/224/250/344/270/215/345/220/214/350/272/253/344/273/275/345/217/221/351/200/201/351/222/211/351/222/211/346/266/210/346/201/257.md +0 -60
  113. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//344/275/277/347/224/250/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201.md +0 -219
  114. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//344/275/277/347/224/250/350/207/252/345/212/250/345/214/226/345/276/252/347/216/257/350/212/202/347/202/271.md +0 -63
  115. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//345/234/250/346/265/201/347/250/213/344/270/255/344/275/277/347/224/250AI/351/227/256/347/255/224.md +0 -69
  116. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//345/234/250/346/266/210/346/201/257/345/215/241/347/211/207/344/270/212/346/267/273/345/212/240/346/214/211/351/222/256.md +0 -93
  117. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//346/265/201/347/250/213/345/217/230/351/207/217/350/247/243/351/207/212/344/270/216/345/270/270/350/247/201/346/212/245/351/224/231.md +0 -158
  118. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//346/265/201/347/250/213/350/247/246/345/217/221/346/235/241/344/273/266/344/270/216/346/211/247/350/241/214/345/212/250/344/275/234/344/270/200/350/247/210.md +0 -310
  119. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//347/224/250AI/350/241/250/346/240/274/344/270/200/350/241/250/344/270/200/345/212/251/347/220/206/345/217/221/346/266/210/346/201/257-/350/207/252/345/212/250/345/214/226.md +0 -129
  120. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//347/224/250/346/237/245/346/211/276/350/256/260/345/275/225/345/217/221/351/200/201/347/273/204/345/220/210/345/255/227/346/256/265/351/200/232/347/237/245.md +0 -66
  121. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/345/210/233/345/273/272/351/222/211/351/222/211/345/276/205/345/212/236/346/210/226/346/227/245/347/250/213.md +0 -84
  122. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/345/217/221/350/265/267AI/347/224/265/350/257/235/345/244/226/345/221/274.md +0 -322
  123. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/345/217/221/350/265/267OA/345/256/241/346/211/271.md +0 -93
  124. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/345/217/221/351/200/201HTTP/350/257/267/346/261/202.md +0 -168
  125. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/345/270/270/350/247/201/351/227/256/351/242/230.md +0 -83
  126. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/346/211/271/351/207/217/345/217/221/351/202/256/344/273/266.md +0 -79
  127. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/346/224/257/346/214/201/346/217/222/345/205/245/345/223/252/344/272/233/345/217/230/351/207/217/345/206/205/345/256/271.md +0 -80
  128. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/207/252/345/212/250/345/214/226/346/233/264/345/244/232/346/211/247/350/241/214/345/212/250/344/275/234/344/275/277/347/224/250/346/214/207/345/215/227.md +0 -21
  129. package/templates/aitable-handoff/wiki/faq-support/10-/350/207/252/345/212/250/345/214/226/345/267/245/344/275/234/346/265/201//350/260/203/347/224/250/344/270/211/346/226/271/345/267/245/344/275/234/346/265/201/345/272/224/347/224/250.md +0 -161
  130. package/templates/aitable-handoff/wiki/faq-support/11-AI/350/241/250/346/240/274/345/212/251/347/220/206/AI/350/241/250/346/240/274/344/270/207/350/203/275/350/264/264/344/274/230/345/205/210/344/275/277/347/224/250/347/224/263/350/257/267.md +0 -67
  131. package/templates/aitable-handoff/wiki/faq-support/11-AI/350/241/250/346/240/274/345/212/251/347/220/206/AI/350/241/250/346/240/274/344/270/207/350/203/275/350/264/264/344/275/277/347/224/250/350/257/264/346/230/216.md +0 -63
  132. package/templates/aitable-handoff/wiki/faq-support/11-AI/350/241/250/346/240/274/345/212/251/347/220/206/AI/350/241/250/346/240/274/345/212/251/347/220/206.md +0 -107
  133. package/templates/aitable-handoff/wiki/faq-support/12-/351/253/230/347/272/247/346/235/203/351/231/220//344/275/277/347/224/250AI/350/241/250/346/240/274/351/253/230/347/272/247/346/235/203/351/231/220.md +0 -194
  134. package/templates/aitable-handoff/wiki/faq-support/12-/351/253/230/347/272/247/346/235/203/351/231/220//350/241/214/345/210/227/346/235/203/351/231/220/350/256/276/347/275/256/345/217/212/351/253/230/347/272/247/346/235/203/351/231/220/345/257/271/350/241/250/345/215/225/345/205/254/345/274/217/347/232/204/345/275/261/345/223/215.md +0 -32
  135. package/templates/aitable-handoff/wiki/faq-support/12-/351/253/230/347/272/247/346/235/203/351/231/220//351/242/204/350/247/210/351/253/230/347/272/247/346/235/203/351/231/220/347/273/223/346/236/234.md +0 -43
  136. package/templates/aitable-handoff/wiki/faq-support/12-/351/253/230/347/272/247/346/235/203/351/231/220//351/253/230/347/272/247/346/235/203/351/231/220/345/270/270/350/247/201/351/227/256/351/242/230.md +0 -47
  137. package/templates/aitable-handoff/wiki/faq-support/12-/351/253/230/347/272/247/346/235/203/351/231/220//351/253/230/347/272/247/346/235/203/351/231/220/347/232/204/351/273/230/350/256/244/350/247/222/350/211/262.md +0 -36
  138. package/templates/aitable-handoff/wiki/faq-support/13-/346/217/222/344/273/266/344/270/255/345/277/203/AI/350/241/250/346/240/274/344/270/211/346/226/271/346/217/222/344/273/266/344/275/277/347/224/250/346/216/210/346/235/203.md +0 -19
  139. package/templates/aitable-handoff/wiki/faq-support/13-/346/217/222/344/273/266/344/270/255/345/277/203/AI/350/241/250/346/240/274/346/217/222/344/273/266-/350/204/232/346/234/254/346/217/222/344/273/266.md +0 -42
  140. package/templates/aitable-handoff/wiki/faq-support/13-/346/217/222/344/273/266/344/270/255/345/277/203/AI/350/241/250/346/240/274/346/217/222/344/273/266-/350/207/252/345/256/232/344/271/211/346/217/222/344/273/266.md +0 -51
  141. package/templates/aitable-handoff/wiki/faq-support/13-/346/217/222/344/273/266/344/270/255/345/277/203/AI/350/241/250/346/240/274/346/217/222/344/273/266/344/270/255/345/277/203-/344/275/277/347/224/250/346/214/207/345/215/227.md +0 -97
  142. package/templates/aitable-handoff/wiki/faq-support/14-/347/256/241/347/220/206/345/220/216/345/217/260//344/275/277/347/224/250/346/225/260/346/215/256/350/257/264/346/230/216.md +0 -82
  143. package/templates/aitable-handoff/wiki/faq-support/14-/347/256/241/347/220/206/345/220/216/345/217/260//346/235/203/347/233/212/346/225/260/346/215/256/350/257/264/346/230/216.md +0 -111
  144. package/templates/aitable-handoff/wiki/faq-support/15-/345/234/272/346/231/257/345/256/236/350/267/265/AI/350/241/250/346/240/274/350/257/257/345/210/240/346/201/242/345/244/215/346/214/207/345/215/227.md +0 -37
  145. package/templates/aitable-handoff/wiki/faq-support/15-/345/234/272/346/231/257/345/256/236/350/267/265//345/234/250/350/241/250/346/240/274/344/270/255/346/240/207/350/256/260/351/207/215/345/244/215/345/206/205/345/256/271.md +0 -43
  146. package/templates/aitable-handoff/wiki/faq-support/15-/345/234/272/346/231/257/345/256/236/350/267/265//347/233/264/346/222/255/345/205/254/345/274/200/347/263/273/345/210/227/350/257/276.md +0 -21
  147. package/templates/aitable-handoff/wiki/faq-support/16-/344/273/230/350/264/271/346/235/203/347/233/212//351/222/211/351/222/211AI/350/241/250/346/240/274/344/273/230/350/264/271/346/235/203/347/233/212.md +0 -144
  148. package/templates/aitable-handoff/wiki/faq-support/16-/344/273/230/350/264/271/346/235/203/347/233/212//351/222/211/351/222/211AI/350/241/250/346/240/274/346/220/255/345/273/272/346/234/215/345/212/241.md +0 -95
  149. package/templates/aitable-handoff/wiki/faq-support/17-/345/205/254/345/221/212/AI/350/241/250/346/240/274-/346/216/222/347/211/210/346/211/223/345/215/260/345/215/207/347/272/247/350/257/264/346/230/216.md +0 -40
  150. package/templates/aitable-handoff/wiki/faq-support/17-/345/205/254/345/221/212/AI/350/241/250/346/240/274-/347/211/210/346/234/254/345/215/207/347/272/247/351/200/232/347/237/245.md +0 -21
  151. package/templates/aitable-handoff/wiki/faq-support/17-/345/205/254/345/221/212//350/267/250AI/350/241/250/346/240/274/346/225/260/346/215/256/345/220/214/346/255/245/350/260/203/346/225/264/350/257/264/346/230/216.md +0 -55
  152. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI /350/241/250/346/240/274/346/217/222/344/273/266 - /344/274/201/344/270/232/345/206/205/346/217/222/344/273/266/345/217/221/345/270/203/346/214/207/345/215/227.md" +0 -159
  153. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274 AI /345/255/227/346/256/265 /345/274/200/345/217/221/346/214/207/345/215/227/AI/350/241/250/346/240/274 AI /345/255/227/346/256/265/345/274/200/345/217/221/346/214/207/345/215/227/357/274/210FaaS/347/211/210/357/274/211.md" +0 -1362
  154. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274 AI /345/255/227/346/256/265 /345/274/200/345/217/221/346/214/207/345/215/227/AI/350/241/250/346/240/274 AI /345/255/227/346/256/265/345/274/200/345/217/221/346/214/207/345/215/227/357/274/210/345/205/254/345/274/217/347/211/210/357/274/211.md" +0 -556
  155. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274 AI /345/255/227/346/256/265 /345/274/200/345/217/221/346/214/207/345/215/227.md" +0 -15
  156. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/255/227/346/256/265/346/250/241/347/211/210 /344/275/277/347/224/250/346/214/207/345/215/227/AI /350/241/250/346/240/274 AI /345/255/227/346/256/265/345/270/270/350/247/201/346/212/245/351/224/231/350/257/264/346/230/216.md" +0 -649
  157. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/255/227/346/256/265/346/250/241/347/211/210 /344/275/277/347/224/250/346/214/207/345/215/227/Dify/346/231/272/350/203/275/344/275/223.md" +0 -55
  158. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/255/227/346/256/265/346/250/241/347/211/210 /344/275/277/347/224/250/346/214/207/345/215/227/GPTPro /345/255/227/346/256/265/346/215/267/345/276/204 /345/257/206/351/222/245/350/216/267/345/217/226/346/214/207/345/215/227.md" +0 -23
  159. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/255/227/346/256/265/346/250/241/347/211/210 /344/275/277/347/224/250/346/214/207/345/215/227/OpenClaw /345/260/217/351/276/231/350/231/276/345/212/251/346/211/213/351/205/215/347/275/256/346/225/231/347/250/213.md" +0 -27
  160. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/255/227/346/256/265/346/250/241/347/211/210 /344/275/277/347/224/250/346/214/207/345/215/227//345/233/275/345/206/205/345/244/226/345/277/253/351/200/222/347/211/251/346/265/201/344/277/241/346/201/257/346/237/245/350/257/242/344/275/277/347/224/250/346/214/207/345/215/227.md" +0 -907
  161. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/255/227/346/256/265/346/250/241/347/211/210 /344/275/277/347/224/250/346/214/207/345/215/227//345/277/253/351/200/222/347/211/251/346/265/201/346/237/245/350/257/242/345/212/251/346/211/213/344/275/277/347/224/250/346/214/207/345/215/227.md" +0 -1
  162. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/AI/350/241/250/346/240/274JSAPI /347/261/273/345/236/213/346/217/217/350/277/260.xlsx +0 -0
  163. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Base /346/250/241/345/235/227.md" +0 -391
  164. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/AttachmentField /351/231/204/344/273/266/345/255/227/346/256/265.md" +0 -200
  165. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/AutoNumberField /350/207/252/345/212/250/347/274/226/345/217/267/345/255/227/346/256/265.md" +0 -75
  166. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/BarcodeField /346/235/241/347/240/201/345/255/227/346/256/265.md" +0 -95
  167. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/BidirectionalLinkField /345/217/214/345/220/221/345/205/263/350/201/224/345/255/227/346/256/265.md" +0 -294
  168. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/CheckboxField /345/244/215/351/200/211/346/241/206/345/255/227/346/256/265.md" +0 -95
  169. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/CreatedTimeField /345/210/233/345/273/272/346/227/266/351/227/264/345/255/227/346/256/265.md" +0 -134
  170. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/CurrencyField /350/264/247/345/270/201/345/255/227/346/256/265.md" +0 -260
  171. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/DateField /346/227/245/346/234/237/345/255/227/346/256/265.md" +0 -183
  172. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/DepartmentField /351/203/250/351/227/250/345/255/227/346/256/265.md" +0 -111
  173. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/EmailField /351/202/256/347/256/261/345/255/227/346/256/265.md" +0 -99
  174. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/FilterUpField /346/237/245/346/211/276/345/274/225/347/224/250/345/255/227/346/256/265.md" +0 -73
  175. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/FormulaField /345/205/254/345/274/217/345/255/227/346/256/265.md" +0 -109
  176. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/GeoLocationField /345/234/260/347/220/206/344/275/215/347/275/256/345/255/227/346/256/265.md" +0 -33
  177. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/GroupField /347/276/244/347/273/204/345/255/227/346/256/265.md" +0 -111
  178. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/LastModifiedTimeField /346/234/200/345/220/216/346/233/264/346/226/260/346/227/266/351/227/264/345/255/227/346/256/265.md" +0 -134
  179. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/LookupField /345/205/263/350/201/224/345/274/225/347/224/250/345/255/227/346/256/265.md" +0 -71
  180. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/MultiSelectField /345/244/232/351/200/211/345/255/227/346/256/265.md" +0 -349
  181. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/NumberField /346/225/260/345/255/227/345/255/227/346/256/265.md" +0 -175
  182. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/PrimaryField /344/270/273/351/224/256/346/226/207/346/241/243/345/255/227/346/256/265.md" +0 -91
  183. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/ProgressField /350/277/233/345/272/246/345/255/227/346/256/265.md" +0 -324
  184. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/RatingField /350/257/204/345/210/206/345/255/227/346/256/265.md" +0 -320
  185. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/RichTextField /345/257/214/346/226/207/346/234/254/345/255/227/346/256/265.md" +0 -45
  186. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/SingleSelectField /345/215/225/351/200/211/345/255/227/346/256/265.md" +0 -336
  187. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/TelephoneField /347/224/265/350/257/235/345/255/227/346/256/265.md" +0 -99
  188. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/TextField /346/226/207/346/234/254/345/255/227/346/256/265.md" +0 -93
  189. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/UnidirectionalLinkFields /345/215/225/345/220/221/345/205/263/350/201/224/345/255/227/346/256/265.md" +0 -295
  190. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/UrlField /351/223/276/346/216/245/345/255/227/346/256/265.md" +0 -163
  191. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227/UserField /344/272/272/345/221/230/345/255/227/346/256/265.md" +0 -266
  192. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Field /346/250/241/345/235/227.md" +0 -379
  193. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Record /346/250/241/345/235/227.md" +0 -277
  194. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/Sheet /346/250/241/345/235/227.md" +0 -1013
  195. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/UI /346/250/241/345/235/227.md" +0 -472
  196. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/View /346/250/241/345/235/227/GridView /350/241/250/346/240/274/350/247/206/345/233/276.md" +0 -835
  197. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243/View /346/250/241/345/235/227.md" +0 -203
  198. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243//345/255/227/346/256/265/346/225/260/346/215/256/347/273/223/346/236/204.md +0 -65
  199. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/345/257/271/350/261/241/346/250/241/345/236/213API/345/217/202/350/200/203/346/226/207/346/241/243//350/257/273/345/206/231AI /350/241/250/346/240/274/346/250/241/345/236/213.md" +0 -29
  200. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/346/225/260/346/215/256/346/272/220 /345/274/200/345/217/221/346/214/207/345/215/227.md" +0 -607
  201. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Base /346/250/241/345/235/227.md" +0 -391
  202. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Field /346/250/241/345/235/227.md" +0 -379
  203. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Input/346/250/241/345/235/227.md" +0 -331
  204. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Output/346/250/241/345/235/227.md" +0 -197
  205. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Record /346/250/241/345/235/227.md" +0 -277
  206. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Sheet /346/250/241/345/235/227.md" +0 -1013
  207. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/UI /346/250/241/345/235/227.md" +0 -472
  208. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/View /346/250/241/345/235/227.md" +0 -203
  209. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227//345/255/227/346/256/265/346/225/260/346/215/256/347/273/223/346/236/204.md" +0 -65
  210. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/204/232/346/234/254/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227.md" +0 -142
  211. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Base /346/250/241/345/235/227.md" +0 -391
  212. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Event/344/272/213/344/273/266/346/250/241/345/235/227.md" +0 -182
  213. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Field /346/250/241/345/235/227.md" +0 -379
  214. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Record /346/250/241/345/235/227.md" +0 -277
  215. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/Sheet /346/250/241/345/235/227.md" +0 -1013
  216. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/UI /346/250/241/345/235/227.md" +0 -472
  217. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227/View /346/250/241/345/235/227.md" +0 -203
  218. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227//345/205/266/344/273/226/346/216/245/345/217/243.md" +0 -146
  219. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227//345/255/227/346/256/265/346/225/260/346/215/256/347/273/223/346/236/204.md" +0 -65
  220. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227//346/240/270/345/277/203/347/237/245/350/257/206.md" +0 -54
  221. package/templates/aitable-handoff/wiki/faq-support/18-/345/274/200/345/217/221/350/200/205/346/214/207/345/215/227/AI/350/241/250/346/240/274/350/276/271/346/240/217/346/217/222/344/273/266 /345/274/200/345/217/221/346/214/207/345/215/227.md" +0 -192
  222. package/templates/aitable-handoff/wiki/faq-support//351/222/211/351/222/211AI/350/241/250/346/240/274FAQ.md +0 -611
  223. package/templates/aitable-handoff/workflows/admin-kb-update/recipes/kb-refine.recipe.ts +0 -131
  224. package/templates/aitable-handoff/workflows/admin-kb-update/recipes/kb_sync_handler.recipe.ts +0 -130
  225. package/templates/aitable-handoff/workflows/admin-kb-update/workflow.yml +0 -125
  226. package/templates/aitable-handoff/workflows/config-sync/recipes/config_sync.recipe.ts +0 -448
  227. package/templates/aitable-handoff/workflows/config-sync/recipes/config_sync_handler.recipe.ts +0 -16
  228. package/templates/aitable-handoff/workflows/config-sync/workflow.yml +0 -73
  229. package/templates/aitable-handoff/workflows/daily-review/recipes/daily_review.recipe.ts +0 -529
  230. package/templates/aitable-handoff/workflows/daily-review/recipes/daily_review_handler.recipe.ts +0 -26
  231. package/templates/aitable-handoff/workflows/daily-review/recipes/memory-events.ts +0 -56
  232. package/templates/aitable-handoff/workflows/daily-review/workflow.yml +0 -92
  233. package/templates/aitable-handoff/workflows/group-qa/error-replies.json +0 -53
  234. package/templates/aitable-handoff/workflows/group-qa/recipes/answer.recipe.ts +0 -197
  235. package/templates/aitable-handoff/workflows/group-qa/recipes/conversation_handler.recipe.ts +0 -294
  236. package/templates/aitable-handoff/workflows/group-qa/recipes/issue-classifier.ts +0 -120
  237. package/templates/aitable-handoff/workflows/group-qa/recipes/known-error-match.recipe.ts +0 -75
  238. package/templates/aitable-handoff/workflows/group-qa/recipes/memory-events.ts +0 -55
  239. package/templates/aitable-handoff/workflows/group-qa/recipes/reply-to-group.recipe.ts +0 -132
  240. package/templates/aitable-handoff/workflows/group-qa/recipes/troubleshoot-issue.recipe.ts +0 -195
  241. package/templates/aitable-handoff/workflows/group-qa/workflow.yml +0 -210
  242. package/templates/aitable-handoff/workspaces/daily-review/AGENTS.md +0 -189
  243. package/templates/aitable-handoff/workspaces/faq-support/AGENTS.md +0 -448
  244. package/templates/aitable-handoff/workspaces/faq-support/contacts.json +0 -14
  245. package/templates/aitable-handoff/workspaces/faq-support/owner-map.json +0 -18
  246. package/templates/aitable-handoff/workspaces/faq-support/skills/bug-triage/SKILL.md +0 -130
  247. package/templates/aitable-handoff/workspaces/faq-troubleshooter/AGENTS.md +0 -53
  248. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/SKILL.md +0 -58
  249. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/aitable-import-troubleshooter/SKILL.md +0 -485
  250. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/aitable-openapi-troubleshooter/SKILL.md +0 -183
  251. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/import-openapi-e2e-troubleshooter/SKILL.md +0 -459
  252. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/notable-datasource-troubleshooter/SKILL.md +0 -1286
  253. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/notable-field-troubleshooter/SKILL.md +0 -673
  254. package/templates/aitable-handoff/workspaces/faq-troubleshooter/skills/troubleshooting/spreadsheet-datasync-troubleshooter/SKILL.md +0 -322
  255. package/templates/aitable-handoff/workspaces/kb-editor/AGENTS.md +0 -32
  256. package/templates/support-qa/lib/assemble-cli.ts +0 -30
  257. package/templates/support-qa/lib/assemble.ts +0 -279
  258. package/templates/support-qa/lib/echo-guard.ts +0 -50
  259. package/templates/support-qa/lib/fastpath.ts +0 -227
  260. package/templates/support-qa/lib/owner-mention.ts +0 -140
  261. package/templates/support-qa/lib/profile-guard.ts +0 -55
  262. package/templates/support-qa/lib/send-failure-guard.ts +0 -59
  263. package/templates/support-qa/lib/troubleshoot.ts +0 -236
@@ -1,607 +0,0 @@
1
- # AI表格数据源 开发指南
2
-
3
- # 数据源同步概述
4
-
5
- ## 数据源同步是什么?
6
-
7
- 数据源同步是钉钉AI 表格提供的一项数据集成能力,它能够将分散在不同系统和平台的数据自动汇聚到AI 表格中,实现数据的统一管理和分析。
8
-
9
- ### 核心价值
10
-
11
- 1. 数据集中化管理
12
-
13
- 将企业内外部多个系统的数据整合到一个平台,避免数据孤岛;统一的数据视图,便于全局分析和决策
14
-
15
- 2. 自动化数据流转
16
-
17
- 支持定时或实时同步,减少人工导入导出的工作量;确保数据的时效性和准确性
18
-
19
- 3. 跨系统数据协作
20
-
21
-
22
- 打通不同业务系统之间的数据壁垒;实现业务流程的无缝衔接
23
-
24
- ### 目前支持丰富的开箱即用的数据源:
25
-
26
- * 钉钉生态数据:AI 表格、钉钉表格、OA审批、考勤打卡、通讯录、会议、日程等
27
-
28
- * 数据库系统:MySQL、PostgreSQL、SQLServer等主流数据库
29
-
30
- * 业务平台数据:淘宝生意参谋、拼多多商家后台、得物商家后台、阿里妈妈等电商平台
31
-
32
- * 企业管理:聚水潭ERP、Teambition系统等企业应用
33
-
34
-
35
- ## 数据同步插件如何使用
36
-
37
- 以MySQL 插件为例,介绍如何使用插件完成数据同步的过程
38
-
39
- ### 1.2.1 功能入口
40
-
41
- AI 表格左下角,「添加/导入」-「从其他数据源同步」
42
-
43
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/924493f8-5edc-473f-815b-dabe23e040ae.png)
44
-
45
- 在弹出的数据链接中心,选择MySQL
46
-
47
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/jP2lRYj3jM0kZO8g/img/1070d32c-4fd9-48a8-ac31-e527288f5d58.png)
48
-
49
- ### 1.2.2 登录数据库、选择数据表及导出字段
50
-
51
- 登录数据库
52
-
53
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/317cd69a-80ac-416b-b317-00acbc3ecb9b.png)
54
-
55
- 选择数据库和数据表
56
-
57
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/dc60922e-b3d1-4537-935c-59adea7d1325.png)
58
-
59
- 选择导出的字段
60
-
61
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/850813fc-5dd3-4647-8a84-9d2531680da5.png)
62
-
63
- ### 1.2.3 数据同步设置
64
-
65
- 点击下一步,进入数据同步设置页面。数据同步设置页面是一个通用的页面,用户可以在该页面配置同步字段、开启/关闭定时同步。
66
-
67
- 支持全部字段
68
-
69
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/d098c9cd-9497-4dd9-8265-0e18eb7672b7.png)
70
-
71
- 指定同步的字段
72
-
73
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/2f2f7eb9-a682-4a0b-94fe-154ea8b548be.png)
74
-
75
- ### 1.2.4 保存并同步
76
-
77
- 点击「保存并同步」,等待同步过程后,即可以得到一张同步表,同步表的数据来源于前置步骤中选择的数据表,至此完成了MySQL插件的数据同步配置。
78
-
79
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/bba44dfd-1917-4c89-b06b-36d85190fdbc.png)
80
-
81
- ### 1.2.5 其他操作
82
-
83
- 同步表的更多菜单
84
-
85
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/a738f149-2e41-44c9-b27a-6179c4dfd075.png)
86
-
87
- 同步表解除同步关系后,支持编辑
88
-
89
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/8c887e7f-a2fc-41f0-876a-78af52d2bec0.png)
90
-
91
- 同步表的更多菜单中有数据同步设置、更新数据、解除同步关系选项,具有权限的用户可以对同步表进行操作。
92
-
93
- | 操作 | 介绍 |
94
- | --- | --- |
95
- | 数据同步设置 | 可以对同步字段和自动同步的配置进行修改 |
96
- | 更新数据 | 可以手动触发一次数据同步 |
97
- | 解除同步关系 | 同步表不支持编辑同步字段,解除同步关系后,表格将转换为普通AI表格,支持编辑字段及数据。 |
98
-
99
- # 如何开发数据源同步插件
100
-
101
- 开发数据源同步插件时,开发者需着重关注`插件前端`和`插件服务端`,`插件前端`用于使用者配置数据源信息,`插件服务端`用于获取数据源表结构与行记录。
102
-
103
- ## 快速开始
104
-
105
- ### 2.1.1 数据源三方插件的基本信息
106
-
107
- 每个三方数据源插件都需要具备以下信息,在开发、自定义插件测试和插件发布过程中,都会围绕这几个内容展开。
108
-
109
- | 信息 | 是否必须 | 作用 | 举例 |
110
- | --- | --- | --- | --- |
111
- | 前端配置页面 | Y | 使用者点击插件,会进入到三方提供的前端配置页面。用户在配置页面完成三方数据源的配置。<br>如Mysql插件的配置页面,完成数据库的地址、帐密配置。 | MySQL 插件的配置页面<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/85706856-d003-4018-bd25-49e891b08642.png) |
112
- | 前端页面的宽度和高度 | N | 在展示前端配置页面时,容器的宽度和高度。默认是 300 \* 450 | |
113
- | 三方服务端地址 | Y | 用户完成前端页面配置后,会由AI表格服务端向三方服务端发起拉取表结构/数据的请求。 | 如: https://alidoc.host.com/<br>(仅举例,不支持访问) |
114
- | 数据表结构同步接口 | Y | 完成配置后,AI表格服务端首先会调用三方的表结构接口,查询表结构,如字段配置,表名称等,然后根据表结构完成数据表的创建。 | 如 /api/sheet\_meta<br>最终请求的接口为<br>{服务端地址}+ {表结构接口},即<br>https://alidoc.host.com/api/sheet\_meta |
115
- | 行记录同步接口 | Y | 在更新数据时,AI表格服务端会调用三方行记录同步接口,完成行记录的数据拉取。 | 如 /api/records<br>最终请求的接口为<br>{服务端地址}+ {行记录接口},即<br>https://alidoc.host.com/api/records |
116
- | 请求签名 | N | 确认接口来源为AI 表格服务端,防止其他方调用,保证通信安全。 | |
117
-
118
- ### 2.1.2 前端配置页面开发
119
-
120
- 同步配置界面用于管理待同步数据的参数设置,用户可根据不同业务场景灵活定制不同配置,确保匹配业务需求。
121
-
122
- #### 2.1.2.1 快速开始
123
-
124
- 推荐使用官方模板快速开始:
125
-
126
- [https://github.com/dingdocs-notable/datasource-plugin-demo: https://github.com/dingdocs-notable/datasource-plugin-demo](https://github.com/dingdocs-notable/datasource-plugin-demo)
127
-
128
- ```bash
129
- git clone https://github.com/dingdocs-notable/datasource-plugin-demo
130
- cd datasource-plugin-demo
131
- npm install
132
- npm start
133
- ```
134
-
135
- 需要注意的是,如果不使用脚手架,在前端代码中,需要初始化iframe环境。
136
-
137
- ```javascript
138
- npm install dingtalk-docs-cool-app --save
139
- ```
140
- ```javascript
141
- import { initView } from 'dingtalk-docs-cool-app';
142
-
143
-
144
- function App (){
145
- ...
146
-
147
- // 初始化iframe内环境
148
- useEffect(() => {
149
- initView({
150
- onReady: () => {},
151
- onError: e => {
152
- console.log(e);
153
- }
154
- });
155
- }, []);
156
-
157
-
158
- ...
159
- }
160
-
161
- ```
162
-
163
- #### 2.1.2.1 UI开发
164
-
165
- 以下是界面的一个 UI demo。
166
-
167
- ```javascript
168
- import { useEffect, useState } from 'react';
169
- import { initView } from 'dingtalk-docs-cool-app';
170
-
171
- function App() {
172
- const [value, setValue] = useState('someValue');
173
-
174
- useEffect(() => {
175
- initView({
176
- onReady: () => {
177
- },
178
- onError: (e) => {
179
- console.log(e);
180
- },
181
- });
182
- }, []);
183
-
184
- const goNext = async () => {
185
- const config = { a: 'test' };
186
- await (Dingdocs.base.host as any).saveConfigAndGoNext(config);
187
- };
188
-
189
- return (
190
- <div style={{display: 'flex', flexDirection: 'column', alignItems: 'center'}}>
191
- <h1>数据源插件demo</h1>
192
- <div style={{display: 'flex'}}>
193
- <label>输入框:</label>
194
- <input value={value} onChange={(e) => setValue(e.target.value)} />
195
- </div>
196
- <button style={{marginTop: 20, maxWidth: 100}} onClick={goNext}>点击下一步</button>
197
- </div>
198
- )
199
- }
200
-
201
- export default App;
202
-
203
- ```
204
-
205
- #### 2.1.2.2 前端 API
206
-
207
- 主要提供必要信息查询和写入功能,以支持配置界面的开发。
208
-
209
- * **saveConfigAndGoNext**
210
-
211
-
212
- 保存数据源同步配置后(配置信息可自定义,格式为 key-value)调用该 API,会关闭同步配置页面进入字段配置。
213
-
214
- #### 2.1.2.3 运行调试
215
-
216
- 前端页面开发完成后,开发者需要将其部署到公网可访问的服务器上。注意,前端页面的资源地址协议需为 **https协议**,否则会因为浏览器安全策略,导致页面无法打开。
217
-
218
- #### 2.1.2.4 获取当前登录用户/免登
219
-
220
- 免登需要两步
221
-
222
- 1. 前端调用`Dingdocs.base.host.getAuthCode(corpId)`获取免登码
223
-
224
- 2. 插件前端调用插件服务端,将免登码发给插件服务端
225
-
226
- 3. 插件服务端调用[钉钉开放接口](https://open.dingtalk.com/document/orgapp/obtain-the-userid-of-a-user-by-using-the-log-free)通过免登码获取用户信息
227
-
228
-
229
- #### 2.1.2.5 获取当前AI 表格所属组织
230
-
231
- 在酷应用中配置的前端插件URL中,可以带上`$CORPID$` 占位符。AI 表格加载前端插件时,会将`$CORPID$`替换为当前AI 表格组织。
232
-
233
- 例如,配置URL为`https://xxx.com?corpId=$CORPID$`时,最后加载的URL为`https://xxx.com?corpId=dingxxxx`,其中`dingxxx`为当前AI 表格所属组织的corpId。
234
-
235
- ### 2.1.3 服务端接口开发
236
-
237
- 主要实现两个服务端接口,分别用于获取三方数据源的表结构和表记录。开发者需要提供一个公网可访问的服务地址:
238
-
239
- * ${服务地址}/api/sheet\_meta:获取表结构接口
240
-
241
- * ${服务地址}/api/records:获取表记录接口
242
-
243
-
244
- #### 2.1.3.1 代码示例
245
-
246
- 这是一个使用nodeJS搭建的服务端代码示例,可以部署到公网 或者通过本地运行 + ngrok内网穿透的方式进行测试。
247
-
248
- 1. **运行部署node服务**
249
-
250
- [https://github.com/dingdocs-notable/datasource-plugin-node-demo: https://github.com/dingdocs-notable/datasource-plugin-node-demo](https://github.com/dingdocs-notable/datasource-plugin-node-demo)
251
-
252
- ```bash
253
- git clone https://github.com/dingdocs-notable/datasource-plugin-node-demo
254
- cd datasource-plugin-node-demo
255
- npm install
256
- npm start
257
- ```
258
-
259
- 2. **内网穿透(本地运行服务需要)**
260
-
261
-
262
- 内网穿透将本地开发环境暴露到公网,使外网用户可以访问你本机运行的服务。如果你的node/java 服务代码运行在本地,则需要进行内网穿透,让AI表格的服务端可以访问到你的服务。常见的内网穿透工具有ngrok、localtunnel、serveo等。
263
-
264
- **重要提示:请仔细阅读以下条款**
265
-
266
- 1. 第三方工具性质:内网穿透工具为第三方提供的内网穿透服务,非本公司开发或维护,使用该工具产生的任何问题与本公司无关。
267
-
268
- 2. 安全风险提醒:
269
-
270
- 1. 使用内网穿透工具会将您的本地服务暴露到公网,存在一定的安全风险
271
-
272
- 2. 请确保本地开发环境不包含敏感数据
273
-
274
- 3. 建议仅在开发调试阶段使用,生产环境请使用正式部署方案
275
-
276
- 3. 责任范围:
277
-
278
- 1. 因使用 ngrok 工具导致的数据泄露、网络安全问题,本公司不承担任何责任
279
-
280
- 2. 因 ngrok 服务本身故障、变更、终止等造成的开发中断,本公司不承担任何责任
281
-
282
- 3. 用户应自行承担使用该工具的所有风险
283
-
284
- 4. 替代方案:如对安全性有特殊要求,建议使用企业内部的内网穿透解决方案或其他符合安全规范的调试方式。
285
-
286
-
287
- 使用即表示您已理解并接受上述所有条款和风险。
288
-
289
- 1. **ngrok的使用指南**
290
-
291
-
292
- [《使用ngrok进行本地调试 》](https://alidocs.dingtalk.com/i/nodes/NZQYprEoWoxKPoqwC02GboMDV1waOeDk?corpId=)
293
-
294
- #### 2.1.3.2 获取表结构 API
295
-
296
- **基本信息**
297
-
298
- | 说明 | 该接口返回三方数据源的表结构,说明数据源有哪些字段,以及每个字段的类型 |
299
- | --- | --- |
300
- | 方法 | `POST` |
301
- | Path | https://{应用服务器地址}/api/sheet\_meta |
302
- | 超时时间 | 10s |
303
- | 请求头 | * Ding-Docs-Timestamp<br> <br>* Ding-Docs-Signature<br> <br>* Content-Type:"application/json; charset=utf-8" |
304
- | 请求体 | ```json<br>{<br> "requestId": "", // 单次同步任务的requestId<br> "params": "", // JsonString, 查询三方表结构信息参数,由开发者自定义,即前端调用saveConfigAndGoNext保存的信息<br> "context": {<br> "unionId": "", // 数据同步用户id<br> "corpId": "" // AI 表格所属组织id<br> }<br>}<br>``` |
305
- | 返回体示例 | ```json<br>{<br> "code": 0,<br> "msg": "",<br> "data": {<br> "sheetName":""<br> "fields":[<br> {<br> "id":"fid_1",// 字段唯一标识<br> "name":"id", // 字段名称<br> "type":"text", // 字段类型,<br> "isPrimary": true // 是否主键字段<br> "property": {<br> },<br> "description":"description"<br> },<br> {<br> "id":"fid_2",// 字段唯一标识<br> "name":"name", // 字段名称<br> "type":"number", // 字段类型, 枚举值见附录<br> "isPrimary": false // 是否主键字段<br> "property": {<br> "formatter": "INT" <br> },<br> "description":"description"<br> },<br> ……<br> ]<br> }<br>}<br>``` |
306
-
307
- **返回体参数说明**
308
-
309
- | 参数名 | 类型 | 是否必填 | 描述 |
310
- | --- | --- | --- | --- |
311
- | code | int | 是 | 0 是正常值,非 0 异常,错误码如下:<br>10001:参数错误<br>10002:配置信息错误<br>10003:权益不足<br>10004:身份校验失败<br>10005:三方系统异常,请稍后再试 |
312
- | msg | string | 否 | 具体错误信息 |
313
- | data | object | 是 | |
314
- | \-- sheetName | string | 是 | 三方数据源名-同步表名 |
315
- | \-- fields | array object | 是 | 同步表字段列表 |
316
- | \-- -- id | string | 是 | 字段唯一标识 |
317
- | \-- -- name | string | 是 | 字段名称-同步表字段名 |
318
- | \-- -- isPrimary | boolean | 是 | 是否主键字段,仅一列为主键字段 |
319
- | \-- -- type | string | 是 | 字段类型,枚举值见[4.1 字段类型枚举](https://alidocs.dingtalk.com/i/nodes/G1DKw2zgV2KnvL4kFNq3rdMyJB5r9YAn?utm_scene=team_space&iframeQuery=anchorId%3Duu_maq71k6rox7iqpx5v1e) |
320
- | \-- -- property | object | 否 | 字段类型属性,参考[4.1 字段类型枚举](https://alidocs.dingtalk.com/i/nodes/G1DKw2zgV2KnvL4kFNq3rdMyJB5r9YAn?utm_scene=team_space&iframeQuery=anchorId%3Duu_maq71k6rox7iqpx5v1e) |
321
-
322
- #### 2.1.3.3 获取表记录 API
323
-
324
- **基本信息**
325
-
326
- | 说明 | 该接口返回三方数据源表中的记录,分页返回 |
327
- | --- | --- |
328
- | 方法 | `POST` |
329
- | Path | https://{应用服务器地址}/api/records |
330
- | 超时时间 | 20s |
331
- | 请求头 | * Ding-Docs-Timestamp<br> <br>* Ding-Docs-Signature<br> <br>* Content-Type:"application/json; charset=utf-8" |
332
- | 请求体 | ```json<br>{<br> "requestId": "", // 单次同步任务的requestId<br> "maxResults":300, // 单次返回最大记录条数,默认300条<br> "nextToken": "", 数据拉取的起始位置。首次调用不传,后续调用时使用插件服务端返回的nextToken参数<br> "params": "", // JsonString, 查询三方表结构信息参数,由开发者自定义,即前端调用saveConfigAndGoNext保存的信息<br> "context": {<br> "unionId": "", // 数据同步用户id<br> "corpId": "" // AI 表格所属组织id<br> }<br>}<br>``` |
333
- | 返回体示例 | ```json<br>{<br> "code": 0, <br> "msg": "", <br> "data": {<br> "nextToken":"xxx", // 下次分页的起始令牌<br> "hasMore": false, // 是否还有更多数据<br> "records":[<br> {<br> "id":"1", // 行记录id<br> "fields": {<br> "fid_1": "xxx", // 字段id:字段值<br> "fid_2": 1222,<br> } <br> },<br> {<br> "id":"2",<br> "fields": {<br> "fid_1": "xxx",<br> "fid_2": 334.33,<br> } <br> }<br> ],<br> ……<br> "total": 100 // 字段总数,可选,用于计算当前数据同步进度<br> }<br>}<br>``` |
334
-
335
- **返回体参数说明**
336
-
337
- | 参数名 | 类型 | 是否必填 | 描述 |
338
- | --- | --- | --- | --- |
339
- | code | int | 是 | 0 是正常值,非 0 异常,错误码如下: |
340
- | msg | string | 否 | 具体错误信息 |
341
- | data | object | 是 | |
342
- | \-- nextToken | string | 否 | 下一页 token |
343
- | \-- hasMore | bool | 是 | 是否还有下一页表记录 |
344
- | \-- records | array object | 是 | 表记录列表 |
345
- | \-- -- id | string | 是 | 单条表记录 id |
346
- | \-- -- fields | map<string,any> | 是 | 表记录具体数据 |
347
-
348
- #### 2.1.3.4 请求签名
349
-
350
- 签名的作用是确认接口来源为AI 表格服务端,防止其他方调用。
351
-
352
- **签名规则**
353
-
354
- 在请求接口时,按照如下的规则生成签名,并将对应的签名和数据放在请求的 Header 中。
355
-
356
- 1. 数据源插件上架时,双方约定设置好一个secretKey;
357
-
358
- 2. 获取请求 Header 中的`Ding-Docs-Timestamp`、`Ding-Docs-Signature`的值,分别记为 **timestamp**、**signature**;
359
-
360
- 3. 获取原始请求 Body 的数据记为 body;
361
-
362
- 4. 将 secretKey、body、timestamp 按照规则进行加密得到 `signatureExpected`;
363
-
364
- 5. 校验 **signature** 和`signatureExpected`的值是否一致;
365
-
366
-
367
- **示例代码**
368
-
369
- Java 代码示例
370
-
371
- ```java
372
- /**
373
- * @param secretKey 密钥
374
- * @param body 请求体
375
- * @param timestamp 时间戳
376
- * @param signature 请求签名
377
- * @return 校验签名是否相等的 boolean
378
- */
379
- public static boolean hmacSha256Base64(String secretKey, String body, long timestamp, String signature) {
380
- try {
381
- SecretKeySpec secret_key = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), HMAC_SHA256_ALGORITHM);
382
- sha256_HMAC.init(secret_key);
383
- String content = body + timestamp;
384
- byte[] hash = sha256_HMAC.doFinal(content.getBytes(StandardCharsets.UTF_8));
385
- String signatureExpected = Base64.getEncoder().encodeToString(hash);
386
- return signature.equals(signatureExpected);
387
- } catch (Exception e) {
388
- throw new RuntimeException("signature not match", e);
389
- }
390
- }
391
- ```
392
-
393
- ## 插件调试
394
-
395
- ### 2.2.1  插件调试入口
396
-
397
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/e0533809-4577-4eaa-b137-171092f8da83.png)
398
-
399
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/9016a6ba-5e40-46fe-afea-6756f4244c21.png)
400
-
401
- ### 2.2.2  填写配置信息连接到插件
402
-
403
- 按照弹窗中的描述,填写必选项的内容,点击下一步,进入填写的前端页面地址。
404
-
405
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/b7ef57c9-b5cb-487c-90d6-3cbf200924e2.png)
406
-
407
- ### 2.2.3  在数据源自定义页面进行界面设置
408
-
409
- 此时将会弹出上一步在「前端页面地址」中配置的数据源自定义页面,可根据业务情况进行界面设置
410
-
411
- ### 2.2.4 数据源同步配置,完成同步
412
-
413
- 配置同步设置
414
-
415
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/e6ede8d0-586c-4ee2-8f25-28da45ca3967.png)
416
-
417
- 完成同步
418
-
419
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/8c9b4c2c-3ff2-4f9f-a6be-923287dcfaa5.png)
420
-
421
- ### 2.2.5 修改配置
422
-
423
- 通过点击同步表的「更多菜单」中的 「数据同步设置」,可以对数据源配置进行修改。
424
-
425
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/d78173eb-bfb7-46f4-aeb5-2f1b363d8851.png)
426
-
427
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/bfba5c49-acc6-4d55-bac2-b57c75fdc0db.png)
428
-
429
- ## 2.3 常见 Q & A
430
-
431
- **Q:前端页面无法加载**
432
-
433
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/ZWGl05m3WZNoen34/img/2910a964-e2fc-47f5-82af-cf75c2b13904.png)
434
-
435
- A:检查如下
436
-
437
- 1. url链接是否为https协议,非https协议会因为浏览器安全策略,导致页面无法打开
438
-
439
- 2. 代码中是否执行了initView方法,具体见2.1.2.1 章节。[《AI表格数据源 开发指南》](https://alidocs.dingtalk.com/i/nodes/1OQX0akWmBejogd0TAlmRyQGVGlDd3mE?utm_scene=team_space&iframeQuery=anchorId%3Duu_miwt4zgne3wbz4459fi)
440
-
441
-
442
- **Q: 企业内插件获取授权码失败**
443
-
444
- A: 见[《AI 表格插件 - 企业内插件发布指南》](https://alidocs.dingtalk.com/i/nodes/vNG4YZ7JnpyN1Mo0uEKQXpb2W2LD0oRE?utm_scene=team_space&iframeQuery=anchorId%3Duu_mkorcf4hllunv8wwipj)
445
-
446
- # 发布插件
447
-
448
- 目前数据源插件支持**企业内插件**和**三方企业插件**。企业内插件仅服务于本企业自身,仅在当前企业内可见并使用,三方企业插件面向多企业开放,支持其他企业或全网使用插件。
449
-
450
- ## 3.1 插件类型对比及使用场景
451
-
452
- | **对比维度** | **企业内插件** | **三方企业插件** |
453
- | --- | --- | --- |
454
- | 目标用户 | 单一企业内部 | 多家企业客户 |
455
- | 收费模式 | 自建自用 | 可进行商业化收费 |
456
- | 审核要求 | 企业内部审核 | 平台严格审核 |
457
-
458
- ### 3.1.2 企业内应用
459
-
460
- **功能定位**
461
-
462
- **自用性质**:为企业内部员工提供工作协同和业务管理工具
463
-
464
- **定制化**:针对本企业特定业务流程和管理需求开发
465
-
466
- **成本控制**:无需支付第三方费用,主要承担开发和维护成本
467
-
468
- **技术特点**
469
-
470
- **权限简单**:基于企业内部组织架构进行权限控制
471
-
472
- **集成便利**:可直接对接企业内部系统(如HR、财务系统)
473
-
474
- **部署灵活**:无需平台审核,企业自主管理和发布
475
-
476
- ### 3.1.1 三方企业应用
477
-
478
- **功能定位**
479
-
480
- **商业模式**:作为ISV(独立软件供应商)开发,通过钉钉应用市场向多家企业销售
481
-
482
- **服务范围**:为不同企业提供标准化或定制化的SaaS服务
483
-
484
- **盈利导向**:以商业化运营为目标,按企业数量、功能模块或使用时长收费
485
-
486
- **技术特点**
487
-
488
- **通用性强**:需适配不同企业的个性化需求和权限体系
489
-
490
- **安全隔离**:多租户架构,确保各企业数据完全隔离
491
-
492
- **审批流程**:需通过钉钉平台审核,符合安全和合规要求
493
-
494
- ## 3.2 企业内插件
495
-
496
- 企业内插件仅发布插件的企业内可见,无需平台审核,功能由企业自主管理和发布,因此发布比较简单。
497
-
498
- | **步骤** | **备注** | **截图** |
499
- | --- | --- | --- |
500
- | 1. 进入钉钉者开发平台 | 地址:[https://open-dev.dingtalk.com](https://open-dev.dingtalk.com/?hash=%23%2F#/) | |
501
- | 2. 创建一个企业内部应用 | | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/7ade9123-8d33-42ae-aa66-17d71203892b.png)<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/90758ba5-b7e6-4eee-bca4-77bc9d6cd7a1.png) |
502
- | 3. 添加酷应用 | 1. 进入创建的企业应用,点击酷应用卡片在的「添加」<br> <br>2. 进入酷应用菜单,选择创建酷应用<br> <br>3. 在弹窗中选择「扩展到AI表格」<br> <br>4. 填写基本信息、选择数据同步插件、填写调试的用户页面地址,以及服务端接口地址<br> <br>5. 保存,发布。 | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/6fbbd6e8-f2b4-4265-9a97-0752fc894ec0.png)<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/a9d1f4fd-2bd3-4432-ad2f-1edf1e4b5df0.png)<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/12471101-cc50-40b2-9619-3a17823710d7.png)<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/eYVOL5j7mwE6wlpz/img/3ac9c371-c676-4c24-b597-2453f0ba326e.png) |
503
- | 4. 发布酷应用 | 1. 进入「应用发布」-「版本管理与发布」,点击创建新版本<br> <br>2. 选择发布的版本号和可见范围,点击保存后,完成发布酷应用 | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/eYVOL5j7mwE6wlpz/img/68ed9776-ade5-47f4-a73f-8d3a8c248403.png)<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/eYVOL5j7mwE6wlpz/img/e0aebe75-895f-4858-8da4-6f5616372984.png) |
504
- | 5. 进行联调 | 在「数据连接中心」-「企业专用」,可以看到发布的插件。点击即可唤起在 步骤3 中配置的用户页面地址。 | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/eYVOL5j7mwE6wlpz/img/5835ee0b-285d-4ac7-89a2-46ea68b39905.png) |
505
- | 6、发布 | 注意在测试完成后,可以在钉钉开发者平台中 「版本管理与发布」上的「应用可见范围」,调整插件可见范围。 | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/jP2lRYj3jM0kZO8g/img/fddb835f-5bc6-4e45-8cc0-103240f76e46.png) |
506
-
507
- ## 3.3 三方企业插件
508
-
509
- AI 表格的第三方企业插件依托钉钉开放平台[酷应用](https://open.dingtalk.com/document/orgapp/cool-application-overview)能力实现用户的信息流转、免登鉴权等能力。一个插件就是一个酷应用,因此在三方完成`插件前端`和`插件服务端`开发后,需要在钉钉开放平台创建并发布一个AI表格的数据源酷应用。
510
-
511
- 相比于3.2中的企业内插件,第三方企业插件的发布插件步骤较多,**发布插件前请先了解前置知识:**[**钉钉企业内部应用开发信息**](https://open.dingtalk.com/document/orgapp/learning-map)
512
-
513
- | **步骤** | **备注** | **截图** |
514
- | --- | --- | --- |
515
- | 1、入驻服务商 | 只有入驻钉钉的服务商企业才可以注册三方应用,因此想要发布一个三方插件,需要成为入驻钉钉的服务商。<br>[服务商介绍及入驻页面,点击打开。](https://partner.dingtalk.com/#/) 提交审批后,由  $\color{#0089FF}{@李强(自亦)}$ 完成审核。<br>注意服务商的入驻申请需要由企业管理员提交。组织管理员可以登录oa管理后台进行权限配置,设置管理员身份:[oa管理后台链接](https://oa.dingtalk.com/oa_welcome.htm#/sub_permission/index_pc_new?showIntroTip=true)。 | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/cd2d95a4-352f-4a00-8d42-ec032716212e.png) |
516
- | 2、注册三方应用(收费,授权相关) | 1. 开通免费规格的商品<br> <br> 1. 加入企业: [钉钉ISV沟通](https://wx-in-i.dingtalk.com/invite-page/weixin.html?bizSource=____source____&corpId=dinga22b5311e4211323&inviteCode=rqPl3JkxnrtKbje&dtaction=os&cid=&origin=&originMeta=&scene=PCInviteMemberNew&deptId=-1&dtaction=os)后,提交审批: [审批链接](dingtalk://dingtalkclient/action/openapp?app_id=-4&container_type=work_platform&corpid=dinga22b5311e4211323&ddtab=true&redirect_type=jump&redirect_url=https%3A%2F%2Faflow.dingtalk.com%2Fdingtalk%2Fmobile%2Fhomepage.htm%3FappUuid%3Ddinga22b5311e4211323%26backcontrol%3Dfalse%26corpid%3Ddinga22b5311e4211323%26dd_progress%3Dfalse%26dd_share%3Dfalse%26ddtab%3Dtrue%26showmenu%3Dfalse%23%2Fcustom%3Fpcredirect%3Dself%26processCode%3DPROC-E4B69876-7A74-421C-8C40-33527DD10703)。<br> <br> 2. 联系 $\color{#0089FF}{@李强(自亦)}$ 开通发布免费规格的商品,需要appid增加白名单。<br> <br>2. 免费应用<br> <br> 1. 联系 $\color{#0089FF}{@李强(自亦)}$ 沟通,免费应用0元应用,需要appid。<br> <br>3. 申请不展示开放平台入口<br> <br> 1. 提交应用隐藏申请:[应用隐藏申请链接](https://yida.alibaba-inc.com/s/ddopen?spm=a1z32v.14449796.0.0.2c534a97uufFZ6#/FORM-5T566E8114O8EFADCD3SM7XBHS9036EVAFWEL82)<br> <br> 2. 联系  $\color{#0089FF}{@李强(自亦)}$ 沟通,确定应用不在开放平台展示,需要appid。<br> <br>4. 去掉开通通知<br> <br> 1. 联系 $\color{#0089FF}{@李强(自亦)}$ 沟通,去掉开通通知,否则用户启用插件时,会通知企业所在管理员开通应用。<br> <br>5. 应用发布<br> <br>6. 开通成员授权<br> <br> 1. 需要审批。https://open.dingtalk.com/document/isvapp/document-on-authorization-of-application-market-members | |
517
- | 3、发布酷应用(展示相关) | * 发布扩展到 AI 表格<br> <br>* 加入 钉钉合作伙伴组织<br> <br> * 角色+部门申请链接:[dingtalk://dingtalkclient/page/link?url=https%3A%2F%2Fpre-h5.dingtalk.com%2F40plan%2Fweb-tianyuan-rbac%2Findex.html%3Fddtab%3Dtrue%23%2Fapply](dingtalk://dingtalkclient/page/link?url=https%3A%2F%2Fpre-h5.dingtalk.com%2F40plan%2Fweb-tianyuan-rbac%2Findex.html%3Fddtab%3Dtrue%23%2Fapply)<br> <br> * 其他角色找 $\color{#0089FF}{@李强(自亦)}$  加入到这个组织<br> <br>* 发布之后,需要提审批 [dingtalk://dingtalkclient/action/openapp?app\_id=-4&container\_type=work\_platform&corpid=ding77a7af8924a84af0&ddtab=true&redirect\_type=jump&redirect\_url=https%3A%2F%2Faflow.dingtalk.com%2Fdingtalk%2Fmobile%2Fhomepage.htm%3Fback\_control%3Dfalse%26backcontrol%3Dfalse%26corpid%3Dding77a7af8924a84af0%26dd\_progress%3Dfalse%26dd\_share%3Dfalse%26ddtab%3Dtrue%26showmenu%3Dfalse%23%2Fcustom%3Fpcredirect%3Dself%26processCode%3DPROC-21027998-89B9-4D56-862D-4122960CA038](dingtalk://dingtalkclient/action/openapp?app_id=-4&container_type=work_platform&corpid=ding77a7af8924a84af0&ddtab=true&redirect_type=jump&redirect_url=https%3A%2F%2Faflow.dingtalk.com%2Fdingtalk%2Fmobile%2Fhomepage.htm%3Fback_control%3Dfalse%26backcontrol%3Dfalse%26corpid%3Dding77a7af8924a84af0%26dd_progress%3Dfalse%26dd_share%3Dfalse%26ddtab%3Dtrue%26showmenu%3Dfalse%23%2Fcustom%3Fpcredirect%3Dself%26processCode%3DPROC-21027998-89B9-4D56-862D-4122960CA038) | ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/c0f67e64-afd9-4b99-8eb2-5e1b5e5af9ff.png)<br>![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/2M9qP5jzYp9RDO01/img/efe3501f-978f-40f4-a48b-e604fed4dfd1.png) |
518
- | 4、验证和发布 | 完成后,联系 $\color{#0089FF}{@刘福林(烁硕)}$ (数据源插件)或  $\color{#0089FF}{@欧阳莫微(弗隐)}$ (边栏插件) 的功能测试和审批发布。 | |
519
-
520
- # 附录
521
-
522
- ## 4.1 字段类型枚举
523
-
524
- | 字段 | 类型(type) | 属性(property) |
525
- | --- | --- | --- |
526
- | 文本 | text | 无 |
527
- | 数字 | number | ```java<br>{<br> formatter: "INT" // 整数<br> \| "FLOAT_1" // 保留1位小数<br> \| "FLOAT_2" // 保留2位小数<br> \| "FLOAT_3" // 保留3位小数<br> \| "FLOAT_4" // 保留4位小数<br> \| "THOUSAND" // 千分位<br> \| "THOUSAND_FLOAT" // 千分位(小数点)<br> \| "PRESENT" // 百分比<br> \| "PRESENT_FLOAT" // 百分比(小数点)<br> \| "CNY" // 人民币<br> \| "CNY_FLOAT" // 人民币(小数点)<br> \| "HKD" // 港元<br> \| "HKD_FLOAT" // 港元(小数点)<br> \| "USD" // 美元<br> \| "USD_FLOAT" // 美元(小数点)<br> \| "EUR" // 欧元<br> \| "EUR_FLOAT" // 欧元(小数点)<br> \| "JPY" // 日元<br> \| "JPY_FLOAT"; // 日元(小数点)<br>}<br>``` |
528
- | 单选 | singleSelect | ```java<br>{<br> choices: [{<br> name: "optionName1" // 配置选项名<br> }, {<br> name: "optionName2"<br> }];<br>}<br>``` |
529
- | 多选 | multipleSelect | 同「单选」 |
530
- | 日期 | date | ```java<br>{<br> formatter: "YYYY-MM-DD" // 显示格式: 2023-12-31<br> \| "YYYY-MM-DD HH:mm" // 显示格式: 2023-12-31 09:00<br> \| "YYYY/MM/DD" // 显示格式: 2023/12/31<br> \| "YYYY/MM/DD HH:mm"; // 显示格式: 2023/12/31 09:00<br>}<br>``` |
531
- | 链接 | url | 无 |
532
-
533
- ## 4.2 数据连接器
534
-
535
- ### 4.2.1 核心要素
536
-
537
- ### 4.2.2 关键流程
538
-
539
- ![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/a/B20xLbq5frxavmbP/2c777cc27a014f0f8e14c550e7cdb22a2715.png)
540
-
541
- 1. 用户只有通过授权才能拿到三方平台数据;
542
-
543
- 2. 说明同步的数据的来源和范围;
544
-
545
- 3. 说明三方数据源同步的表结构以及表记录;
546
-
547
- 4. 根据配置的三方数据源,返回数据记录,写入同步表中。
548
-
549
-
550
- #### 4.2.2.1 三方平台授权
551
-
552
- #### 4.2.2.2 同步配置
553
-
554
- 授权成功后,用户可以进行数据同步配置。
555
-
556
- ```mermaid
557
- sequenceDiagram
558
- autonumber
559
- actor user as 用户
560
- participant f as 多维表前端
561
- participant cf as 插件前端
562
- participant cb as 插件服务端
563
- participant b as 多维表服务端
564
-
565
- user ->>f: 点击三方数据源同步
566
- f ->>f: 三方数据源插件授权
567
- f ->>cf: 唤起三方数据源配置页面
568
- cf ->>cf: 数据源配置
569
- cf ->>f: 配置完成点下一步
570
- f ->>+b: 请求表字段配置信息
571
- b ->>cb: 带上数据源配置参数,请求插件服务端,获取表字段信息
572
- cb -->>b: 返回表结构数据
573
- b -->>-f: 返回表结构数据
574
- f -->>user: 返回表结构数据
575
- user ->>f: 选择要同步的数据源字段及配置,点击保存
576
- f ->>b: 保存数据源配置
577
- ```
578
-
579
- #### 4.2.2.3 数据同步
580
-
581
- ```mermaid
582
- sequenceDiagram
583
- autonumber
584
- participant s as 多维表服务端
585
- participant cb as 插件服务端
586
-
587
- s ->>s: 查询数据源配置信息
588
- s ->> cb: 获取数据源表结构数据
589
- cb -->> s: 返回表结构数据
590
- loop 分页拉取数据源分页记录
591
- s ->> cb: 请求数据源记录信息
592
- cb -->> s: 返回数据源记录
593
- end
594
- s ->>s: 更新同步表行数据
595
- ```
596
-
597
- ## 4.3 研发skill(持续更新中)
598
-
599
- 下面是一个用于快速开发数据源插件的skill,内部描述了如何快速部署、测试一个自定义数据源插件。
600
-
601
- [请至钉钉文档查看附件《ai-table-datasource-plugin-generator.zip》。](https://alidocs.dingtalk.com/i/nodes/1OQX0akWmBejogd0TAlmRyQGVGlDd3mE?iframeQuery=anchorId%3DX02mn48o78qy73f712co7i)
602
-
603
- # FAQ
604
-
605
- # 联系我们
606
-
607
- $\color{#0089FF}{@刘福林(烁硕)}$ $\color{#0089FF}{@张瑞(陌渊)}$