@ai-group/chat-sdk 0.5.3 → 1.0.1
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.
- package/dist/cjs/assets/arrow-down.png +0 -0
- package/dist/cjs/assets/think.png +0 -0
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +47 -16
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/index.d.ts +3 -2
- package/dist/cjs/components/XAiChatbot/index.js +36 -120
- package/dist/cjs/components/XAiChatbot/index.js.map +3 -3
- package/dist/cjs/components/XAiChatbot/styles.d.ts +6 -16
- package/dist/cjs/components/XAiChatbot/styles.js +53 -182
- package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +1 -1
- package/dist/cjs/components/XAiConversations/index.js.map +1 -1
- package/dist/cjs/components/XAiConversations/styles.d.ts +2 -0
- package/dist/cjs/components/XAiProvider/demo.styles.d.ts +2 -0
- package/dist/cjs/components/XAiProvider/index.js +2 -1
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/components/XAiSender/XAiSender.stories.d.ts +6 -0
- package/dist/cjs/components/XAiSender/XAiSender.stories.js +86 -0
- package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +7 -0
- package/dist/cjs/components/XAiSender/index.d.ts +4 -0
- package/dist/cjs/components/XAiSender/index.js +168 -0
- package/dist/cjs/components/XAiSender/index.js.map +7 -0
- package/dist/cjs/components/XAiSender/styles.d.ts +47 -0
- package/dist/cjs/components/XAiSender/styles.js +157 -0
- package/dist/cjs/components/XAiSender/styles.js.map +7 -0
- package/dist/cjs/constants/index.d.ts +1 -1
- package/dist/cjs/constants/index.js +1 -1
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/hooks/useAgentGenerator.js +8 -8
- package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/styles/common.d.ts +9 -0
- package/dist/cjs/styles/common.js +30 -0
- package/dist/cjs/styles/common.js.map +2 -2
- package/dist/cjs/types/XAiChatbot.d.ts +5 -17
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiMessage.d.ts +3 -2
- package/dist/cjs/types/XAiMessage.js.map +2 -2
- package/dist/cjs/types/XAiProvider.d.ts +6 -0
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/types/XAiSender.d.ts +13 -0
- package/dist/cjs/types/XAiSender.js +18 -0
- package/dist/cjs/types/XAiSender.js.map +7 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/cjs/types/mdx.d.ts +5 -0
- package/dist/esm/assets/arrow-down.png +0 -0
- package/dist/esm/assets/think.png +0 -0
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +49 -18
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
- package/dist/esm/components/XAiChatbot/index.d.ts +3 -2
- package/dist/esm/components/XAiChatbot/index.js +80 -211
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiChatbot/styles.d.ts +6 -16
- package/dist/esm/components/XAiChatbot/styles.js +23 -41
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +1 -1
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/styles.d.ts +2 -0
- package/dist/esm/components/XAiProvider/demo.styles.d.ts +2 -0
- package/dist/esm/components/XAiProvider/index.js +2 -1
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/components/XAiSender/XAiSender.stories.d.ts +6 -0
- package/dist/esm/components/XAiSender/XAiSender.stories.js +66 -0
- package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -0
- package/dist/esm/components/XAiSender/index.d.ts +4 -0
- package/dist/esm/components/XAiSender/index.js +211 -0
- package/dist/esm/components/XAiSender/index.js.map +1 -0
- package/dist/esm/components/XAiSender/styles.d.ts +47 -0
- package/dist/esm/components/XAiSender/styles.js +21 -0
- package/dist/esm/components/XAiSender/styles.js.map +1 -0
- package/dist/esm/constants/index.d.ts +1 -1
- package/dist/esm/constants/index.js +1 -1
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/hooks/useAgentGenerator.js +13 -13
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/styles/common.d.ts +9 -0
- package/dist/esm/styles/common.js +9 -2
- package/dist/esm/styles/common.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +5 -17
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiMessage.d.ts +3 -2
- package/dist/esm/types/XAiMessage.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +6 -0
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/types/XAiSender.d.ts +13 -0
- package/dist/esm/types/XAiSender.js +2 -0
- package/dist/esm/types/XAiSender.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/mdx.d.ts +5 -0
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
package/dist/cjs/types/index.js
CHANGED
|
@@ -19,12 +19,14 @@ module.exports = __toCommonJS(types_exports);
|
|
|
19
19
|
__reExport(types_exports, require("./XAiChatbot"), module.exports);
|
|
20
20
|
__reExport(types_exports, require("./XAiMessage"), module.exports);
|
|
21
21
|
__reExport(types_exports, require("./XAiProvider"), module.exports);
|
|
22
|
+
__reExport(types_exports, require("./XAiSender"), module.exports);
|
|
22
23
|
__reExport(types_exports, require("./XAiConversations"), module.exports);
|
|
23
24
|
// Annotate the CommonJS export names for ESM import in node:
|
|
24
25
|
0 && (module.exports = {
|
|
25
26
|
...require("./XAiChatbot"),
|
|
26
27
|
...require("./XAiMessage"),
|
|
27
28
|
...require("./XAiProvider"),
|
|
29
|
+
...require("./XAiSender"),
|
|
28
30
|
...require("./XAiConversations")
|
|
29
31
|
});
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './XAiChatbot';\nexport * from './XAiMessage';\nexport * from './XAiProvider';\nexport * from './XAiConversations'
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,yBAAd;AACA,0BAAc,yBADd;AAEA,0BAAc,0BAFd;AAGA,0BAAc,+
|
|
4
|
+
"sourcesContent": ["export * from './XAiChatbot';\nexport * from './XAiMessage';\nexport * from './XAiProvider';\nexport * from './XAiSender';\nexport * from './XAiConversations';"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,yBAAd;AACA,0BAAc,yBADd;AAEA,0BAAc,0BAFd;AAGA,0BAAc,wBAHd;AAIA,0BAAc,+BAJd;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/cjs/types/mdx.d.ts
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -11,7 +11,7 @@ import { useProviderContext, useProviderMethods } from "../../hooks/useProviderC
|
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
13
|
var meta = {
|
|
14
|
-
title: 'AI组件/XAiChatbot',
|
|
14
|
+
title: 'AI组件/XAiChatbot 聊天框',
|
|
15
15
|
component: XAiChatbot,
|
|
16
16
|
parameters: {
|
|
17
17
|
layout: 'centered'
|
|
@@ -75,7 +75,8 @@ var mockMessages = [{
|
|
|
75
75
|
format: 'svg',
|
|
76
76
|
bytes: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
|
|
77
77
|
},
|
|
78
|
-
thinks:
|
|
78
|
+
thinks: "\u5177\u4F53\u6765\u8BF4\uFF0C\u7406\u8D54\u6D41\u7A0B\u4E00\u822C\u5305\u62EC\u4EE5\u4E0B\u51E0\u4E2A\u6B65\u9AA4:\n1.\u62A5\u6848:\u88AB\u4FDD\u9669\u4EBA\u6216\u5176\u6307\u5B9A\u7684\u53D7\u76CA\u4EBA\u5728\u77E5\u9053\u4FDD\u9669\u4E8B\u6545\u540E\uFF0C\u53CA\u65F6\u901A\u77E5\u4FDD\u9669\u4EBA\uFF0C\u5E76\u544A\u77E5\u4E8B\u6545\u53D1\u751F\u7684\u5177\u4F53\u60C5\u51B5\u3002\n2.\u63D0\u4EA4\u6750\u6599:\u88AB\u4FDD\u9669\u4EBA\u6216\u5176\u6307\u5B9A\u7684\u53D7\u76CA\u4EBA\u9700\u8981\u63D0\u4EA4\u76F8\u5173\u8BC1\u660E\u6750\u6599\uFF0C\u5982\u4E8B\u6545\u8BC1\u660E\u3001\u533B\u7597\u8BC1\u660E\u3001\u8D22\u4EA7\u635F\u5931\u8BC1\u660E\u7B49\u3002\n3.\u6838\u5B9A\u635F\u5931: \u4FDD\u9669\u4EBA\u4F1A\u5BF9\u63D0\u4EA4\u7684\u6750\u6599\u8FDB\u884C\u6838\u5B9A\uFF0C\u786E\u5B9A\u88AB\u4FDD\u9669\u4EBA\u7684\u635F\u5931\u60C5\u51B5\u3002\n4.\u534F\u5546\u8D54\u507F:\u5728\u786E\u5B9A\u88AB\u4FDD\u9669\u4EBA\u7684\u635F\u5931\u540E\uFF0C\u4FDD\u9669\u4EBA\u4F1A\u4E0E\u88AB\u4FDD\u9669\u4EBA\u6216\u5176\u6307\u5B9A\u7684\u53D7\u76CA\u4EBA\u534F\u5546\u8D54\u507F\u91D1\u989D\u3002\n5.\u652F\u4ED8\u8D54\u507F\u91D1:\u5728\u534F\u5546\u8FBE\u6210\u4E00\u81F4\u540E\uFF0C\u4FDD\u9669\u4EBA\u5411\u88AB\u4FDD\u9669\u4EBA\u6216\u5176\u6307\u5B9A\u7684\u53D7\u76CA\u4EBA\u652F\u4ED8\u8D54\u507F\u91D1\u9700\u8981\u6CE8\u610F\u3002",
|
|
79
|
+
execute: [
|
|
79
80
|
// 工具库调用(MCP_TOOL)
|
|
80
81
|
{
|
|
81
82
|
type: 'ActionExecutionMessage',
|
|
@@ -93,17 +94,21 @@ var mockMessages = [{
|
|
|
93
94
|
}
|
|
94
95
|
},
|
|
95
96
|
// // 工具库调用(PLUGIN_TOOL)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
97
|
+
{
|
|
98
|
+
type: 'ActionExecutionMessage',
|
|
99
|
+
createdAt: new Date(),
|
|
100
|
+
id: 'tool-2',
|
|
101
|
+
name: '已调用插件工具',
|
|
102
|
+
arguments: {
|
|
103
|
+
param1: 'foo'
|
|
104
|
+
},
|
|
105
|
+
extra: {
|
|
106
|
+
action: 'INVOKE_AGENT_TOOL_START',
|
|
107
|
+
icon: documentIcon,
|
|
108
|
+
type: 'MCP_TOOL',
|
|
109
|
+
cost: '3.9'
|
|
110
|
+
}
|
|
111
|
+
},
|
|
107
112
|
// // 工具库调用(SKILL)
|
|
108
113
|
// {
|
|
109
114
|
// action: 'INVOKE_AGENT_TOOL_START',
|
|
@@ -121,6 +126,21 @@ var mockMessages = [{
|
|
|
121
126
|
// args: { question: '什么是FAQ?' },
|
|
122
127
|
// knowledgeType: 'FAQ',
|
|
123
128
|
// },
|
|
129
|
+
{
|
|
130
|
+
type: 'ActionExecutionMessage',
|
|
131
|
+
createdAt: new Date(),
|
|
132
|
+
id: 'tool-3',
|
|
133
|
+
name: '已调用文档知识库',
|
|
134
|
+
arguments: {
|
|
135
|
+
param1: 'foo'
|
|
136
|
+
},
|
|
137
|
+
extra: {
|
|
138
|
+
action: 'RECALL_KNOWLEDGE_START',
|
|
139
|
+
icon: documentIcon,
|
|
140
|
+
type: 'MCP_TOOL',
|
|
141
|
+
cost: '3.9'
|
|
142
|
+
}
|
|
143
|
+
},
|
|
124
144
|
// // 知识库调用(DOCUMENT)
|
|
125
145
|
// {
|
|
126
146
|
// action: 'RECALL_KNOWLEDGE_START',
|
|
@@ -182,14 +202,18 @@ var BasicUsageStory = function BasicUsageStory(args) {
|
|
|
182
202
|
_useState2 = _slicedToArray(_useState, 2),
|
|
183
203
|
messages = _useState2[0],
|
|
184
204
|
setMessages = _useState2[1];
|
|
185
|
-
|
|
205
|
+
var _useState3 = useState(false),
|
|
206
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
207
|
+
loading = _useState4[0],
|
|
208
|
+
setLoading = _useState4[1];
|
|
186
209
|
// 模拟流式返回AI消息
|
|
187
210
|
var handleSendMessage = function handleSendMessage(_type, msg) {
|
|
211
|
+
setLoading(true);
|
|
188
212
|
var userMsg = {
|
|
189
213
|
id: String(Date.now()),
|
|
190
214
|
type: 'TextMessage',
|
|
191
215
|
createdAt: new Date(),
|
|
192
|
-
status: MessageStatus.
|
|
216
|
+
status: MessageStatus.pending,
|
|
193
217
|
role: MessageRole.user,
|
|
194
218
|
content: {
|
|
195
219
|
text: msg
|
|
@@ -205,7 +229,7 @@ var BasicUsageStory = function BasicUsageStory(args) {
|
|
|
205
229
|
aiMsg += chunk;
|
|
206
230
|
setMessages(function (prev) {
|
|
207
231
|
var aiIndex = prev.findIndex(function (m) {
|
|
208
|
-
return m.id === 'stream-ai';
|
|
232
|
+
return m.id === 'stream-ai' && m.status === MessageStatus.pending;
|
|
209
233
|
});
|
|
210
234
|
if (aiIndex > -1) {
|
|
211
235
|
var updated = _toConsumableArray(prev);
|
|
@@ -214,13 +238,18 @@ var BasicUsageStory = function BasicUsageStory(args) {
|
|
|
214
238
|
updated[aiIndex] = _objectSpread(_objectSpread({}, oldMsg), {}, {
|
|
215
239
|
content: {
|
|
216
240
|
text: aiMsg
|
|
217
|
-
}
|
|
241
|
+
},
|
|
242
|
+
status: MessageStatus.pending
|
|
218
243
|
});
|
|
219
244
|
}
|
|
245
|
+
if (idx === 2) {
|
|
246
|
+
updated[aiIndex].status = MessageStatus.done;
|
|
247
|
+
setLoading(false);
|
|
248
|
+
}
|
|
220
249
|
return updated;
|
|
221
250
|
}
|
|
222
251
|
var aiMessage = {
|
|
223
|
-
id:
|
|
252
|
+
id: "stream-ai",
|
|
224
253
|
type: 'TextMessage',
|
|
225
254
|
createdAt: new Date(),
|
|
226
255
|
status: MessageStatus.pending,
|
|
@@ -299,7 +328,9 @@ var BasicUsageStory = function BasicUsageStory(args) {
|
|
|
299
328
|
borderRadius: '8px'
|
|
300
329
|
},
|
|
301
330
|
children: /*#__PURE__*/_jsx(XAiChatbot, _objectSpread(_objectSpread({}, args), {}, {
|
|
331
|
+
inputShow: false,
|
|
302
332
|
messages: messages,
|
|
333
|
+
loading: loading,
|
|
303
334
|
messageTooltip: ToolTip,
|
|
304
335
|
onClear: handleClear,
|
|
305
336
|
onSuggestMessageClick: handleSuggestMessageClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Divider","MessageRole","MessageStatus","documentIcon","XAiProvider","XAiChatbot","useProviderContext","useProviderMethods","jsxs","_jsxs","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","navbar","description","messages","mockMessages","id","type","createdAt","Date","status","done","role","assistant","content","text","user","parentMessageId","extra","cost","token","format","bytes","thinks","name","arguments","param1","action","icon","noFooter","suggestion","key","BasicUsageStory","args","_useState","_useState2","_slicedToArray","setMessages","handleSendMessage","_type","msg","userMsg","String","now","prev","concat","_toConsumableArray","aiMsg","stream","forEach","chunk","idx","setTimeout","aiIndex","findIndex","m","updated","oldMsg","_objectSpread","aiMessage","pending","length","map","doneMsg","handleClear","handleActions","index","data","console","log","handleSuggestMessageClick","_item","filter","ToolTip","_ref","style","display","alignItems","fontSize","color","flex","paddingRight","children","height","width","border","borderRadius","messageTooltip","onClear","onSuggestMessageClick","onSend","onMessagesActionsCallback","基础用法","render","emptyStateText","在Provider中使用","decorators","Story","url","多个Provider实例","gap","providerId","marginRight","ArchitectureDemoComponent","_ref2","_getProviderValue","_useProviderContext","props","mergeLogic","context","_context$messages","isInProvider","loading","customData","mergedProps","getProviderValue","providerMethods","padding","marginBottom","backgroundColor","margin","onClick","_providerMethods$send","sendMessage","call","disabled","cursor","新架构演示","navbarShow","subtitle","架构对比演示"],"sources":["../../../../src/components/XAiChatbot/XAiChatbot.stories.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Divider } from 'antd';\nimport { MessageRole, MessageStatus } from '@/types/XAiMessage';\nimport type { Messages } from '@/types/XAiMessage';\nimport documentIcon from '@/assets/document.svg';\nimport XAiProvider from '../XAiProvider';\nimport XAiChatbot from '.';\nimport { useProviderContext, useProviderMethods } from '@/hooks/useProviderContext';\n\nconst meta: Meta<typeof XAiChatbot> = {\n title: 'AI组件/XAiChatbot',\n component: XAiChatbot,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n navbar: {\n description: '导航栏配置',\n },\n messages: {\n description: '消息列表',\n },\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// mock 消息数据,严格符合 Messages 类型\nconst mockMessages: Messages[] = [\n {\n id: '1',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: '你好,有什么我能帮助你的吗?',\n },\n },\n {\n id: '2',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '检索从北京到上海的车票数据给我',\n },\n parentMessageId: '1',\n },\n // {\n // id: '22',\n // type: 'TextMessage',\n // createdAt: new Date(),\n // status: MessageStatus.done,\n // role: MessageRole.assistant,\n // content: {\n // text: '{\"data\":\"车次 | 出发站 -> 到达站 | 出发时间 -> 到达时间 | 历时\\\\nC406(实际车次train_no: 560000C40603) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 20:01 -> 21:50 历时:01:49\\\\n- 二等座: 有票 47元\\\\n- 一等座: 有票 75元\\\\n- 无座: 有票 47元\\\\nC412(实际车次train_no: 560000C41202) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 18:21 -> 20:08 历时:01:47\\\\n- 二等座: 无票 47元\\\\n- 一等座: 无票 75元\\\\n- 无座: 有票 47元\\\\nG7360(实际车次train_no: 56000G736081) 杭州(telecode: HZH) -> 上海(telecode: SHH) 20:00 -> 21:39 历时:01:39\\\\n- 商务座: 剩余16张票 278元\\\\n- 一等座: 有票 149元\\\\n- 二等座: 有票 93元\\\\n- 无座: 有票 93元\\\\nC482(实际车次train_no: 560000C48220) 杭州(telecode: HZH) -> 上海南(telecode: SNH) 19:42 -> 21:20 历时:01:38\\\\n- 二等座: 有票 49元\\\\n- 一等座: 有票 77元\\\\n- 无座: 有票 49元\\\\nG8358(实际车次train_no: 56000G835800) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:11 -> 19:38 历时:01:27\\\\n- 商务座: 剩余11张票 357元\\\\n- 一等座: 有票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nG1440(实际车次train_no: 57000G144005) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 20:55 -> 22:21 历时:01:26\\\\n- 商务座: 剩余17张票 320元\\\\n- 一等座: 有票 147元\\\\n- 二等座: 有票 92元\\\\n- 优选一等座: 有票 202元\\\\n- 无座: 有票 92元\\\\nC406(实际车次train_no: 560000C40603) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 20:01 -> 21:25 历时:01:24\\\\n- 二等座: 有票 40元\\\\n- 一等座: 有票 63元\\\\n- 无座: 有票 40元\\\\nC3050(实际车次train_no: 52000C305000) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 19:34 -> 20:58 历时:01:24\\\\n- 商务座: 无票 351元\\\\n- 一等座: 剩余13张票 161元\\\\n- 二等座: 有票 101元\\\\n- 无座: 有票 101元\\\\nG7360(实际车次train_no: 56000G736081) 杭州(telecode: HZH) -> 上海西(telecode: SXH) 20:00 -> 21:23 历时:01:23\\\\n- 商务座: 剩余16张票 271元\\\\n- 一等座: 有票 144元\\\\n- 二等座: 有票 90元\\\\n- 无座: 有票 90元\\\\nG7140(实际车次train_no: 56000G714000) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:38 -> 20:01 历时:01:23\\\\n- 商务座: 剩余3张票 357元\\\\n- 一等座: 剩余18张票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nG8386(实际车次train_no: 54000G838601) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:25 -> 19:48 历时:01:23\\\\n- 商务座: 剩余1张票 357元\\\\n- 一等座: 剩余18张票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nC412(实际车次train_no: 560000C41202) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 18:21 -> 19:42 历时:01:21\\\\n- 二等座: 无票 40元\\\\n- 一等座: 无票 63元\\\\n- 无座: 有票 40元\\\\nG7124(实际车次train_no: 56000G712400) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:03 -> 19:24 历时:01:21\\\\n- 商务座: 剩余5张票 357元\\\\n- 一等座: 剩余5张票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nG3092(实际车次train_no: 5n000G309205) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 20:40 -> 21:59 历时:01:19\\\\n- 商务座: 剩余10张票 332元\\\\n- 一等座: 有票 152元\\\\n- 二等座: 有票 95元\\\\n- 无座: 有票 95元\\\\nG7112(实际车次train_no: 54000G711200) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 20:12 -> 21:31 历时:01:19\\\\n- 二等座: 有票 110元\\\\n- 一等座: 有票 174元\\\\n- 无座: 有票 110元\\\\nG7584(实际车次train_no: 5e000G758405) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 17:51 -> 19:10 历时:01:19\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 有票 87元\\\\nG7432(实际车次train_no: 5j000G743252) 杭州南(telecode: XHH) -> 上海虹桥(telecode: AOH) 17:55 -> 19:13 历时:01:18\\\\n- 商务座: 无票 298元\\\\n- 一等座: 无票 158元\\\\n- 二等座: 无票 98元\\\\n- 无座: 无票 98元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州南(telecode: XHH) -> 上海南(telecode: SNH) 19:34 -> 20:50 历时:01:16\\\\n- 商务座: 剩余9张票 248元\\\\n- 一等座: 有票 132元\\\\n- 二等座: 有票 82元\\\\n- 无座: 有票 82元\\\\nG3078(实际车次train_no: 65000G307810) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 21:12 -> 22:26 历时:01:14\\\\n- 商务座: 有票 320元\\\\n- 一等座: 有票 147元\\\\n- 二等座: 有票 92元\\\\n- 无座: 有票 92元\\\\nG8304(实际车次train_no: 56000G830410) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 19:59 -> 21:11 历时:01:12\\\\n- 二等座: 有票 103元\\\\n- 一等座: 有票 163元\\\\n- 无座: 有票 103元\\\\nG8360(实际车次train_no: 5j000G836002) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 19:15 -> 20:27 历时:01:12\\\\n- 商务座: 剩余2张票 405元\\\\n- 一等座: 无票 185元\\\\n- 二等座: 有票 116元\\\\n- 无座: 有票 116元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州南(telecode: XHH) -> 上海虹桥(telecode: AOH) 18:35 -> 19:47 历时:01:12\\\\n- 商务座: 无票 298元\\\\n- 一等座: 无票 158元\\\\n- 二等座: 无票 98元\\\\n- 无座: 无票 98元\\\\nG100(实际车次train_no: 6x0000G1000A) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:31 -> 19:43 历时:01:12\\\\n- 商务座: 剩余7张票 405元\\\\n- 一等座: 剩余19张票 185元\\\\n- 二等座: 有票 116元\\\\nG1306(实际车次train_no: 65000G130601) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 21:39 -> 22:49 历时:01:10\\\\n- 商务座: 剩余8张票 279元\\\\n- 一等座: 剩余15张票 128元\\\\n- 二等座: 有票 81元\\\\n- 无座: 有票 81元\\\\nG1372(实际车次train_no: 80000G13720S) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:02 -> 22:12 历时:01:10\\\\n- 商务座: 剩余12张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 无票 65元\\\\nG7314(实际车次train_no: 52000G731401) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:18 -> 20:27 历时:01:09\\\\n- 商务座: 无票 242元\\\\n- 一等座: 无票 129元\\\\n- 二等座: 剩余5张票 80元\\\\n- 无座: 有票 80元\\\\nG7522(实际车次train_no: 5e000G752290) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 18:34 -> 19:41 历时:01:07\\\\n- 商务座: 剩余5张票 239元\\\\n- 一等座: 有票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG7310(实际车次train_no: 5a000G731004) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 17:47 -> 18:54 历时:01:07\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 有票 87元\\\\nG7432(实际车次train_no: 5j000G743252) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:07 -> 19:13 历时:01:06\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG1388(实际车次train_no: 57000G138800) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:52 -> 22:56 历时:01:04\\\\n- 商务座: 剩余11张票 242元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG998(实际车次train_no: 6i0000G99800) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 21:24 -> 22:27 历时:01:03\\\\n- 商务座: 剩余4张票 315元\\\\n- 一等座: 剩余11张票 145元\\\\n- 二等座: 有票 91元\\\\n- 无座: 有票 91元\\\\nG1316(实际车次train_no: 5n000G131600) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 21:01 -> 22:04 历时:01:03\\\\n- 商务座: 剩余6张票 374元\\\\n- 一等座: 剩余6张票 172元\\\\n- 二等座: 有票 108元\\\\n- 无座: 有票 108元\\\\nG7338(实际车次train_no: 5j000G733831) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:25 -> 21:27 历时:01:02\\\\n- 商务座: 剩余9张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG1510(实际车次train_no: 4z000G15100D) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:01 -> 19:03 历时:01:02\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:49 -> 20:50 历时:01:01\\\\n- 商务座: 剩余9张票 216元\\\\n- 一等座: 有票 115元\\\\n- 二等座: 有票 72元\\\\n- 无座: 有票 72元\\\\nG7360(实际车次train_no: 56000G736081) 杭州(telecode: HZH) -> 上海虹桥(telecode: AOH) 20:00 -> 21:00 历时:01:00\\\\n- 商务座: 剩余19张票 232元\\\\n- 一等座: 有票 124元\\\\n- 二等座: 有票 78元\\\\n- 无座: 有票 78元\\\\nG1350(实际车次train_no: 62000G135002) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:02 -> 23:01 历时:00:59\\\\n- 商务座: 剩余7张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG1506(实际车次train_no: 71000G150632) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:48 -> 22:47 历时:00:59\\\\n- 商务座: 剩余19张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG1334(实际车次train_no: 77000G13350F) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:57 -> 20:56 历时:00:59\\\\n- 商务座: 剩余14张票 242元\\\\n- 一等座: 剩余1张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG1378(实际车次train_no: 80000G13780O) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:19 -> 19:18 历时:00:59\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州南(telecode: XHH) -> 上海松江(telecode: IMH) 19:34 -> 20:32 历时:00:58\\\\n- 商务座: 剩余9张票 208元\\\\n- 一等座: 有票 111元\\\\n- 二等座: 有票 68元\\\\n- 无座: 有票 68元\\\\nG1302(实际车次train_no: 6e000G130206) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:50 -> 21:47 历时:00:57\\\\n- 商务座: 剩余14张票 263元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7366(实际车次train_no: 56000G736606) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:14 -> 21:11 历时:00:57\\\\n- 商务座: 剩余4张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7584(实际车次train_no: 5e000G758405) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 17:51 -> 18:48 历时:00:57\\\\n- 商务座: 剩余2张票 212元\\\\n- 一等座: 剩余1张票 113元\\\\n- 二等座: 无票 70元\\\\n- 无座: 有票 70元\\\\nG7340(实际车次train_no: 5j000G734003) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:54 -> 21:50 历时:00:56\\\\n- 商务座: 剩余14张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG1638(实际车次train_no: 5n000G163800) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:45 -> 22:40 历时:00:55\\\\n- 商务座: 剩余9张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG7350(实际车次train_no: 5j000G735074) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:40 -> 21:35 历时:00:55\\\\n- 商务座: 剩余7张票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG1328(实际车次train_no: 78000G13280E) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:35 -> 21:30 历时:00:55\\\\n- 商务座: 剩余6张票 242元\\\\n- 一等座: 剩余9张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:52 -> 19:47 历时:00:55\\\\n- 商务座: 无票 263元\\\\n- 一等座: 剩余1张票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG7528(实际车次train_no: 5j000G752802) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:27 -> 22:21 历时:00:54\\\\n- 商务座: 剩余12张票 219元\\\\n- 一等座: 剩余8张票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG7588(实际车次train_no: 5j000G758802) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:05 -> 19:59 历时:00:54\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 剩余1张票 87元\\\\nG3060(实际车次train_no: 5n000G306000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:10 -> 21:03 历时:00:53\\\\n- 商务座: 剩余2张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7566(实际车次train_no: 5j000G756606) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:09 -> 20:02 历时:00:53\\\\n- 商务座: 剩余1张票 263元\\\\n- 一等座: 剩余3张票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 有票 87元\\\\nG1640(实际车次train_no: 5n000G164000) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 22:38 -> 23:30 历时:00:52\\\\n- 商务座: 剩余12张票 216元\\\\n- 一等座: 有票 104元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG1390(实际车次train_no: 5w000G139010) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:34 -> 23:26 历时:00:52\\\\n- 商务座: 有票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG2190(实际车次train_no: 76000G21910F) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:35 -> 22:27 历时:00:52\\\\n- 商务座: 剩余17张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG1616(实际车次train_no: 71000G161602) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:29 -> 19:21 历时:00:52\\\\n- 商务座: 无票 242元\\\\n- 一等座: 无票 105元\\\\n- 二等座: 无票 65元\\\\n- 无座: 无票 65元\\\\nG7522(实际车次train_no: 5e000G752290) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 18:34 -> 19:25 历时:00:51\\\\n- 商务座: 剩余8张票 194元\\\\n- 一等座: 有票 104元\\\\n- 二等座: 有票 64元\\\\n- 无座: 有票 64元\\\\nG7310(实际车次train_no: 5a000G731004) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 17:47 -> 18:37 历时:00:50\\\\n- 商务座: 无票 212元\\\\n- 一等座: 无票 113元\\\\n- 二等座: 无票 70元\\\\n- 无座: 有票 70元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州南(telecode: XHH) -> 金山北(telecode: EGH) 18:35 -> 19:24 历时:00:49\\\\n- 商务座: 无票 219元\\\\n- 一等座: 剩余2张票 116元\\\\n- 二等座: 无票 72元\\\\n- 无座: 有票 72元\\\\nG820(实际车次train_no: 6c0000G82002) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:07 -> 21:54 历时:00:47\\\\n- 商务座: 剩余11张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 优选一等座: 有票 177元\\\\n- 无座: 有票 80元\\\\nG470(实际车次train_no: 640000G47100) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:11 -> 21:57 历时:00:46\\\\n- 商务座: 剩余19张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG240(实际车次train_no: 800000G24000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:34 -> 20:20 历时:00:46\\\\n- 商务座: 剩余5张票 263元\\\\n- 一等座: 剩余3张票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG7312(实际车次train_no: 52000G731207) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:24 -> 20:10 历时:00:46\\\\n- 商务座: 剩余3张票 239元\\\\n- 一等座: 剩余4张票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG1386(实际车次train_no: 5u000G138620) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:01 -> 19:47 历时:00:46\\\\n- 商务座: 有票 239元\\\\n- 一等座: 有票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG7584(实际车次train_no: 5e000G758405) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 17:51 -> 18:37 历时:00:46\\\\n- 商务座: 剩余6张票 184元\\\\n- 一等座: 剩余17张票 98元\\\\n- 二等座: 剩余2张票 61元\\\\n- 无座: 有票 61元\\\\nG4918(实际车次train_no: 57000G49184G) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 23:20 -> 00:05 历时:00:45\\\\n- 商务座: 剩余7张票 242元\\\\n- 一等座: 剩余12张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG1374(实际车次train_no: 80000G137410) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:30 -> 23:15 历时:00:45\\\\n- 商务座: 剩余18张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 无票 73元\\\\nG7536(实际车次train_no: 5j000G753603) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:22 -> 23:07 历时:00:45\\\\n- 商务座: 剩余6张票 219元\\\\n- 一等座: 剩余11张票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG358(实际车次train_no: 780000G35800) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:19 -> 23:04 历时:00:45\\\\n- 商务座: 剩余17张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG822(实际车次train_no: 6c0000G82200) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:58 -> 22:43 历时:00:45\\\\n- 商务座: 剩余9张票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG356(实际车次train_no: 780000G35600) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:16 -> 22:01 历时:00:45\\\\n- 商务座: 剩余18张票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG7562(实际车次train_no: 5e000G756250) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:38 -> 20:23 历时:00:45\\\\n- 商务座: 有票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG416(实际车次train_no: 5n0000G41600) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:30 -> 20:15 历时:00:45\\\\n- 商务座: 剩余6张票 239元\\\\n- 一等座: 剩余3张票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG500(实际车次train_no: 710000G50000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:45 -> 19:30 历时:00:45\\\\n- 商务座: 剩余6张票 219元\\\\n- 一等座: 剩余6张票 117元\\\\n- 二等座: 剩余1张票 73元\\\\n- 无座: 有票 73元\\\\nG800(实际车次train_no: 650000G80000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:40 -> 19:25 历时:00:45\\\\n- 商务座: 剩余4张票 242元\\\\n- 一等座: 剩余18张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 19:49 -> 20:32 历时:00:43\\\\n- 商务座: 剩余9张票 176元\\\\n- 一等座: 有票 94元\\\\n- 二等座: 有票 58元\\\\n- 无座: 有票 58元\\\\nG7338(实际车次train_no: 5j000G733831) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 20:25 -> 21:07 历时:00:42\\\\n- 商务座: 剩余9张票 153元\\\\n- 一等座: 有票 82元\\\\n- 二等座: 有票 51元\\\\n- 无座: 有票 51元\\\\nG1334(实际车次train_no: 77000G13350F) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 19:57 -> 20:36 历时:00:39\\\\n- 商务座: 剩余18张票 169元\\\\n- 一等座: 剩余4张票 90元\\\\n- 二等座: 有票 56元\\\\n- 无座: 有票 56元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 18:52 -> 19:24 历时:00:32\\\\n- 商务座: 无票 184元\\\\n- 一等座: 剩余5张票 98元\\\\n- 二等座: 有票 61元\\\\n- 无座: 有票 61元\\\\n\"}',\n // },\n // extra: {\n // noFooter: true,\n // },\n // },\n {\n id: '3',\n type: 'ImageMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n extra: {\n cost: 6.09,\n token: 1999,\n },\n content: {\n format: 'svg',\n bytes: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n },\n thinks: [\n // 工具库调用(MCP_TOOL)\n {\n type: 'ActionExecutionMessage',\n createdAt: new Date(),\n id: 'tool-1',\n name: '已调用MCP智能工具',\n arguments: { param1: 'foo' },\n extra: {\n action: 'INVOKE_AGENT_TOOL_START',\n icon: documentIcon,\n type: 'MCP_TOOL',\n cost: '3.9',\n },\n },\n // // 工具库调用(PLUGIN_TOOL)\n // {\n // id: 'tool-2',\n // arguments: { param2: 'bar' },\n // extra: {\n // action: 'INVOKE_AGENT_TOOL_START',\n // type: 'AGENT_TOOL',\n\n // toolType: 'PLUGIN_TOOL',\n // agentToolName: '插件工具',\n // },\n // },\n // // 工具库调用(SKILL)\n // {\n // action: 'INVOKE_AGENT_TOOL_START',\n // id: 'tool-3',\n // toolType: 'SKILL',\n // agentToolName: '技能工具',\n // args: { param3: 'baz' },\n\n // },\n // // 知识库调用(FAQ)\n // {\n // action: 'RECALL_KNOWLEDGE_START',\n // uniqueId: 'kb-1',\n // processStatus: 'START',\n // args: { question: '什么是FAQ?' },\n // knowledgeType: 'FAQ',\n // },\n // // 知识库调用(DOCUMENT)\n // {\n // action: 'RECALL_KNOWLEDGE_START',\n // uniqueId: 'kb-2',\n // processStatus: 'START',\n // args: { question: '文档库介绍' },\n // knowledgeType: 'DOCUMENT',\n // },\n // 运行完毕\n {\n id: '5',\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n createdAt: new Date(),\n },\n ],\n parentMessageId: '2',\n },\n {\n id: '4',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '能否生成一段明年的产品计划开发计划文档给我',\n },\n },\n {\n id: '0',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: `\n# 项目开发计划\n\n本文档概述了 2025 年第三季度的产品开发计划,包括目标、里程碑、团队分工和风险预案。\n\n---\n\n## 🎯 核心目标\n\n- 提升用户留存率至 **45%**\n- 完成 Web 端新版上线\n- 建立 AI 推荐模块 MVP\n- 优化数据库访问性能\n\n---\n\n## 📅 关键时间节点\n\n| 里程碑 | 截止日期 | 负责人 | 代理人 | 截止日期 | 负责人 |\n|------------------|--------------|----------|------------------|--------------|----------|\n| 产品需求冻结 | 2025-08-01 | Alice | 产品需求冻结 | 2025-08-01 | Alice |\n| UI 设计定稿 | 2025-08-10 | Bob | 产品需求冻结 | 2025-08-01 | Alice |\n| 开发完成(内测) | 2025-09-15 | Charlie | 产品需求冻结 | 2025-08-01 | Alice |\n| 正式上线 | 2025-09-30 | Diana | 产品需求冻结 | 2025-08-01 | Alice |\n\n---\n\n## 🛠️ 技术方案简述\n\n我们将使用以下技术栈:\n\n- 前端:React + Vite + Zustand\n- 后端:Node.js + PostgreSQL\n- 数据分析:Python + Pandas\n- 部署环境:Kubernetes on AWS\n\n---\n\n## 💡 示例代码片段\n\n以下是一个用于生成唯一 ID 的函数示例:\n\n~~~ts\nimport { nanoid } from 'nanoid'\n\nexport function generateSessionId() {\n return \\`sess-\\${nanoid()}\\`\n}\n~~~\n`,\n },\n extra: {\n noFooter: true,\n },\n },\n {\n id: '11',\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [\n {\n key: '1',\n description: '我要查看 AI 文档',\n },\n {\n key: '2',\n description: '我如何看待 AI',\n },\n {\n key: '3',\n description: '你是谁?',\n },\n ],\n },\n];\n\n// 基础用法\nconst BasicUsageStory = (args: any) => {\n const [messages, setMessages] = useState<Messages[]>(mockMessages);\n\n // 模拟流式返回AI消息\n const handleSendMessage = (_type: string, msg: string) => {\n const userMsg: Messages = {\n id: String(Date.now()),\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: { text: msg },\n };\n setMessages((prev) => [\n ...prev,\n userMsg,\n ]);\n let aiMsg = '';\n const stream = ['好的,', '我正在为你查询', '相关信息...'];\n stream.forEach((chunk, idx) => {\n setTimeout(() => {\n aiMsg += chunk;\n setMessages((prev) => {\n const aiIndex = prev.findIndex((m) => m.id === 'stream-ai');\n if (aiIndex > -1) {\n const updated = [...prev];\n const oldMsg = updated[aiIndex];\n if (oldMsg.type === 'TextMessage') {\n updated[aiIndex] = {\n ...oldMsg,\n content: { text: aiMsg },\n };\n }\n return updated;\n }\n const aiMessage: Messages = {\n id: 'stream-ai',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.pending,\n role: MessageRole.assistant,\n content: { text: aiMsg },\n };\n return [\n ...prev,\n aiMessage,\n ];\n });\n if (idx === stream.length - 1) {\n setTimeout(() => {\n setMessages((prev) => prev.map((m) => {\n if (m.id === 'stream-ai') {\n const doneMsg: Messages = { ...m, status: MessageStatus.done };\n return doneMsg;\n }\n return m;\n }));\n }, 500);\n }\n }, 800 * (idx + 1));\n });\n };\n\n // 模拟清空数据\n const handleClear = () => {\n setMessages([]);\n };\n\n // 模拟按钮\n const handleActions = (index: number, data: any) => {\n console.log(index, data);\n };\n\n // 模拟快捷短语点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev) => prev.filter((m) => m.id !== id));\n };\n\n const ToolTip = (data: any) => {\n const { cost, token } = data?.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { cost && <div>{ cost }s</div>}\n { token && <Divider type=\"vertical\" /> }\n { token && <div>{ token } tokens</div> }\n </div>\n );\n };\n\n return (\n <div style={{ height: '600px', width: '400px', border: '1px solid #e7e7e7', borderRadius: '8px' }}>\n <XAiChatbot\n {...args}\n messages={messages}\n messageTooltip={ToolTip}\n onClear={handleClear}\n onSuggestMessageClick={handleSuggestMessageClick}\n onSend={handleSendMessage}\n onMessagesActionsCallback={handleActions}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n navbar: {\n title: '智能助手',\n },\n // messages: mockMessages,\n emptyStateText: '众安智能体',\n },\n};\n\n// 在 Provider 中使用\nexport const 在Provider中使用: Story = {\n decorators: [\n (Story) => (\n <XAiProvider token=\"test-token\" url=\"https://api.example.com\">\n <Story />\n </XAiProvider>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 多个 Provider 实例\nexport const 多个Provider实例: Story = {\n decorators: [\n (Story) => (\n <div style={{ display: 'flex', gap: '50px', height: '600px' }}>\n <XAiProvider providerId=\"chat1\" token=\"token1\" url=\"https://api1.example.com\">\n <div style={{ width: '300px', marginRight: '40px' }}>\n <Story />\n </div>\n </XAiProvider>\n <XAiProvider providerId=\"chat2\" token=\"token2\" url=\"https://api2.example.com\">\n <div style={{ width: '300px' }}>\n <Story />\n </div>\n </XAiProvider>\n </div>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 展示新架构的示例组件\nconst ArchitectureDemoComponent: React.FC<{ title: string }> = ({ title }) => {\n const { mergedProps, isInProvider, getProviderValue } = useProviderContext({\n props: { title },\n mergeLogic: (props, context) => {\n if (!context?.isInProvider) {\n return props;\n }\n\n return {\n ...props,\n messages: context.messages,\n loading: context.loading,\n customData: context.messages?.length || 0,\n };\n },\n });\n\n const providerMethods = useProviderMethods();\n\n return (\n <div style={{\n padding: '15px',\n border: '1px solid #e7e7e7',\n borderRadius: '8px',\n marginBottom: '10px',\n backgroundColor: '#fafafa',\n }}\n >\n <h4 style={{ margin: '0 0 10px 0' }}>{mergedProps.title}</h4>\n <div style={{ fontSize: '12px', color: '#666' }}>\n <p>Provider 状态: {isInProvider ? '✅ 已连接' : '❌ 未连接'}</p>\n <p>消息数量: {getProviderValue('messages')?.length || 0}</p>\n <p>加载状态: {getProviderValue('loading') ? '🔄 加载中' : '✅ 就绪'}</p>\n <button\n onClick={() => providerMethods.sendMessage?.('来自架构演示组件的消息')}\n disabled={!isInProvider}\n style={{\n fontSize: '12px',\n padding: '4px 8px',\n backgroundColor: isInProvider ? '#1890ff' : '#d9d9d9',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: isInProvider ? 'pointer' : 'not-allowed',\n }}\n >\n {isInProvider ? '发送消息' : '需要 Provider'}\n </button>\n </div>\n </div>\n );\n};\n\n// 展示新架构的示例\nexport const 新架构演示: Story = {\n render: (args) => (\n <div style={{ width: '500px', height: '700px' }}>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"architecture-demo\">\n <div style={{ padding: '20px' }}>\n <h3 style={{ marginBottom: '20px' }}>新架构演示</h3>\n <p style={{ marginBottom: '20px', color: '#666' }}>\n 展示如何使用 useProviderContext 和 useProviderMethods Hook\n </p>\n\n {/* 演示组件 */}\n <div style={{ marginBottom: '20px' }}>\n <ArchitectureDemoComponent title=\"演示组件 A\" />\n <ArchitectureDemoComponent title=\"演示组件 B\" />\n <ArchitectureDemoComponent title=\"演示组件 C\" />\n </div>\n\n {/* 聊天机器人 */}\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '架构演示聊天机器人',\n subtitle: '展示新 Hook 的使用',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 对比示例:独立使用 vs Provider 模式\nexport const 架构对比演示: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px', padding: '20px' }}>\n {/* 独立使用 */}\n <div style={{ width: '300px' }}>\n <h4>独立使用模式</h4>\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"独立组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '独立聊天机器人',\n subtitle: '不依赖 Provider',\n }}\n onSend={(type, content) => {\n console.log('独立模式发送:', type, content);\n }}\n onClear={() => {\n console.log('独立模式清空');\n }}\n />\n </div>\n </div>\n\n {/* Provider 模式 */}\n <div style={{ width: '300px' }}>\n <h4>Provider 模式</h4>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"comparison-demo\">\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"Provider 组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","Divider","MessageRole","MessageStatus","documentIcon","XAiProvider","XAiChatbot","useProviderContext","useProviderMethods","jsxs","_jsxs","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","navbar","description","messages","mockMessages","id","type","createdAt","Date","status","done","role","assistant","content","text","user","parentMessageId","extra","cost","token","format","bytes","thinks","execute","name","arguments","param1","action","icon","noFooter","suggestion","key","BasicUsageStory","args","_useState","_useState2","_slicedToArray","setMessages","_useState3","_useState4","loading","setLoading","handleSendMessage","_type","msg","userMsg","String","now","pending","prev","concat","_toConsumableArray","aiMsg","stream","forEach","chunk","idx","setTimeout","aiIndex","findIndex","m","updated","oldMsg","_objectSpread","aiMessage","length","map","doneMsg","handleClear","handleActions","index","data","console","log","handleSuggestMessageClick","_item","filter","ToolTip","_ref","style","display","alignItems","fontSize","color","flex","paddingRight","children","height","width","border","borderRadius","inputShow","messageTooltip","onClear","onSuggestMessageClick","onSend","onMessagesActionsCallback","基础用法","render","emptyStateText","在Provider中使用","decorators","Story","url","多个Provider实例","gap","providerId","marginRight","ArchitectureDemoComponent","_ref2","_getProviderValue","_useProviderContext","props","mergeLogic","context","_context$messages","isInProvider","customData","mergedProps","getProviderValue","providerMethods","padding","marginBottom","backgroundColor","margin","onClick","_providerMethods$send","sendMessage","call","disabled","cursor","新架构演示","navbarShow","subtitle","架构对比演示"],"sources":["../../../../src/components/XAiChatbot/XAiChatbot.stories.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Divider } from 'antd';\nimport { MessageRole, MessageStatus } from '@/types/XAiMessage';\nimport type { Messages } from '@/types/XAiMessage';\nimport documentIcon from '@/assets/document.svg';\nimport XAiProvider from '../XAiProvider';\nimport XAiChatbot from '.';\nimport { useProviderContext, useProviderMethods } from '@/hooks/useProviderContext';\n\nconst meta: Meta<typeof XAiChatbot> = {\n title: 'AI组件/XAiChatbot 聊天框',\n component: XAiChatbot,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n navbar: {\n description: '导航栏配置',\n },\n messages: {\n description: '消息列表',\n },\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// mock 消息数据,严格符合 Messages 类型\nconst mockMessages: Messages[] = [\n {\n id: '1',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: '你好,有什么我能帮助你的吗?',\n },\n },\n {\n id: '2',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '检索从北京到上海的车票数据给我',\n },\n parentMessageId: '1',\n },\n // {\n // id: '22',\n // type: 'TextMessage',\n // createdAt: new Date(),\n // status: MessageStatus.done,\n // role: MessageRole.assistant,\n // content: {\n // text: '{\"data\":\"车次 | 出发站 -> 到达站 | 出发时间 -> 到达时间 | 历时\\\\nC406(实际车次train_no: 560000C40603) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 20:01 -> 21:50 历时:01:49\\\\n- 二等座: 有票 47元\\\\n- 一等座: 有票 75元\\\\n- 无座: 有票 47元\\\\nC412(实际车次train_no: 560000C41202) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 18:21 -> 20:08 历时:01:47\\\\n- 二等座: 无票 47元\\\\n- 一等座: 无票 75元\\\\n- 无座: 有票 47元\\\\nG7360(实际车次train_no: 56000G736081) 杭州(telecode: HZH) -> 上海(telecode: SHH) 20:00 -> 21:39 历时:01:39\\\\n- 商务座: 剩余16张票 278元\\\\n- 一等座: 有票 149元\\\\n- 二等座: 有票 93元\\\\n- 无座: 有票 93元\\\\nC482(实际车次train_no: 560000C48220) 杭州(telecode: HZH) -> 上海南(telecode: SNH) 19:42 -> 21:20 历时:01:38\\\\n- 二等座: 有票 49元\\\\n- 一等座: 有票 77元\\\\n- 无座: 有票 49元\\\\nG8358(实际车次train_no: 56000G835800) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:11 -> 19:38 历时:01:27\\\\n- 商务座: 剩余11张票 357元\\\\n- 一等座: 有票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nG1440(实际车次train_no: 57000G144005) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 20:55 -> 22:21 历时:01:26\\\\n- 商务座: 剩余17张票 320元\\\\n- 一等座: 有票 147元\\\\n- 二等座: 有票 92元\\\\n- 优选一等座: 有票 202元\\\\n- 无座: 有票 92元\\\\nC406(实际车次train_no: 560000C40603) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 20:01 -> 21:25 历时:01:24\\\\n- 二等座: 有票 40元\\\\n- 一等座: 有票 63元\\\\n- 无座: 有票 40元\\\\nC3050(实际车次train_no: 52000C305000) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 19:34 -> 20:58 历时:01:24\\\\n- 商务座: 无票 351元\\\\n- 一等座: 剩余13张票 161元\\\\n- 二等座: 有票 101元\\\\n- 无座: 有票 101元\\\\nG7360(实际车次train_no: 56000G736081) 杭州(telecode: HZH) -> 上海西(telecode: SXH) 20:00 -> 21:23 历时:01:23\\\\n- 商务座: 剩余16张票 271元\\\\n- 一等座: 有票 144元\\\\n- 二等座: 有票 90元\\\\n- 无座: 有票 90元\\\\nG7140(实际车次train_no: 56000G714000) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:38 -> 20:01 历时:01:23\\\\n- 商务座: 剩余3张票 357元\\\\n- 一等座: 剩余18张票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nG8386(实际车次train_no: 54000G838601) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:25 -> 19:48 历时:01:23\\\\n- 商务座: 剩余1张票 357元\\\\n- 一等座: 剩余18张票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nC412(实际车次train_no: 560000C41202) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 18:21 -> 19:42 历时:01:21\\\\n- 二等座: 无票 40元\\\\n- 一等座: 无票 63元\\\\n- 无座: 有票 40元\\\\nG7124(实际车次train_no: 56000G712400) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:03 -> 19:24 历时:01:21\\\\n- 商务座: 剩余5张票 357元\\\\n- 一等座: 剩余5张票 163元\\\\n- 二等座: 有票 103元\\\\n- 无座: 有票 103元\\\\nG3092(实际车次train_no: 5n000G309205) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 20:40 -> 21:59 历时:01:19\\\\n- 商务座: 剩余10张票 332元\\\\n- 一等座: 有票 152元\\\\n- 二等座: 有票 95元\\\\n- 无座: 有票 95元\\\\nG7112(实际车次train_no: 54000G711200) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 20:12 -> 21:31 历时:01:19\\\\n- 二等座: 有票 110元\\\\n- 一等座: 有票 174元\\\\n- 无座: 有票 110元\\\\nG7584(实际车次train_no: 5e000G758405) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 17:51 -> 19:10 历时:01:19\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 有票 87元\\\\nG7432(实际车次train_no: 5j000G743252) 杭州南(telecode: XHH) -> 上海虹桥(telecode: AOH) 17:55 -> 19:13 历时:01:18\\\\n- 商务座: 无票 298元\\\\n- 一等座: 无票 158元\\\\n- 二等座: 无票 98元\\\\n- 无座: 无票 98元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州南(telecode: XHH) -> 上海南(telecode: SNH) 19:34 -> 20:50 历时:01:16\\\\n- 商务座: 剩余9张票 248元\\\\n- 一等座: 有票 132元\\\\n- 二等座: 有票 82元\\\\n- 无座: 有票 82元\\\\nG3078(实际车次train_no: 65000G307810) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 21:12 -> 22:26 历时:01:14\\\\n- 商务座: 有票 320元\\\\n- 一等座: 有票 147元\\\\n- 二等座: 有票 92元\\\\n- 无座: 有票 92元\\\\nG8304(实际车次train_no: 56000G830410) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 19:59 -> 21:11 历时:01:12\\\\n- 二等座: 有票 103元\\\\n- 一等座: 有票 163元\\\\n- 无座: 有票 103元\\\\nG8360(实际车次train_no: 5j000G836002) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 19:15 -> 20:27 历时:01:12\\\\n- 商务座: 剩余2张票 405元\\\\n- 一等座: 无票 185元\\\\n- 二等座: 有票 116元\\\\n- 无座: 有票 116元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州南(telecode: XHH) -> 上海虹桥(telecode: AOH) 18:35 -> 19:47 历时:01:12\\\\n- 商务座: 无票 298元\\\\n- 一等座: 无票 158元\\\\n- 二等座: 无票 98元\\\\n- 无座: 无票 98元\\\\nG100(实际车次train_no: 6x0000G1000A) 杭州西(telecode: HVU) -> 上海虹桥(telecode: AOH) 18:31 -> 19:43 历时:01:12\\\\n- 商务座: 剩余7张票 405元\\\\n- 一等座: 剩余19张票 185元\\\\n- 二等座: 有票 116元\\\\nG1306(实际车次train_no: 65000G130601) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 21:39 -> 22:49 历时:01:10\\\\n- 商务座: 剩余8张票 279元\\\\n- 一等座: 剩余15张票 128元\\\\n- 二等座: 有票 81元\\\\n- 无座: 有票 81元\\\\nG1372(实际车次train_no: 80000G13720S) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:02 -> 22:12 历时:01:10\\\\n- 商务座: 剩余12张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 无票 65元\\\\nG7314(实际车次train_no: 52000G731401) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:18 -> 20:27 历时:01:09\\\\n- 商务座: 无票 242元\\\\n- 一等座: 无票 129元\\\\n- 二等座: 剩余5张票 80元\\\\n- 无座: 有票 80元\\\\nG7522(实际车次train_no: 5e000G752290) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 18:34 -> 19:41 历时:01:07\\\\n- 商务座: 剩余5张票 239元\\\\n- 一等座: 有票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG7310(实际车次train_no: 5a000G731004) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 17:47 -> 18:54 历时:01:07\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 有票 87元\\\\nG7432(实际车次train_no: 5j000G743252) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:07 -> 19:13 历时:01:06\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG1388(实际车次train_no: 57000G138800) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:52 -> 22:56 历时:01:04\\\\n- 商务座: 剩余11张票 242元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG998(实际车次train_no: 6i0000G99800) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 21:24 -> 22:27 历时:01:03\\\\n- 商务座: 剩余4张票 315元\\\\n- 一等座: 剩余11张票 145元\\\\n- 二等座: 有票 91元\\\\n- 无座: 有票 91元\\\\nG1316(实际车次train_no: 5n000G131600) 杭州西(telecode: HVU) -> 上海南(telecode: SNH) 21:01 -> 22:04 历时:01:03\\\\n- 商务座: 剩余6张票 374元\\\\n- 一等座: 剩余6张票 172元\\\\n- 二等座: 有票 108元\\\\n- 无座: 有票 108元\\\\nG7338(实际车次train_no: 5j000G733831) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:25 -> 21:27 历时:01:02\\\\n- 商务座: 剩余9张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG1510(实际车次train_no: 4z000G15100D) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:01 -> 19:03 历时:01:02\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:49 -> 20:50 历时:01:01\\\\n- 商务座: 剩余9张票 216元\\\\n- 一等座: 有票 115元\\\\n- 二等座: 有票 72元\\\\n- 无座: 有票 72元\\\\nG7360(实际车次train_no: 56000G736081) 杭州(telecode: HZH) -> 上海虹桥(telecode: AOH) 20:00 -> 21:00 历时:01:00\\\\n- 商务座: 剩余19张票 232元\\\\n- 一等座: 有票 124元\\\\n- 二等座: 有票 78元\\\\n- 无座: 有票 78元\\\\nG1350(实际车次train_no: 62000G135002) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:02 -> 23:01 历时:00:59\\\\n- 商务座: 剩余7张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG1506(实际车次train_no: 71000G150632) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:48 -> 22:47 历时:00:59\\\\n- 商务座: 剩余19张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG1334(实际车次train_no: 77000G13350F) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:57 -> 20:56 历时:00:59\\\\n- 商务座: 剩余14张票 242元\\\\n- 一等座: 剩余1张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG1378(实际车次train_no: 80000G13780O) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:19 -> 19:18 历时:00:59\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州南(telecode: XHH) -> 上海松江(telecode: IMH) 19:34 -> 20:32 历时:00:58\\\\n- 商务座: 剩余9张票 208元\\\\n- 一等座: 有票 111元\\\\n- 二等座: 有票 68元\\\\n- 无座: 有票 68元\\\\nG1302(实际车次train_no: 6e000G130206) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:50 -> 21:47 历时:00:57\\\\n- 商务座: 剩余14张票 263元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7366(实际车次train_no: 56000G736606) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:14 -> 21:11 历时:00:57\\\\n- 商务座: 剩余4张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7584(实际车次train_no: 5e000G758405) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 17:51 -> 18:48 历时:00:57\\\\n- 商务座: 剩余2张票 212元\\\\n- 一等座: 剩余1张票 113元\\\\n- 二等座: 无票 70元\\\\n- 无座: 有票 70元\\\\nG7340(实际车次train_no: 5j000G734003) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:54 -> 21:50 历时:00:56\\\\n- 商务座: 剩余14张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG1638(实际车次train_no: 5n000G163800) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:45 -> 22:40 历时:00:55\\\\n- 商务座: 剩余9张票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG7350(实际车次train_no: 5j000G735074) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:40 -> 21:35 历时:00:55\\\\n- 商务座: 剩余7张票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG1328(实际车次train_no: 78000G13280E) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:35 -> 21:30 历时:00:55\\\\n- 商务座: 剩余6张票 242元\\\\n- 一等座: 剩余9张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:52 -> 19:47 历时:00:55\\\\n- 商务座: 无票 263元\\\\n- 一等座: 剩余1张票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 无票 87元\\\\nG7528(实际车次train_no: 5j000G752802) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:27 -> 22:21 历时:00:54\\\\n- 商务座: 剩余12张票 219元\\\\n- 一等座: 剩余8张票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG7588(实际车次train_no: 5j000G758802) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:05 -> 19:59 历时:00:54\\\\n- 商务座: 无票 263元\\\\n- 一等座: 无票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 剩余1张票 87元\\\\nG3060(实际车次train_no: 5n000G306000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 20:10 -> 21:03 历时:00:53\\\\n- 商务座: 剩余2张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7566(实际车次train_no: 5j000G756606) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:09 -> 20:02 历时:00:53\\\\n- 商务座: 剩余1张票 263元\\\\n- 一等座: 剩余3张票 140元\\\\n- 二等座: 无票 87元\\\\n- 无座: 有票 87元\\\\nG1640(实际车次train_no: 5n000G164000) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 22:38 -> 23:30 历时:00:52\\\\n- 商务座: 剩余12张票 216元\\\\n- 一等座: 有票 104元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG1390(实际车次train_no: 5w000G139010) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:34 -> 23:26 历时:00:52\\\\n- 商务座: 有票 219元\\\\n- 一等座: 有票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG2190(实际车次train_no: 76000G21910F) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:35 -> 22:27 历时:00:52\\\\n- 商务座: 剩余17张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 有票 73元\\\\nG1616(实际车次train_no: 71000G161602) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:29 -> 19:21 历时:00:52\\\\n- 商务座: 无票 242元\\\\n- 一等座: 无票 105元\\\\n- 二等座: 无票 65元\\\\n- 无座: 无票 65元\\\\nG7522(实际车次train_no: 5e000G752290) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 18:34 -> 19:25 历时:00:51\\\\n- 商务座: 剩余8张票 194元\\\\n- 一等座: 有票 104元\\\\n- 二等座: 有票 64元\\\\n- 无座: 有票 64元\\\\nG7310(实际车次train_no: 5a000G731004) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 17:47 -> 18:37 历时:00:50\\\\n- 商务座: 无票 212元\\\\n- 一等座: 无票 113元\\\\n- 二等座: 无票 70元\\\\n- 无座: 有票 70元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州南(telecode: XHH) -> 金山北(telecode: EGH) 18:35 -> 19:24 历时:00:49\\\\n- 商务座: 无票 219元\\\\n- 一等座: 剩余2张票 116元\\\\n- 二等座: 无票 72元\\\\n- 无座: 有票 72元\\\\nG820(实际车次train_no: 6c0000G82002) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:07 -> 21:54 历时:00:47\\\\n- 商务座: 剩余11张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 优选一等座: 有票 177元\\\\n- 无座: 有票 80元\\\\nG470(实际车次train_no: 640000G47100) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:11 -> 21:57 历时:00:46\\\\n- 商务座: 剩余19张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG240(实际车次train_no: 800000G24000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:34 -> 20:20 历时:00:46\\\\n- 商务座: 剩余5张票 263元\\\\n- 一等座: 剩余3张票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG7312(实际车次train_no: 52000G731207) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:24 -> 20:10 历时:00:46\\\\n- 商务座: 剩余3张票 239元\\\\n- 一等座: 剩余4张票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG1386(实际车次train_no: 5u000G138620) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:01 -> 19:47 历时:00:46\\\\n- 商务座: 有票 239元\\\\n- 一等座: 有票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG7584(实际车次train_no: 5e000G758405) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 17:51 -> 18:37 历时:00:46\\\\n- 商务座: 剩余6张票 184元\\\\n- 一等座: 剩余17张票 98元\\\\n- 二等座: 剩余2张票 61元\\\\n- 无座: 有票 61元\\\\nG4918(实际车次train_no: 57000G49184G) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 23:20 -> 00:05 历时:00:45\\\\n- 商务座: 剩余7张票 242元\\\\n- 一等座: 剩余12张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG1374(实际车次train_no: 80000G137410) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:30 -> 23:15 历时:00:45\\\\n- 商务座: 剩余18张票 219元\\\\n- 一等座: 有票 117元\\\\n- 二等座: 有票 73元\\\\n- 无座: 无票 73元\\\\nG7536(实际车次train_no: 5j000G753603) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:22 -> 23:07 历时:00:45\\\\n- 商务座: 剩余6张票 219元\\\\n- 一等座: 剩余11张票 105元\\\\n- 二等座: 有票 65元\\\\n- 无座: 有票 65元\\\\nG358(实际车次train_no: 780000G35800) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 22:19 -> 23:04 历时:00:45\\\\n- 商务座: 剩余17张票 242元\\\\n- 一等座: 有票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG822(实际车次train_no: 6c0000G82200) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:58 -> 22:43 历时:00:45\\\\n- 商务座: 剩余9张票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG356(实际车次train_no: 780000G35600) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 21:16 -> 22:01 历时:00:45\\\\n- 商务座: 剩余18张票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG7562(实际车次train_no: 5e000G756250) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 19:38 -> 20:23 历时:00:45\\\\n- 商务座: 有票 263元\\\\n- 一等座: 有票 140元\\\\n- 二等座: 有票 87元\\\\n- 无座: 有票 87元\\\\nG416(实际车次train_no: 5n0000G41600) 杭州东(telecode: HGH) -> 上海南(telecode: SNH) 19:30 -> 20:15 历时:00:45\\\\n- 商务座: 剩余6张票 239元\\\\n- 一等座: 剩余3张票 127元\\\\n- 二等座: 有票 79元\\\\n- 无座: 有票 79元\\\\nG500(实际车次train_no: 710000G50000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:45 -> 19:30 历时:00:45\\\\n- 商务座: 剩余6张票 219元\\\\n- 一等座: 剩余6张票 117元\\\\n- 二等座: 剩余1张票 73元\\\\n- 无座: 有票 73元\\\\nG800(实际车次train_no: 650000G80000) 杭州东(telecode: HGH) -> 上海虹桥(telecode: AOH) 18:40 -> 19:25 历时:00:45\\\\n- 商务座: 剩余4张票 242元\\\\n- 一等座: 剩余18张票 129元\\\\n- 二等座: 有票 80元\\\\n- 无座: 有票 80元\\\\nG7600(实际车次train_no: 5e000G760030) 杭州东(telecode: HGH) -> 上海松江(telecode: IMH) 19:49 -> 20:32 历时:00:43\\\\n- 商务座: 剩余9张票 176元\\\\n- 一等座: 有票 94元\\\\n- 二等座: 有票 58元\\\\n- 无座: 有票 58元\\\\nG7338(实际车次train_no: 5j000G733831) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 20:25 -> 21:07 历时:00:42\\\\n- 商务座: 剩余9张票 153元\\\\n- 一等座: 有票 82元\\\\n- 二等座: 有票 51元\\\\n- 无座: 有票 51元\\\\nG1334(实际车次train_no: 77000G13350F) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 19:57 -> 20:36 历时:00:39\\\\n- 商务座: 剩余18张票 169元\\\\n- 一等座: 剩余4张票 90元\\\\n- 二等座: 有票 56元\\\\n- 无座: 有票 56元\\\\nG7550(实际车次train_no: 5j000G755060) 杭州东(telecode: HGH) -> 金山北(telecode: EGH) 18:52 -> 19:24 历时:00:32\\\\n- 商务座: 无票 184元\\\\n- 一等座: 剩余5张票 98元\\\\n- 二等座: 有票 61元\\\\n- 无座: 有票 61元\\\\n\"}',\n // },\n // extra: {\n // noFooter: true,\n // },\n // },\n {\n id: '3',\n type: 'ImageMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n extra: {\n cost: 6.09,\n token: 1999,\n },\n content: {\n format: 'svg',\n bytes: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n },\n thinks: `具体来说,理赔流程一般包括以下几个步骤:\n1.报案:被保险人或其指定的受益人在知道保险事故后,及时通知保险人,并告知事故发生的具体情况。\n2.提交材料:被保险人或其指定的受益人需要提交相关证明材料,如事故证明、医疗证明、财产损失证明等。\n3.核定损失: 保险人会对提交的材料进行核定,确定被保险人的损失情况。\n4.协商赔偿:在确定被保险人的损失后,保险人会与被保险人或其指定的受益人协商赔偿金额。\n5.支付赔偿金:在协商达成一致后,保险人向被保险人或其指定的受益人支付赔偿金需要注意。`,\n execute: [\n // 工具库调用(MCP_TOOL)\n {\n type: 'ActionExecutionMessage',\n createdAt: new Date(),\n id: 'tool-1',\n name: '已调用MCP智能工具',\n arguments: { param1: 'foo' },\n extra: {\n action: 'INVOKE_AGENT_TOOL_START',\n icon: documentIcon,\n type: 'MCP_TOOL',\n cost: '3.9',\n },\n },\n // // 工具库调用(PLUGIN_TOOL)\n {\n type: 'ActionExecutionMessage',\n createdAt: new Date(),\n id: 'tool-2',\n name: '已调用插件工具',\n arguments: { param1: 'foo' },\n extra: {\n action: 'INVOKE_AGENT_TOOL_START',\n icon: documentIcon,\n type: 'MCP_TOOL',\n cost: '3.9',\n },\n },\n // // 工具库调用(SKILL)\n // {\n // action: 'INVOKE_AGENT_TOOL_START',\n // id: 'tool-3',\n // toolType: 'SKILL',\n // agentToolName: '技能工具',\n // args: { param3: 'baz' },\n\n // },\n // // 知识库调用(FAQ)\n // {\n // action: 'RECALL_KNOWLEDGE_START',\n // uniqueId: 'kb-1',\n // processStatus: 'START',\n // args: { question: '什么是FAQ?' },\n // knowledgeType: 'FAQ',\n // },\n {\n type: 'ActionExecutionMessage',\n createdAt: new Date(),\n id: 'tool-3',\n name: '已调用文档知识库',\n arguments: { param1: 'foo' },\n extra: {\n action: 'RECALL_KNOWLEDGE_START',\n icon: documentIcon,\n type: 'MCP_TOOL',\n cost: '3.9',\n },\n },\n // // 知识库调用(DOCUMENT)\n // {\n // action: 'RECALL_KNOWLEDGE_START',\n // uniqueId: 'kb-2',\n // processStatus: 'START',\n // args: { question: '文档库介绍' },\n // knowledgeType: 'DOCUMENT',\n // },\n // 运行完毕\n {\n id: '5',\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n createdAt: new Date(),\n },\n ],\n parentMessageId: '2',\n },\n {\n id: '4',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '能否生成一段明年的产品计划开发计划文档给我',\n },\n },\n {\n id: '0',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: `\n# 项目开发计划\n\n本文档概述了 2025 年第三季度的产品开发计划,包括目标、里程碑、团队分工和风险预案。\n\n---\n\n## 🎯 核心目标\n\n- 提升用户留存率至 **45%**\n- 完成 Web 端新版上线\n- 建立 AI 推荐模块 MVP\n- 优化数据库访问性能\n\n---\n\n## 📅 关键时间节点\n\n| 里程碑 | 截止日期 | 负责人 | 代理人 | 截止日期 | 负责人 |\n|------------------|--------------|----------|------------------|--------------|----------|\n| 产品需求冻结 | 2025-08-01 | Alice | 产品需求冻结 | 2025-08-01 | Alice |\n| UI 设计定稿 | 2025-08-10 | Bob | 产品需求冻结 | 2025-08-01 | Alice |\n| 开发完成(内测) | 2025-09-15 | Charlie | 产品需求冻结 | 2025-08-01 | Alice |\n| 正式上线 | 2025-09-30 | Diana | 产品需求冻结 | 2025-08-01 | Alice |\n\n---\n\n## 🛠️ 技术方案简述\n\n我们将使用以下技术栈:\n\n- 前端:React + Vite + Zustand\n- 后端:Node.js + PostgreSQL\n- 数据分析:Python + Pandas\n- 部署环境:Kubernetes on AWS\n\n---\n\n## 💡 示例代码片段\n\n以下是一个用于生成唯一 ID 的函数示例:\n\n~~~ts\nimport { nanoid } from 'nanoid'\n\nexport function generateSessionId() {\n return \\`sess-\\${nanoid()}\\`\n}\n~~~\n`,\n },\n extra: {\n noFooter: true,\n },\n },\n {\n id: '11',\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [\n {\n key: '1',\n description: '我要查看 AI 文档',\n },\n {\n key: '2',\n description: '我如何看待 AI',\n },\n {\n key: '3',\n description: '你是谁?',\n },\n ],\n },\n];\n\n// 基础用法\nconst BasicUsageStory = (args: any) => {\n const [messages, setMessages] = useState<Messages[]>(mockMessages);\n const [loading, setLoading] = useState<Boolean>(false);\n // 模拟流式返回AI消息\n const handleSendMessage = (_type: string, msg: string) => {\n setLoading(true);\n const userMsg: Messages = {\n id: String(Date.now()),\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.pending,\n role: MessageRole.user,\n content: { text: msg },\n };\n setMessages((prev) => [\n ...prev,\n userMsg,\n ]);\n let aiMsg = '';\n const stream = ['好的,', '我正在为你查询', '相关信息...'];\n stream.forEach((chunk, idx) => {\n setTimeout(() => {\n aiMsg += chunk;\n setMessages((prev) => {\n const aiIndex = prev.findIndex((m) => m.id === 'stream-ai' && m.status === MessageStatus.pending);\n if (aiIndex > -1) {\n const updated = [...prev];\n const oldMsg = updated[aiIndex];\n if (oldMsg.type === 'TextMessage') {\n updated[aiIndex] = {\n ...oldMsg,\n content: { text: aiMsg },\n status: MessageStatus.pending,\n };\n }\n\n if (idx === 2) {\n updated[aiIndex].status = MessageStatus.done;\n setLoading(false);\n }\n return updated;\n }\n const aiMessage: Messages = {\n id: `stream-ai`,\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.pending,\n role: MessageRole.assistant,\n content: { text: aiMsg },\n };\n return [\n ...prev,\n aiMessage,\n ];\n });\n if (idx === stream.length - 1) {\n setTimeout(() => {\n setMessages((prev) => prev.map((m) => {\n if (m.id === 'stream-ai') {\n const doneMsg: Messages = { ...m, status: MessageStatus.done };\n return doneMsg;\n }\n return m;\n }));\n }, 500);\n }\n }, 800 * (idx + 1));\n });\n };\n\n // 模拟清空数据\n const handleClear = () => {\n setMessages([]);\n };\n\n // 模拟按钮\n const handleActions = (index: number, data: any) => {\n console.log(index, data);\n };\n\n // 模拟快捷短语点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev) => prev.filter((m) => m.id !== id));\n };\n\n const ToolTip = (data: any) => {\n const { cost, token } = data?.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { cost && <div>{ cost }s</div>}\n { token && <Divider type=\"vertical\" /> }\n { token && <div>{ token } tokens</div> }\n </div>\n );\n };\n\n return (\n <div style={{ height: '600px', width: '400px', border: '1px solid #e7e7e7', borderRadius: '8px' }}>\n <XAiChatbot\n {...args}\n inputShow={false}\n messages={messages}\n loading={loading}\n messageTooltip={ToolTip}\n onClear={handleClear}\n onSuggestMessageClick={handleSuggestMessageClick}\n onSend={handleSendMessage}\n onMessagesActionsCallback={handleActions}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n navbar: {\n title: '智能助手',\n },\n // messages: mockMessages,\n emptyStateText: '众安智能体',\n },\n};\n\n// 在 Provider 中使用\nexport const 在Provider中使用: Story = {\n decorators: [\n (Story) => (\n <XAiProvider token=\"test-token\" url=\"https://api.example.com\">\n <Story />\n </XAiProvider>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 多个 Provider 实例\nexport const 多个Provider实例: Story = {\n decorators: [\n (Story) => (\n <div style={{ display: 'flex', gap: '50px', height: '600px' }}>\n <XAiProvider providerId=\"chat1\" token=\"token1\" url=\"https://api1.example.com\">\n <div style={{ width: '300px', marginRight: '40px' }}>\n <Story />\n </div>\n </XAiProvider>\n <XAiProvider providerId=\"chat2\" token=\"token2\" url=\"https://api2.example.com\">\n <div style={{ width: '300px' }}>\n <Story />\n </div>\n </XAiProvider>\n </div>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 展示新架构的示例组件\nconst ArchitectureDemoComponent: React.FC<{ title: string }> = ({ title }) => {\n const { mergedProps, isInProvider, getProviderValue } = useProviderContext({\n props: { title },\n mergeLogic: (props, context) => {\n if (!context?.isInProvider) {\n return props;\n }\n\n return {\n ...props,\n messages: context.messages,\n loading: context.loading,\n customData: context.messages?.length || 0,\n };\n },\n });\n\n const providerMethods = useProviderMethods();\n\n return (\n <div style={{\n padding: '15px',\n border: '1px solid #e7e7e7',\n borderRadius: '8px',\n marginBottom: '10px',\n backgroundColor: '#fafafa',\n }}\n >\n <h4 style={{ margin: '0 0 10px 0' }}>{mergedProps.title}</h4>\n <div style={{ fontSize: '12px', color: '#666' }}>\n <p>Provider 状态: {isInProvider ? '✅ 已连接' : '❌ 未连接'}</p>\n <p>消息数量: {getProviderValue('messages')?.length || 0}</p>\n <p>加载状态: {getProviderValue('loading') ? '🔄 加载中' : '✅ 就绪'}</p>\n <button\n onClick={() => providerMethods.sendMessage?.('来自架构演示组件的消息')}\n disabled={!isInProvider}\n style={{\n fontSize: '12px',\n padding: '4px 8px',\n backgroundColor: isInProvider ? '#1890ff' : '#d9d9d9',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: isInProvider ? 'pointer' : 'not-allowed',\n }}\n >\n {isInProvider ? '发送消息' : '需要 Provider'}\n </button>\n </div>\n </div>\n );\n};\n\n// 展示新架构的示例\nexport const 新架构演示: Story = {\n render: (args) => (\n <div style={{ width: '500px', height: '700px' }}>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"architecture-demo\">\n <div style={{ padding: '20px' }}>\n <h3 style={{ marginBottom: '20px' }}>新架构演示</h3>\n <p style={{ marginBottom: '20px', color: '#666' }}>\n 展示如何使用 useProviderContext 和 useProviderMethods Hook\n </p>\n\n {/* 演示组件 */}\n <div style={{ marginBottom: '20px' }}>\n <ArchitectureDemoComponent title=\"演示组件 A\" />\n <ArchitectureDemoComponent title=\"演示组件 B\" />\n <ArchitectureDemoComponent title=\"演示组件 C\" />\n </div>\n\n {/* 聊天机器人 */}\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '架构演示聊天机器人',\n subtitle: '展示新 Hook 的使用',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 对比示例:独立使用 vs Provider 模式\nexport const 架构对比演示: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px', padding: '20px' }}>\n {/* 独立使用 */}\n <div style={{ width: '300px' }}>\n <h4>独立使用模式</h4>\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"独立组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '独立聊天机器人',\n subtitle: '不依赖 Provider',\n }}\n onSend={(type, content) => {\n console.log('独立模式发送:', type, content);\n }}\n onClear={() => {\n console.log('独立模式清空');\n }}\n />\n </div>\n </div>\n\n {/* Provider 模式 */}\n <div style={{ width: '300px' }}>\n <h4>Provider 模式</h4>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"comparison-demo\">\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"Provider 组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { XAiChatbotProps } from "../../types/XAiChatbot";
|
|
3
3
|
export interface ActionHeaderProps {
|
|
4
|
-
|
|
4
|
+
execute: any[];
|
|
5
|
+
thinks: string;
|
|
5
6
|
renderActionHeader?: (params: {
|
|
6
|
-
|
|
7
|
+
execute: any[];
|
|
7
8
|
expanded: boolean;
|
|
8
9
|
onToggle: () => void;
|
|
9
10
|
}) => React.ReactNode;
|