eli-video-interview 1.7.0 → 1.9.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 (93) hide show
  1. package/esm/components/Charts/ReportPie.js +27 -10
  2. package/esm/components/react-photo-view/hooks/useAnimationPosition.d.ts +1 -1
  3. package/esm/modules/ai-question/Root.js +11 -5
  4. package/esm/modules/ai-question/components/GlobalDimensions/Dialog.d.ts +9 -0
  5. package/esm/modules/ai-question/components/GlobalDimensions/Dialog.js +154 -0
  6. package/esm/modules/ai-question/components/GlobalDimensions/index.d.ts +3 -0
  7. package/esm/modules/ai-question/components/GlobalDimensions/index.js +57 -0
  8. package/esm/modules/ai-question/components/QuestionModel/index.js +2 -1
  9. package/esm/modules/ai-question/components/QuestionModel/interface.d.ts +12 -0
  10. package/esm/modules/ai-question/components/QuestionPreview/styled.d.ts +2 -2
  11. package/esm/modules/ai-question/utils/weight.d.ts +17 -0
  12. package/esm/modules/ai-question/utils/weight.js +38 -0
  13. package/esm/modules/ai-report/components/ScoreReport/styled.d.ts +3 -3
  14. package/esm/modules/ai-report/components/VideoQuestion/styled.d.ts +2 -2
  15. package/esm/modules/ai-report/components/WorkPlaces/styled.d.ts +2 -2
  16. package/esm/modules/ai-report/interface.d.ts +16 -0
  17. package/esm/modules/ai-report-v2/Root.js +2 -1
  18. package/esm/modules/ai-report-v2/components/AIEvaluate/Graph.d.ts +2 -0
  19. package/esm/modules/ai-report-v2/components/AIEvaluate/Graph.js +57 -6
  20. package/esm/modules/ai-report-v2/components/AIEvaluate/index.js +1 -0
  21. package/esm/modules/ai-report-v2/components/GlobalDimensions/index.d.ts +3 -0
  22. package/esm/modules/ai-report-v2/components/GlobalDimensions/index.js +84 -0
  23. package/esm/modules/ai-report-v2/components/ReportHeader/ReportHeader.js +3 -2
  24. package/esm/modules/ai-report-v2/components/ScoreReport/styled.d.ts +3 -3
  25. package/esm/modules/ai-report-v2/components/VideoQuestion/styled.d.ts +2 -2
  26. package/esm/modules/ai-report-v2/components/WorkPlaces/styled.d.ts +2 -2
  27. package/esm/modules/ai-report-v2/components/styled.d.ts +3 -0
  28. package/esm/modules/ai-report-v2/components/styled.js +10 -0
  29. package/esm/modules/ai-report-v2/interface.d.ts +16 -0
  30. package/esm/modules/ai-report-v3/Root.js +2 -1
  31. package/esm/modules/ai-report-v3/components/AIEvaluate/Graph.d.ts +2 -0
  32. package/esm/modules/ai-report-v3/components/AIEvaluate/Graph.js +75 -48
  33. package/esm/modules/ai-report-v3/components/AIEvaluate/index.js +1 -0
  34. package/esm/modules/ai-report-v3/components/CheatRisk/CheatRisk.js +9 -4
  35. package/esm/modules/ai-report-v3/components/GlobalDimensions/index.d.ts +3 -0
  36. package/esm/modules/ai-report-v3/components/GlobalDimensions/index.js +82 -0
  37. package/esm/modules/ai-report-v3/components/ModuleTitle.d.ts +1 -1
  38. package/esm/modules/ai-report-v3/components/ModuleTitle.js +3 -1
  39. package/esm/modules/ai-report-v3/components/ScoreReport/styled.d.ts +3 -3
  40. package/esm/modules/ai-report-v3/components/VideoQuestion/styled.d.ts +2 -2
  41. package/esm/modules/ai-report-v3/components/WorkPlaces/styled.d.ts +2 -2
  42. package/esm/modules/ai-report-v3/interface.d.ts +16 -0
  43. package/esm/modules/ai-template/components/TemplateList/styled.d.ts +3 -3
  44. package/esm/modules/ai-template/components/TemplateMenu/styled.d.ts +1 -1
  45. package/esm/store/ai-question/question-model-store.d.ts +4 -1
  46. package/esm/store/ai-question/question-model-store.js +41 -5
  47. package/lib/components/Charts/ReportPie.js +27 -10
  48. package/lib/components/react-photo-view/hooks/useAnimationPosition.d.ts +1 -1
  49. package/lib/modules/ai-question/Root.js +11 -5
  50. package/lib/modules/ai-question/components/GlobalDimensions/Dialog.d.ts +9 -0
  51. package/lib/modules/ai-question/components/GlobalDimensions/Dialog.js +156 -0
  52. package/lib/modules/ai-question/components/GlobalDimensions/index.d.ts +3 -0
  53. package/lib/modules/ai-question/components/GlobalDimensions/index.js +62 -0
  54. package/lib/modules/ai-question/components/QuestionModel/index.js +2 -1
  55. package/lib/modules/ai-question/components/QuestionModel/interface.d.ts +12 -0
  56. package/lib/modules/ai-question/components/QuestionPreview/styled.d.ts +2 -2
  57. package/lib/modules/ai-question/utils/weight.d.ts +17 -0
  58. package/lib/modules/ai-question/utils/weight.js +43 -0
  59. package/lib/modules/ai-report/components/ScoreReport/styled.d.ts +3 -3
  60. package/lib/modules/ai-report/components/VideoQuestion/styled.d.ts +2 -2
  61. package/lib/modules/ai-report/components/WorkPlaces/styled.d.ts +2 -2
  62. package/lib/modules/ai-report/interface.d.ts +16 -0
  63. package/lib/modules/ai-report-v2/Root.js +2 -1
  64. package/lib/modules/ai-report-v2/components/AIEvaluate/Graph.d.ts +2 -0
  65. package/lib/modules/ai-report-v2/components/AIEvaluate/Graph.js +57 -6
  66. package/lib/modules/ai-report-v2/components/AIEvaluate/index.js +1 -0
  67. package/lib/modules/ai-report-v2/components/GlobalDimensions/index.d.ts +3 -0
  68. package/lib/modules/ai-report-v2/components/GlobalDimensions/index.js +89 -0
  69. package/lib/modules/ai-report-v2/components/ReportHeader/ReportHeader.js +2 -1
  70. package/lib/modules/ai-report-v2/components/ScoreReport/styled.d.ts +3 -3
  71. package/lib/modules/ai-report-v2/components/VideoQuestion/styled.d.ts +2 -2
  72. package/lib/modules/ai-report-v2/components/WorkPlaces/styled.d.ts +2 -2
  73. package/lib/modules/ai-report-v2/components/styled.d.ts +3 -0
  74. package/lib/modules/ai-report-v2/components/styled.js +11 -1
  75. package/lib/modules/ai-report-v2/interface.d.ts +16 -0
  76. package/lib/modules/ai-report-v3/Root.js +2 -1
  77. package/lib/modules/ai-report-v3/components/AIEvaluate/Graph.d.ts +2 -0
  78. package/lib/modules/ai-report-v3/components/AIEvaluate/Graph.js +75 -48
  79. package/lib/modules/ai-report-v3/components/AIEvaluate/index.js +1 -0
  80. package/lib/modules/ai-report-v3/components/CheatRisk/CheatRisk.js +9 -4
  81. package/lib/modules/ai-report-v3/components/GlobalDimensions/index.d.ts +3 -0
  82. package/lib/modules/ai-report-v3/components/GlobalDimensions/index.js +87 -0
  83. package/lib/modules/ai-report-v3/components/ModuleTitle.d.ts +1 -1
  84. package/lib/modules/ai-report-v3/components/ModuleTitle.js +3 -1
  85. package/lib/modules/ai-report-v3/components/ScoreReport/styled.d.ts +3 -3
  86. package/lib/modules/ai-report-v3/components/VideoQuestion/styled.d.ts +2 -2
  87. package/lib/modules/ai-report-v3/components/WorkPlaces/styled.d.ts +2 -2
  88. package/lib/modules/ai-report-v3/interface.d.ts +16 -0
  89. package/lib/modules/ai-template/components/TemplateList/styled.d.ts +3 -3
  90. package/lib/modules/ai-template/components/TemplateMenu/styled.d.ts +1 -1
  91. package/lib/store/ai-question/question-model-store.d.ts +4 -1
  92. package/lib/store/ai-question/question-model-store.js +41 -5
  93. package/package.json +1 -1
@@ -69,16 +69,18 @@ var ReportPie = function (props) {
69
69
  }).includes(0);
70
70
  var min = Math.min.apply(Math, scores);
71
71
  var max = Math.max.apply(Math, scores);
72
+ // 全局维度(只绑试卷、不绑题目)在圆环里也标出来源:
73
+ // 颜色沿用「按分数档位上色」,来源靠标签里的小号「全局」标记 + tooltip 说明,重名/导出 PDF 时也能分辨
72
74
  var data = source.map(function (_a) {
73
- var name = _a.name, score = _a.score, params = __rest(_a, ["name", "score"]);
74
- return (__assign({ name: formateTitle(name), originalName: name, value: score }, params));
75
+ var name = _a.name, score = _a.score, dimensionSource = _a.source, params = __rest(_a, ["name", "score", "source"]);
76
+ return (__assign({ name: formateTitle(name), originalName: name, value: score, isGlobal: dimensionSource === 2 }, params));
75
77
  });
76
78
  var options = {
77
79
  tooltip: {
78
80
  trigger: 'item',
79
81
  formatter: function (_a) {
80
- var value = _a.value, _b = _a.data, rank = _b.rank, total = _b.total, originalName = _b.originalName;
81
- return "".concat(originalName, "<br />\u5F97\u5206\uFF1A").concat(value, "\u5206").concat(total > 0 ? "<br />\u6392\u540D\uFF1A".concat(rank, "/").concat(total) : '');
82
+ var value = _a.value, _b = _a.data, rank = _b.rank, total = _b.total, originalName = _b.originalName, isGlobal = _b.isGlobal;
83
+ return "".concat(originalName).concat(isGlobal ? '(全局维度·不关联题目)' : '', "<br />\u5F97\u5206\uFF1A").concat(value, "\u5206").concat(total > 0 ? "<br />\u6392\u540D\uFF1A".concat(rank, "/").concat(total) : '');
82
84
  },
83
85
  backgroundColor: 'rgba(0, 0, 0, 0.86)',
84
86
  textStyle: {
@@ -93,15 +95,30 @@ var ReportPie = function (props) {
93
95
  data: data,
94
96
  roseType: 'radius',
95
97
  label: {
96
- color: 'rgba(0, 0, 0, 0.86)',
97
- fontWeight: 500,
98
+ // 维度名正常字号;全局维度在下一行补一个小号浅绿「全局」标记(比同字号后缀清爽)
98
99
  formatter: function (_a) {
99
- var name = _a.name;
100
- return "".concat(name);
100
+ var name = _a.name, item = _a.data;
101
+ return ((item === null || item === void 0 ? void 0 : item.isGlobal) ? "{name|".concat(name, "}\n{tag|\u5168\u5C40}") : "{name|".concat(name, "}"));
102
+ },
103
+ rich: {
104
+ name: {
105
+ color: 'rgba(0, 0, 0, 0.86)',
106
+ fontSize: 12,
107
+ lineHeight: 16,
108
+ fontWeight: 500,
109
+ },
110
+ tag: {
111
+ color: '#33A853',
112
+ fontSize: 10,
113
+ lineHeight: 15,
114
+ padding: [1, 5],
115
+ borderRadius: 8,
116
+ backgroundColor: 'rgba(78, 201, 83, 0.14)',
117
+ align: 'center',
118
+ },
101
119
  },
102
- rich: __assign({}, levelMapping),
103
120
  overflow: 'break',
104
- width: 70,
121
+ width: 76,
105
122
  lineHeight: 18,
106
123
  },
107
124
  labelLine: {
@@ -1,2 +1,2 @@
1
1
  import type { MutableRefObject } from 'react';
2
- export default function useAnimationPosition(visible: boolean | undefined, originRef: MutableRefObject<HTMLElement | null> | undefined, loaded: boolean, x: number, y: number, width: number, height: number, scale: number, speed: number, updateEasing: (pause: boolean) => void): readonly [number, number, number, number, number, 0 | 1, import("../types").EasingMode, "contain" | "fill" | "cover" | undefined];
2
+ export default function useAnimationPosition(visible: boolean | undefined, originRef: MutableRefObject<HTMLElement | null> | undefined, loaded: boolean, x: number, y: number, width: number, height: number, scale: number, speed: number, updateEasing: (pause: boolean) => void): readonly [number, number, number, number, number, 0 | 1, import("../types").EasingMode, "fill" | "contain" | "cover" | undefined];
@@ -68,7 +68,7 @@ var AiQuestionRoot = forwardRef(function (props, ref) {
68
68
  var selctedAbilitys = useAiAbilityListStore().selctedAbilitys;
69
69
  var isOem = props.isOem;
70
70
  var handleValues = function () { return __awaiter(void 0, void 0, void 0, function () {
71
- var questionModelData, _a, pcUrl, pcThumbUrl, mediaUrl, thumbUrl, appliedAllPosition, steps;
71
+ var questionModelData, _a, pcUrl, pcThumbUrl, mediaUrl, thumbUrl, appliedAllPosition, steps, globalDimensions;
72
72
  return __generator(this, function (_b) {
73
73
  questionModelData = (getQuestionModelStore() || {}).questionModelData;
74
74
  _a = getBootVideoStore() || {}, pcUrl = _a.pcUrl, pcThumbUrl = _a.pcThumbUrl, mediaUrl = _a.mediaUrl, thumbUrl = _a.thumbUrl, appliedAllPosition = _a.appliedAllPosition;
@@ -80,8 +80,9 @@ var AiQuestionRoot = forwardRef(function (props, ref) {
80
80
  });
81
81
  return item;
82
82
  });
83
+ globalDimensions = ((questionModelData === null || questionModelData === void 0 ? void 0 : questionModelData.globalDimensions) || []).map(function (item) { return (__assign(__assign({}, item), { weight: Number(item.weight) })); });
83
84
  return [2 /*return*/, Promise.resolve({
84
- data: __assign(__assign({}, questionModelData), { steps: steps }),
85
+ data: __assign(__assign({}, questionModelData), { steps: steps, globalDimensions: globalDimensions }),
85
86
  media: {
86
87
  pcUrl: pcUrl,
87
88
  pcThumbUrl: pcThumbUrl,
@@ -96,20 +97,25 @@ var AiQuestionRoot = forwardRef(function (props, ref) {
96
97
  handleValues: handleValues,
97
98
  handleTemplate: function (steps) { return addModel(steps); },
98
99
  handleSubmit: function () { return __awaiter(void 0, void 0, void 0, function () {
99
- var _a, _b, name, token, questions, aiModel, _c, pcUrl, pcThumbUrl, mediaUrl, thumbUrl, appliedAllPosition, data, error_1;
100
+ var _a, _b, name, token, questions, aiModel, globalDimensions, _c, pcUrl, pcThumbUrl, mediaUrl, thumbUrl, appliedAllPosition, globalWeightSum, data, error_1;
100
101
  return __generator(this, function (_d) {
101
102
  switch (_d.label) {
102
103
  case 0: return [4 /*yield*/, handleValues()];
103
104
  case 1:
104
- _a = _d.sent(), _b = _a.data, name = _b.name, token = _b.token, questions = _b.steps, aiModel = _b.aiModel, _c = _a.media, pcUrl = _c.pcUrl, pcThumbUrl = _c.pcThumbUrl, mediaUrl = _c.mediaUrl, thumbUrl = _c.thumbUrl, appliedAllPosition = _c.appliedAllPosition;
105
+ _a = _d.sent(), _b = _a.data, name = _b.name, token = _b.token, questions = _b.steps, aiModel = _b.aiModel, globalDimensions = _b.globalDimensions, _c = _a.media, pcUrl = _c.pcUrl, pcThumbUrl = _c.pcThumbUrl, mediaUrl = _c.mediaUrl, thumbUrl = _c.thumbUrl, appliedAllPosition = _c.appliedAllPosition;
105
106
  if (!(questions === null || questions === void 0 ? void 0 : questions.length)) {
106
107
  Message.error('还未添加题目,请添加题目');
107
108
  return [2 /*return*/, Promise.reject()];
108
109
  }
110
+ globalWeightSum = globalDimensions.reduce(function (total, item) { return total + (Number(item.weight) || 0); }, 0);
111
+ if (globalWeightSum > 100.005) {
112
+ Message.error("\u5168\u5C40\u7EF4\u5EA6\u6743\u91CD\u5408\u8BA1 ".concat(globalWeightSum, "%\uFF0C\u4E0D\u80FD\u8D85\u8FC7 100%"));
113
+ return [2 /*return*/, Promise.reject()];
114
+ }
109
115
  _d.label = 2;
110
116
  case 2:
111
117
  _d.trys.push([2, 4, , 5]);
112
- return [4 /*yield*/, PostAiModelUpsert(__assign(__assign({ name: name, thirdToken: '', aiModel: (props === null || props === void 0 ? void 0 : props.aiModel) || aiModel }, interviewRoomState), { introductoryVideoSetting: {}, selectAbilities: selctedAbilitys, token: token, questions: questions.map(function (item, i) { return (__assign(__assign({}, item), { selfIntroOpt: i < 2 ? item.selfIntroOpt : 0 })); }) }))];
118
+ return [4 /*yield*/, PostAiModelUpsert(__assign(__assign({ name: name, thirdToken: '', aiModel: (props === null || props === void 0 ? void 0 : props.aiModel) || aiModel }, interviewRoomState), { introductoryVideoSetting: {}, selectAbilities: selctedAbilitys, token: token, globalDimensions: globalDimensions, questions: questions.map(function (item, i) { return (__assign(__assign({}, item), { selfIntroOpt: i < 2 ? item.selfIntroOpt : 0 })); }) }))];
113
119
  case 3:
114
120
  data = (_d.sent()).data;
115
121
  return [2 /*return*/, Promise.resolve({
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ interface GlobalDimensionDialogProps {
3
+ open: boolean;
4
+ tab: 'library' | 'custom';
5
+ aiQuestionCount: number;
6
+ onClose: () => void;
7
+ }
8
+ declare const GlobalDimensionDialog: ({ open, tab, aiQuestionCount, onClose }: GlobalDimensionDialogProps) => JSX.Element;
9
+ export default GlobalDimensionDialog;
@@ -0,0 +1,154 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __read = (this && this.__read) || function (o, n) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
14
+ if (!m) return o;
15
+ var i = m.call(o), r, ar = [], e;
16
+ try {
17
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
+ }
19
+ catch (error) { e = { error: error }; }
20
+ finally {
21
+ try {
22
+ if (r && !r.done && (m = i["return"])) m.call(i);
23
+ }
24
+ finally { if (e) throw e.error; }
25
+ }
26
+ return ar;
27
+ };
28
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
29
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
30
+ if (ar || !(i in from)) {
31
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
32
+ ar[i] = from[i];
33
+ }
34
+ }
35
+ return to.concat(ar || Array.prototype.slice.call(from));
36
+ };
37
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
+ import { GetAiAbilityList } from "../../../../services/ai-ability";
39
+ import { useQuestionModelStore } from "../../../../store/ai-question/question-model-store";
40
+ import { useEnterpriseStore } from "../../../../store/enterprise/enterprise-store";
41
+ import { useRequest } from 'ahooks';
42
+ import { AddIcon, Button, Checkbox, Chip, DeleteIcon, Dialog, IconButton, Input, Message, SearchIcon, Tabs, TextField, Typography } from 'fbm-ui';
43
+ import { Box, Stack } from 'fbm-ui/lib/mui';
44
+ import { useCallback, useEffect, useMemo, useState } from 'react';
45
+ /** 一份试卷最多可配置的全局维度个数(与后端 model.MaxGlobalDimensionCount 保持一致) */
46
+ var MAX_GLOBAL_DIMENSION_COUNT = 8;
47
+ var LIBRARY_SOURCE = 1;
48
+ var CUSTOM_SOURCE = 2;
49
+ var formatWeight = function (value) {
50
+ var matched = value.replace(/[^\d.]/g, '').match(/^\d*\.?\d{0,2}/);
51
+ return matched ? matched[0] : '';
52
+ };
53
+ var weightSum = function (dimensions) { return dimensions.reduce(function (total, item) { return total + (Number(item === null || item === void 0 ? void 0 : item.weight) || 0); }, 0); };
54
+ var GlobalDimensionDialog = function (_a) {
55
+ var open = _a.open, tab = _a.tab, aiQuestionCount = _a.aiQuestionCount, onClose = _a.onClose;
56
+ var _b = useQuestionModelStore(function (store) { return [store.questionModelData, store.updateGlobalDimensions]; }), questionModelData = _b.questionModelData, updateGlobalDimensions = _b.updateGlobalDimensions;
57
+ var _c = useEnterpriseStore().enterprise, jobToken = _c.jobToken, thirdToken = _c.thirdToken;
58
+ var _d = __read(useState(tab), 2), activeTab = _d[0], setActiveTab = _d[1];
59
+ var _e = __read(useState([]), 2), selected = _e[0], setSelected = _e[1];
60
+ var _f = __read(useState(''), 2), keyword = _f[0], setKeyword = _f[1];
61
+ var _g = __read(useState(''), 2), customName = _g[0], setCustomName = _g[1];
62
+ var _h = __read(useState(''), 2), customDefine = _h[0], setCustomDefine = _h[1];
63
+ var data = useRequest(function () { return GetAiAbilityList({ jobToken: jobToken, thirdToken: thirdToken }); }, {
64
+ refreshDeps: [jobToken, thirdToken],
65
+ }).data;
66
+ var libraryList = useMemo(function () { var _a; return ((_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.list) || []; }, [data]);
67
+ var filteredLibrary = useMemo(function () {
68
+ var text = keyword.trim();
69
+ return text ? libraryList.filter(function (item) { var _a; return (_a = item.name) === null || _a === void 0 ? void 0 : _a.includes(text); }) : libraryList;
70
+ }, [libraryList, keyword]);
71
+ // 打开弹窗时用试卷当前配置初始化(确定前不改动表单数据)
72
+ useEffect(function () {
73
+ if (!open) {
74
+ return;
75
+ }
76
+ setActiveTab(tab);
77
+ setSelected(((questionModelData === null || questionModelData === void 0 ? void 0 : questionModelData.globalDimensions) || []).map(function (item) { return (__assign({}, item)); }));
78
+ setKeyword('');
79
+ setCustomName('');
80
+ setCustomDefine('');
81
+ // eslint-disable-next-line react-hooks/exhaustive-deps
82
+ }, [open, tab]);
83
+ var selectedTokens = useMemo(function () { return selected.map(function (item) { return item.collectionToken; }).filter(Boolean); }, [selected]);
84
+ var handleToggleLibrary = useCallback(function (ability, checked) {
85
+ if (checked) {
86
+ if (selected.length >= MAX_GLOBAL_DIMENSION_COUNT) {
87
+ Message.error("\u4E00\u4E2A\u8BD5\u5377\u6700\u591A\u914D\u7F6E ".concat(MAX_GLOBAL_DIMENSION_COUNT, " \u4E2A\u5168\u5C40\u7EF4\u5EA6"));
88
+ return;
89
+ }
90
+ setSelected(function (prev) { return __spreadArray(__spreadArray([], __read(prev), false), [
91
+ { source: LIBRARY_SOURCE, collectionToken: ability.token, name: ability.name, define: ability.define || '', weight: '' },
92
+ ], false); });
93
+ return;
94
+ }
95
+ setSelected(function (prev) { return prev.filter(function (item) { return item.collectionToken !== ability.token; }); });
96
+ }, [selected.length]);
97
+ var handleAddCustom = useCallback(function () {
98
+ var name = customName.trim();
99
+ if (!name) {
100
+ Message.error('请填写维度名称');
101
+ return;
102
+ }
103
+ if (selected.length >= MAX_GLOBAL_DIMENSION_COUNT) {
104
+ Message.error("\u4E00\u4E2A\u8BD5\u5377\u6700\u591A\u914D\u7F6E ".concat(MAX_GLOBAL_DIMENSION_COUNT, " \u4E2A\u5168\u5C40\u7EF4\u5EA6"));
105
+ return;
106
+ }
107
+ setSelected(function (prev) { return __spreadArray(__spreadArray([], __read(prev), false), [{ source: CUSTOM_SOURCE, name: name, define: customDefine.trim(), weight: '' }], false); });
108
+ setCustomName('');
109
+ setCustomDefine('');
110
+ }, [customDefine, customName, selected.length]);
111
+ var handleWeightChange = useCallback(function (index, value) {
112
+ var formatValue = formatWeight(value);
113
+ setSelected(function (prev) { return prev.map(function (item, i) { return (i === index ? __assign(__assign({}, item), { weight: formatValue }) : item); }); });
114
+ }, []);
115
+ var handleDefineChange = useCallback(function (index, value) {
116
+ setSelected(function (prev) { return prev.map(function (item, i) { return (i === index ? __assign(__assign({}, item), { define: value }) : item); }); });
117
+ }, []);
118
+ var handleRemove = useCallback(function (index) {
119
+ setSelected(function (prev) { return prev.filter(function (_, i) { return i !== index; }); });
120
+ }, []);
121
+ var handleSubmit = useCallback(function () {
122
+ if (selected.length > MAX_GLOBAL_DIMENSION_COUNT) {
123
+ Message.error("\u4E00\u4E2A\u8BD5\u5377\u6700\u591A\u914D\u7F6E ".concat(MAX_GLOBAL_DIMENSION_COUNT, " \u4E2A\u5168\u5C40\u7EF4\u5EA6"));
124
+ return;
125
+ }
126
+ var emptyWeight = selected.find(function (item) { return !(Number(item.weight) > 0); });
127
+ if (emptyWeight) {
128
+ Message.error("\u8BF7\u586B\u5199\u300C".concat(emptyWeight.name, "\u300D\u7684\u6743\u91CD"));
129
+ return;
130
+ }
131
+ var total = weightSum(selected);
132
+ if (total > 100.005) {
133
+ Message.error("\u5168\u5C40\u7EF4\u5EA6\u6743\u91CD\u5408\u8BA1 ".concat(total, "%\uFF0C\u4E0D\u80FD\u8D85\u8FC7 100%"));
134
+ return;
135
+ }
136
+ updateGlobalDimensions(selected.map(function (item) { return (__assign(__assign({}, item), { weight: Number(item.weight) || 0 })); }));
137
+ onClose();
138
+ }, [onClose, selected, updateGlobalDimensions]);
139
+ return (_jsx(Dialog, __assign({ open: open, title: "\u6DFB\u52A0\u5168\u5C40\u7EF4\u5EA6", size: "lg", onClose: onClose, onOk: handleSubmit, okText: "\u786E\u5B9A", closeText: "\u53D6\u6D88" }, { children: _jsxs(Box, __assign({ display: "flex", sx: { minHeight: 380 } }, { children: [_jsxs(Box, __assign({ flex: "1 1 0", minWidth: 0, pr: 2.5 }, { children: [_jsx(Tabs, { borderBottom: "none", value: activeTab, onChange: function (_, value) { return setActiveTab(value); }, tabs: [
140
+ { label: '系统维度库', value: 'library' },
141
+ { label: '自定义维度', value: 'custom' },
142
+ ] }), activeTab === 'library' && (_jsxs(Box, __assign({ mt: 1.5 }, { children: [_jsxs(Stack, __assign({ direction: "row", alignItems: "center", justifyContent: "space-between", mb: 1.5 }, { children: [_jsx(Input, { sx: { width: 240 }, size: "small", value: keyword, startAdornment: _jsx(SearchIcon, { color: "disabled" }), placeholder: "\u641C\u7D22\u7EF4\u5EA6\u540D\u79F0", onChange: function (e) { return setKeyword(e.target.value); } }), _jsx(Typography, __assign({ variant: "caption", color: "secondary" }, { children: "\u53EF\u591A\u9009 \u00B7 \u4E0E\u300C\u8003\u5BDF\u80FD\u529B\u300D\u5171\u7528\u540C\u4E00\u5957\u7EF4\u5EA6\u5B9A\u4E49" }))] })), filteredLibrary.map(function (item) {
143
+ var checked = selectedTokens.includes(item.token);
144
+ return (_jsxs(Box, __assign({ display: "flex", alignItems: "center", sx: {
145
+ border: '1px solid rgba(0, 0, 0, 0.08)',
146
+ borderRadius: 1,
147
+ px: 1.5,
148
+ py: 1,
149
+ mb: 1,
150
+ cursor: 'pointer',
151
+ }, onClick: function () { return handleToggleLibrary(item, !checked); } }, { children: [_jsx(Checkbox, { checked: checked, onChange: function () { }, sx: { pointerEvents: 'none', p: 0.5, mr: 0.5 } }), _jsxs(Box, __assign({ minWidth: 0 }, { children: [_jsx(Typography, __assign({ variant: "body2" }, { children: item.name })), item.define && (_jsx(Typography, __assign({ variant: "caption", color: "secondary", noWrap: true, display: "block", maxWidth: 430 }, { children: item.define })))] }))] }), item.token));
152
+ }), filteredLibrary.length === 0 && (_jsx(Typography, __assign({ variant: "body2", color: "secondary" }, { children: "\u6CA1\u6709\u5339\u914D\u7684\u7EF4\u5EA6" })))] }))), activeTab === 'custom' && (_jsxs(Stack, __assign({ spacing: 2, mt: 2 }, { children: [_jsx(TextField, { label: "\u7EF4\u5EA6\u540D\u79F0", value: customName, onChange: function (e) { return setCustomName(e.target.value); } }), _jsx(TextField, { label: "\u8BC4\u4EF7\u6807\u51C6", multiline: true, rows: 4, value: customDefine, placeholder: "AI \u6309\u8FD9\u6BB5\u63CF\u8FF0\u7ED9\u8BE5\u7EF4\u5EA6\u6253\u5206\u5E76\u7ED9\u51FA\u8BC4\u4EF7", onChange: function (e) { return setCustomDefine(e.target.value); } }), _jsx(Box, { children: _jsx(Button, __assign({ variant: "outlined", color: "inherit", startIcon: _jsx(AddIcon, {}), onClick: handleAddCustom }, { children: "\u65B0\u5EFA\u81EA\u5B9A\u4E49\u7EF4\u5EA6" })) }), _jsx(Typography, __assign({ variant: "caption", color: "secondary" }, { children: "\u81EA\u5B9A\u4E49\u7EF4\u5EA6\u53EA\u5728\u672C\u6B21\u8BD5\u5377\u751F\u6548\uFF0C\u4E0D\u5199\u56DE\u7EF4\u5EA6\u5E93\u3002" }))] })))] })), _jsxs(Box, __assign({ sx: { flex: '0 0 320px', borderLeft: '1px solid rgba(0, 0, 0, 0.08)', pl: 2.5 } }, { children: [_jsxs(Stack, __assign({ direction: "row", alignItems: "center", spacing: 1 }, { children: [_jsx(Typography, __assign({ variant: "body2", fontWeight: 500 }, { children: "\u5DF2\u9009\u7EF4\u5EA6" })), _jsx(Chip, { color: "default", label: selected.length, size: "medium" })] })), _jsxs(Box, __assign({ sx: { maxHeight: 320, overflowY: 'auto', pr: 0.5, mt: 1.5 } }, { children: [selected.map(function (item, index) { return (_jsxs(Box, __assign({ sx: { border: '1px solid rgba(0, 0, 0, 0.08)', borderRadius: 1, px: 1.5, py: 1, mb: 1 } }, { children: [_jsxs(Stack, __assign({ direction: "row", alignItems: "center", spacing: 1 }, { children: [_jsx(Typography, __assign({ variant: "body2", sx: { flex: '1 1 auto', minWidth: 0 }, noWrap: true }, { children: item.name })), _jsx(Input, { size: "small", sx: { width: 92 }, value: item.weight, placeholder: "0", onChange: function (e) { return handleWeightChange(index, e.target.value); }, endAdornment: _jsx(Typography, __assign({ variant: "caption", color: "textSecondary" }, { children: "%" })) }), _jsx(IconButton, __assign({ size: "small", onClick: function () { return handleRemove(index); } }, { children: _jsx(DeleteIcon, {}) }))] })), _jsx(TextField, { size: "small", multiline: true, rows: 2, sx: { marginTop: 1 }, placeholder: "\u8BC4\u4EF7\u6807\u51C6\uFF08\u9ED8\u8BA4\u53D6\u7EF4\u5EA6\u5E93\u5B9A\u4E49\uFF09", value: item.define || '', onChange: function (e) { return handleDefineChange(index, e.target.value); } })] }), "".concat(item.collectionToken || item.name, "-").concat(index))); }), selected.length === 0 && (_jsx(Typography, __assign({ variant: "body2", color: "secondary" }, { children: "\u8FD8\u6CA1\u6709\u9009\u62E9\u5168\u5C40\u7EF4\u5EA6" })))] })), _jsx(Typography, __assign({ variant: "caption", color: "secondary", display: "block", mt: 1 }, { children: "\u6743\u91CD\u5FC5\u586B\uFF0C\u4E0E\u9898\u76EE\u6743\u91CD\u5408\u8BA1\u9700\u8981\u51D1\u6EE1 100%\uFF1B\u8C03\u6574\u540E\u4F1A\u6309\u6BD4\u4F8B\u91CD\u6392\u9898\u76EE\u6743\u91CD\u3002" })), _jsxs(Typography, __assign({ variant: "caption", display: "block" }, { children: ["\u5F53\u524D\u5408\u8BA1\uFF1A", weightSum(selected), "%", aiQuestionCount === 0 && '(当前试卷没有可 AI 评分的题目,需要合计 100%)'] }))] }))] })) })));
153
+ };
154
+ export default GlobalDimensionDialog;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const _default: import("react").MemoExoticComponent<() => JSX.Element>;
3
+ export default _default;
@@ -0,0 +1,57 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __read = (this && this.__read) || function (o, n) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
14
+ if (!m) return o;
15
+ var i = m.call(o), r, ar = [], e;
16
+ try {
17
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
+ }
19
+ catch (error) { e = { error: error }; }
20
+ finally {
21
+ try {
22
+ if (r && !r.done && (m = i["return"])) m.call(i);
23
+ }
24
+ finally { if (e) throw e.error; }
25
+ }
26
+ return ar;
27
+ };
28
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
29
+ import GlobalDimensionDialog from './Dialog';
30
+ import { IS_AI_ANALYSIS } from "../../../../constants/ai-question";
31
+ import { useQuestionModelStore } from "../../../../store/ai-question/question-model-store";
32
+ import { AddIcon, Button, Chip, Paper, Typography } from 'fbm-ui';
33
+ import { Box, Stack } from 'fbm-ui/lib/mui';
34
+ import { memo, useCallback, useMemo, useState } from 'react';
35
+ /**
36
+ * 全局维度:只绑试卷、不绑题目,按整场回答统一评价。
37
+ * 展示样式与「面试间互动方式」「题目」卡片保持一致(Paper outlined + fbm-ui 组件)。
38
+ */
39
+ var GlobalDimensions = function () {
40
+ var _a = useQuestionModelStore(function (store) { return [store.questionModelData, store.updateGlobalDimensions]; }), questionModelData = _a.questionModelData, updateGlobalDimensions = _a.updateGlobalDimensions;
41
+ var _b = (questionModelData || {}).steps, steps = _b === void 0 ? [] : _b;
42
+ var dimensions = useMemo(function () { return (questionModelData === null || questionModelData === void 0 ? void 0 : questionModelData.globalDimensions) || []; }, [questionModelData]);
43
+ var aiQuestionCount = useMemo(function () { return steps.filter(function (step) { return IS_AI_ANALYSIS(step); }).length; }, [steps]);
44
+ var _c = __read(useState(false), 2), open = _c[0], setOpen = _c[1];
45
+ var _d = __read(useState('library'), 2), tab = _d[0], setTab = _d[1];
46
+ var handleOpen = useCallback(function (nextTab) {
47
+ setTab(nextTab);
48
+ setOpen(true);
49
+ }, []);
50
+ var handleRemove = useCallback(function (index) {
51
+ updateGlobalDimensions(dimensions.filter(function (_, i) { return i !== index; }));
52
+ }, [dimensions, updateGlobalDimensions]);
53
+ return (_jsxs(_Fragment, { children: [_jsxs(Paper, __assign({ variant: "outlined", sx: { display: 'block', mt: 2, px: 2, pt: 1.5, pb: 2 } }, { children: [_jsxs(Stack, __assign({ direction: "row", alignItems: "center", justifyContent: "space-between", spacing: 2 }, { children: [_jsxs(Stack, __assign({ direction: "row", alignItems: "center", minWidth: 0 }, { children: [_jsx(Typography, __assign({ variant: "body2", color: "primary.main", fontWeight: "medium" }, { children: "\u5168\u5C40\u7EF4\u5EA6" })), _jsx(Chip, { color: "default", label: "\u4E0D\u5173\u8054\u9898\u76EE", size: "medium", sx: { ml: 1 } }), _jsx(Typography, __assign({ variant: "caption", color: "secondary", ml: 1.5, noWrap: true }, { children: "\u9762\u8BD5\u7ED3\u675F\u540E\u6309\u6574\u573A\u56DE\u7B54\u7EDF\u4E00\u8BC4\u4EF7\uFF0C\u5019\u9009\u4EBA\u4E0D\u9700\u8981\u4F5C\u7B54" }))] })), dimensions.length > 0 && (_jsx(Button, __assign({ variant: "text", sx: { flexShrink: 0 }, onClick: function () { return handleOpen('library'); } }, { children: "\u7F16\u8F91\u8BC4\u4EF7\u6807\u51C6" })))] })), _jsxs(Box, __assign({ mt: 1.5, display: "flex", flexWrap: "wrap", alignItems: "center", sx: { gap: 1 } }, { children: [dimensions.map(function (item, index) { return (_jsx(Chip, { color: "default", label: "".concat(item.name, " \u00B7 \u6743\u91CD ").concat(item.weight, "%"), onDelete: function () { return handleRemove(index); } }, "".concat(item.token || item.name, "-").concat(index))); }), _jsx(Button, __assign({ variant: "text", icon: _jsx(AddIcon, {}), onClick: function () { return handleOpen('library'); } }, { children: "\u6DFB\u52A0\u5168\u5C40\u7EF4\u5EA6" }))] })), _jsx(Typography, __assign({ variant: "caption", color: "secondary", display: "block", mt: dimensions.length > 0 ? 1 : 0.5 }, { children: dimensions.length > 0
54
+ ? "\u5DF2\u914D\u7F6E ".concat(dimensions.length, " \u4E2A\u5168\u5C40\u7EF4\u5EA6\uFF0C\u4F1A\u548C\u9898\u76EE\u7EF4\u5EA6\u4E00\u8D77\u51FA\u73B0\u5728\u62A5\u544A\u56FE\u8868\u4E2D")
55
+ : '还没有全局维度。如果希望按整场回答评价某些能力,点上方「添加全局维度」。' }))] })), _jsx(GlobalDimensionDialog, { open: open, tab: tab, aiQuestionCount: aiQuestionCount, onClose: function () { return setOpen(false); } })] }));
56
+ };
57
+ export default memo(GlobalDimensions);
@@ -10,6 +10,7 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import GlobalDimensions from '../GlobalDimensions';
13
14
  import { defaultQuestionParams } from '../QuestionUpdate/const';
14
15
  import QuestionModelHeader from './Header';
15
16
  import Interactive from './Interactive';
@@ -79,6 +80,6 @@ var Question = function () {
79
80
  }
80
81
  }
81
82
  }, [token, aiEvaluationData, questionModelData === null || questionModelData === void 0 ? void 0 : questionModelData.steps, templateList, addModel]);
82
- return (_jsx(QuestionModelRoot, { children: loading ? (_jsx(Skeleton, {})) : (_jsxs(_Fragment, { children: [_jsx(QuestionModelHeader, {}), _jsx(Interactive, {}), _jsx(QuestionModelList, {})] })) }));
83
+ return (_jsx(QuestionModelRoot, { children: loading ? (_jsx(Skeleton, {})) : (_jsxs(_Fragment, { children: [_jsx(QuestionModelHeader, {}), _jsx(Interactive, {}), _jsx(GlobalDimensions, {}), _jsx(QuestionModelList, {})] })) }));
83
84
  };
84
85
  export default Question;
@@ -15,6 +15,18 @@ export interface QuestionModelData {
15
15
  aiInterviewerProfile?: AiInterviewerProfile;
16
16
  steps: QuestionModelStep[];
17
17
  interactionMethods?: InteractionMethod[];
18
+ /** 全局维度(只绑试卷、不绑题目,按整场回答统一评价) */
19
+ globalDimensions?: GlobalDimension[];
20
+ }
21
+ /** 全局维度:来源 1=系统维度库 2=自定义 */
22
+ export interface GlobalDimension {
23
+ token?: string;
24
+ source: number;
25
+ collectionId?: number;
26
+ collectionToken?: string;
27
+ name: string;
28
+ define?: string;
29
+ weight: number;
18
30
  }
19
31
  export interface QuestionModelDataRes {
20
32
  data: QuestionModelData;
@@ -5,7 +5,7 @@ export declare const PreviewRoot: import("@emotion/styled").StyledComponent<{
5
5
  elevation?: number | undefined;
6
6
  square?: boolean | undefined;
7
7
  sx?: import("@mui/system").SxProps<import("fbm-ui/lib/mui").Theme> | undefined;
8
- variant?: "outlined" | "elevation" | undefined;
8
+ variant?: "elevation" | "outlined" | undefined;
9
9
  } & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof import("react").HTMLAttributes<HTMLDivElement>> & {
10
10
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
11
- }, keyof import("@mui/material/OverridableComponent").CommonProps | "children" | "sx" | "variant" | "elevation" | "square"> & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
11
+ }, "children" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | "elevation" | "square" | "variant"> & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 权重池计算(纯函数,便于单独验证)
3
+ *
4
+ * 口径:题目维度权重 + 全局维度权重 = 100%
5
+ * - 全局维度是试卷级配置,它的权重合计决定了题目还能用多少权重池;
6
+ * - 题目权重需要按比例缩放到这个池子里,否则会出现负权重 / 合计不等于 100% 的脏数据。
7
+ */
8
+ /** 题目维度可用的权重池 = 100 - 全局维度权重合计(不会小于 0) */
9
+ export declare const computeQuestionWeightPool: (globalDimensions?: Array<{
10
+ weight: number | string;
11
+ }>) => number;
12
+ /**
13
+ * 把一组权重按比例缩放到 target,保留 2 位小数。
14
+ * - 总和为 0(新建试卷还没分配权重)时,把 target 全给最后一项;
15
+ * - 最后一个吸收四舍五入误差,并夹到 0 以上,避免出现负权重。
16
+ */
17
+ export declare const rebalanceWeights: (weights: Array<number | string>, target: number) => number[];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 权重池计算(纯函数,便于单独验证)
3
+ *
4
+ * 口径:题目维度权重 + 全局维度权重 = 100%
5
+ * - 全局维度是试卷级配置,它的权重合计决定了题目还能用多少权重池;
6
+ * - 题目权重需要按比例缩放到这个池子里,否则会出现负权重 / 合计不等于 100% 的脏数据。
7
+ */
8
+ var round2 = function (value) { return Math.round(value * 100) / 100; };
9
+ /** 题目维度可用的权重池 = 100 - 全局维度权重合计(不会小于 0) */
10
+ export var computeQuestionWeightPool = function (globalDimensions) {
11
+ if (globalDimensions === void 0) { globalDimensions = []; }
12
+ var globalWeightSum = globalDimensions.reduce(function (total, item) { return total + (Number(item === null || item === void 0 ? void 0 : item.weight) || 0); }, 0);
13
+ return Math.max(0, round2(100 - globalWeightSum));
14
+ };
15
+ /**
16
+ * 把一组权重按比例缩放到 target,保留 2 位小数。
17
+ * - 总和为 0(新建试卷还没分配权重)时,把 target 全给最后一项;
18
+ * - 最后一个吸收四舍五入误差,并夹到 0 以上,避免出现负权重。
19
+ */
20
+ export var rebalanceWeights = function (weights, target) {
21
+ if (!weights.length) {
22
+ return [];
23
+ }
24
+ var safeTarget = Math.max(0, round2(target));
25
+ var total = weights.reduce(function (sum, weight) { return sum + (Number(weight) || 0); }, 0);
26
+ if (total <= 0) {
27
+ return weights.map(function (_, index) { return (index === weights.length - 1 ? safeTarget : 0); });
28
+ }
29
+ var result = weights.map(function (weight, index) {
30
+ if (index === weights.length - 1) {
31
+ return 0; // 最后一项统一补差额
32
+ }
33
+ return round2(((Number(weight) || 0) / total) * safeTarget);
34
+ });
35
+ var allocated = result.reduce(function (sum, weight) { return sum + weight; }, 0);
36
+ result[result.length - 1] = Math.max(0, round2(safeTarget - allocated));
37
+ return result;
38
+ };
@@ -8,15 +8,15 @@ export declare const ScoreUnitTypography: import("@emotion/styled").StyledCompon
8
8
  export declare const RefreshIconRoot: import("@emotion/styled").StyledComponent<{
9
9
  children?: import("react").ReactNode;
10
10
  classes?: Partial<import("@mui/material").SvgIconClasses> | undefined;
11
- color?: "inherit" | "disabled" | "action" | "primary" | "secondary" | "success" | "error" | "info" | "warning" | undefined;
11
+ color?: "inherit" | "disabled" | "action" | "secondary" | "error" | "warning" | "success" | "info" | "primary" | undefined;
12
12
  fontSize?: "small" | "inherit" | "medium" | "large" | undefined;
13
13
  htmlColor?: string | undefined;
14
14
  shapeRendering?: string | undefined;
15
15
  sx?: import("@mui/system").SxProps<import("@mui/material").Theme> | undefined;
16
16
  titleAccess?: string | undefined;
17
17
  viewBox?: string | undefined;
18
- } & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<import("react").SVGProps<SVGSVGElement>, "string" | "name" | "type" | "className" | "style" | "display" | "overflow" | "visibility" | "order" | "color" | "width" | "height" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "clipPath" | "cursor" | "direction" | "filter" | "fontSizeAdjust" | "fontStretch" | "fontVariant" | "imageRendering" | "opacity" | "paintOrder" | "pointerEvents" | "rotate" | "scale" | "textRendering" | "transform" | "unicodeBidi" | "wordSpacing" | "writingMode" | "mask" | "offset" | "textDecoration" | "azimuth" | "clip" | "alignmentBaseline" | "baselineShift" | "clipRule" | "colorInterpolation" | "colorRendering" | "dominantBaseline" | "fill" | "fillOpacity" | "fillRule" | "floodColor" | "floodOpacity" | "glyphOrientationVertical" | "lightingColor" | "markerEnd" | "markerMid" | "markerStart" | "shapeRendering" | "stopColor" | "stopOpacity" | "stroke" | "strokeDasharray" | "strokeDashoffset" | "strokeLinecap" | "strokeLinejoin" | "strokeMiterlimit" | "strokeOpacity" | "strokeWidth" | "textAnchor" | "vectorEffect" | "path" | "children" | "key" | "id" | "lang" | "tabIndex" | "role" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "method" | "d" | "y" | "values" | "end" | "href" | "viewBox" | "max" | "media" | "min" | "target" | "crossOrigin" | "accentHeight" | "accumulate" | "additive" | "allowReorder" | "alphabetic" | "amplitude" | "arabicForm" | "ascent" | "attributeName" | "attributeType" | "autoReverse" | "baseFrequency" | "baseProfile" | "bbox" | "begin" | "bias" | "by" | "calcMode" | "capHeight" | "clipPathUnits" | "colorInterpolationFilters" | "colorProfile" | "contentScriptType" | "contentStyleType" | "cx" | "cy" | "decelerate" | "descent" | "diffuseConstant" | "divisor" | "dur" | "dx" | "dy" | "edgeMode" | "elevation" | "enableBackground" | "exponent" | "externalResourcesRequired" | "filterRes" | "filterUnits" | "focusable" | "format" | "fr" | "from" | "fx" | "fy" | "g1" | "g2" | "glyphName" | "glyphOrientationHorizontal" | "glyphRef" | "gradientTransform" | "gradientUnits" | "hanging" | "horizAdvX" | "horizOriginX" | "ideographic" | "in2" | "in" | "intercept" | "k1" | "k2" | "k3" | "k4" | "k" | "kernelMatrix" | "kernelUnitLength" | "kerning" | "keyPoints" | "keySplines" | "keyTimes" | "lengthAdjust" | "limitingConeAngle" | "local" | "markerHeight" | "markerUnits" | "markerWidth" | "maskContentUnits" | "maskUnits" | "mathematical" | "mode" | "numOctaves" | "operator" | "orient" | "orientation" | "origin" | "overlinePosition" | "overlineThickness" | "panose1" | "pathLength" | "patternContentUnits" | "patternTransform" | "patternUnits" | "points" | "pointsAtX" | "pointsAtY" | "pointsAtZ" | "preserveAlpha" | "preserveAspectRatio" | "primitiveUnits" | "r" | "radius" | "refX" | "refY" | "renderingIntent" | "repeatCount" | "repeatDur" | "requiredExtensions" | "requiredFeatures" | "restart" | "result" | "rx" | "ry" | "seed" | "slope" | "spacing" | "specularConstant" | "specularExponent" | "speed" | "spreadMethod" | "startOffset" | "stdDeviation" | "stemh" | "stemv" | "stitchTiles" | "strikethroughPosition" | "strikethroughThickness" | "surfaceScale" | "systemLanguage" | "tableValues" | "targetX" | "targetY" | "textLength" | "to" | "u1" | "u2" | "underlinePosition" | "underlineThickness" | "unicode" | "unicodeRange" | "unitsPerEm" | "vAlphabetic" | "version" | "vertAdvY" | "vertOriginX" | "vertOriginY" | "vHanging" | "vIdeographic" | "viewTarget" | "vMathematical" | "widths" | "x1" | "x2" | "x" | "xChannelSelector" | "xHeight" | "xlinkActuate" | "xlinkArcrole" | "xlinkHref" | "xlinkRole" | "xlinkShow" | "xlinkTitle" | "xlinkType" | "xmlBase" | "xmlLang" | "xmlns" | "xmlnsXlink" | "xmlSpace" | "y1" | "y2" | "yChannelSelector" | "z" | "zoomAndPan"> & {
18
+ } & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<import("react").SVGProps<SVGSVGElement>, "string" | "method" | "d" | "y" | "name" | "type" | "filter" | "fill" | "values" | "style" | "clipPath" | "mask" | "path" | "children" | "className" | "display" | "overflow" | "visibility" | "order" | "color" | "width" | "height" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "cursor" | "direction" | "fontSizeAdjust" | "fontStretch" | "fontVariant" | "imageRendering" | "opacity" | "paintOrder" | "pointerEvents" | "rotate" | "scale" | "textRendering" | "transform" | "unicodeBidi" | "wordSpacing" | "writingMode" | "offset" | "textDecoration" | "azimuth" | "clip" | "alignmentBaseline" | "baselineShift" | "clipRule" | "colorInterpolation" | "colorRendering" | "dominantBaseline" | "fillOpacity" | "fillRule" | "floodColor" | "floodOpacity" | "glyphOrientationVertical" | "lightingColor" | "markerEnd" | "markerMid" | "markerStart" | "shapeRendering" | "stopColor" | "stopOpacity" | "stroke" | "strokeDasharray" | "strokeDashoffset" | "strokeLinecap" | "strokeLinejoin" | "strokeMiterlimit" | "strokeOpacity" | "strokeWidth" | "textAnchor" | "vectorEffect" | "key" | "id" | "lang" | "tabIndex" | "role" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "max" | "media" | "min" | "target" | "crossOrigin" | "accentHeight" | "accumulate" | "additive" | "allowReorder" | "alphabetic" | "amplitude" | "arabicForm" | "ascent" | "attributeName" | "attributeType" | "autoReverse" | "baseFrequency" | "baseProfile" | "bbox" | "begin" | "bias" | "by" | "calcMode" | "capHeight" | "clipPathUnits" | "colorInterpolationFilters" | "colorProfile" | "contentScriptType" | "contentStyleType" | "cx" | "cy" | "decelerate" | "descent" | "diffuseConstant" | "divisor" | "dur" | "dx" | "dy" | "edgeMode" | "elevation" | "enableBackground" | "end" | "exponent" | "externalResourcesRequired" | "filterRes" | "filterUnits" | "focusable" | "format" | "fr" | "from" | "fx" | "fy" | "g1" | "g2" | "glyphName" | "glyphOrientationHorizontal" | "glyphRef" | "gradientTransform" | "gradientUnits" | "hanging" | "horizAdvX" | "horizOriginX" | "href" | "ideographic" | "in2" | "in" | "intercept" | "k1" | "k2" | "k3" | "k4" | "k" | "kernelMatrix" | "kernelUnitLength" | "kerning" | "keyPoints" | "keySplines" | "keyTimes" | "lengthAdjust" | "limitingConeAngle" | "local" | "markerHeight" | "markerUnits" | "markerWidth" | "maskContentUnits" | "maskUnits" | "mathematical" | "mode" | "numOctaves" | "operator" | "orient" | "orientation" | "origin" | "overlinePosition" | "overlineThickness" | "panose1" | "pathLength" | "patternContentUnits" | "patternTransform" | "patternUnits" | "points" | "pointsAtX" | "pointsAtY" | "pointsAtZ" | "preserveAlpha" | "preserveAspectRatio" | "primitiveUnits" | "r" | "radius" | "refX" | "refY" | "renderingIntent" | "repeatCount" | "repeatDur" | "requiredExtensions" | "requiredFeatures" | "restart" | "result" | "rx" | "ry" | "seed" | "slope" | "spacing" | "specularConstant" | "specularExponent" | "speed" | "spreadMethod" | "startOffset" | "stdDeviation" | "stemh" | "stemv" | "stitchTiles" | "strikethroughPosition" | "strikethroughThickness" | "surfaceScale" | "systemLanguage" | "tableValues" | "targetX" | "targetY" | "textLength" | "to" | "u1" | "u2" | "underlinePosition" | "underlineThickness" | "unicode" | "unicodeRange" | "unitsPerEm" | "vAlphabetic" | "version" | "vertAdvY" | "vertOriginX" | "vertOriginY" | "vHanging" | "vIdeographic" | "viewBox" | "viewTarget" | "vMathematical" | "widths" | "x1" | "x2" | "x" | "xChannelSelector" | "xHeight" | "xlinkActuate" | "xlinkArcrole" | "xlinkHref" | "xlinkRole" | "xlinkShow" | "xlinkTitle" | "xlinkType" | "xmlBase" | "xmlLang" | "xmlns" | "xmlnsXlink" | "xmlSpace" | "y1" | "y2" | "yChannelSelector" | "z" | "zoomAndPan"> & {
19
19
  ref?: ((instance: SVGSVGElement | null) => void) | import("react").RefObject<SVGSVGElement> | null | undefined;
20
- }, keyof import("@mui/material/OverridableComponent").CommonProps | "color" | "fontSize" | "shapeRendering" | "children" | "sx" | "htmlColor" | "titleAccess" | "viewBox"> & {
20
+ }, "children" | keyof import("@mui/material/OverridableComponent").CommonProps | "color" | "fontSize" | "shapeRendering" | "sx" | "viewBox" | "htmlColor" | "titleAccess"> & {
21
21
  children?: import("react").ReactNode;
22
22
  } & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  export declare const StyledSlider: import("@emotion/styled").StyledComponent<{
3
- color?: "primary" | "secondary" | undefined;
3
+ color?: "secondary" | "primary" | undefined;
4
4
  classes?: (Partial<import("fbm-ui/lib/mui").SliderUnstyledClasses> & {
5
5
  colorPrimary?: string | undefined;
6
6
  colorSecondary?: string | undefined;
@@ -56,7 +56,7 @@ export declare const StyledSlider: import("@emotion/styled").StyledComponent<{
56
56
  valueLabelFormat?: string | ((value: number, index: number) => import("react").ReactNode) | undefined;
57
57
  } & Omit<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "key" | keyof import("react").HTMLAttributes<HTMLSpanElement>> & {
58
58
  ref?: ((instance: HTMLSpanElement | null) => void) | import("react").RefObject<HTMLSpanElement> | null | undefined;
59
- }, "name" | "classes" | "color" | "scale" | "track" | "sx" | "defaultValue" | "tabIndex" | "aria-label" | "aria-labelledby" | "aria-valuetext" | "onChange" | "disabled" | "step" | "size" | "value" | "max" | "min" | "orientation" | "components" | "componentsProps" | "disableSwap" | "getAriaLabel" | "getAriaValueText" | "isRtl" | "marks" | "onChangeCommitted" | "valueLabelDisplay" | "valueLabelFormat"> & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
59
+ }, "name" | "track" | "size" | "classes" | "color" | "scale" | "sx" | "defaultValue" | "tabIndex" | "aria-label" | "aria-labelledby" | "aria-valuetext" | "onChange" | "max" | "min" | "orientation" | "value" | "disabled" | "step" | "components" | "componentsProps" | "disableSwap" | "getAriaLabel" | "getAriaValueText" | "isRtl" | "marks" | "onChangeCommitted" | "valueLabelDisplay" | "valueLabelFormat"> & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
60
60
  export declare const ScoreSliderRoot: import("@emotion/styled").StyledComponent<import("fbm-ui/lib/components/Box").BoxProps & {
61
61
  children?: import("react").ReactNode;
62
62
  } & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  export declare const WorkplaceStyledSlider: import("@emotion/styled").StyledComponent<{
3
- color?: "primary" | "secondary" | undefined;
3
+ color?: "secondary" | "primary" | undefined;
4
4
  classes?: (Partial<import("fbm-ui/lib/mui").SliderUnstyledClasses> & {
5
5
  colorPrimary?: string | undefined;
6
6
  colorSecondary?: string | undefined;
@@ -56,7 +56,7 @@ export declare const WorkplaceStyledSlider: import("@emotion/styled").StyledComp
56
56
  valueLabelFormat?: string | ((value: number, index: number) => import("react").ReactNode) | undefined;
57
57
  } & Omit<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "key" | keyof import("react").HTMLAttributes<HTMLSpanElement>> & {
58
58
  ref?: ((instance: HTMLSpanElement | null) => void) | import("react").RefObject<HTMLSpanElement> | null | undefined;
59
- }, "name" | "classes" | "color" | "scale" | "track" | "sx" | "defaultValue" | "tabIndex" | "aria-label" | "aria-labelledby" | "aria-valuetext" | "onChange" | "disabled" | "step" | "size" | "value" | "max" | "min" | "orientation" | "components" | "componentsProps" | "disableSwap" | "getAriaLabel" | "getAriaValueText" | "isRtl" | "marks" | "onChangeCommitted" | "valueLabelDisplay" | "valueLabelFormat"> & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
59
+ }, "name" | "track" | "size" | "classes" | "color" | "scale" | "sx" | "defaultValue" | "tabIndex" | "aria-label" | "aria-labelledby" | "aria-valuetext" | "onChange" | "max" | "min" | "orientation" | "value" | "disabled" | "step" | "components" | "componentsProps" | "disableSwap" | "getAriaLabel" | "getAriaValueText" | "isRtl" | "marks" | "onChangeCommitted" | "valueLabelDisplay" | "valueLabelFormat"> & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
60
60
  export declare const ScoreSliderRoot: import("@emotion/styled").StyledComponent<import("fbm-ui/lib/components/Box").BoxProps & {
61
61
  children?: import("react").ReactNode;
62
62
  } & import("@mui/system").MUIStyledCommonProps<import("fbm-ui/lib/mui").Theme>, {}, {}>;
@@ -26,6 +26,8 @@ export interface Collection {
26
26
  rank: number;
27
27
  total: number;
28
28
  avgScore: number;
29
+ /** 维度来源 1=题目维度 2=全局维度(老报告不返回该字段) */
30
+ source?: number;
29
31
  }
30
32
  export interface AnalysisResult {
31
33
  text: string;
@@ -91,6 +93,18 @@ export interface WorkPlaceAbility {
91
93
  scoreText: string;
92
94
  token: string;
93
95
  }
96
+ /** 全局维度(只绑试卷、不绑题目,按整场回答统一评价) */
97
+ export interface GlobalDimensionAbility {
98
+ token: string;
99
+ name: string;
100
+ define: string;
101
+ score: number;
102
+ scoreText: string;
103
+ scoreLevel: number;
104
+ weight: number;
105
+ source: number;
106
+ answer: string;
107
+ }
94
108
  export interface WorkPlaceScoreInfo {
95
109
  score: number;
96
110
  scoreText: string;
@@ -172,6 +186,8 @@ export interface AiInterviewReportList {
172
186
  workplaceEvaluation?: string;
173
187
  evaluations: Array<any>;
174
188
  workplaces: WorkPlaceAbility[];
189
+ /** 全局维度(只绑试卷、不绑题目);没有配置时后端不返回该字段 */
190
+ globalDimensions?: GlobalDimensionAbility[];
175
191
  suggestion: Suggestion;
176
192
  summaryText: SummaryText;
177
193
  model: 'pro' | 'standard';