@gientech/modual 2.2.3-fix.5 → 2.2.3-fix.6

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 (523) hide show
  1. package/.editorconfig +38 -0
  2. package/.prettierignore +16 -0
  3. package/.prettierrc +17 -0
  4. package/CHANGELOG.md +162 -0
  5. package/Dockerfile +15 -0
  6. package/README.md +761 -761
  7. package/USAGE.md +247 -0
  8. package/bash.exe.stackdump +40 -0
  9. package/components.json +21 -0
  10. package/default.conf +19 -0
  11. package/dist/README.md +761 -0
  12. package/{assets/GientechStreamReader-r5ZTSZk2.js → dist/assets/GientechStreamReader-Bae2-4f7.js} +1 -1
  13. package/{assets/LeftOutlined-DZMeGbKk.js → dist/assets/LeftOutlined-COk0w5nY.js} +1 -1
  14. package/{assets/circle-plus-B73z_SUN.js → dist/assets/circle-plus-DOKqXUMk.js} +1 -1
  15. package/{assets → dist/assets}/database.svg +11 -11
  16. package/{assets → dist/assets}/database_add.svg +53 -53
  17. package/{assets → dist/assets}/database_connect.svg +66 -66
  18. package/{assets → dist/assets}/database_upload.svg +29 -29
  19. package/{assets → dist/assets}/databse.svg +6 -6
  20. package/{assets → dist/assets}/defaultWeLogo.svg +14 -14
  21. package/{assets → dist/assets}/graph.svg +4 -4
  22. package/{assets → dist/assets}/iconAi.svg +9 -9
  23. package/dist/assets/index-1PwCuRjv.js +1061 -0
  24. package/dist/assets/index-7QvYA6eT.js +1 -0
  25. package/{assets/index-97Oe7YBe.js → dist/assets/index-BKbpfN9S.js} +1 -1
  26. package/{assets/index-B4k3tK0f.js → dist/assets/index-BXdyn2W3.js} +1 -1
  27. package/dist/assets/index-BhUNGJOe.js +27 -0
  28. package/{assets/index-BDc2zBbG.js → dist/assets/index-Bin0NZwF.js} +3 -7
  29. package/{assets/index-DHK_n74G.js → dist/assets/index-CpSzj-Sx.js} +73 -58
  30. package/{assets/index-usBlUHOb.js → dist/assets/index-Ct_k24Ar.js} +1 -1
  31. package/dist/assets/index-DT3qkjJ3.js +750 -0
  32. package/dist/assets/index-lFBFf_0k.js +1890 -0
  33. package/{assets/index-iOuQJ8vu.js → dist/assets/index-vfI1_Qg0.js} +1 -1
  34. package/{assets → dist/assets}/knowledge.svg +4 -4
  35. package/{assets → dist/assets}/mysql.svg +14 -14
  36. package/{assets → dist/assets}/sensitive.svg +5 -5
  37. package/{assets/style-6bvhg-jh.js → dist/assets/style-CfNUqKAA.js} +7 -7
  38. package/dist/assets/style2.css +1 -0
  39. package/dist/assets/style5.css +1 -0
  40. package/{assets/triangle-alert-C4Z1AkGW.js → dist/assets/triangle-alert-CaJaaCaZ.js} +1 -1
  41. package/{assets/x-DWGzNb9c.js → dist/assets/x-B65AntWN.js} +1 -1
  42. package/{assistantConfig.js → dist/assistantConfig.js} +9 -14
  43. package/dist/chat.js +1 -0
  44. package/dist/chatCompare.js +1 -0
  45. package/dist/database.js +20 -0
  46. package/{databaseId.js → dist/databaseId.js} +1 -1
  47. package/{databaseTable.js → dist/databaseTable.js} +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/modelManage.js +1 -0
  50. package/dist/package.json +73 -0
  51. package/{sensitive.js → dist/sensitive.js} +6 -6
  52. package/dist/streamFilesReader.js +1 -0
  53. package/{worker → dist/worker}/pdf.worker.min.js +21 -21
  54. package/doc_assets/images/1.png +0 -0
  55. package/doc_assets/images/3.png +0 -0
  56. package/doc_assets/images/component-screenshot.png +1 -0
  57. package/doc_assets//346/226/271/346/241/210/v2.0.7/345/217/230/346/233/264/346/200/273/347/273/223.md +115 -0
  58. package/doc_assets//346/226/271/346/241/210//344/274/230/345/214/226/346/226/271/346/241/210-/345/244/232/344/274/232/350/257/235SSE/350/277/236/346/216/245/347/256/241/347/220/206.md +504 -0
  59. package/doc_assets//346/226/271/346/241/210//346/215/242/350/241/214/346/240/274/345/274/217/344/277/235/346/214/201/344/274/230/345/214/226/346/226/271/346/241/210.md +359 -0
  60. package/eslint.config.js +92 -0
  61. package/index.html +13 -0
  62. package/package.json +125 -44
  63. package/package.json.demo-backup +109 -0
  64. package/postcss.config.cjs +19 -0
  65. package/public/icons/answerAwartar.png +0 -0
  66. package/public/icons/docx-file.png +0 -0
  67. package/public/icons/folder.png +0 -0
  68. package/public/icons/html.png +0 -0
  69. package/public/icons/image.png +0 -0
  70. package/public/icons/jpg-file.png +0 -0
  71. package/public/icons/json.png +0 -0
  72. package/public/icons/md.png +0 -0
  73. package/public/icons/pdf.png +0 -0
  74. package/public/icons/pptx.png +0 -0
  75. package/public/icons/questionAwartar.png +0 -0
  76. package/public/icons/sheets.png +0 -0
  77. package/public/icons/txt.png +0 -0
  78. package/public/icons/xlsx.png +0 -0
  79. package/public/vite.svg +1 -0
  80. package/public/worker/pdf.worker.min.js +22 -0
  81. package/rag/assets/index.Bd0tNzw0.js +2797 -0
  82. package/rag/assets/index.D6t67hlu.css +1 -0
  83. package/rag/assets/left.KBHV5h7q.jpg +0 -0
  84. package/rag/assets/worker-BbpylX7l.DptbXke_.js +13 -0
  85. package/release-it.json +21 -0
  86. package/scripts/README.md +133 -0
  87. package/scripts/build-demo.js +88 -0
  88. package/scripts/check-changelog.cjs +124 -0
  89. package/scripts/check-version.cjs +49 -0
  90. package/scripts/decrypt-api-key.js +95 -0
  91. package/scripts/demo-selector.js +216 -0
  92. package/scripts/dev-demo.js +85 -0
  93. package/scripts/open-file.cjs +61 -0
  94. package/scripts/preview-demo.js +130 -0
  95. package/scripts/run-demo.bat +34 -0
  96. package/src/assets/img/close.png +0 -0
  97. package/src/assets/img/database.png +0 -0
  98. package/src/assets/img/downArrow.png +0 -0
  99. package/src/assets/img/downLoad.png +0 -0
  100. package/src/assets/img/excel.png +0 -0
  101. package/src/assets/img/graphIcon.png +0 -0
  102. package/src/assets/img/iconAi.svg +9 -0
  103. package/src/assets/img/img.png +0 -0
  104. package/src/assets/img/pdf.png +0 -0
  105. package/src/assets/img/ppt.png +0 -0
  106. package/src/assets/img/search.svg +3 -0
  107. package/src/assets/img/selected.svg +4 -0
  108. package/src/assets/img/singleQa.png +0 -0
  109. package/src/assets/img/txt.png +0 -0
  110. package/src/assets/img/webSearch.png +0 -0
  111. package/src/assets/img/word.png +0 -0
  112. package/src/assets/login/homeBg.png +0 -0
  113. package/src/assets/login/left.jpg +0 -0
  114. package/src/assets/login/logoImg.png +0 -0
  115. package/src/examples/ConversationAssistantPage/index.tsx +42 -0
  116. package/src/examples/LoginPage/index.tsx +20 -0
  117. package/src/examples/chat/components/DrawerGraphPreview.tsx +78 -0
  118. package/src/examples/chat/index.tsx +171 -0
  119. package/src/examples/chat/logo03.png +0 -0
  120. package/src/examples/chatCompare/icons/rag_think.svg +8 -0
  121. package/src/examples/chatCompare/icons/wenda_lianwangsousuo.svg +9 -0
  122. package/src/examples/chatCompare/index.tsx +154 -0
  123. package/src/examples/gientechStreamFilesReader/index.tsx +979 -0
  124. package/src/examples/headlessChat/assets/mind.svg +6 -0
  125. package/src/examples/headlessChat/assets/net.svg +7 -0
  126. package/src/examples/headlessChat/index.tsx +298 -0
  127. package/src/examples/knowledgebaseDetails/index.tsx +119 -0
  128. package/src/examples/ragDatabaseDataPage/index.tsx +40 -0
  129. package/src/examples/ragDatabaseIdPage/index.tsx +126 -0
  130. package/src/examples/ragDatabasePage/index.tsx +36 -0
  131. package/src/examples/ragModelManagePage/index.tsx +107 -0
  132. package/src/examples/ragModelManagePage/style.css +7 -0
  133. package/src/examples/ragSearchPage/index.tsx +0 -0
  134. package/src/examples/ragSensitiveWordsPage/index.tsx +117 -0
  135. package/src/examples/ragSensitiveWordsPage/style.css +16 -0
  136. package/src/examples/sensitiveId/index.tsx +41 -0
  137. package/src/examples/streamFiles/index.tsx +417 -0
  138. package/src/examples/utils/demo_setting_pannel.ts +0 -0
  139. package/src/lib_enter.ts +44 -0
  140. package/src/main.tsx +5 -0
  141. package/src/main.tsx.backup +5 -0
  142. package/src/modules/CHAT_UNIFICATION_PLAN.md +324 -0
  143. package/src/modules/assistantConfig/assets/databse.svg +6 -0
  144. package/src/modules/assistantConfig/assets/empty.png +0 -0
  145. package/src/modules/assistantConfig/assets/graph.svg +4 -0
  146. package/src/modules/assistantConfig/assets/knowledge.svg +4 -0
  147. package/src/modules/assistantConfig/assets/sensitive.svg +5 -0
  148. package/src/modules/assistantConfig/components/Database.tsx +171 -0
  149. package/src/modules/assistantConfig/components/Graph.tsx +177 -0
  150. package/src/modules/assistantConfig/components/Knowledge.tsx +276 -0
  151. package/src/modules/assistantConfig/components/NotFoundContent.tsx +21 -0
  152. package/src/modules/assistantConfig/components/Paragraph.tsx +51 -0
  153. package/src/modules/assistantConfig/components/ParamsItem.tsx +40 -0
  154. package/src/modules/assistantConfig/components/ResourceBinderItem.tsx +133 -0
  155. package/src/modules/assistantConfig/components/SearchableSelector.tsx +500 -0
  156. package/src/modules/assistantConfig/components/Sensitive.tsx +221 -0
  157. package/src/modules/assistantConfig/components/SliderInput.tsx +66 -0
  158. package/src/modules/assistantConfig/constants.tsx +75 -0
  159. package/src/modules/assistantConfig/index.tsx +785 -0
  160. package/src/modules/assistantConfig/server.ts +262 -0
  161. package/src/modules/chat/AllFiles.tsx +158 -0
  162. package/src/modules/chat/Conversations/Item.tsx +169 -0
  163. package/src/modules/chat/Conversations/List.tsx +210 -0
  164. package/src/modules/chat/Conversations/groupByTime.ts +39 -0
  165. package/src/modules/chat/Conversations/index.tsx +255 -0
  166. package/src/modules/chat/ReferenceBar.tsx +659 -0
  167. package/src/modules/chat/constants.tsx +66 -0
  168. package/src/modules/chat/i18n.ts +151 -0
  169. package/src/modules/chat/i18n.tsx +151 -0
  170. package/src/modules/chat/icons/rag_think.svg +8 -0
  171. package/src/modules/chat/icons/wenda_lianwangsousuo.svg +9 -0
  172. package/src/modules/chat/index.tsx +2400 -0
  173. package/src/modules/chat/referenceCom/DeleteModal.tsx +75 -0
  174. package/src/modules/chat/referenceCom/DrawerContent.tsx +136 -0
  175. package/src/modules/chat/referenceCom/DrawerDatabase.tsx +102 -0
  176. package/src/modules/chat/referenceCom/DrawerGraphPreview.tsx +86 -0
  177. package/src/modules/chat/referenceCom/DrawerPreview.tsx +73 -0
  178. package/src/modules/chat/referenceCom/DrawerTitle.tsx +26 -0
  179. package/src/modules/chat/referenceCom/RenameModal.tsx +86 -0
  180. package/src/modules/chat/referenceCom/TagCom.tsx +30 -0
  181. package/src/modules/chat/style.css +6 -0
  182. package/src/modules/chat/style.less +7 -0
  183. package/src/modules/chat/types.ts +17 -0
  184. package/src/modules/chat/utils/index.ts +348 -0
  185. package/src/modules/chatCompare/UseChatCompareHooks.ts +103 -0
  186. package/src/modules/chatCompare/components/AichatCompareUseController.tsx +754 -0
  187. package/src/modules/chatCompare/components/AssistantSelector.tsx +127 -0
  188. package/src/modules/chatCompare/components/ChatInputer.tsx +67 -0
  189. package/src/modules/chatCompare/components/ChatInstance.tsx +426 -0
  190. package/src/modules/chatCompare/components/ChatItem.tsx +556 -0
  191. package/src/modules/chatCompare/components/Sender/FileCardCommon.tsx +97 -0
  192. package/src/modules/chatCompare/components/Sender/FileUpload.tsx +89 -0
  193. package/src/modules/chatCompare/components/Sender/FilesDisplay.tsx +309 -0
  194. package/src/modules/chatCompare/components/Sender/VoiceInput.tsx +80 -0
  195. package/src/modules/chatCompare/components/Sender/contexts/BadgeContext.tsx +36 -0
  196. package/src/modules/chatCompare/components/Sender/fileIcon.tsx +100 -0
  197. package/src/modules/chatCompare/components/Sender/index.tsx +850 -0
  198. package/src/modules/chatCompare/components/UseChatInstanceHooks.ts +406 -0
  199. package/src/modules/chatCompare/components/UseScrollHooks.ts +36 -0
  200. package/src/modules/chatCompare/components/components/AllFiles.tsx +156 -0
  201. package/src/modules/chatCompare/components/components/DeleteModal.tsx +75 -0
  202. package/src/modules/chatCompare/components/components/DrawerContent.tsx +138 -0
  203. package/src/modules/chatCompare/components/components/DrawerDatabase.tsx +110 -0
  204. package/src/modules/chatCompare/components/components/DrawerGraphPreview.tsx +95 -0
  205. package/src/modules/chatCompare/components/components/DrawerPreview.tsx +75 -0
  206. package/src/modules/chatCompare/components/components/DrawerTitle.tsx +26 -0
  207. package/src/modules/chatCompare/components/components/DrawerVideo.tsx +85 -0
  208. package/src/modules/chatCompare/components/components/ReferenceBar.tsx +659 -0
  209. package/src/modules/chatCompare/components/components/RenameModal.tsx +86 -0
  210. package/src/modules/chatCompare/components/components/TagCom.tsx +30 -0
  211. package/src/modules/chatCompare/components/defaultStyleSet.tsx +148 -0
  212. package/src/modules/chatCompare/components/server.ts +208 -0
  213. package/src/modules/chatCompare/components/serverFn.ts +172 -0
  214. package/src/modules/chatCompare/components/style.less +97 -0
  215. package/src/modules/chatCompare/components/useFileManager.ts +173 -0
  216. package/src/modules/chatCompare/components/utils.ts +31 -0
  217. package/src/modules/chatCompare/data.ts +842 -0
  218. package/src/modules/chatCompare/index.tsx +537 -0
  219. package/src/modules/chatCompare/utils/AiChat.types.tsx +110 -0
  220. package/src/modules/chatCompare/utils/constants.tsx +70 -0
  221. package/src/modules/chatCompare/utils/fileUploadValidator.ts +183 -0
  222. package/src/modules/chatCompare/utils/icons/rag_think.svg +8 -0
  223. package/src/modules/chatCompare/utils/icons/wenda_lianwangsousuo.svg +9 -0
  224. package/src/modules/chatCompare/utils/index.ts +46 -0
  225. package/src/modules/database/CreateModal.tsx +402 -0
  226. package/src/modules/database/assets/Doris.png +0 -0
  227. package/src/modules/database/assets/PostgreSQL.png +0 -0
  228. package/src/modules/database/assets/SQLServer.png +0 -0
  229. package/src/modules/database/assets/database.svg +11 -0
  230. package/src/modules/database/assets/database_add.svg +53 -0
  231. package/src/modules/database/assets/database_connect.svg +66 -0
  232. package/src/modules/database/assets/database_upload.svg +29 -0
  233. package/src/modules/database/assets/empty.png +0 -0
  234. package/src/modules/database/assets/mysql.svg +14 -0
  235. package/src/modules/database/index.tsx +477 -0
  236. package/src/modules/database/server.ts +196 -0
  237. package/src/modules/databaseId/CustomCom.tsx +156 -0
  238. package/src/modules/databaseId/EditConfig.tsx +280 -0
  239. package/src/modules/databaseId/UploadDrawer.tsx +535 -0
  240. package/src/modules/databaseId/assets/aiOptimize.svg +10 -0
  241. package/src/modules/databaseId/assets/empty.png +0 -0
  242. package/src/modules/databaseId/assets/template.svg +6 -0
  243. package/src/modules/databaseId/assets/upload.svg +9 -0
  244. package/src/modules/databaseId/assets/useTemp.svg +6 -0
  245. package/src/modules/databaseId/i18n.ts +360 -0
  246. package/src/modules/databaseId/index.tsx +855 -0
  247. package/src/modules/databaseId/server.ts +286 -0
  248. package/src/modules/databaseId/style.css +5 -0
  249. package/src/modules/databaseTable/EditRowDrawer.tsx +124 -0
  250. package/src/modules/databaseTable/index.tsx +359 -0
  251. package/src/modules/databaseTable/server.ts +180 -0
  252. package/src/modules/headlessChat/ReferenceBar.tsx +783 -0
  253. package/src/modules/headlessChat/constants.tsx +54 -0
  254. package/src/modules/headlessChat/index.tsx +1903 -0
  255. package/src/modules/headlessChat/referenceCom/DeleteModal.tsx +75 -0
  256. package/src/modules/headlessChat/referenceCom/DrawerContent.tsx +136 -0
  257. package/src/modules/headlessChat/referenceCom/DrawerDatabase.tsx +102 -0
  258. package/src/modules/headlessChat/referenceCom/DrawerGraphPreview.tsx +86 -0
  259. package/src/modules/headlessChat/referenceCom/DrawerPreview.tsx +73 -0
  260. package/src/modules/headlessChat/referenceCom/DrawerTitle.tsx +26 -0
  261. package/src/modules/headlessChat/referenceCom/RenameModal.tsx +86 -0
  262. package/src/modules/headlessChat/referenceCom/TagCom.tsx +30 -0
  263. package/src/modules/headlessChat/style.less +3 -0
  264. package/src/modules/headlessChat/types.ts +23 -0
  265. package/src/modules/headlessChat/utils/index.ts +348 -0
  266. package/src/modules/knowledgeBase/index.tsx +58 -0
  267. package/src/modules/knowledgeBase/server.ts +196 -0
  268. package/src/modules/knowledgebaseDetails/KnowledgeBaseDetails.tsx +169 -0
  269. package/src/modules/knowledgebaseDetails/components/KnowledgeBaseSummaryCard.tsx +193 -0
  270. package/src/modules/knowledgebaseDetails/components/fileManagementParts.tsx +534 -0
  271. package/src/modules/knowledgebaseDetails/components/index.ts +3 -0
  272. package/src/modules/knowledgebaseDetails/index.ts +3 -0
  273. package/src/modules/knowledgebaseDetails/modules/ConfigModule.tsx +49 -0
  274. package/src/modules/knowledgebaseDetails/modules/FaqModule.tsx +47 -0
  275. package/src/modules/knowledgebaseDetails/modules/KnowledgeParseModule.tsx +771 -0
  276. package/src/modules/knowledgebaseDetails/modules/RetrievalTestModule.tsx +49 -0
  277. package/src/modules/knowledgebaseDetails/modules/UploadManagementModule.tsx +49 -0
  278. package/src/modules/knowledgebaseDetails/modules/types.ts +44 -0
  279. package/src/modules/knowledgebaseDetails/modules-shim.d.ts +14 -0
  280. package/src/modules/knowledgebaseDetails/servers/analysis.ts +5 -0
  281. package/src/modules/knowledgebaseDetails/servers/index.ts +318 -0
  282. package/src/modules/login/components/Login/LoginBox/index.tsx +105 -0
  283. package/src/modules/login/components/Login/RegisterBox/index.tsx +181 -0
  284. package/src/modules/login/components/Login/index.tsx +100 -0
  285. package/src/modules/login/i18n.ts +217 -0
  286. package/src/modules/login/index.tsx +113 -0
  287. package/src/modules/login/style.css +3 -0
  288. package/src/modules/login/useServices.ts +53 -0
  289. package/src/modules/login/utils.ts +42 -0
  290. package/src/modules/modelManage/ConfigDrawer.tsx +267 -0
  291. package/src/modules/modelManage/ReplaceModal.tsx +113 -0
  292. package/src/modules/modelManage/assets/empty.png +0 -0
  293. package/src/modules/modelManage/const.ts +51 -0
  294. package/src/modules/modelManage/i18n.ts +407 -0
  295. package/src/modules/modelManage/index.tsx +668 -0
  296. package/src/modules/modelManage/server.ts +231 -0
  297. package/src/modules/nodegraph/index.tsx +1 -0
  298. package/src/modules/search/assets/Icon-history.svg +8 -0
  299. package/src/modules/search/assets/answerAwartar.png +0 -0
  300. package/src/modules/search/assets/doc.png +0 -0
  301. package/src/modules/search/assets/genera.gif +0 -0
  302. package/src/modules/search/assets/icon-robot.svg +9 -0
  303. package/src/modules/search/assets/icon-search-bar.svg +14 -0
  304. package/src/modules/search/assets/icon-sub-title.svg +3 -0
  305. package/src/modules/search/assets/icon-title.svg +9 -0
  306. package/src/modules/search/assets/icon-zoomOut.svg +9 -0
  307. package/src/modules/search/assets/iconAi.svg +9 -0
  308. package/src/modules/search/assets/pdf.png +0 -0
  309. package/src/modules/search/assets/ppt.png +0 -0
  310. package/src/modules/search/assets/search.svg +3 -0
  311. package/src/modules/search/assets/selected.svg +4 -0
  312. package/src/modules/search/assets/txt.png +0 -0
  313. package/src/modules/search/assets/xls.png +0 -0
  314. package/src/modules/search/components/AssisSelect.tsx +137 -0
  315. package/src/modules/search/components/Editor/ChatViewEditor.tsx +261 -0
  316. package/src/modules/search/components/Editor/aichat.css +1 -0
  317. package/src/modules/search/components/Editor/constant.ts +13 -0
  318. package/src/modules/search/components/Editor/index.tsx +113 -0
  319. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +332 -0
  320. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +20 -0
  321. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +38 -0
  322. package/src/modules/search/components/Editor/plugins/displayer.ts +298 -0
  323. package/src/modules/search/components/Editor/plugins/imageClick.tsx +32 -0
  324. package/src/modules/search/components/Editor/plugins/myplugin.tsx +98 -0
  325. package/src/modules/search/components/Editor/ui/avatar.tsx +19 -0
  326. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +21 -0
  327. package/src/modules/search/components/Editor/ui/button.tsx +58 -0
  328. package/src/modules/search/components/Editor/ui/calendar.tsx +68 -0
  329. package/src/modules/search/components/Editor/ui/caption.tsx +46 -0
  330. package/src/modules/search/components/Editor/ui/checkbox.tsx +27 -0
  331. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +188 -0
  332. package/src/modules/search/components/Editor/ui/code-block-element.css +434 -0
  333. package/src/modules/search/components/Editor/ui/code-block-element.tsx +39 -0
  334. package/src/modules/search/components/Editor/ui/code-leaf.tsx +24 -0
  335. package/src/modules/search/components/Editor/ui/code-line-element.tsx +10 -0
  336. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +21 -0
  337. package/src/modules/search/components/Editor/ui/column-element.tsx +30 -0
  338. package/src/modules/search/components/Editor/ui/column-group-element.tsx +94 -0
  339. package/src/modules/search/components/Editor/ui/command.tsx +75 -0
  340. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +22 -0
  341. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +37 -0
  342. package/src/modules/search/components/Editor/ui/comment-item.tsx +74 -0
  343. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +49 -0
  344. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +42 -0
  345. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +22 -0
  346. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +32 -0
  347. package/src/modules/search/components/Editor/ui/comment-value.tsx +34 -0
  348. package/src/modules/search/components/Editor/ui/comments-popover.tsx +63 -0
  349. package/src/modules/search/components/Editor/ui/date-element.tsx +83 -0
  350. package/src/modules/search/components/Editor/ui/dialog.tsx +63 -0
  351. package/src/modules/search/components/Editor/ui/draggable.tsx +177 -0
  352. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +180 -0
  353. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +85 -0
  354. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +28 -0
  355. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +76 -0
  356. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +8 -0
  357. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +51 -0
  358. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +77 -0
  359. package/src/modules/search/components/Editor/ui/heading-element.tsx +48 -0
  360. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +17 -0
  361. package/src/modules/search/components/Editor/ui/hr-element.tsx +30 -0
  362. package/src/modules/search/components/Editor/ui/icons.tsx +267 -0
  363. package/src/modules/search/components/Editor/ui/image-element.tsx +74 -0
  364. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +368 -0
  365. package/src/modules/search/components/Editor/ui/input.tsx +25 -0
  366. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +218 -0
  367. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +20 -0
  368. package/src/modules/search/components/Editor/ui/link-element.tsx +29 -0
  369. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +161 -0
  370. package/src/modules/search/components/Editor/ui/list-element.tsx +30 -0
  371. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +24 -0
  372. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +133 -0
  373. package/src/modules/search/components/Editor/ui/media-popover.tsx +97 -0
  374. package/src/modules/search/components/Editor/ui/mention-element.tsx +43 -0
  375. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +141 -0
  376. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +93 -0
  377. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +67 -0
  378. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +4 -0
  379. package/src/modules/search/components/Editor/ui/placeholder.tsx +52 -0
  380. package/src/modules/search/components/Editor/ui/popover.tsx +32 -0
  381. package/src/modules/search/components/Editor/ui/resizable.tsx +66 -0
  382. package/src/modules/search/components/Editor/ui/separator.tsx +25 -0
  383. package/src/modules/search/components/Editor/ui/style.less +12 -0
  384. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +143 -0
  385. package/src/modules/search/components/Editor/ui/table-element.tsx +243 -0
  386. package/src/modules/search/components/Editor/ui/table-row-element.tsx +22 -0
  387. package/src/modules/search/components/Editor/ui/tableValue.tsx +135 -0
  388. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +43 -0
  389. package/src/modules/search/components/Editor/ui/toggle-element.tsx +31 -0
  390. package/src/modules/search/components/Editor/ui/toolbar.tsx +157 -0
  391. package/src/modules/search/components/Editor/ui/tooltip.tsx +65 -0
  392. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +160 -0
  393. package/src/modules/search/components/Editor/ui/with-draggables.tsx +175 -0
  394. package/src/modules/search/components/FileList.tsx +287 -0
  395. package/src/modules/search/components/ImageGroupView/index.tsx +85 -0
  396. package/src/modules/search/components/ResultContent.tsx +232 -0
  397. package/src/modules/search/components/SearchInput.tsx +232 -0
  398. package/src/modules/search/components/SearchLanding.tsx +74 -0
  399. package/src/modules/search/components/SearchView.tsx +563 -0
  400. package/src/modules/search/components/SimpleEditor.tsx +158 -0
  401. package/src/modules/search/components/SimpleFileList.tsx +215 -0
  402. package/src/modules/search/index.tsx +10 -0
  403. package/src/modules/search/reademe.md +1 -0
  404. package/src/modules/search/servers/apis.tsx +19 -0
  405. package/src/modules/search/servers/index.ts +184 -0
  406. package/src/modules/search/style.less +503 -0
  407. package/src/modules/search/type.ts +22 -0
  408. package/src/modules/search/utils.ts +34 -0
  409. package/src/modules/sensitive/i18n.ts +391 -0
  410. package/src/modules/sensitive/index.tsx +604 -0
  411. package/src/modules/sensitive/sensitiveEditor.tsx +543 -0
  412. package/src/modules/sensitive/server.ts +197 -0
  413. package/src/modules/sensitiveId/AutoTag.tsx +311 -0
  414. package/src/modules/sensitiveId/UploadModal.tsx +181 -0
  415. package/src/modules/sensitiveId/VirtualWrap.tsx +125 -0
  416. package/src/modules/sensitiveId/index.tsx +253 -0
  417. package/src/modules/sensitiveId/server.ts +142 -0
  418. package/src/modules/streamFilesReader/GientechStreamReader.tsx +1658 -0
  419. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  420. package/src/modules/streamFilesReader/components/Header/index.tsx +297 -0
  421. package/src/modules/streamFilesReader/index.tsx +3 -0
  422. package/src/style.css +6 -0
  423. package/src/type.d.ts +0 -0
  424. package/src/utils/commonFn.tsx +153 -0
  425. package/src/utils/decryptApiKey.ts +40 -0
  426. package/src/utils/gientechCommon/components/AppError.tsx +32 -0
  427. package/src/utils/gientechCommon/components/AppLoading.tsx +75 -0
  428. package/src/utils/gientechCommon/components/DeleteModal.tsx +75 -0
  429. package/src/utils/gientechCommon/components/DisplayError.tsx +33 -0
  430. package/src/utils/gientechCommon/components/DisplayLoading.tsx +38 -0
  431. package/src/utils/gientechCommon/components/FeedBackModal.tsx +319 -0
  432. package/src/utils/gientechCommon/components/FileCardCommon.tsx +82 -0
  433. package/src/utils/gientechCommon/components/FileManager/index.tsx +418 -0
  434. package/src/utils/gientechCommon/components/FileManager/style.css +5 -0
  435. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +583 -0
  436. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +359 -0
  437. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +245 -0
  438. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +209 -0
  439. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  440. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +148 -0
  441. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +14 -0
  442. package/src/utils/gientechCommon/components/RenameModal.tsx +86 -0
  443. package/src/utils/gientechCommon/components/style.less +11 -0
  444. package/src/utils/gientechCommon/configs/commonConfig.ts +2 -0
  445. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  446. package/src/utils/gientechCommon/configs/stylesConfig.ts +142 -0
  447. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +761 -0
  448. package/src/utils/gientechCommon/hooks/style.less +8 -0
  449. package/src/utils/gientechCommon/hooks/useFileDisplayTools.tsx +352 -0
  450. package/src/utils/gientechCommon/hooks/useFileManager.ts +169 -0
  451. package/src/utils/gientechCommon/slate/converters/deserializers.ts +763 -0
  452. package/src/utils/gientechCommon/slate/converters/mockData.ts +232 -0
  453. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +258 -0
  454. package/src/utils/gientechCommon/slate/richElements/index.tsx +499 -0
  455. package/src/utils/gientechCommon/utils/fileUtils.ts +86 -0
  456. package/src/utils/gientechCommon/utils/index.ts +386 -0
  457. package/src/utils/gientechCommon/utils/request.ts +37 -0
  458. package/src/utils/gientechCommon/utils/serverFn.ts +172 -0
  459. package/src/utils/index.tsx +186 -0
  460. package/src/utils/testconfigs/demologin/index.tsx +32 -0
  461. package/src/utils/testconfigs/index.ts +66 -0
  462. package/src/vite-env.d.ts +49 -0
  463. package/stats.html +4949 -0
  464. package/tailwind.config.js +170 -0
  465. package/tsconfig.app.json +31 -0
  466. package/tsconfig.app.tsbuildinfo +11 -0
  467. package/tsconfig.json +17 -0
  468. package/tsconfig.node.json +23 -0
  469. package/tsconfig.node.tsbuildinfo +1 -0
  470. package/vite.config.app.ts +91 -0
  471. package/vite.config.ts +238 -0
  472. package/assets/index-BIEKgWu0.js +0 -27
  473. package/assets/index-C1tyXsqQ.js +0 -943
  474. package/assets/index-CzZQWA2P.js +0 -1
  475. package/assets/index-DPA1HCWQ.js +0 -1372
  476. package/assets/index-DPyRygOA.js +0 -745
  477. package/assets/plus-BICgMvz9.js +0 -6
  478. package/assets/search-CD5YKija.js +0 -6
  479. package/assets/style2.css +0 -1
  480. package/assets/style5.css +0 -1
  481. package/chat.js +0 -1
  482. package/chatCompare.js +0 -1
  483. package/database.js +0 -20
  484. package/index.js +0 -1
  485. package/modelManage.js +0 -1
  486. package/streamFilesReader.js +0 -1
  487. /package/{assets → dist/assets}/Doris.png +0 -0
  488. /package/{assets → dist/assets}/PostgreSQL.png +0 -0
  489. /package/{assets → dist/assets}/SQLServer.png +0 -0
  490. /package/{assets → dist/assets}/empty.png +0 -0
  491. /package/{assets → dist/assets}/homeBg.png +0 -0
  492. /package/{assets → dist/assets}/index-CpW6Dhpp.js +0 -0
  493. /package/{assets → dist/assets}/left.jpg +0 -0
  494. /package/{assets → dist/assets}/logoImg.png +0 -0
  495. /package/{assets → dist/assets}/style.css +0 -0
  496. /package/{assets → dist/assets}/style3.css +0 -0
  497. /package/{assets → dist/assets}/style4.css +0 -0
  498. /package/{assets → dist/assets}/worker-BbpylX7l.js +0 -0
  499. /package/{assistantConfig.d.ts → dist/assistantConfig.d.ts} +0 -0
  500. /package/{chat.d.ts → dist/chat.d.ts} +0 -0
  501. /package/{chatCompare.d.ts → dist/chatCompare.d.ts} +0 -0
  502. /package/{database.d.ts → dist/database.d.ts} +0 -0
  503. /package/{databaseId.d.ts → dist/databaseId.d.ts} +0 -0
  504. /package/{databaseTable.d.ts → dist/databaseTable.d.ts} +0 -0
  505. /package/{icons → dist/icons}/answerAwartar.png +0 -0
  506. /package/{icons → dist/icons}/docx-file.png +0 -0
  507. /package/{icons → dist/icons}/folder.png +0 -0
  508. /package/{icons → dist/icons}/html.png +0 -0
  509. /package/{icons → dist/icons}/image.png +0 -0
  510. /package/{icons → dist/icons}/jpg-file.png +0 -0
  511. /package/{icons → dist/icons}/json.png +0 -0
  512. /package/{icons → dist/icons}/md.png +0 -0
  513. /package/{icons → dist/icons}/pdf.png +0 -0
  514. /package/{icons → dist/icons}/pptx.png +0 -0
  515. /package/{icons → dist/icons}/questionAwartar.png +0 -0
  516. /package/{icons → dist/icons}/sheets.png +0 -0
  517. /package/{icons → dist/icons}/txt.png +0 -0
  518. /package/{icons → dist/icons}/xlsx.png +0 -0
  519. /package/{index.d.ts → dist/index.d.ts} +0 -0
  520. /package/{modelManage.d.ts → dist/modelManage.d.ts} +0 -0
  521. /package/{sensitive.d.ts → dist/sensitive.d.ts} +0 -0
  522. /package/{streamFilesReader.d.ts → dist/streamFilesReader.d.ts} +0 -0
  523. /package/{vite.svg → dist/vite.svg} +0 -0
@@ -0,0 +1,771 @@
1
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import styled from 'styled-components';
3
+ import { Upload, FilePlus, FolderPlus, Network, Play } from 'lucide-react';
4
+ import { Xviwer } from '@mxmweb/xviewer';
5
+ import { FileNameCell, MoreActionsButton, ParseStatusFilter, ShowAllFilesFilter } from '../components';
6
+ import {
7
+ fetchKnowledgeParseFileFolderList,
8
+ fetchKnowledgeParseGraphList,
9
+ fetchKnowledgeParseVersionList,
10
+ type KnowledgeParsePagedResult,
11
+ } from '../servers';
12
+ import type { KnowledgeBaseDetailsModuleRenderProps } from './types';
13
+
14
+ /**
15
+ * 模块:知识解析
16
+ * - 顶部 Tab:知识解析
17
+ * - 内容:XViewer(tabs 模式)包含 文件管理 / 版本管理(支持子级 table) / 图谱增强(table)
18
+ *
19
+ * 注意:
20
+ * - 不做 mock 数据:dataSource 由业务层接口返回后传入
21
+ * - 子级 table:依赖 dataSource 行内的 children 字段(数组)触发子表渲染
22
+ */
23
+ export const KnowledgeParseModule: React.FC<KnowledgeBaseDetailsModuleRenderProps> = ({
24
+ kbId,
25
+ server,
26
+ coreRef,
27
+ appStatus,
28
+ styles,
29
+ eventsEmit,
30
+ CustomComponents,
31
+ activeId,
32
+ setActiveId,
33
+ }) => {
34
+ type TableRow = any;
35
+
36
+ const [fileRows, setFileRows] = useState<TableRow[]>([]);
37
+ const [fileTotal, setFileTotal] = useState(0);
38
+ const [versionRows, setVersionRows] = useState<TableRow[]>([]);
39
+ const [versionTotal, setVersionTotal] = useState(0);
40
+ const [graphRows, setGraphRows] = useState<TableRow[]>([]);
41
+ const [graphTotal, setGraphTotal] = useState(0);
42
+ // 记录当前视图下的多选选中项,用于“批量操作”启用/禁用
43
+ const [selectedIdsByView, setSelectedIdsByView] = useState<Record<string, string[]>>({});
44
+ // 版本管理 showType(平台下拉“显示全部文件”)
45
+ const [versionShowType, setVersionShowType] = useState<number>(1);
46
+
47
+ /**
48
+ * 将后端数据项转换为 XViewer(DynamicTable) 可渲染的行结构
49
+ *
50
+ * 说明:
51
+ * - XViewer table 行结构:{ id, data: Array<{columnId,type,value}>, children? }
52
+ * - 为支持后端分页的“远跳页渲染”,这里额外写入 __absIndex(绝对索引)
53
+ *
54
+ * 2026-01-28: 接入知识解析列表,增加宽松字段映射(兼容不同后端字段名)
55
+ */
56
+ const mapToTableRows = useCallback(
57
+ (viewId: string, result: KnowledgeParsePagedResult<any>) => {
58
+ const startAbs = (result.pageNo - 1) * result.pageSize;
59
+
60
+ const pickFirst = (obj: any, keys: string[]) => {
61
+ for (const k of keys) {
62
+ const v = obj?.[k];
63
+ if (v !== undefined && v !== null && `${v}`.length > 0) return v;
64
+ }
65
+ return undefined;
66
+ };
67
+
68
+ const getFileExt = (fileName?: string) => {
69
+ const name = typeof fileName === 'string' ? fileName : '';
70
+ const idx = name.lastIndexOf('.');
71
+ if (idx <= -1) return '';
72
+ return name.slice(idx + 1).toLowerCase();
73
+ };
74
+
75
+ const mapParseMethodLabel = (fileType?: any) => {
76
+ const v = typeof fileType === 'string' ? fileType.toLowerCase() : '';
77
+ if (v === 'intelligent') return '智能切分';
78
+ if (v === 'naive') return '自定义切片';
79
+ if (!v) return '-';
80
+ return v;
81
+ };
82
+
83
+ const mapParseStatus = (raw: any) => {
84
+ // 兼容:后端可能返回 number / string
85
+ if (typeof raw === 'string') {
86
+ const s = raw.trim();
87
+ if (!s) return { label: '-', statusType: 'default' as const };
88
+ // 简单命中中文关键词
89
+ if (s.includes('完成') || s.includes('成功')) return { label: s, statusType: 'success' as const };
90
+ if (s.includes('失败')) return { label: s, statusType: 'error' as const };
91
+ if (s.includes('解析中') || s.includes('进行中')) return { label: s, statusType: 'processing' as const };
92
+ if (s.includes('未解析') || s.includes('待解析')) return { label: s, statusType: 'warning' as const };
93
+ return { label: s, statusType: 'default' as const };
94
+ }
95
+ const n = typeof raw === 'number' ? raw : Number(raw);
96
+ if (Number.isNaN(n)) return { label: '-', statusType: 'default' as const };
97
+ // 经验映射(可按真实枚举随时调整)
98
+ switch (n) {
99
+ case 1:
100
+ return { label: '未解析', statusType: 'warning' as const };
101
+ case 2:
102
+ return { label: '解析中', statusType: 'processing' as const };
103
+ case 3:
104
+ return { label: '解析完成', statusType: 'success' as const };
105
+ case 4:
106
+ return { label: '解析失败', statusType: 'error' as const };
107
+ default:
108
+ return { label: '待解析', statusType: 'default' as const };
109
+ }
110
+ };
111
+
112
+ const rows: TableRow[] = result.list.map((item: any, i: number) => {
113
+ const __absIndex = startAbs + i;
114
+ const id =
115
+ `${pickFirst(item, ['id', 'fileId', 'docId', 'kbFileId', 'uuid']) ?? ''}` || `${viewId}_${__absIndex}`;
116
+
117
+ if (viewId === 'file-management') {
118
+ const fileName = pickFirst(item, ['fileName', 'name', 'title']) as string | undefined;
119
+ const isFolder = Number(pickFirst(item, ['isFolder'])) === 1;
120
+ const name = isFolder
121
+ ? (pickFirst(item, ['folderName', 'name']) as any) ?? fileName ?? ''
122
+ : fileName ?? '';
123
+ const ext = isFolder ? 'folder' : getFileExt(fileName);
124
+ const label = pickFirst(item, ['label']) ?? pickFirst(item, ['tags', 'tag', 'labels']) ?? '';
125
+
126
+ const parseMethodRaw = pickFirst(item, ['fileType', 'parseType', 'parseMethod', 'method']);
127
+ const parseMethodLabel = mapParseMethodLabel(parseMethodRaw);
128
+ const parseStatusRaw = pickFirst(item, ['fileParseStatus', 'parseStatus', 'status']);
129
+ const parseStatus = mapParseStatus(parseStatusRaw);
130
+
131
+ const actionMain =
132
+ parseStatus.label === '解析完成'
133
+ ? { value: 'reparse', label: '重新解析' }
134
+ : { value: 'parse', label: '解析' };
135
+
136
+ const children = Array.isArray(item?.children) ? item.children : undefined;
137
+ const mappedChildren = Array.isArray(children)
138
+ ? children.map((c: any, ci: number) => ({
139
+ id: `${id}_sub_${ci}`,
140
+ data: [
141
+ { columnId: 'name', type: 'text', value: pickFirst(c, ['name', 'fileName', 'title']) ?? '' },
142
+ (() => {
143
+ const st = mapParseStatus(pickFirst(c, ['fileParseStatus', 'status', 'parseStatus']));
144
+ return {
145
+ columnId: 'status',
146
+ type: 'status',
147
+ value: st.label,
148
+ statusType: st.statusType,
149
+ };
150
+ })(),
151
+ { columnId: 'updatedAt', type: 'date', value: pickFirst(c, ['updatedAt', 'gmtModified', 'updateTime']) ?? '' },
152
+ (() => {
153
+ const st = mapParseStatus(pickFirst(c, ['fileParseStatus', 'status', 'parseStatus']));
154
+ const childActionMain =
155
+ st.label === '解析完成'
156
+ ? { value: 'reparse', label: '重新解析' }
157
+ : { value: 'parse', label: '解析' };
158
+ // DynamicTable 的 action 列会把 cell 本身传给 renderer(不是 cell.value)
159
+ // 因此这里必须用“多个同 columnId 的 action cell”来表达多按钮
160
+ return [
161
+ { columnId: 'actions', type: 'action', value: childActionMain.value, label: childActionMain.label },
162
+ { columnId: 'actions', type: 'action', value: 'delete', label: '删除' },
163
+ { columnId: 'actions', type: 'action', value: 'more', label: '...' },
164
+ ];
165
+ })(),
166
+ ],
167
+ }))
168
+ : undefined;
169
+
170
+ return {
171
+ id,
172
+ __absIndex,
173
+ meta: {
174
+ kbId: item?.kbId ?? kbId,
175
+ rawId: item?.id,
176
+ fileName,
177
+ filePath: item?.filePath,
178
+ isFolder,
179
+ folderId: item?.folderId,
180
+ folderName: item?.folderName,
181
+ version: item?.version,
182
+ },
183
+ data: [
184
+ // 注意:cell.value 必须保持 primitive,避免在视图切换时 dataSource 错配导致 React 渲染 object 崩溃
185
+ { columnId: 'name', type: 'customized', value: name ?? '', fileType: ext },
186
+ { columnId: 'tags', type: 'text', value: label ?? '' },
187
+ { columnId: 'docId', type: 'text', value: pickFirst(item, ['docId', 'documentId', 'fileId', 'id', 'fileCode']) ?? '' },
188
+ { columnId: 'chunkCount', type: 'text', value: pickFirst(item, ['chunkCount', 'chunkNum', 'chunkSize', 'chunk_count']) ?? '' },
189
+ { columnId: 'parseMethod', type: 'text', value: parseMethodLabel },
190
+ {
191
+ columnId: 'parseStatus',
192
+ type: 'status',
193
+ value: parseStatus.label,
194
+ statusType: parseStatus.statusType,
195
+ },
196
+ { columnId: 'versionTime', type: 'date', value: pickFirst(item, ['reviseDate', 'versionTime', 'gmtModified', 'updateTime', 'uploadTime']) ?? '' },
197
+ { columnId: 'uploadTime', type: 'date', value: pickFirst(item, ['uploadTime', 'gmtCreate', 'createTime']) ?? '' },
198
+ { columnId: 'actions', type: 'action', value: actionMain.value, label: actionMain.label },
199
+ { columnId: 'actions', type: 'action', value: 'delete', label: '删除' },
200
+ { columnId: 'actions', type: 'action', value: 'more', label: '...' },
201
+ ],
202
+ ...(mappedChildren
203
+ ? {
204
+ // children 的 data 里我们返回了数组,需要拍平
205
+ children: mappedChildren.map((r: any) => ({
206
+ ...r,
207
+ data: (r.data || []).flat(),
208
+ })),
209
+ }
210
+ : {}),
211
+ };
212
+ }
213
+
214
+ if (viewId === 'version-management') {
215
+ /**
216
+ * 版本管理接口返回结构:
217
+ * - records[] 的顶层字段可能为 null
218
+ * - 当前版本/文件详情通常在 kbFiles[0] 中(见平台返回)
219
+ *
220
+ * 2026-01-28: 兼容 records[].kbFiles[0] 作为详情源
221
+ */
222
+ const info = (Array.isArray(item?.kbFiles) && item.kbFiles.length > 0 ? item.kbFiles[0] : item) || item;
223
+
224
+ const fileName =
225
+ (pickFirst(info, ['fileName', 'name', 'title']) as string | undefined) ||
226
+ (pickFirst(item, ['parentFileName']) as string | undefined);
227
+ const ext = getFileExt(fileName);
228
+
229
+ const parseMethodRaw = pickFirst(info, ['fileType', 'parseType', 'parseMethod', 'method']);
230
+ // 版本管理在平台展示 raw(naive/intelligent)
231
+ const parseMethodLabel = typeof parseMethodRaw === 'string' ? parseMethodRaw : `${parseMethodRaw ?? ''}`;
232
+
233
+ const parseStatusRaw = pickFirst(info, ['fileParseStatus', 'parseStatus', 'status']);
234
+ const parseStatus = mapParseStatus(parseStatusRaw);
235
+ const actionMain =
236
+ parseStatus.label === '解析完成'
237
+ ? { value: 'reparse', label: '重新解析' }
238
+ : { value: 'parse', label: '解析' };
239
+
240
+ return {
241
+ id,
242
+ __absIndex,
243
+ meta: {
244
+ kbId: info?.kbId ?? item?.kbId ?? kbId,
245
+ rawId: info?.id ?? item?.id,
246
+ fileName,
247
+ filePath: info?.filePath ?? item?.filePath,
248
+ version: info?.version ?? item?.version,
249
+ },
250
+ data: [
251
+ { columnId: 'name', type: 'customized', value: fileName ?? '', fileType: ext },
252
+ { columnId: 'chunkCount', type: 'text', value: pickFirst(info, ['chunkCount', 'chunkNum', 'chunkSize', 'chunk_count']) ?? '' },
253
+ { columnId: 'parseMethod', type: 'text', value: parseMethodLabel },
254
+ { columnId: 'parseStatus', type: 'status', value: parseStatus.label, statusType: parseStatus.statusType },
255
+ // 平台该字段多数与 uploadTime 一致(reviseDate 可能为空)
256
+ { columnId: 'versionTime', type: 'date', value: pickFirst(info, ['reviseDate', 'versionTime', 'gmtModified', 'updateTime', 'uploadTime']) ?? '' },
257
+ { columnId: 'uploadTime', type: 'date', value: pickFirst(info, ['uploadTime', 'gmtCreate', 'createTime']) ?? '' },
258
+ { columnId: 'actions', type: 'action', value: actionMain.value, label: actionMain.label },
259
+ { columnId: 'actions', type: 'action', value: 'delete', label: '删除' },
260
+ { columnId: 'actions', type: 'action', value: 'more', label: '...' },
261
+ ],
262
+ };
263
+ }
264
+
265
+ // graph-enhancement
266
+ const graphStatusRaw =
267
+ pickFirst(item, ['graphParseStatus', 'graphStatus', 'status']) ??
268
+ pickFirst(item, ['fileParseStatus', 'parseStatus']);
269
+ const graphStatus = mapParseStatus(graphStatusRaw);
270
+ return {
271
+ id,
272
+ __absIndex,
273
+ data: [
274
+ { columnId: 'name', type: 'text', value: pickFirst(item, ['name', 'graphName', 'fileName', 'title']) ?? '' },
275
+ { columnId: 'nodeCount', type: 'text', value: pickFirst(item, ['nodeCount', 'nodes']) ?? '' },
276
+ { columnId: 'relationCount', type: 'text', value: pickFirst(item, ['relationCount', 'relations', 'edgeCount', 'edgeCount']) ?? '' },
277
+ { columnId: 'graphStatus', type: 'status', value: graphStatus.label, statusType: graphStatus.statusType },
278
+ { columnId: 'actions', type: 'action', value: 'more', label: '...' },
279
+ ],
280
+ };
281
+ });
282
+
283
+ return rows;
284
+ },
285
+ []
286
+ );
287
+
288
+ /**
289
+ * 将某一页的数据 merge 到已有缓存中(依赖 __absIndex)
290
+ */
291
+ const mergeAbsIndexedRows = useCallback((prev: TableRow[], nextRows: TableRow[]) => {
292
+ const map = new Map<number, TableRow>();
293
+ for (const r of prev) {
294
+ if (typeof r?.__absIndex === 'number') map.set(r.__absIndex, r);
295
+ }
296
+ for (const r of nextRows) {
297
+ if (typeof r?.__absIndex === 'number') map.set(r.__absIndex, r);
298
+ }
299
+ return Array.from(map.entries())
300
+ .sort((a, b) => a[0] - b[0])
301
+ .map(([, v]) => v);
302
+ }, []);
303
+
304
+ /**
305
+ * 统一请求入口:按 viewId 调用对应的列表接口
306
+ *
307
+ * 2026-01-28: 知识解析列表接入(文件管理 / 版本管理 / 知识图谱)
308
+ */
309
+ const requestList = useCallback(
310
+ async (
311
+ viewId: 'file-management' | 'version-management' | 'graph-enhancement',
312
+ pageNo: number,
313
+ pageSize: number,
314
+ signal?: AbortSignal
315
+ ) => {
316
+ if (!server || !kbId) return null;
317
+
318
+ // 这里先按分析文档的默认约定:fileListType=1,fuzzy 为空
319
+ const baseParams = {
320
+ kbId,
321
+ pageNo,
322
+ pageSize,
323
+ fileListType: 1,
324
+ fuzzy: '',
325
+ };
326
+
327
+ if (viewId === 'file-management') {
328
+ return await fetchKnowledgeParseFileFolderList(server, { ...baseParams, signal });
329
+ }
330
+ if (viewId === 'version-management') {
331
+ return await fetchKnowledgeParseVersionList(server, { ...baseParams, showType: versionShowType, signal });
332
+ }
333
+ // 图谱增强接口与文件管理共用 /folder/list,通过 fileListType=3 区分
334
+ return await fetchKnowledgeParseGraphList(server, { ...baseParams, fileListType: 3, signal });
335
+ },
336
+ [kbId, server, versionShowType]
337
+ );
338
+
339
+ const applyResult = useCallback(
340
+ (
341
+ viewId: 'file-management' | 'version-management' | 'graph-enhancement',
342
+ result: KnowledgeParsePagedResult<any>,
343
+ merge: boolean
344
+ ) => {
345
+ const nextRows = mapToTableRows(viewId, result);
346
+
347
+ if (viewId === 'file-management') {
348
+ setFileTotal(result.total);
349
+ setFileRows((prev) => (merge ? mergeAbsIndexedRows(prev, nextRows) : nextRows));
350
+ return;
351
+ }
352
+ if (viewId === 'version-management') {
353
+ setVersionTotal(result.total);
354
+ setVersionRows((prev) => (merge ? mergeAbsIndexedRows(prev, nextRows) : nextRows));
355
+ return;
356
+ }
357
+ setGraphTotal(result.total);
358
+ setGraphRows((prev) => (merge ? mergeAbsIndexedRows(prev, nextRows) : nextRows));
359
+ },
360
+ [mapToTableRows, mergeAbsIndexedRows]
361
+ );
362
+
363
+ const viewConfig = useMemo(() => {
364
+ const selectedIdsForActiveView = selectedIdsByView[activeId] || [];
365
+ const MoreActionsButtonWithSelection: React.FC<any> = (p) => (
366
+ <MoreActionsButton {...p} selectedIds={selectedIdsForActiveView} totalCount={activeId === 'file-management' ? fileTotal : activeId === 'version-management' ? versionTotal : graphTotal} />
367
+ );
368
+
369
+ const baseFileManagementView = {
370
+ label: '文件管理',
371
+ id: 'file-management',
372
+ type: 'table' as const,
373
+ allowMultiSelect: true,
374
+ viewBehavior: 'pagination' as const,
375
+ viewPageSize: 10,
376
+ total: fileTotal,
377
+ requestPagesize: 10,
378
+ columns: [
379
+ {
380
+ title: '名称',
381
+ id: 'name',
382
+ type: 'customized',
383
+ tip: '文件名称',
384
+ component: FileNameCell,
385
+ },
386
+ { title: '标签', id: 'tags', type: 'text', tip: '文件标签' },
387
+ { title: '文档编号', id: 'docId', type: 'text', tip: '文档编号' },
388
+ { title: '分块数', id: 'chunkCount', type: 'text', tip: '分块数量' },
389
+ { title: '解析方法', id: 'parseMethod', type: 'text', tip: '解析方法' },
390
+ { title: '解析状态', id: 'parseStatus', type: 'status', tip: '解析状态' },
391
+ { title: '版本修订时间', id: 'versionTime', type: 'date', tip: '版本修订时间' },
392
+ { title: '上传时间', id: 'uploadTime', type: 'date', tip: '上传时间' },
393
+ { title: '操作', id: 'actions', type: 'action' },
394
+ ],
395
+ toolbar: [
396
+ {
397
+ type: 'button' as const,
398
+ key: 'upload',
399
+ label: '上传',
400
+ icon: <Upload size={16} />,
401
+ btnType: 'primary' as const,
402
+ },
403
+ {
404
+ type: 'button' as const,
405
+ key: 'add_file',
406
+ label: '添加文件',
407
+ icon: <FilePlus size={16} />,
408
+ btnType: 'default' as const,
409
+ },
410
+ {
411
+ type: 'button' as const,
412
+ key: 'new_folder',
413
+ label: '新建文件夹',
414
+ icon: <FolderPlus size={16} />,
415
+ btnType: 'default' as const,
416
+ },
417
+ {
418
+ type: 'customized' as const,
419
+ key: 'more_actions',
420
+ component: MoreActionsButtonWithSelection,
421
+ },
422
+ {
423
+ type: 'customized' as const,
424
+ key: 'parse_status_filter',
425
+ component: ParseStatusFilter,
426
+ position: 'right' as const,
427
+ },
428
+ {
429
+ type: 'fuzzy_search' as const,
430
+ key: 'search',
431
+ label: '搜索内容',
432
+ searchKeys: ['name', 'tags'],
433
+ position: 'right' as const,
434
+ },
435
+ ],
436
+ };
437
+
438
+ return {
439
+ model: 'tabs' as const,
440
+ defaultActiveId: activeId,
441
+ views: [
442
+ baseFileManagementView,
443
+ {
444
+ label: '版本管理',
445
+ id: 'version-management',
446
+ type: 'table' as const,
447
+ allowMultiSelect: true,
448
+ viewBehavior: 'pagination' as const,
449
+ viewPageSize: 10,
450
+ total: versionTotal,
451
+ requestPagesize: 10,
452
+ toolbar: [
453
+ {
454
+ type: 'customized' as const,
455
+ key: 'more_actions',
456
+ component: MoreActionsButtonWithSelection,
457
+ },
458
+ {
459
+ type: 'customized' as const,
460
+ key: 'version_show_filter',
461
+ component: ShowAllFilesFilter,
462
+ position: 'right' as const,
463
+ },
464
+ {
465
+ type: 'fuzzy_search' as const,
466
+ key: 'search',
467
+ label: '搜索内容',
468
+ searchKeys: ['name'],
469
+ position: 'right' as const,
470
+ },
471
+ ],
472
+ columns: [
473
+ { title: '名称', id: 'name', type: 'customized', component: FileNameCell },
474
+ { title: '分块数', id: 'chunkCount', type: 'text' },
475
+ { title: '解析方法', id: 'parseMethod', type: 'text' },
476
+ { title: '解析状态', id: 'parseStatus', type: 'status' },
477
+ { title: '版本修订时间', id: 'versionTime', type: 'date' },
478
+ { title: '上传时间', id: 'uploadTime', type: 'date' },
479
+ { title: '操作', id: 'actions', type: 'action' },
480
+ ],
481
+ },
482
+ {
483
+ label: '图谱增强',
484
+ id: 'graph-enhancement',
485
+ type: 'table' as const,
486
+ allowMultiSelect: false,
487
+ viewBehavior: 'pagination' as const,
488
+ viewPageSize: 10,
489
+ total: graphTotal,
490
+ requestPagesize: 10,
491
+ toolbar: [
492
+ {
493
+ type: 'button' as const,
494
+ key: 'upload',
495
+ label: '上传',
496
+ icon: <Upload size={16} />,
497
+ btnType: 'primary' as const,
498
+ },
499
+ {
500
+ type: 'button' as const,
501
+ key: 'add_file',
502
+ label: '添加文件',
503
+ icon: <FilePlus size={16} />,
504
+ btnType: 'default' as const,
505
+ },
506
+ {
507
+ type: 'button' as const,
508
+ key: 'graph_visualize',
509
+ label: '可视化图谱',
510
+ icon: <Network size={16} />,
511
+ btnType: 'default' as const,
512
+ },
513
+ {
514
+ type: 'button' as const,
515
+ key: 'graph_parse',
516
+ label: '图谱解析',
517
+ icon: <Play size={16} />,
518
+ btnType: 'default' as const,
519
+ },
520
+ {
521
+ type: 'fuzzy_search' as const,
522
+ key: 'search',
523
+ label: '搜索内容',
524
+ searchKeys: ['name'],
525
+ position: 'right' as const,
526
+ },
527
+ ],
528
+ columns: [
529
+ { title: '名称', id: 'name', type: 'text' },
530
+ { title: '节点数', id: 'nodeCount', type: 'text' },
531
+ { title: '关系数', id: 'relationCount', type: 'text' },
532
+ { title: '图谱解析状态', id: 'graphStatus', type: 'status' },
533
+ { title: '操作', id: 'actions', type: 'action' },
534
+ ],
535
+ },
536
+ ],
537
+ dataSource:
538
+ activeId === 'file-management'
539
+ ? fileRows
540
+ : activeId === 'version-management'
541
+ ? versionRows
542
+ : graphRows,
543
+ };
544
+ }, [activeId, fileRows, fileTotal, graphRows, graphTotal, versionRows, versionTotal, selectedIdsByView]);
545
+
546
+ const handleXviewerEventsEmit = useCallback(
547
+ (name: string, data: any, appFn: any) => {
548
+ if (name === 'select' && data?.id) {
549
+ setActiveId(data.id);
550
+ }
551
+
552
+ // 兼容 XViewer 表格多选回传:尽可能从 data 中识别“选中行 id 列表”
553
+ // 常见字段:selectedRowKeys / selectedKeys / selectedIds / selectedItems
554
+ if (data && (data.viewId || data.id)) {
555
+ const viewId = (data.viewId || data.id) as string;
556
+ const selectedIds: string[] | undefined =
557
+ (Array.isArray(data.selectedIds) ? data.selectedIds : undefined) ??
558
+ (Array.isArray(data.selectedRowKeys) ? data.selectedRowKeys : undefined) ??
559
+ (Array.isArray(data.selectedKeys) ? data.selectedKeys : undefined) ??
560
+ (Array.isArray(data.selectedItems) ? data.selectedItems.map((it: any) => `${it?.id ?? it}`) : undefined);
561
+
562
+ if (selectedIds) {
563
+ setSelectedIdsByView((prev) => ({ ...prev, [viewId]: selectedIds.map((v) => `${v}`) }));
564
+ }
565
+ }
566
+
567
+ // 版本管理 showType 切换(显示全部文件)
568
+ if (name === 'toolbar_version_show_filter_change' && typeof data?.value === 'number') {
569
+ setVersionShowType(data.value);
570
+ // 切换筛选时清空当前缓存,避免 UI 看到旧数据
571
+ setVersionRows([]);
572
+ setVersionTotal(0);
573
+ }
574
+
575
+ if (name === 'pagination:request_merge_data' && data?.viewId && data?.request) {
576
+ const viewId = data.viewId as 'file-management' | 'version-management' | 'graph-enhancement';
577
+ const req = data.request as { pageNo: number; pageSize: number };
578
+ if (viewId && req?.pageNo && req?.pageSize) {
579
+ const controller = new AbortController();
580
+ requestList(viewId, req.pageNo, req.pageSize, controller.signal)
581
+ .then((res) => {
582
+ if (!res) return;
583
+ applyResult(viewId, res, true);
584
+ })
585
+ .catch(() => undefined);
586
+ }
587
+ }
588
+
589
+ eventsEmit(name, data, appFn);
590
+ },
591
+ [applyResult, eventsEmit, requestList, setActiveId]
592
+ );
593
+
594
+ // 触发首屏数据加载(按当前 viewId 拉取第 1 页)
595
+ useEffect(() => {
596
+ if (!server || !kbId) return;
597
+ const viewId = (activeId || 'file-management') as 'file-management' | 'version-management' | 'graph-enhancement';
598
+ const controller = new AbortController();
599
+ requestList(viewId, 1, 10, controller.signal)
600
+ .then((res) => {
601
+ if (!res) return;
602
+ applyResult(viewId, res, false);
603
+ })
604
+ .catch(() => undefined);
605
+ return () => controller.abort();
606
+ }, [activeId, applyResult, kbId, requestList, server]);
607
+
608
+ return (
609
+ <XviewerToolbarSkin
610
+ className="knowledgebase-xviewer-toolbar-skin"
611
+ $primary={styles?.theme?.colors?.primary}
612
+ $border={styles?.theme?.colors?.border}
613
+ $text={styles?.theme?.colors?.text}
614
+ $textSecondary={styles?.theme?.colors?.textSecondary}
615
+ >
616
+ <Xviwer
617
+ ref={coreRef}
618
+ label=""
619
+ model={viewConfig.model}
620
+ defaultActiveId={viewConfig.defaultActiveId}
621
+ views={viewConfig.views}
622
+ dataSource={viewConfig.dataSource}
623
+ // 子级 table 配置(当 dataSource 的某行存在 children 时,自动渲染子表)
624
+ subTableConfig={{
625
+ type: 'table' as const,
626
+ allowMultiSelect: false,
627
+ viewBehavior: 'pagination' as const,
628
+ viewPageSize: 5,
629
+ columns: [
630
+ { title: '名称', id: 'name', type: 'text' },
631
+ { title: '状态', id: 'status', type: 'status' },
632
+ { title: '更新时间', id: 'updatedAt', type: 'date' },
633
+ { title: '操作', id: 'actions', type: 'action' },
634
+ ],
635
+ }}
636
+ eventsEmit={(name: string, data: any, appFn: any) => {
637
+ console.log('[KnowledgeParseModule eventsEmit]', name, data);
638
+ handleXviewerEventsEmit(name, data, appFn);
639
+ }}
640
+ status={appStatus}
641
+ styles={styles}
642
+ CustomComponents={CustomComponents}
643
+ />
644
+ </XviewerToolbarSkin>
645
+ );
646
+ };
647
+
648
+ const XviewerToolbarSkin = styled.div.attrs({
649
+ className: 'knowledgebase-xviewer-toolbar-skin',
650
+ })<{
651
+ $primary?: string;
652
+ $border?: string;
653
+ $text?: string;
654
+ $textSecondary?: string;
655
+ }>`
656
+ width: 100%;
657
+ height: 100%;
658
+ min-height: 0;
659
+ display: flex;
660
+ flex-direction: column;
661
+ flex: 1;
662
+ min-height: 0;
663
+
664
+ /* 仅影响 XViewer 内的 antd toolbar 按钮 */
665
+ .ant-btn:not(.ant-btn-link):not(.ant-btn-text) {
666
+ height: 32px;
667
+ padding: 0 19px;
668
+ border-radius: 8px;
669
+ box-shadow: none;
670
+ font-size: 14px;
671
+ font-weight: 500;
672
+ }
673
+
674
+ .ant-btn.ant-btn-default,
675
+ .ant-btn.ant-btn-variant-outlined,
676
+ .ant-btn.ant-btn-color-default {
677
+ background: #ffffff;
678
+ border-color: ${({ $border }) => $border || '#D0D5DD'};
679
+ color: ${({ $text }) => $text || '#101828'};
680
+ }
681
+
682
+ .ant-btn.ant-btn-default:hover,
683
+ .ant-btn.ant-btn-variant-outlined:hover,
684
+ .ant-btn.ant-btn-color-default:hover {
685
+ background: #ffffff;
686
+ border-color: ${({ $primary }) => $primary || '#3B82F6'};
687
+ }
688
+
689
+ .ant-btn:focus-visible {
690
+ outline: none;
691
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
692
+ }
693
+
694
+ .ant-btn.ant-btn-primary {
695
+ border-color: ${({ $primary }) => $primary || '#2563EB'};
696
+ background: ${({ $primary }) => $primary || '#2563EB'};
697
+ }
698
+
699
+ .ant-btn.ant-btn-primary:hover {
700
+ border-color: ${({ $primary }) => $primary || '#1D4ED8'};
701
+ background: ${({ $primary }) => $primary || '#1D4ED8'};
702
+ }
703
+
704
+ .ant-btn .ant-btn-icon {
705
+ display: inline-flex;
706
+ align-items: center;
707
+ justify-content: center;
708
+ }
709
+
710
+ .ant-btn.ant-btn-default .ant-btn-icon,
711
+ .ant-btn.ant-btn-variant-outlined .ant-btn-icon {
712
+ color: ${({ $primary }) => $primary || '#2563EB'};
713
+ }
714
+
715
+ /* Select / Input 对齐高度(与参考图一致) */
716
+ .ant-select .ant-select-selector {
717
+ height: 32px !important;
718
+ border-radius: 8px !important;
719
+ display: flex !important;
720
+ align-items: center !important;
721
+ border-color: ${({ $border }) => $border || '#D0D5DD'} !important;
722
+ }
723
+
724
+ .ant-select .ant-select-selection-item,
725
+ .ant-select .ant-select-selection-placeholder {
726
+ line-height: 30px !important;
727
+ color: ${({ $text }) => $text || '#101828'} !important;
728
+ }
729
+
730
+ .ant-input-affix-wrapper {
731
+ height: 32px;
732
+ border-radius: 8px;
733
+ border-color: ${({ $border }) => $border || '#D0D5DD'};
734
+ }
735
+
736
+ .ant-input-affix-wrapper input {
737
+ height: 30px;
738
+ }
739
+
740
+ /* Disabled 视觉 */
741
+ .ant-btn:disabled,
742
+ .ant-btn[disabled] {
743
+ background: #f2f4f7 !important;
744
+ border-color: #eaecf0 !important;
745
+ color: ${({ $textSecondary }) => $textSecondary || '#98A2B3'} !important;
746
+ opacity: 1;
747
+ }
748
+
749
+ /* ===== 表格空间更宽裕(仅影响本模块的 DynamicTable)===== */
750
+ .dynamic-table-th {
751
+ padding: 12px 16px;
752
+ font-size: 14px;
753
+ line-height: 20px;
754
+ }
755
+
756
+ .dynamic-table-td {
757
+ padding: 12px 16px;
758
+ line-height: 20px;
759
+ }
760
+
761
+ .dynamic-table-tr {
762
+ height: 56px;
763
+ }
764
+
765
+ /* 多选 checkbox 列更好点按 */
766
+ .dynamic-table-td input[type='checkbox'] {
767
+ width: 16px;
768
+ height: 16px;
769
+ }
770
+ `;
771
+