bi-sdk-react 0.0.5 → 0.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bi-sdk-react",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/umd/js/bi-sdk.umd.min.js",
@@ -15,7 +15,8 @@
15
15
  "build:lib": "npm run build:lib:umd && npm run build:lib:es",
16
16
  "build:lib:umd": "cross-env NODE_ENV=production BUILD_TARGET=lib rsbuild build --config rsbuild.lib.config.ts",
17
17
  "build:lib:es": "cross-env NODE_ENV=production BUILD_TARGET=lib rsbuild build --config rsbuild.es.config.ts",
18
- "preview": "rsbuild preview"
18
+ "preview": "rsbuild preview",
19
+ "publish": "npm run build:types && npm run build:lib && npm publish --access public"
19
20
  },
20
21
  "dependencies": {
21
22
  "@ant-design/icons": "^6.1.0",
@@ -646,7 +646,7 @@ export const PageDesigner = React.forwardRef<any, PageDesignerProps>(
646
646
  }}
647
647
  >
648
648
  {rightActiveKey === "ai" && fetch?.ai && (
649
- <AiPanel agentList={agentList} />
649
+ <AiPanel agentList={agentList} onEffect={handleAiEffect} />
650
650
  )}
651
651
  {rightActiveKey === "props" && (
652
652
  <PropertiesPanel datasourceEnable={datasourceEnable} />
@@ -701,6 +701,7 @@ export const PageDesigner = React.forwardRef<any, PageDesignerProps>(
701
701
  <AiPanel
702
702
  agentList={agentList}
703
703
  style={{ width: 400, height: "85vh" }}
704
+ onEffect={handleAiEffect}
704
705
  />
705
706
  }
706
707
  trigger="click"
@@ -27,7 +27,12 @@ import React, {
27
27
  import styled from "styled-components";
28
28
  import { DesignerContext } from "../context/DesignerContext";
29
29
  import { IconFont } from "../icon/IconFont";
30
- import { ChatConversationType, ChatMessageType, ChatResponseAnswerEffectType, ChatResponseAnswerType } from "../typing";
30
+ import {
31
+ ChatConversationType,
32
+ ChatMessageType,
33
+ ChatResponseAnswerEffectType,
34
+ ChatResponseAnswerType,
35
+ } from "../typing";
31
36
  import { formatTime, uuid } from "../utils";
32
37
  import { ChatInput } from "./ChatInput";
33
38
  import { PaneHeader } from "./PaneHeader";
@@ -145,7 +150,6 @@ export const AiPanel: React.FC<AiPanelProps> = ({
145
150
  }) => {
146
151
  const questionMessage = {
147
152
  id: uuid(),
148
- conversationId: conversationId || "",
149
153
  question: data.message,
150
154
  createdAt: new Date().toISOString(),
151
155
  files: data.files || [],
@@ -318,7 +322,7 @@ export const AiPanel: React.FC<AiPanelProps> = ({
318
322
  <EmptyMessage />
319
323
  )}
320
324
  </div>
321
- {messageList.length === 0 && (
325
+ {messageList.length === 0 && conversationList.length > 0 && (
322
326
  <Card
323
327
  title="历史记录"
324
328
  size="small"
@@ -559,20 +563,46 @@ const MessageRoot = styled.div`
559
563
  flex-direction: column;
560
564
  gap: 6px;
561
565
  }
562
- .extra-list {
563
- display: flex;
564
- flex-direction: column;
565
- gap: 4px;
566
- }
567
- .extra-item {
568
- // display: flex;
569
- // align-items: center;
570
- // gap: 6px;
571
- font-size: 12px;
572
- color: var(--ant-color-text-secondary);
566
+ .msg-ai-meta {
567
+ &-title {
568
+ padding: 8px 4px;
569
+ font-size: 12px;
570
+ color: var(--ant-color-text-tertiary);
571
+ }
572
+ &-list {
573
+ max-height: 200px;
574
+ overflow: auto;
575
+ display: flex;
576
+ flex-wrap: wrap;
577
+ flex-direction: row;
578
+ gap: 4px;
579
+
580
+ .ant-tag {
581
+ max-width: 155px;
582
+ overflow: hidden;
583
+ text-overflow: ellipsis;
584
+ white-space: nowrap;
585
+ }
573
586
 
574
- .ant-tag {
575
- margin-right: 6px;
587
+ &.vertical {
588
+ flex-direction: column;
589
+ }
590
+
591
+ &-item {
592
+ font-size: 12px;
593
+ color: var(--ant-color-text-label);
594
+ margin-bottom: 4px;
595
+
596
+ &:last-child {
597
+ margin-bottom: 0;
598
+ }
599
+
600
+ .ant-tag {
601
+ display: inline;
602
+ max-width: unset;
603
+ margin-right: 6px;
604
+ }
605
+ }
576
606
  }
577
607
  }
578
608
  `;
@@ -659,17 +689,34 @@ const MessageList = forwardRef<
659
689
  ) : (
660
690
  <>
661
691
  <div className="msg-content">{msg.answer?.answer || ""}</div>
692
+ {!!msg.answer?.plans?.length && (
693
+ <details className="msg-ai-meta" open>
694
+ <summary className="msg-ai-meta-title">
695
+ PLANS:
696
+ </summary>
697
+ <div className="msg-ai-meta-list">
698
+ {msg.answer.plans.map((e, index) => (
699
+ <Tooltip title={e.description} key={index}>
700
+ <Tag color="blue">{e.name}</Tag>
701
+ </Tooltip>
702
+ ))}
703
+ </div>
704
+ </details>
705
+ )}
662
706
  {!!msg.answer?.extra?.length && (
663
- <div className="extra-list">
664
- {msg.answer.extra.map((e: any, idx: number) => (
665
- <div className="extra-item" key={idx}>
666
- <Tag color="gold">{e.element}</Tag>
667
- <span>{e.action}</span>
668
- {/* <span>·</span>
669
- <span>{e.area}</span> */}
670
- </div>
671
- ))}
672
- </div>
707
+ <details className="msg-ai-meta" open>
708
+ <summary className="msg-ai-meta-title">
709
+ ACTIONS:
710
+ </summary>
711
+ <div className="msg-ai-meta-list vertical">
712
+ {msg.answer.extra.map((e: any, idx: number) => (
713
+ <div className="msg-ai-meta-list-item" key={idx}>
714
+ <Tag color="gold">{e.element}</Tag>
715
+ <span>{e.action}</span>
716
+ </div>
717
+ ))}
718
+ </div>
719
+ </details>
673
720
  )}
674
721
  </>
675
722
  )}
@@ -14,8 +14,14 @@ export type ChatResponseAnswerEffectType = {
14
14
  pageItems?: SchemaItemType[] | null;
15
15
  };
16
16
 
17
+ export type ChatResponseAnswerPlanType = {
18
+ name: string;
19
+ description: string;
20
+ };
21
+
17
22
  export type ChatResponseAnswerType = {
18
23
  answer: string;
24
+ plans?: ChatResponseAnswerPlanType[] | null;
19
25
  effect?: ChatResponseAnswerEffectType | null;
20
26
  extra?:
21
27
  | { id: string; element: string; action: string; area: string }[]
package/src/example.tsx CHANGED
@@ -300,6 +300,10 @@ const example = {
300
300
  answer: {
301
301
  answer:
302
302
  "已生成草稿:包含学期与年级筛选、科目均分柱状、分数段分布、班级TOP5榜单及优秀率折线,主色清爽,关键数字加粗。",
303
+ plans: [
304
+ { name: "计划1", description: "计划1描述" },
305
+ { name: "计划2", description: "计划2描述" },
306
+ ],
303
307
  extra: [
304
308
  { id: "e1", element: "科目均分", action: "新增", area: "左侧" },
305
309
  { id: "e2", element: "分数段分布", action: "新增", area: "左侧" },
@@ -325,6 +329,20 @@ const example = {
325
329
  answer: {
326
330
  answer:
327
331
  "已更新草稿:加入人数与及格率标签,底部提醒区高亮近一周波动,便于快速关注。",
332
+ plans: [
333
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
334
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
335
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
336
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
337
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
338
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
339
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
340
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
341
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
342
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
343
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
344
+ { name: "计划3计划3计划3计划3计划3计划3", description: "计划3描述" },
345
+ ],
328
346
  extra: [
329
347
  { id: "e5", element: "学生总人数标签", action: "新增", area: "顶部" },
330
348
  { id: "e6", element: "及格率标签", action: "新增", area: "顶部" },
@@ -349,6 +367,9 @@ const example = {
349
367
  answer: {
350
368
  answer:
351
369
  "已生成草稿:曲线展示出勤率,环形占比呈现迟到与请假,卡片列出异常班级与提醒事项。",
370
+ plans: [
371
+ { name: "计划4", description: "计划4描述" },
372
+ ],
352
373
  extra: [
353
374
  { id: "e8", element: "出勤率走势", action: "新增", area: "中间左侧" },
354
375
  {
@@ -378,6 +399,9 @@ const example = {
378
399
  answer: {
379
400
  answer:
380
401
  "已生成草稿:评分分布清晰,热门意见词语聚合展示,建议清单分组呈现,便于教学改进。",
402
+ plans: [
403
+ { name: "计划5", description: "计划5描述" },
404
+ ],
381
405
  extra: [
382
406
  { id: "e11", element: "评分分布", action: "新增", area: "中间" },
383
407
  { id: "e12", element: "意见词语聚合", action: "新增", area: "中间" },
@@ -402,6 +426,9 @@ const example = {
402
426
  answer: {
403
427
  answer:
404
428
  "已生成草稿:时长条形展示、覆盖范围统计、及时率仪表与反馈质量等级卡片,顶部总览卡片汇总核心信息。",
429
+ plans: [
430
+ { name: "计划6", description: "计划6描述" },
431
+ ],
405
432
  extra: [
406
433
  { id: "e14", element: "授课时长", action: "新增", area: "左侧" },
407
434
  { id: "e15", element: "班级覆盖", action: "新增", area: "左侧" },
@@ -426,6 +453,9 @@ const example = {
426
453
  answer: {
427
454
  answer:
428
455
  "已更新草稿:加入人数与及格率标签,底部提醒区高亮近一周波动,便于快速关注。",
456
+ plans: [
457
+ { name: "计划3", description: "计划3描述" },
458
+ ],
429
459
  extra: [
430
460
  { id: "e1", element: "学生总人数标签", action: "新增", area: "顶部" },
431
461
  { id: "e2", element: "及格率标签", action: "新增", area: "顶部" },