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.
- package/esm/components/Charts/ReportPie.js +27 -10
- package/esm/components/react-photo-view/hooks/useAnimationPosition.d.ts +1 -1
- package/esm/modules/ai-question/Root.js +11 -5
- package/esm/modules/ai-question/components/GlobalDimensions/Dialog.d.ts +9 -0
- package/esm/modules/ai-question/components/GlobalDimensions/Dialog.js +154 -0
- package/esm/modules/ai-question/components/GlobalDimensions/index.d.ts +3 -0
- package/esm/modules/ai-question/components/GlobalDimensions/index.js +57 -0
- package/esm/modules/ai-question/components/QuestionModel/index.js +2 -1
- package/esm/modules/ai-question/components/QuestionModel/interface.d.ts +12 -0
- package/esm/modules/ai-question/components/QuestionPreview/styled.d.ts +2 -2
- package/esm/modules/ai-question/utils/weight.d.ts +17 -0
- package/esm/modules/ai-question/utils/weight.js +38 -0
- package/esm/modules/ai-report/components/ScoreReport/styled.d.ts +3 -3
- package/esm/modules/ai-report/components/VideoQuestion/styled.d.ts +2 -2
- package/esm/modules/ai-report/components/WorkPlaces/styled.d.ts +2 -2
- package/esm/modules/ai-report/interface.d.ts +16 -0
- package/esm/modules/ai-report-v2/Root.js +2 -1
- package/esm/modules/ai-report-v2/components/AIEvaluate/Graph.d.ts +2 -0
- package/esm/modules/ai-report-v2/components/AIEvaluate/Graph.js +57 -6
- package/esm/modules/ai-report-v2/components/AIEvaluate/index.js +1 -0
- package/esm/modules/ai-report-v2/components/GlobalDimensions/index.d.ts +3 -0
- package/esm/modules/ai-report-v2/components/GlobalDimensions/index.js +84 -0
- package/esm/modules/ai-report-v2/components/ReportHeader/ReportHeader.js +3 -2
- package/esm/modules/ai-report-v2/components/ScoreReport/styled.d.ts +3 -3
- package/esm/modules/ai-report-v2/components/VideoQuestion/styled.d.ts +2 -2
- package/esm/modules/ai-report-v2/components/WorkPlaces/styled.d.ts +2 -2
- package/esm/modules/ai-report-v2/components/styled.d.ts +3 -0
- package/esm/modules/ai-report-v2/components/styled.js +10 -0
- package/esm/modules/ai-report-v2/interface.d.ts +16 -0
- package/esm/modules/ai-report-v3/Root.js +2 -1
- package/esm/modules/ai-report-v3/components/AIEvaluate/Graph.d.ts +2 -0
- package/esm/modules/ai-report-v3/components/AIEvaluate/Graph.js +75 -48
- package/esm/modules/ai-report-v3/components/AIEvaluate/index.js +1 -0
- package/esm/modules/ai-report-v3/components/CheatRisk/CheatRisk.js +9 -4
- package/esm/modules/ai-report-v3/components/GlobalDimensions/index.d.ts +3 -0
- package/esm/modules/ai-report-v3/components/GlobalDimensions/index.js +82 -0
- package/esm/modules/ai-report-v3/components/ModuleTitle.d.ts +1 -1
- package/esm/modules/ai-report-v3/components/ModuleTitle.js +3 -1
- package/esm/modules/ai-report-v3/components/ScoreReport/styled.d.ts +3 -3
- package/esm/modules/ai-report-v3/components/VideoQuestion/styled.d.ts +2 -2
- package/esm/modules/ai-report-v3/components/WorkPlaces/styled.d.ts +2 -2
- package/esm/modules/ai-report-v3/interface.d.ts +16 -0
- package/esm/modules/ai-template/components/TemplateList/styled.d.ts +3 -3
- package/esm/modules/ai-template/components/TemplateMenu/styled.d.ts +1 -1
- package/esm/store/ai-question/question-model-store.d.ts +4 -1
- package/esm/store/ai-question/question-model-store.js +41 -5
- package/lib/components/Charts/ReportPie.js +27 -10
- package/lib/components/react-photo-view/hooks/useAnimationPosition.d.ts +1 -1
- package/lib/modules/ai-question/Root.js +11 -5
- package/lib/modules/ai-question/components/GlobalDimensions/Dialog.d.ts +9 -0
- package/lib/modules/ai-question/components/GlobalDimensions/Dialog.js +156 -0
- package/lib/modules/ai-question/components/GlobalDimensions/index.d.ts +3 -0
- package/lib/modules/ai-question/components/GlobalDimensions/index.js +62 -0
- package/lib/modules/ai-question/components/QuestionModel/index.js +2 -1
- package/lib/modules/ai-question/components/QuestionModel/interface.d.ts +12 -0
- package/lib/modules/ai-question/components/QuestionPreview/styled.d.ts +2 -2
- package/lib/modules/ai-question/utils/weight.d.ts +17 -0
- package/lib/modules/ai-question/utils/weight.js +43 -0
- package/lib/modules/ai-report/components/ScoreReport/styled.d.ts +3 -3
- package/lib/modules/ai-report/components/VideoQuestion/styled.d.ts +2 -2
- package/lib/modules/ai-report/components/WorkPlaces/styled.d.ts +2 -2
- package/lib/modules/ai-report/interface.d.ts +16 -0
- package/lib/modules/ai-report-v2/Root.js +2 -1
- package/lib/modules/ai-report-v2/components/AIEvaluate/Graph.d.ts +2 -0
- package/lib/modules/ai-report-v2/components/AIEvaluate/Graph.js +57 -6
- package/lib/modules/ai-report-v2/components/AIEvaluate/index.js +1 -0
- package/lib/modules/ai-report-v2/components/GlobalDimensions/index.d.ts +3 -0
- package/lib/modules/ai-report-v2/components/GlobalDimensions/index.js +89 -0
- package/lib/modules/ai-report-v2/components/ReportHeader/ReportHeader.js +2 -1
- package/lib/modules/ai-report-v2/components/ScoreReport/styled.d.ts +3 -3
- package/lib/modules/ai-report-v2/components/VideoQuestion/styled.d.ts +2 -2
- package/lib/modules/ai-report-v2/components/WorkPlaces/styled.d.ts +2 -2
- package/lib/modules/ai-report-v2/components/styled.d.ts +3 -0
- package/lib/modules/ai-report-v2/components/styled.js +11 -1
- package/lib/modules/ai-report-v2/interface.d.ts +16 -0
- package/lib/modules/ai-report-v3/Root.js +2 -1
- package/lib/modules/ai-report-v3/components/AIEvaluate/Graph.d.ts +2 -0
- package/lib/modules/ai-report-v3/components/AIEvaluate/Graph.js +75 -48
- package/lib/modules/ai-report-v3/components/AIEvaluate/index.js +1 -0
- package/lib/modules/ai-report-v3/components/CheatRisk/CheatRisk.js +9 -4
- package/lib/modules/ai-report-v3/components/GlobalDimensions/index.d.ts +3 -0
- package/lib/modules/ai-report-v3/components/GlobalDimensions/index.js +87 -0
- package/lib/modules/ai-report-v3/components/ModuleTitle.d.ts +1 -1
- package/lib/modules/ai-report-v3/components/ModuleTitle.js +3 -1
- package/lib/modules/ai-report-v3/components/ScoreReport/styled.d.ts +3 -3
- package/lib/modules/ai-report-v3/components/VideoQuestion/styled.d.ts +2 -2
- package/lib/modules/ai-report-v3/components/WorkPlaces/styled.d.ts +2 -2
- package/lib/modules/ai-report-v3/interface.d.ts +16 -0
- package/lib/modules/ai-template/components/TemplateList/styled.d.ts +3 -3
- package/lib/modules/ai-template/components/TemplateMenu/styled.d.ts +1 -1
- package/lib/store/ai-question/question-model-store.d.ts +4 -1
- package/lib/store/ai-question/question-model-store.js +41 -5
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
18
18
|
var AIEvaluate_1 = __importDefault(require("./components/AIEvaluate"));
|
|
19
19
|
var CheatRisk_1 = __importDefault(require("./components/CheatRisk/CheatRisk"));
|
|
20
20
|
var Form_1 = require("./components/Form");
|
|
21
|
+
var GlobalDimensions_1 = __importDefault(require("./components/GlobalDimensions"));
|
|
21
22
|
var NotFinish_1 = __importDefault(require("./components/NotFinish"));
|
|
22
23
|
var V3Header_1 = __importDefault(require("./components/V3Header/V3Header"));
|
|
23
24
|
var VideoQuestion_1 = __importDefault(require("./components/VideoQuestion"));
|
|
@@ -88,7 +89,7 @@ var AiReportRoot = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
88
89
|
borderRadius: 2,
|
|
89
90
|
overflow: 'hidden',
|
|
90
91
|
pb: 3,
|
|
91
|
-
} }, { children: [(0, jsx_runtime_1.jsx)(V3Header_1.default, { v3AssetBase: v3AssetBase, status: status, customScore: customScore, passScore: passScore, onRefreshSuccess: handleRefreshSuccess, fetchCandidateInfo: fetchCandidateInfo, onExportReportClick: onExportReportClick }), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ sx: { mx: 2, mt: 0.75 } }, { children: [((collection === null || collection === void 0 ? void 0 : collection.length) > 0 || !!(reportResult === null || reportResult === void 0 ? void 0 : reportResult.workplaceEvaluation)) && ((0, jsx_runtime_1.jsx)(AIEvaluate_1.default, {})), fetchFormResult && (0, jsx_runtime_1.jsx)(Form_1.FormReport, { fetchFormResult: fetchFormResult }), (0, jsx_runtime_1.jsx)(CheatRisk_1.default, {}), hasRisk && ((0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ id: "report-risk-alert" }, { children: (0, jsx_runtime_1.jsx)(NotFinish_1.default, {}) }))), (0, jsx_runtime_1.jsx)(VideoQuestion_1.default, { isExportPdf: isExportPdf })] }))] })) })) })));
|
|
92
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(V3Header_1.default, { v3AssetBase: v3AssetBase, status: status, customScore: customScore, passScore: passScore, onRefreshSuccess: handleRefreshSuccess, fetchCandidateInfo: fetchCandidateInfo, onExportReportClick: onExportReportClick }), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ sx: { mx: 2, mt: 0.75 } }, { children: [((collection === null || collection === void 0 ? void 0 : collection.length) > 0 || !!(reportResult === null || reportResult === void 0 ? void 0 : reportResult.workplaceEvaluation)) && ((0, jsx_runtime_1.jsx)(AIEvaluate_1.default, {})), (0, jsx_runtime_1.jsx)(GlobalDimensions_1.default, {}), fetchFormResult && (0, jsx_runtime_1.jsx)(Form_1.FormReport, { fetchFormResult: fetchFormResult }), (0, jsx_runtime_1.jsx)(CheatRisk_1.default, {}), hasRisk && ((0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ id: "report-risk-alert" }, { children: (0, jsx_runtime_1.jsx)(NotFinish_1.default, {}) }))), (0, jsx_runtime_1.jsx)(VideoQuestion_1.default, { isExportPdf: isExportPdf })] }))] })) })) })));
|
|
92
93
|
}, [
|
|
93
94
|
loading,
|
|
94
95
|
status,
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __values = (this && this.__values) || function(o) {
|
|
3
14
|
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
15
|
if (m) return m.call(o);
|
|
@@ -46,9 +57,9 @@ function setupCanvas(canvas) {
|
|
|
46
57
|
// }
|
|
47
58
|
var MAX_WIDTH = 354;
|
|
48
59
|
var MAX_HEIGHT = 18;
|
|
49
|
-
//
|
|
50
|
-
var
|
|
51
|
-
var
|
|
60
|
+
// 题目维度与全局维度之间的分隔线 + 说明(方案③:不逐条打标)
|
|
61
|
+
var DIVIDER_TEXT = '以下为全局维度(不按题目评价)';
|
|
62
|
+
var DIVIDER_HEIGHT = 20;
|
|
52
63
|
// 粗略估算文本像素宽(与下方绘制所用 sans-serif 接近;中文宽、拉丁/数字窄)
|
|
53
64
|
var estimateTextWidth = function (s, cjkW, latinW) {
|
|
54
65
|
var e_1, _a;
|
|
@@ -198,6 +209,14 @@ function getLevel(score) {
|
|
|
198
209
|
}
|
|
199
210
|
}
|
|
200
211
|
exports.getLevel = getLevel;
|
|
212
|
+
// 全局维度(只绑试卷、不绑题目)用浅绿条区分来源(来源说明靠分组分隔线,不逐条打标)
|
|
213
|
+
var globalLevelConf = {
|
|
214
|
+
backgroundColor: 'rgba(78, 201, 83, 0.14)',
|
|
215
|
+
scoreGradient: ['#4EC953', '#D9FBE3'],
|
|
216
|
+
shadowColor: 'rgba(78, 201, 83, 0.35)',
|
|
217
|
+
textColor: '#33A853',
|
|
218
|
+
tagColor: '#33A853',
|
|
219
|
+
};
|
|
201
220
|
var drawScore = function (layout, ctx, config, rect, score) {
|
|
202
221
|
var text = "".concat(score);
|
|
203
222
|
ctx.save();
|
|
@@ -224,20 +243,54 @@ var drawScore = function (layout, ctx, config, rect, score) {
|
|
|
224
243
|
ctx.restore();
|
|
225
244
|
return textW;
|
|
226
245
|
};
|
|
246
|
+
// 组间分隔线:左右各一段细线,中间是说明文字
|
|
247
|
+
var drawGroupDivider = function (layout, ctx, y) {
|
|
248
|
+
ctx.save();
|
|
249
|
+
ctx.font = '10px sans-serif';
|
|
250
|
+
var textWidth = measureTextWidth(ctx, DIVIDER_TEXT);
|
|
251
|
+
var centerX = layout.leftLableWidth + MAX_WIDTH / 2;
|
|
252
|
+
var right = layout.leftLableWidth + MAX_WIDTH;
|
|
253
|
+
ctx.fillStyle = 'rgba(0, 0, 0, 0.4)';
|
|
254
|
+
ctx.textAlign = 'center';
|
|
255
|
+
ctx.textBaseline = 'middle';
|
|
256
|
+
ctx.fillText(DIVIDER_TEXT, centerX, y);
|
|
257
|
+
ctx.strokeStyle = 'rgba(0, 0, 0, 0.08)';
|
|
258
|
+
ctx.lineWidth = 1;
|
|
259
|
+
ctx.beginPath();
|
|
260
|
+
ctx.moveTo(0, y);
|
|
261
|
+
ctx.lineTo(centerX - textWidth / 2 - 8, y);
|
|
262
|
+
ctx.moveTo(centerX + textWidth / 2 + 8, y);
|
|
263
|
+
ctx.lineTo(right, y);
|
|
264
|
+
ctx.stroke();
|
|
265
|
+
ctx.restore();
|
|
266
|
+
};
|
|
227
267
|
var draw = function (layout, dimensions, pathRef, ctx) {
|
|
228
268
|
ctx.font = '14px sans-serif';
|
|
229
269
|
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
|
230
270
|
var shiftY = layout.shiftY;
|
|
231
271
|
dimensions.forEach(function (v, i) {
|
|
232
|
-
var config = getLevel(v.score);
|
|
272
|
+
var config = v.isGlobal ? __assign(__assign({}, getLevel(v.score)), globalLevelConf) : getLevel(v.score);
|
|
233
273
|
var x = layout.leftLableWidth;
|
|
234
|
-
var
|
|
274
|
+
var extraOffset = layout.dividerIndex > 0 && i >= layout.dividerIndex ? layout.dividerHeight : 0;
|
|
275
|
+
var y = shiftY + 46 + layout.itemSpacing * i + extraOffset;
|
|
235
276
|
// 轨道胶囊背景(设计稿「条状图*条背景」:本档淡色 + 全圆角)
|
|
236
277
|
ctx.fillStyle = config.backgroundColor;
|
|
237
278
|
drawRoundedRect(x, y, MAX_WIDTH, MAX_HEIGHT, MAX_HEIGHT / 2, true, false, ctx);
|
|
238
|
-
var endPointY =
|
|
279
|
+
var endPointY = y + 14; // 14 是文字相对条形的偏移;必须跟着 y(含分隔线偏移),否则全局维度那几行标签会和条形错位
|
|
239
280
|
drawLable(v.name, 0, endPointY, ctx);
|
|
240
|
-
|
|
281
|
+
if (v.isGlobal && i === layout.dividerIndex) {
|
|
282
|
+
// 方案③:不逐条打标,改用一条分隔线 + 一行说明区分来源
|
|
283
|
+
// 位置取「上一组最后一条条底」与「本组第一条条顶」的正中
|
|
284
|
+
var dividerY = y - Math.round(layout.itemSpacing / 2 - MAX_HEIGHT / 2 + layout.dividerHeight / 2);
|
|
285
|
+
drawGroupDivider(layout, ctx, dividerY);
|
|
286
|
+
}
|
|
287
|
+
pathRef.push({
|
|
288
|
+
x: 0,
|
|
289
|
+
y: y,
|
|
290
|
+
width: layout.leftLableWidth,
|
|
291
|
+
height: 22,
|
|
292
|
+
tips: "".concat(v.name).concat(v.isGlobal ? '(全局维度)' : '', ": ").concat(v.score),
|
|
293
|
+
});
|
|
241
294
|
var score = v.score === 0 ? 0 : Math.max(v.score, 4);
|
|
242
295
|
drawScore(layout, ctx, config, {
|
|
243
296
|
x: layout.leftLableWidth,
|
|
@@ -248,23 +301,6 @@ var draw = function (layout, dimensions, pathRef, ctx) {
|
|
|
248
301
|
});
|
|
249
302
|
drawTop(layout, ctx);
|
|
250
303
|
};
|
|
251
|
-
// 底部提示胶囊:浅绿圆角胶囊(#EBFCF7, 淡青描边) + 居中青色(#0087B4)文字(y 为胶囊顶)
|
|
252
|
-
var drawCaption = function (ctx, canvasWidth, y) {
|
|
253
|
-
var width = Math.min(440, canvasWidth - 24);
|
|
254
|
-
var height = CAPTION_HEIGHT;
|
|
255
|
-
var x = (canvasWidth - width) / 2;
|
|
256
|
-
ctx.save();
|
|
257
|
-
ctx.fillStyle = '#EBFCF7';
|
|
258
|
-
ctx.strokeStyle = 'rgba(0,135,180,0.1)';
|
|
259
|
-
ctx.lineWidth = 1;
|
|
260
|
-
drawRoundedRect(x, y, width, height, height / 2, true, true, ctx);
|
|
261
|
-
ctx.font = '12px sans-serif';
|
|
262
|
-
ctx.textAlign = 'center';
|
|
263
|
-
ctx.textBaseline = 'middle';
|
|
264
|
-
ctx.fillStyle = '#0087B4';
|
|
265
|
-
ctx.fillText(CAPTION_TEXT, canvasWidth / 2, y + height / 2);
|
|
266
|
-
ctx.restore();
|
|
267
|
-
};
|
|
268
304
|
// 刻度值:欠佳|适中 分界=60、适中|优秀 分界=80、优秀满格(右端线)=100
|
|
269
305
|
var drawScaleTicks = function (ctx, opts) {
|
|
270
306
|
var y = opts.y, x60 = opts.x60, x80 = opts.x80, xRight = opts.xRight;
|
|
@@ -284,24 +320,26 @@ var Graph = function (_a) {
|
|
|
284
320
|
var ref = (0, react_1.useRef)(null);
|
|
285
321
|
var pathRef = (0, react_1.useRef)([]);
|
|
286
322
|
var _c = __read((0, react_1.useState)(), 2), ctx = _c[0], setCtx = _c[1];
|
|
287
|
-
// ---- 垂直布局常量(条图 →
|
|
323
|
+
// ---- 垂直布局常量(条图 → 刻度的紧凑垂直流)----
|
|
288
324
|
var ITEM_SPACING = 28; // 相邻条间距
|
|
289
325
|
var TOP_OFFSET = 46; // 条顶相对内容顶 shiftY 的偏移
|
|
290
326
|
var CANVAS_HEIGHT = 300; // 与右侧饼图等高(内容不足时保持,超出按流增高)
|
|
291
327
|
var DASH_TAIL = 8; // 刻度虚线超出最后一条条底的长度
|
|
292
328
|
var TICK_LINE = 14; // 刻度数值行高
|
|
293
|
-
var
|
|
294
|
-
|
|
295
|
-
|
|
329
|
+
var PAD_BOTTOM = 12; // 刻度下方留白
|
|
330
|
+
// 题目维度与全局维度之间插一条分隔线(方案③)
|
|
331
|
+
var dividerIndex = (0, react_1.useMemo)(function () { return items.findIndex(function (item) { return item.isGlobal; }); }, [items]);
|
|
332
|
+
var dividerHeight = dividerIndex > 0 ? DIVIDER_HEIGHT : 0;
|
|
333
|
+
// 条形区域高度(shiftY 内容顶 → 最后一条条底),含分隔线占位
|
|
296
334
|
var contentHeight = (0, react_1.useMemo)(function () {
|
|
297
335
|
if (items.length === 0)
|
|
298
336
|
return 0;
|
|
299
|
-
return TOP_OFFSET + (items.length - 1) * ITEM_SPACING + MAX_HEIGHT;
|
|
300
|
-
}, [items]);
|
|
301
|
-
// 可见内容块高度(条图 →
|
|
302
|
-
var bodyHeight = contentHeight + DASH_TAIL + TICK_LINE
|
|
303
|
-
// 画布高:≥300,且内容上下各保留 ≥
|
|
304
|
-
var canvasHeight = (0, react_1.useMemo)(function () { return Math.max(CANVAS_HEIGHT, bodyHeight + 2 *
|
|
337
|
+
return TOP_OFFSET + (items.length - 1) * ITEM_SPACING + MAX_HEIGHT + dividerHeight;
|
|
338
|
+
}, [items, dividerHeight]);
|
|
339
|
+
// 可见内容块高度(条图 → 刻度),不含外留白
|
|
340
|
+
var bodyHeight = contentHeight + DASH_TAIL + TICK_LINE;
|
|
341
|
+
// 画布高:≥300,且内容上下各保留 ≥PAD_BOTTOM 的对称留白
|
|
342
|
+
var canvasHeight = (0, react_1.useMemo)(function () { return Math.max(CANVAS_HEIGHT, bodyHeight + 2 * PAD_BOTTOM); }, [bodyHeight]);
|
|
305
343
|
// 内容块在画布内垂直居中 → 上留白 = 下留白
|
|
306
344
|
var shiftY = (0, react_1.useMemo)(function () {
|
|
307
345
|
if (bodyHeight <= 0)
|
|
@@ -310,7 +348,6 @@ var Graph = function (_a) {
|
|
|
310
348
|
}, [bodyHeight, canvasHeight]);
|
|
311
349
|
var dashEndY = shiftY + contentHeight + DASH_TAIL; // 虚线终点 = 末条条底 + DASH_TAIL
|
|
312
350
|
var tickMidY = shiftY + contentHeight + DASH_TAIL + Math.round(TICK_LINE / 2);
|
|
313
|
-
var captionY = shiftY + contentHeight + DASH_TAIL + TICK_LINE + GAP_CAPTION; // 胶囊顶
|
|
314
351
|
// 左标签列宽度贴合最长维度名,压缩文字与条形之间留白
|
|
315
352
|
var leftLabelWidth = (0, react_1.useMemo)(function () {
|
|
316
353
|
if (items.length === 0)
|
|
@@ -363,6 +400,8 @@ var Graph = function (_a) {
|
|
|
363
400
|
height: contentHeight,
|
|
364
401
|
shiftY: shiftY,
|
|
365
402
|
dashEndY: dashEndY,
|
|
403
|
+
dividerIndex: dividerIndex,
|
|
404
|
+
dividerHeight: dividerHeight,
|
|
366
405
|
};
|
|
367
406
|
pathRef.current = [];
|
|
368
407
|
draw(layout, items, pathRef.current, ctx);
|
|
@@ -372,20 +411,8 @@ var Graph = function (_a) {
|
|
|
372
411
|
x80: leftLabelWidth + LEVEL_WIDTHS.Bad + LEVEL_WIDTHS.Good,
|
|
373
412
|
xRight: leftLabelWidth + MAX_WIDTH,
|
|
374
413
|
});
|
|
375
|
-
drawCaption(ctx, canvasWidth, captionY);
|
|
376
414
|
}
|
|
377
|
-
}, [
|
|
378
|
-
ctx,
|
|
379
|
-
items,
|
|
380
|
-
contentHeight,
|
|
381
|
-
shiftY,
|
|
382
|
-
leftLabelWidth,
|
|
383
|
-
canvasWidth,
|
|
384
|
-
ITEM_SPACING,
|
|
385
|
-
dashEndY,
|
|
386
|
-
tickMidY,
|
|
387
|
-
captionY,
|
|
388
|
-
]);
|
|
415
|
+
}, [ctx, items, contentHeight, shiftY, leftLabelWidth, canvasWidth, ITEM_SPACING, dashEndY, tickMidY, dividerIndex, dividerHeight]);
|
|
389
416
|
var handleMouseMove = (0, react_1.useCallback)(function (e) {
|
|
390
417
|
if (ctx) {
|
|
391
418
|
var p = pathRef.current.find(function (p) { return isInPath(e.nativeEvent.offsetX, e.nativeEvent.offsetY, p, ctx); });
|
|
@@ -62,13 +62,18 @@ var RiskBadge = function (_a) {
|
|
|
62
62
|
};
|
|
63
63
|
// 作弊检测详情表(不带头标题行,仅表格)
|
|
64
64
|
var RECITE_ROW_NAME = '疑似读稿';
|
|
65
|
-
// 读背稿线索:题号 + 高亮引用的原文片段 + 模型理由(后端没返回线索时回退静态文案)
|
|
66
65
|
var ReadReciteEvidence = function (_a) {
|
|
67
|
-
var
|
|
66
|
+
var evidence = _a.evidence, stepIndex = _a.stepIndex;
|
|
67
|
+
var text = evidence.text || '';
|
|
68
68
|
var matched = /「([^」]+)」/.exec(text);
|
|
69
69
|
var quote = matched === null || matched === void 0 ? void 0 : matched[1];
|
|
70
70
|
var rest = quote ? text.replace("\u300C".concat(quote, "\u300D"), '') : text;
|
|
71
|
-
|
|
71
|
+
var metrics = (evidence.metrics || []).slice(0, 3);
|
|
72
|
+
return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: { display: 'block', textAlign: 'left', lineHeight: '20px' } }, { children: [stepIndex > 0 && (0, jsx_runtime_1.jsxs)("span", __assign({ style: { fontWeight: 600 } }, { children: ["\u7B2C ", stepIndex, " \u9898\uFF1A"] })), quote && (0, jsx_runtime_1.jsxs)("span", __assign({ style: { color: '#D46B08', fontWeight: 600 } }, { children: ["\u300C", quote, "\u300D"] })), (0, jsx_runtime_1.jsx)("span", { children: rest }), metrics.length > 0 && ((0, jsx_runtime_1.jsx)("span", __assign({ style: { display: 'block', marginTop: 4, color: 'rgba(0,0,0,.45)', fontSize: 12, lineHeight: '18px' } }, { children: metrics
|
|
73
|
+
.map(function (m) {
|
|
74
|
+
return "".concat(m.name, " ").concat(m.value).concat(m.unit || '').concat(m.compare ? "\uFF08\u672C\u573A".concat(m.compare).concat(m.baseline ? "\uFF0C\u4E2D\u4F4D ".concat(m.baseline).concat(m.unit || '') : '', "\uFF09") : '');
|
|
75
|
+
})
|
|
76
|
+
.join(' · ') })))] })));
|
|
72
77
|
};
|
|
73
78
|
var COL_W1 = 118; // 检测项目列宽
|
|
74
79
|
var COL_W2 = 130; // 风险评估列宽
|
|
@@ -83,7 +88,7 @@ var CheatDetailTable = function (_a) {
|
|
|
83
88
|
alignItems: 'center',
|
|
84
89
|
borderTop: '1px solid #F2F4F6',
|
|
85
90
|
bgcolor: i % 2 ? '#FAFCFE' : '#fff',
|
|
86
|
-
} }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ sx: { width: COL_W1, flexShrink: 0, textAlign: 'center', color: TEXT_COLOR, fontSize: 12 } }, { children: row.name })), (0, jsx_runtime_1.jsx)(mui_1.Box, __assign({ sx: { width: COL_W2, flexShrink: 0, display: 'flex', justifyContent: 'center' } }, { children: (0, jsx_runtime_1.jsx)(RiskBadge, { has: hit }) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ sx: { flex: 1, textAlign: 'center', color: TEXT_COLOR, fontSize: 12, lineHeight: '20px' } }, { children: hit && row.name === RECITE_ROW_NAME && (reciteEvidence === null || reciteEvidence === void 0 ? void 0 : reciteEvidence.text) ? ((0, jsx_runtime_1.jsx)(ReadReciteEvidence, {
|
|
91
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ sx: { width: COL_W1, flexShrink: 0, textAlign: 'center', color: TEXT_COLOR, fontSize: 12 } }, { children: row.name })), (0, jsx_runtime_1.jsx)(mui_1.Box, __assign({ sx: { width: COL_W2, flexShrink: 0, display: 'flex', justifyContent: 'center' } }, { children: (0, jsx_runtime_1.jsx)(RiskBadge, { has: hit }) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ sx: { flex: 1, textAlign: 'center', color: TEXT_COLOR, fontSize: 12, lineHeight: '20px' } }, { children: hit && row.name === RECITE_ROW_NAME && (reciteEvidence === null || reciteEvidence === void 0 ? void 0 : reciteEvidence.text) ? ((0, jsx_runtime_1.jsx)(ReadReciteEvidence, { evidence: reciteEvidence, stepIndex: reciteStepIndex })) : hit ? (row.detail) : ('暂无风险') }))] }), row.name));
|
|
87
92
|
})] })));
|
|
88
93
|
};
|
|
89
94
|
var CheatRisk = function () {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
30
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
34
|
+
var ModuleTitle_1 = require("../ModuleTitle");
|
|
35
|
+
var ScoreSlider_1 = __importDefault(require("../WorkPlaces/ScoreSlider"));
|
|
36
|
+
var WorkPlace_1 = __importDefault(require("../WorkPlaces/WorkPlace"));
|
|
37
|
+
var global_store_1 = require("../../../../store/ai-report/global-store");
|
|
38
|
+
var fbm_ui_1 = require("fbm-ui");
|
|
39
|
+
var mui_1 = require("fbm-ui/lib/mui");
|
|
40
|
+
var react_1 = require("react");
|
|
41
|
+
var BORDER = '1px solid rgba(0, 0, 0, 0.08)';
|
|
42
|
+
var TEXT_MUTED = 'rgba(0, 0, 0, 0.56)';
|
|
43
|
+
// 得分颜色与题目维度保持一致(优秀 / 适中 / 欠佳)
|
|
44
|
+
var SCORE_COLOR = {
|
|
45
|
+
1: '#4CAF50',
|
|
46
|
+
2: 'rgba(0, 0, 0, 0.86)',
|
|
47
|
+
3: '#FF6C6C',
|
|
48
|
+
};
|
|
49
|
+
var scoreLevelOf = function (score) { return (score >= 80 ? 1 : score >= 60 ? 2 : 3); };
|
|
50
|
+
var scoreTextOf = function (score) { return (score >= 80 ? '优秀' : score >= 60 ? '适中' : '欠佳'); };
|
|
51
|
+
var thStyle = {
|
|
52
|
+
textAlign: 'left',
|
|
53
|
+
padding: '10px 12px',
|
|
54
|
+
fontWeight: 500,
|
|
55
|
+
color: TEXT_MUTED,
|
|
56
|
+
whiteSpace: 'nowrap',
|
|
57
|
+
};
|
|
58
|
+
var tdStyle = {
|
|
59
|
+
padding: '12px',
|
|
60
|
+
verticalAlign: 'middle',
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* 全局维度(只绑试卷、不绑题目):紧凑表格展示,行内展开可改分 / 改评价。
|
|
64
|
+
* 没有配置全局维度时不渲染(老报告行为不变)。
|
|
65
|
+
*/
|
|
66
|
+
var Index = function () {
|
|
67
|
+
var _a = (0, global_store_1.useAiReportStore)(function (store) { return [
|
|
68
|
+
store.reportResult,
|
|
69
|
+
store.operableButtons,
|
|
70
|
+
]; }), reportResult = _a.reportResult, showAiDimension = _a.showAiDimension, canEditAiDimension = _a.canEditAiDimension, updateReportResult = _a.updateReportResult, onScoreChange = _a.onScoreChange;
|
|
71
|
+
var _b = reportResult || {}, _c = _b.orderToken, orderToken = _c === void 0 ? '' : _c, _d = _b.globalDimensions, globalDimensions = _d === void 0 ? [] : _d;
|
|
72
|
+
var _e = __read((0, react_1.useState)(-1), 2), expandedIndex = _e[0], setExpandedIndex = _e[1];
|
|
73
|
+
var handleScoreChange = (0, react_1.useCallback)(function (index, score) {
|
|
74
|
+
var _a;
|
|
75
|
+
var list = ((reportResult === null || reportResult === void 0 ? void 0 : reportResult.globalDimensions) || []).map(function (item, i) {
|
|
76
|
+
return i === index ? __assign(__assign({}, item), { score: score, scoreText: scoreTextOf(score), scoreLevel: scoreLevelOf(score) }) : item;
|
|
77
|
+
});
|
|
78
|
+
// 先乐观更新当前展示,再交给宿主持久化(与题目维度同一套回调)
|
|
79
|
+
updateReportResult(__assign(__assign({}, reportResult), { globalDimensions: list }));
|
|
80
|
+
onScoreChange === null || onScoreChange === void 0 ? void 0 : onScoreChange({ flowStepToken: (_a = list[index]) === null || _a === void 0 ? void 0 : _a.token, type: 1, score: score });
|
|
81
|
+
}, [onScoreChange, reportResult, updateReportResult]);
|
|
82
|
+
if (!showAiDimension || globalDimensions.length === 0) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return ((0, jsx_runtime_1.jsxs)(mui_1.Box, __assign({ id: "report-global-dimension", px: 2, mt: 3 }, { children: [(0, jsx_runtime_1.jsx)(mui_1.Box, __assign({ mb: 1.5 }, { children: (0, jsx_runtime_1.jsx)(ModuleTitle_1.ModuleTitle, { title: "\u5168\u5C40\u7EF4\u5EA6", iconVariant: "dimension" }) })), (0, jsx_runtime_1.jsx)(mui_1.Box, __assign({ sx: { border: BORDER, borderRadius: 2, overflow: 'hidden' } }, { children: (0, jsx_runtime_1.jsxs)("table", __assign({ style: { width: '100%', borderCollapse: 'collapse', fontSize: 13, color: 'rgba(0, 0, 0, 0.86)' } }, { children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", __assign({ style: { background: 'rgba(0, 0, 0, 0.02)' } }, { children: [(0, jsx_runtime_1.jsx)("th", __assign({ style: thStyle }, { children: "\u7EF4\u5EA6" })), (0, jsx_runtime_1.jsx)("th", __assign({ style: thStyle }, { children: "\u6765\u6E90" })), (0, jsx_runtime_1.jsx)("th", __assign({ style: thStyle }, { children: "\u6743\u91CD" })), (0, jsx_runtime_1.jsx)("th", __assign({ style: thStyle }, { children: "\u5F97\u5206" })), (0, jsx_runtime_1.jsx)("th", __assign({ style: thStyle }, { children: "\u4E00\u53E5\u8BDD\u8BC4\u4EF7" })), (0, jsx_runtime_1.jsx)("th", __assign({ style: __assign(__assign({}, thStyle), { width: 56, textAlign: 'center' }) }, { children: "\u64CD\u4F5C" }))] })) }), globalDimensions.map(function (v, index) { return ((0, jsx_runtime_1.jsxs)("tbody", { children: [(0, jsx_runtime_1.jsxs)("tr", __assign({ style: { borderTop: BORDER } }, { children: [(0, jsx_runtime_1.jsx)("td", __assign({ style: __assign(__assign({}, tdStyle), { fontWeight: 500 }) }, { children: v.name })), (0, jsx_runtime_1.jsx)("td", __assign({ style: tdStyle }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Chip, { color: "success", label: "\u5168\u5C40", size: "small" }) })), (0, jsx_runtime_1.jsxs)("td", __assign({ style: __assign(__assign({}, tdStyle), { color: TEXT_MUTED }) }, { children: [v.weight, "%"] })), (0, jsx_runtime_1.jsxs)("td", __assign({ style: tdStyle }, { children: [(0, jsx_runtime_1.jsx)(mui_1.Box, __assign({ component: "span", sx: { color: SCORE_COLOR[v.scoreLevel] || 'rgba(0, 0, 0, 0.86)', fontWeight: 600 } }, { children: v.score })), (0, jsx_runtime_1.jsx)(mui_1.Box, __assign({ component: "span", sx: { color: TEXT_MUTED, ml: 0.5, fontSize: 12 } }, { children: v.scoreText }))] })), (0, jsx_runtime_1.jsx)("td", __assign({ style: __assign(__assign({}, tdStyle), { color: 'rgba(0, 0, 0, 0.6)' }) }, { children: v.answer })), (0, jsx_runtime_1.jsx)("td", __assign({ style: __assign(__assign({}, tdStyle), { textAlign: 'center' }) }, { children: canEditAiDimension && ((0, jsx_runtime_1.jsx)(fbm_ui_1.IconButton, __assign({ size: "small", onClick: function () { return setExpandedIndex(expandedIndex === index ? -1 : index); } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.EditIcon, {}) }))) }))] })), (0, jsx_runtime_1.jsx)("tr", { children: (0, jsx_runtime_1.jsx)("td", __assign({ colSpan: 6, style: { padding: 0 } }, { children: (0, jsx_runtime_1.jsx)(mui_1.Collapse, __assign({ in: expandedIndex === index }, { children: (0, jsx_runtime_1.jsxs)(mui_1.Box, __assign({ sx: { px: 2, pt: 1.5, pb: 2, bgcolor: '#FAFBFA', borderTop: BORDER } }, { children: [(0, jsx_runtime_1.jsxs)(fbm_ui_1.Typography, __assign({ variant: "caption", color: "textSecondary", display: "block", mb: 1 }, { children: ["\u8BC4\u4EF7\u6807\u51C6\uFF1A", v.define || '—'] })), (0, jsx_runtime_1.jsx)(ScoreSlider_1.default, { width: "100%", isShowLabel: true, score: v.score, scoreText: v.scoreText, scoreLevel: v.scoreLevel, valueLabelDisplay: "auto", onChangeCommitted: function (score) { return handleScoreChange(index, score); } }), (0, jsx_runtime_1.jsx)(mui_1.Stack, __assign({ mt: 1.5 }, { children: (0, jsx_runtime_1.jsx)(WorkPlace_1.default, { thirdOrderID: orderToken, token: v.token, canEdit: canEditAiDimension, answer: v.answer, mode: "show" }) }))] })) })) })) })] }, v.token || v.name)); })] })) }))] })));
|
|
86
|
+
};
|
|
87
|
+
exports.default = (0, react_1.memo)(Index);
|
|
@@ -3,5 +3,5 @@ export declare const ModuleTitle: ({ title, action, icon, iconVariant, }: {
|
|
|
3
3
|
title: React.ReactNode;
|
|
4
4
|
action?: React.ReactNode;
|
|
5
5
|
icon?: string | undefined;
|
|
6
|
-
iconVariant?: "doc" | "person" | "shield" | undefined;
|
|
6
|
+
iconVariant?: "doc" | "person" | "shield" | "dimension" | undefined;
|
|
7
7
|
}) => JSX.Element;
|
|
@@ -32,7 +32,9 @@ var ModuleTitle = function (_a) {
|
|
|
32
32
|
// 资料收集:人形剪影
|
|
33
33
|
(0, jsx_runtime_1.jsxs)("svg", __assign({ width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, { children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "8", r: "3.6", fill: "#fff" }), (0, jsx_runtime_1.jsx)("path", { d: "M4 20c.8-4 4-6 8-6s7.2 2 8 6", stroke: "#fff", strokeWidth: "2", strokeLinecap: "round" })] }))) : iconVariant === 'shield' ? (
|
|
34
34
|
// 作弊风险:盾牌 + 感叹号
|
|
35
|
-
(0, jsx_runtime_1.jsxs)("svg", __assign({ width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, { children: [(0, jsx_runtime_1.jsx)("path", { d: "M12 2.5 5 5v6c0 4.5 3 8 7 9.5 4-1.5 7-5 7-9.5V5l-7-2.5Z", fill: "#fff" }), (0, jsx_runtime_1.jsx)("rect", { x: "11", y: "6.6", width: "2", height: "5.4", rx: "1", fill: "#41C446" }), (0, jsx_runtime_1.jsx)("rect", { x: "11", y: "13.6", width: "2", height: "2.4", rx: "1", fill: "#41C446" })] }))) : (
|
|
35
|
+
(0, jsx_runtime_1.jsxs)("svg", __assign({ width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, { children: [(0, jsx_runtime_1.jsx)("path", { d: "M12 2.5 5 5v6c0 4.5 3 8 7 9.5 4-1.5 7-5 7-9.5V5l-7-2.5Z", fill: "#fff" }), (0, jsx_runtime_1.jsx)("rect", { x: "11", y: "6.6", width: "2", height: "5.4", rx: "1", fill: "#41C446" }), (0, jsx_runtime_1.jsx)("rect", { x: "11", y: "13.6", width: "2", height: "2.4", rx: "1", fill: "#41C446" })] }))) : iconVariant === 'dimension' ? (
|
|
36
|
+
// 全局维度:三块维度格子
|
|
37
|
+
(0, jsx_runtime_1.jsxs)("svg", __assign({ width: "14", height: "14", viewBox: "0 0 24 24", fill: "none" }, { children: [(0, jsx_runtime_1.jsx)("rect", { x: "3.5", y: "3.5", width: "7.5", height: "7.5", rx: "2", fill: "#fff" }), (0, jsx_runtime_1.jsx)("rect", { x: "13", y: "3.5", width: "7.5", height: "7.5", rx: "2", fill: "#fff", opacity: "0.75" }), (0, jsx_runtime_1.jsx)("rect", { x: "3.5", y: "13", width: "17", height: "7.5", rx: "2", fill: "#fff" })] }))) : (
|
|
36
38
|
// 默认/面试详情:文档 + 双横线
|
|
37
39
|
(0, jsx_runtime_1.jsxs)("svg", __assign({ width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, { children: [(0, jsx_runtime_1.jsx)("rect", { x: "5", y: "3", width: "14", height: "18", rx: "2.5", fill: "#fff" }), (0, jsx_runtime_1.jsx)("rect", { x: "8.5", y: "7", width: "7", height: "1.8", rx: "0.9", fill: "#41C446" }), (0, jsx_runtime_1.jsx)("rect", { x: "8.5", y: "11", width: "7", height: "1.8", rx: "0.9", fill: "#41C446" }), (0, jsx_runtime_1.jsx)("rect", { x: "8.5", y: "15", width: "4.5", height: "1.8", rx: "0.9", fill: "#41C446" })] }))) }))), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ fontWeight: 700, sx: { color: 'rgba(0,0,0,0.86)', fontSize: 18, lineHeight: '24px' } }, { children: title }))] })), action && (0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ sx: { position: 'absolute', top: 0, right: 0 } }, { children: action }))] })) }));
|
|
38
40
|
};
|
|
@@ -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" | "
|
|
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" | "
|
|
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" | "
|
|
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?: "
|
|
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" | "
|
|
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?: "
|
|
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" | "
|
|
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>, {}, {}>;
|
|
@@ -28,6 +28,8 @@ export interface Collection {
|
|
|
28
28
|
rank: number;
|
|
29
29
|
total: number;
|
|
30
30
|
avgScore: number;
|
|
31
|
+
/** 维度来源 1=题目维度 2=全局维度(老报告不返回该字段) */
|
|
32
|
+
source?: number;
|
|
31
33
|
}
|
|
32
34
|
export interface AnalysisResult {
|
|
33
35
|
text: string;
|
|
@@ -94,6 +96,18 @@ export interface WorkPlaceAbility {
|
|
|
94
96
|
scoreText: string;
|
|
95
97
|
token: string;
|
|
96
98
|
}
|
|
99
|
+
/** 全局维度(只绑试卷、不绑题目,按整场回答统一评价) */
|
|
100
|
+
export interface GlobalDimensionAbility {
|
|
101
|
+
token: string;
|
|
102
|
+
name: string;
|
|
103
|
+
define: string;
|
|
104
|
+
score: number;
|
|
105
|
+
scoreText: string;
|
|
106
|
+
scoreLevel: number;
|
|
107
|
+
weight: number;
|
|
108
|
+
source: number;
|
|
109
|
+
answer: string;
|
|
110
|
+
}
|
|
97
111
|
export interface WorkPlaceScoreInfo {
|
|
98
112
|
score: number;
|
|
99
113
|
scoreText: string;
|
|
@@ -175,6 +189,8 @@ export interface AiInterviewReportList {
|
|
|
175
189
|
faceAnalysis: FaceAnalysis;
|
|
176
190
|
evaluations: Array<any>;
|
|
177
191
|
workplaces: WorkPlaceAbility[];
|
|
192
|
+
/** 全局维度(只绑试卷、不绑题目);没有配置时后端不返回 */
|
|
193
|
+
globalDimensions?: GlobalDimensionAbility[];
|
|
178
194
|
suggestion: Suggestion;
|
|
179
195
|
summaryText: SummaryText;
|
|
180
196
|
model: 'pro' | 'standard';
|