@gientech/modual 1.4.7 → 1.5.0

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 (63) hide show
  1. package/dist/assets/{GientechStreamReader-4496nAm0.js → GientechStreamReader-BE_oxQLt.js} +2 -2
  2. package/dist/assets/Input-CNqIA41v.js +236 -0
  3. package/dist/assets/index-Bof0D4vl.js +1088 -0
  4. package/dist/assets/{index-BVENTW1Q.js → index-C5RhLYRh.js} +1 -1
  5. package/dist/assets/index-COcmK9my.js +1 -0
  6. package/dist/assets/index-CysDmrpo.js +1798 -0
  7. package/dist/assets/{index-7rZAt9P3.js → index-DP8Ki8qW.js} +1 -1
  8. package/dist/assets/index-pybYlMAT.js +11 -0
  9. package/dist/assets/{plus-CrtEUXaQ.js → plus-CzbYbK8K.js} +1 -1
  10. package/dist/assets/style3.css +1 -1
  11. package/dist/assets/worker-BbpylX7l.js +13 -0
  12. package/dist/assets/{x-Dr3EBTzJ.js → x-DdRafKQU.js} +1 -1
  13. package/dist/chat.d.ts +17 -0
  14. package/dist/chat.js +3830 -52
  15. package/dist/database.js +2 -2
  16. package/dist/databaseId.js +1 -11
  17. package/dist/databaseTable.js +2 -2
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.js +1 -14
  20. package/dist/modelManage.js +1 -1
  21. package/dist/package.json +1 -1
  22. package/dist/sensitive.js +1 -1
  23. package/dist/streamFilesReader.js +1 -1
  24. package/package.json +6 -6
  25. package/scripts/README.md +133 -133
  26. package/scripts/build-demo.js +88 -88
  27. package/scripts/demo-selector.js +216 -216
  28. package/scripts/preview-demo.js +130 -130
  29. package/scripts/run-demo.bat +34 -34
  30. package/src/assets/img/close.png +0 -0
  31. package/src/assets/img/database.png +0 -0
  32. package/src/assets/img/downLoad.png +0 -0
  33. package/src/assets/img/graphIcon.png +0 -0
  34. package/src/assets/img/pdf.png +0 -0
  35. package/src/assets/img/singleQa.png +0 -0
  36. package/src/assets/img/webSearch.png +0 -0
  37. package/src/examples/chat/index.tsx +5 -29
  38. package/src/main.tsx.backup +2 -2
  39. package/src/modules/chat/ReferenceBar.tsx +13 -0
  40. package/src/modules/chat/constants.tsx +29 -6
  41. package/src/modules/chat/index.tsx +126 -4
  42. package/src/utils/gientechCommon/components/ReferenceListDrawer.tsx +542 -0
  43. package/src/utils/gientechCommon/components/hooks/useAichatEvent.ts +10 -0
  44. package/src/utils/gientechCommon/components/referenceCom/DeleteModal.tsx +75 -0
  45. package/src/utils/gientechCommon/components/referenceCom/DrawerContent.tsx +136 -0
  46. package/src/utils/gientechCommon/components/referenceCom/DrawerDatabase.tsx +110 -0
  47. package/src/utils/gientechCommon/components/referenceCom/DrawerGraphPreview.tsx +86 -0
  48. package/src/utils/gientechCommon/components/referenceCom/DrawerPreview.tsx +73 -0
  49. package/src/utils/gientechCommon/components/referenceCom/DrawerTitle.tsx +26 -0
  50. package/src/utils/gientechCommon/components/referenceCom/RenameModal.tsx +86 -0
  51. package/src/utils/gientechCommon/components/referenceCom/TagCom.tsx +30 -0
  52. package/src/utils/gientechCommon/components/style.css +3 -0
  53. package/src/utils/gientechCommon/components/utils/index.ts +326 -0
  54. package/src/utils/testconfigs/index.ts +1 -1
  55. package/stats.html +1 -1
  56. package/dist/assets/AppLoading-mci3gLZt.js +0 -414
  57. package/dist/assets/index-Bb8_WB-l.js +0 -1
  58. package/dist/assets/index-BpJ9Bm5x.js +0 -21
  59. package/dist/assets/index-CNxDI4h-.js +0 -1078
  60. package/dist/assets/index-CWzpBU29.js +0 -1
  61. package/dist/assets/index-D1m34Ij7.js +0 -1429
  62. package/dist/assets/index-_gBtdXQV.js +0 -585
  63. package/dist/assets/style4.css +0 -1
@@ -9,7 +9,7 @@ import '@mxmweb/rtext/style.css';
9
9
  import '@mxmweb/aichat/style.css';
10
10
  import '@mxmweb/zui/style.css';
11
11
  import { defaultTheme, deepMergeTheme, type Styles } from '@mxmweb/zui';
12
-
12
+ import ReferenceBar from './ReferenceBar';
13
13
  import { DefaultSenderConfig } from './constants';
14
14
  import GientechConversationPanel from './Conversations';
15
15
  import {
@@ -38,6 +38,12 @@ import DisplayError from '../../utils/gientechCommon/components/DisplayError';
38
38
  import { maxPollCount, maxPollInterval } from '../../utils/gientechCommon/configs/commonConfig';
39
39
  import { RenameModal } from '../../utils/gientechCommon/components/RenameModal';
40
40
  import { DeleteModal } from '../../utils/gientechCommon/components/DeleteModal';
41
+ import useAichatEvent from '../../utils/gientechCommon/components/hooks/useAichatEvent';
42
+ import { ReferenceListDrawer } from '../../utils/gientechCommon/components/ReferenceListDrawer';
43
+
44
+ export enum DrawerType {
45
+ REFERENCELIST = 'referencelist',
46
+ }
41
47
 
42
48
  interface SenderConfig {
43
49
  actions?: Array<{
@@ -112,6 +118,11 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
112
118
  scrollOld,
113
119
  ...rest
114
120
  }: GientechChatAdopterProps) {
121
+ const [drawerConfig, setDrawerConfig] = useState<{ type: string; data?: any }>({
122
+ type: 'string',
123
+ });
124
+ const [open, setOpen] = useState(false);
125
+ const {} = useAichatEvent();
115
126
  // 统一归一化样式:使用 UI 库的 deepMergeTheme
116
127
  const normalizedStyles: Styles = useMemo(() => {
117
128
  const baseStyles: Styles = { theme: defaultTheme, mode: 'light' };
@@ -450,7 +461,7 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
450
461
  .catch(() => {
451
462
  setAppStatus(prev => ({ ...prev, app: 'error' }));
452
463
  });
453
- }, [url, token]);
464
+ }, []);
454
465
 
455
466
  /**
456
467
  * 当 activeSessionId 变化时,获取对应的聊天记录
@@ -464,6 +475,78 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
464
475
  headers: { Authorization: token },
465
476
  })
466
477
  .then(res => {
478
+ // const r = {
479
+ // data: {
480
+ // success: true,
481
+ // errorMsg: null,
482
+ // errorCode: null,
483
+ // data: {
484
+ // label: '控制器起不来(控制器右上角RDY灯不亮)',
485
+ // sessionId: '3d752532b3d4510867288e5ac5cb3833',
486
+ // gmtCreate: '2025-11-06 14:30:43',
487
+ // gmtModified: '2025-11-06 14:30:43',
488
+ // createBy: 'admin',
489
+ // updateBy: 'admin',
490
+ // filePath: 'http://10.160.33.221:9000',
491
+ // configId: 703,
492
+ // kbId: null,
493
+ // queryReplyPairList: [
494
+ // {
495
+ // query: {
496
+ // id: 27665,
497
+ // gmtCreate: '2025-11-06T06:31:05.000+00:00',
498
+ // content: '控制器起不来(控制器右上角RDY灯不亮)',
499
+ // type: 'text',
500
+ // queryId: 'query-2532b3d4510867288e5ac5cb38338870',
501
+ // audioUrl: '',
502
+ // filePaths: null,
503
+ // currentFiles: null,
504
+ // },
505
+ // reply: {
506
+ // id: 27638,
507
+ // gmtCreate: '2025-11-06T06:31:15.000+00:00',
508
+ // content:
509
+ // '<think>\n好的,我现在需要回答用户的问题:“控制器起不来(控制器右上角RDY灯不亮)”。首先,我要查看提供的参考资料,看看是否有相关信息。\n\n参考资料0提到了现象“控制器起不来(控制器右上角RDY灯不亮)”,并关联到“包含”和“产生”关系,但没有提供处理方法。参考资料1和2都详细描述了这个现象,并且都给出了处理方法:检查NT255模块是否报红,更换模块,并特别提到机舱检查FS211/N模块。这些处理方法的ID都是10001,说明是同一个解决方案。\n\n用户的问题没有指定版本,根据规则2,我应该使用最新的版本信息。不过,参考资料中没有明确的版本日期,所以只能假设它们都是最新的。因此,我应该综合所有参考资料的信息,提供处理方法。\n\n最后,我需要按照要求,用简洁的语言回答,并标注来源。由于处理方法在参考资料1和2中都有,我会引用这两个来源。\n\n\n</think>\n\n控制器起不来(控制器右上角RDY灯不亮)的处理方法如下:\n\n1. 检查NT255模块是否报红(ERR灯是否亮红)[retrive-tag id="2290607639633892359" image_urls="" fromType="2"][1][/retrive-tag][retrive-tag id="439368868506707299" image_urls="" fromType="2"][2][/retrive-tag]。\n2. 更换NT255模块(注:机舱检查FS211/N模块)[retrive-tag id="2290607639633892359" image_urls="" fromType="2"][1][/retrive-tag][retrive-tag id="439368868506707299" image_urls="" fromType="2"][2][/retrive-tag]。\n\n这些步骤可以帮助解决控制器无法启动的问题。',
510
+ // type: 'text',
511
+ // reference: '[]',
512
+ // webReference: '[]',
513
+ // graphReference:
514
+ // '[{"cyphers":["match (n:`组件`)-[e]-(m) where id(n) == \\"组件101\\" return n,e,m;","match (n:`现象`)-[e]-(m) where id(n) == \\"现象1001\\" return n,e,m;","match (n:`现象`)-[e]-(m) where id(n) == \\"现象1001\\" return n,e,m;"],"fetchUrl":"https://10.160.33.150:30001/jinxin_graph/proxy/search/graph/search/cypherSearch4Rag","graphName":"故障处理图谱","id":"1952195957278367755","traceNodes":[{"graphId":"1952195957278367755","id":"3484145002858895870","name":"控制器","nodeType":"组件","vid":"组件101"},{"graphId":"1952195957278367755","id":"2290607639633892359","name":"控制器起不来(控制器右上角RDY灯不亮)","nodeType":"现象","vid":"现象1001"},{"graphId":"1952195957278367755","id":"439368868506707299","name":"控制器起不来(控制器右上角RDY灯不亮)","nodeType":"现象","vid":"现象1001"}]}]',
515
+ // queryId: 'query-2532b3d4510867288e5ac5cb38338870',
516
+ // feedbackResult: null,
517
+ // feedbackId: null,
518
+ // parsedFilePaths: null,
519
+ // recommendQuestion:
520
+ // '["在检查NT255模块时,ERR灯亮红可能表示哪些具体问题?","更换NT255模块时需要注意哪些步骤或注意事项?","除了检查和更换NT255模块,还有哪些方法可以排查控制器无法启动的问题?"]',
521
+ // llmType: 1,
522
+ // resultType: 1,
523
+ // respTime: 32453,
524
+ // tokens: 824,
525
+ // },
526
+ // },
527
+ // ],
528
+ // searchConfigDTO: {
529
+ // id: 703,
530
+ // status: 1,
531
+ // isDefault: 0,
532
+ // configJson:
533
+ // '{"status":1,"defaultAnswer":"您好!我注意到您的消息中可能包含了一些敏感的内容。为了保证社区的友好氛围,我们无法继续就此话题进行讨论。如果您有其他问题或需要帮助,我很乐意继续为您服务!谢谢您的理解和支持。","dependOnKb":1,"isDel":1,"config_name":"图谱测试","model_name":"deepseek-distill-qwen32b","plan_model_name":"deepseek-distill-qwen32b","prologue":"你好","system_prompt":"","recommend_model_name":"deepseek-distill-qwen32b","temperature":0.3,"top_p":0.8,"top_k":10,"score_threshold":0.1,"max_tokens":4096,"max_round":5,"rerank_model_name":"bge-reranker-v2-m3_xinference","knowledge_base_name_source":"","graph_nb_name":[{"graph_name":"故障处理图谱","index_name":"1952195957278367755"}],"thinking":false,"knowledge_base_name":"","selectedKnowledgeBase":[],"enabled_graph":false,"enabled_nb_graph":true,"need_trace_source":true,"trace_by_llm":true,"is_download":false,"search_policy":1,"enabled_question_rewrite":false,"enabled_faq":true,"enabled_rerank":true,"rerank":false}',
534
+ // name: '图谱测试',
535
+ // des: null,
536
+ // createBy: 'admin',
537
+ // gmtCreate: '2025-11-05 19:37:54',
538
+ // permission: null,
539
+ // sensitiveWordIds: '',
540
+ // defaultAnswer:
541
+ // '您好!我注意到您的消息中可能包含了一些敏感的内容。为了保证社区的友好氛围,我们无法继续就此话题进行讨论。如果您有其他问题或需要帮助,我很乐意继续为您服务!谢谢您的理解和支持。',
542
+ // model: false,
543
+ // enabledFaq: 0,
544
+ // dependOnKb: 1,
545
+ // isDel: 1,
546
+ // },
547
+ // },
548
+ // },
549
+ // };
467
550
  // 如果会话没有数据(例如新建的),直接返回
468
551
 
469
552
  if (!res.data.data) {
@@ -1592,6 +1675,33 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
1592
1675
  // 处理文件下载事件,透传给父组件
1593
1676
  eventsEmit?.('referenceFile_download', data);
1594
1677
  break;
1678
+ case 'references:click': {
1679
+ setDrawerConfig({
1680
+ type: DrawerType.REFERENCELIST,
1681
+ data,
1682
+ });
1683
+ setOpen(true);
1684
+ // 使用 AiChat 内置的右侧栏事件
1685
+ const Content = () => {
1686
+ const safe = (() => {
1687
+ try {
1688
+ return typeof data === 'string' ? data : JSON.stringify(data, null, 2);
1689
+ } catch (e) {
1690
+ return String(data);
1691
+ }
1692
+ })();
1693
+ return <ReferenceBar data={data} />;
1694
+ };
1695
+ const setContentEvent = new CustomEvent('aichat:right_set_content', {
1696
+ detail: { content: <Content /> },
1697
+ });
1698
+ window.dispatchEvent(setContentEvent);
1699
+ const openEvent = new CustomEvent('aichat:right_set', {
1700
+ detail: { collapsed: false },
1701
+ });
1702
+ window.dispatchEvent(openEvent);
1703
+ break;
1704
+ }
1595
1705
  case 'retrive_tag:click':
1596
1706
  // 处理 retrive-tag 点击事件,透传给父组件
1597
1707
  eventsEmit?.('retrive_tag:click', data);
@@ -1813,6 +1923,7 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
1813
1923
  <ChatMessageAdapter
1814
1924
  key={`${msg?.queryId || msg?.id || idx}-${msg?.istype || 'unknown'}`}
1815
1925
  {...msg}
1926
+ referenceMode="button"
1816
1927
  reference={safeReference}
1817
1928
  webReference={safeWebReference}
1818
1929
  graphReference={safeGraphReference}
@@ -1855,6 +1966,7 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
1855
1966
  <ChatMessageAdapter
1856
1967
  key={`${msg?.queryId || msg?.id || idx}-user`}
1857
1968
  {...msg}
1969
+ referenceMode="button"
1858
1970
  contentType="plainText"
1859
1971
  isUser={true}
1860
1972
  displayStatus="ready"
@@ -1902,7 +2014,7 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
1902
2014
  // Render - 渲染
1903
2015
  // =================================================================
1904
2016
  return (
1905
- <>
2017
+ <div style={{ height: '100%', minWidth: '1116px', overflow: 'hidden' }}>
1906
2018
  <FileManager
1907
2019
  open={fileManagerOpen}
1908
2020
  onCancel={() => setFileManagerOpen(false)}
@@ -1914,6 +2026,8 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
1914
2026
  eventsEmit={mergedEventsEmit}
1915
2027
  />
1916
2028
 
2029
+ {/* 右侧栏由 AiChat 内置事件控制,此处不再使用 antd Drawer */}
2030
+
1917
2031
  <WrappedComponent
1918
2032
  {...rest}
1919
2033
  status={appStatus}
@@ -1946,7 +2060,15 @@ export default function withGientechChatAdopter(WrappedComponent = AiChat) {
1946
2060
  handleCancel={() => handleEvent('close_remove')}
1947
2061
  data={curEditData?.data || {}}
1948
2062
  />
1949
- </>
2063
+ <ReferenceListDrawer
2064
+ open={open}
2065
+ setOpen={setOpen}
2066
+ type={drawerConfig.type}
2067
+ data={drawerConfig.data}
2068
+ token={token}
2069
+ eventsEmit={eventsEmit}
2070
+ />
2071
+ </div>
1950
2072
  );
1951
2073
  };
1952
2074
  }