@fses/workbench-app 0.2.16 → 0.2.17
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/WORKBENCH-CLOSURE.json +18 -12
- package/dist/Workspace-r8ayksVF.js +23176 -0
- package/dist/canvas/api/index.js +1 -1
- package/dist/{canvasFacade-B2EHgdqA.js → canvasFacade-B8jYm_aO.js} +748 -748
- package/dist/cardFactory-DmEBcCf4.js +1460 -0
- package/dist/extensions/index.js +1 -1
- package/dist/fses-workbench-app.js +5 -5
- package/dist/{index-CMM-5ObU.js → index-DEOR_GPc.js} +350 -346
- package/dist/internal/personal-workbench/fde-skill-cards/runtime/fdeSkillProtocolChartDisplayData.d.ts +0 -5
- package/dist/internal/personal-workbench/lib/assistantPersonaProfiles.d.ts +6 -6
- package/dist/internal/personal-workbench/lib/cardStyleConfig.d.ts +26 -26
- package/dist/internal/personal-workbench/lib/echartsOptionEditorBridge.d.ts +0 -5
- package/dist/internal/personal-workbench/lib/historyCardBindingRestore.fixture.d.ts +0 -5
- package/dist/internal/personal-workbench/lib/runtimePrimitiveRegistry.d.ts +1 -1
- package/dist/internal/personal-workbench/lib/vueRuntimeAdapters.d.ts +0 -5
- package/dist/internal/personal-workbench/lib/workbenchCanvasBusinessGapChecklist.d.ts +1 -1
- package/dist/internal/personal-workbench/lib/workbenchCardRecommendationFallback.d.ts +1 -1
- package/dist/internal/personal-workbench/lib/workbenchCardRecommendationReturnItemUpsert.d.ts +0 -5
- package/dist/internal/personal-workbench/lib/workbenchDataBindingBadge.d.ts +0 -5
- package/dist/internal/personal-workbench/lib/workbenchImageComposeEntry.d.ts +1 -1
- package/dist/internal/personal-workbench/lib/workbenchLayout.d.ts +0 -5
- package/dist/runtime/index.js +1 -1
- package/dist/style.css +1 -1
- package/dist/{useWorkbenchRuntime-DLf_FgC7.js → useWorkbenchRuntime-DDD22mdF.js} +7817 -7813
- package/dist/version.d.ts +1 -1
- package/dist/{workbenchCustomComponentRegistry-Bt94Lgko.js → workbenchCustomComponentRegistry-CWUPjCnJ.js} +74 -74
- package/node_modules/@byteluck-fe/locale-message/README.md +2 -0
- package/node_modules/@byteluck-fe/locale-message/dist/index.d.ts +37 -0
- package/node_modules/@byteluck-fe/locale-message/dist/locale-message.js +55 -0
- package/node_modules/@byteluck-fe/locale-message/package.json +37 -0
- package/node_modules/@fses/ai-chat/dist/components/ContextUsageRing.vue.d.ts +5 -0
- package/node_modules/@fses/ai-chat/dist/components/FsesAiChat.vue.d.ts +5 -0
- package/node_modules/@fses/ai-chat/dist/fses-ai-chat.js +5446 -5321
- package/node_modules/@fses/ai-chat/dist/fses-ai-chat.umd.cjs +16 -18
- package/node_modules/@fses/ai-chat/dist/style.css +1 -1
- package/node_modules/@fses/ai-chat/dist/utils/attachment-upload.d.ts +0 -5
- package/node_modules/@fses/ai-chat/package.json +6 -5
- package/node_modules/@fses/workbench-card/dist/fses-workbench-card-renderers.js +10144 -9914
- package/node_modules/@fses/workbench-card/dist/fses-workbench-card.js +1517 -1503
- package/node_modules/@fses/workbench-card/dist/fses-workbench-card.umd.cjs +1 -1
- package/node_modules/@fses/workbench-card/dist/renderers/chart/chartRendererRegistry.d.ts +97 -97
- package/node_modules/@fses/workbench-card/dist/renderers/style.css +1 -1
- package/node_modules/@fses/workbench-card/package.json +4 -1
- package/node_modules/@fses/workbench-card/src/registry/cardRegistry.ts +99 -98
- package/node_modules/@fses/workbench-card/src/registry/compositeCardPatterns.ts +31 -30
- package/node_modules/@fses/workbench-card/src/registry/echartsTemplateCategories.ts +24 -23
- package/node_modules/@fses/workbench-card/src/registry/echartsTemplateRegistry.generated.js +765 -764
- package/node_modules/@fses/workbench-card/src/registry/echartsTemplateRegistry.generated.ts +765 -764
- package/node_modules/@fses/workbench-card/src/renderers/WorkbenchBlockRenderer.vue +143 -129
- package/node_modules/@fses/workbench-card/src/renderers/chart/ChartRegistry.vue +4 -3
- package/node_modules/@fses/workbench-card/src/renderers/chart/EChartsProtocolRenderer.vue +2 -1
- package/node_modules/@fses/workbench-card/src/renderers/chart/chartRendererRegistry.ts +99 -98
- package/node_modules/@fses/workbench-card/src/renderers/chart/useEchart.ts +30 -29
- package/node_modules/@fses/workbench-card/src/renderers/native/nativeBindings.ts +11 -10
- package/node_modules/@fses/workbench-card/src/renderers/nested/nestedBlockBindings.ts +102 -101
- package/node_modules/@fses/workbench-card/src/renderers/reference-composite/referenceCompositeBindings.ts +364 -363
- package/node_modules/@fses/workbench-card/src/renderers/reference-composite/referenceRiskAndStrategyBindings.ts +90 -89
- package/node_modules/@fses/workbench-card/src/renderers/useWorkbenchBlockRendererBindings.ts +33 -32
- package/package.json +4 -3
- package/dist/Workspace-CfKvji6S.js +0 -22896
- package/dist/cardFactory-BK3CA-Gn.js +0 -1443
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getLocaleText } from '@byteluck-fe/locale-message'
|
|
1
2
|
/**
|
|
2
3
|
* @fileoverview 引用复合风险与策略绑定 - 提供高密度风险、快捷工作台、策略 KPI 和运营健康预览 helper。
|
|
3
4
|
* @author seadon
|
|
@@ -63,7 +64,7 @@ export function referenceStrategyKpiRiskDisplayText(
|
|
|
63
64
|
label,
|
|
64
65
|
detail,
|
|
65
66
|
);
|
|
66
|
-
if (!detail && input.needsHumanIntervention) detail = '
|
|
67
|
+
if (!detail && input.needsHumanIntervention) detail = getLocaleText('FWC.a4881787581342167');
|
|
67
68
|
return { detail, value };
|
|
68
69
|
}
|
|
69
70
|
|
|
@@ -217,11 +218,11 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
217
218
|
const rawItems = block ? nestedBlockRawItems(block) : [];
|
|
218
219
|
if (rawItems.length >= 3 && !nestedBlockItemsLookTooWeak(rawItems)) return rawItems.slice(0, 5);
|
|
219
220
|
return [
|
|
220
|
-
{ label: '
|
|
221
|
-
{ label: '
|
|
222
|
-
{ label: '
|
|
223
|
-
{ label: '
|
|
224
|
-
{ label: '
|
|
221
|
+
{ label: getLocaleText('FWC.99f81787581421449'), value: '+12.8%', progress: 72, tone: 'critical' },
|
|
222
|
+
{ label: getLocaleText('FWC.ad3c1787581421543'), value: '+10.6%', progress: 60, tone: 'critical' },
|
|
223
|
+
{ label: getLocaleText('FWC.3c6d1787581421582'), value: '+8.4%', progress: 48, tone: 'warning' },
|
|
224
|
+
{ label: getLocaleText('FWC.f1481787581421617'), value: '+6.2%', progress: 38, tone: 'warning' },
|
|
225
|
+
{ label: getLocaleText('FWC.b2281787581421648'), value: '-3.1%', progress: 28, tone: 'healthy' },
|
|
225
226
|
];
|
|
226
227
|
}
|
|
227
228
|
|
|
@@ -234,7 +235,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
234
235
|
const block = referenceNestedBlock(data, /超阈值|冻结|审计/);
|
|
235
236
|
if (block && !nestedBlockItemsLookTooWeakForVisualKind(nestedBlockRawItems(block), 'simpleList')) return nestedBlockItems(block).slice(0, 2);
|
|
236
237
|
return [
|
|
237
|
-
{ label: '3 项超阈值', detail: '
|
|
238
|
+
{ label: '3 项超阈值', detail: getLocaleText('FWC.00e31787579292316'), value: getLocaleText('FWC.045c1787581421679'), tone: 'critical' },
|
|
238
239
|
];
|
|
239
240
|
}
|
|
240
241
|
|
|
@@ -258,9 +259,9 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
258
259
|
}];
|
|
259
260
|
});
|
|
260
261
|
const fallbackRows = [
|
|
261
|
-
{ label: '
|
|
262
|
-
{ label: '
|
|
263
|
-
{ label: '
|
|
262
|
+
{ label: getLocaleText('FWC.0d701787579521573'), value: '-23.4%', tone: 'critical' },
|
|
263
|
+
{ label: getLocaleText('FWC.cfe31787579595325'), value: '+12.8%', tone: 'critical' },
|
|
264
|
+
{ label: getLocaleText('FWC.38521787579733216'), value: '+9.6%', tone: 'warning' },
|
|
264
265
|
];
|
|
265
266
|
return (rows.length > 0 ? rows : fallbackRows).slice(0, 4);
|
|
266
267
|
}
|
|
@@ -272,10 +273,10 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
272
273
|
*/
|
|
273
274
|
function referenceOrganizationRiskMetrics(data: CustomCanvasData): Array<Record<string, unknown>> {
|
|
274
275
|
return [
|
|
275
|
-
referenceMetricItem(data, '
|
|
276
|
-
referenceMetricItem(data, '
|
|
277
|
-
referenceMetricItem(data, '
|
|
278
|
-
referenceMetricItem(data, '
|
|
276
|
+
referenceMetricItem(data, getLocaleText('FWC.e9771787581108094'), /组织稳定|稳定分/, '71', 'warning'),
|
|
277
|
+
referenceMetricItem(data, getLocaleText('FWC.78f01787581108928'), /核心流失|流失率/, '+0.7pp', 'critical'),
|
|
278
|
+
referenceMetricItem(data, getLocaleText('FWC.26db1787581421744'), /人效下滑|人效风险/, '-8.6%', 'critical'),
|
|
279
|
+
referenceMetricItem(data, getLocaleText('FWC.04221787581421712'), /超编/, '+16%', 'warning'),
|
|
279
280
|
];
|
|
280
281
|
}
|
|
281
282
|
|
|
@@ -302,10 +303,10 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
302
303
|
const rawItems = block ? nestedBlockRawItems(block) : [];
|
|
303
304
|
if (rawItems.length >= 3 && !nestedBlockItemsLookTooWeak(rawItems)) return rawItems.slice(0, 4);
|
|
304
305
|
return [
|
|
305
|
-
{ label: '
|
|
306
|
-
{ label: '
|
|
307
|
-
{ label: '
|
|
308
|
-
{ label: '
|
|
306
|
+
{ label: getLocaleText('FWC.40fe1787581107871'), value: getLocaleText('FWC.f0e61787581660864'), progress: 78, tone: 'critical' },
|
|
307
|
+
{ label: getLocaleText('FWC.89981787581421776'), value: getLocaleText('FWC.f63c1787581620685'), progress: 62, tone: 'warning' },
|
|
308
|
+
{ label: getLocaleText('FWC.98f71787581421809'), value: getLocaleText('FWC.5ddb1787581587963'), progress: 54, tone: 'critical' },
|
|
309
|
+
{ label: getLocaleText('FWC.3d0c1787581421842'), value: getLocaleText('FWC.f18b1787581588044'), progress: 70, tone: 'warning' },
|
|
309
310
|
];
|
|
310
311
|
}
|
|
311
312
|
|
|
@@ -318,7 +319,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
318
319
|
const block = referenceNestedBlock(data, /战略项目|落地滞后|延期|超支/);
|
|
319
320
|
if (block && !nestedBlockItemsLookTooWeakForVisualKind(nestedBlockRawItems(block), 'simpleList')) return nestedBlockItems(block).slice(0, 2);
|
|
320
321
|
return [
|
|
321
|
-
{ label: '
|
|
322
|
+
{ label: getLocaleText('FWC.6ada1787580023310'), detail: getLocaleText('FWC.650b1787579202619'), value: getLocaleText('FWC.45061787581069459'), tone: 'warning' },
|
|
322
323
|
];
|
|
323
324
|
}
|
|
324
325
|
|
|
@@ -342,9 +343,9 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
342
343
|
? referenceExecutiveTodoPadRows(reliableRows, minRows)
|
|
343
344
|
: reliableRows.slice(0, 3);
|
|
344
345
|
const fallbackRows = [
|
|
345
|
-
{ label: '
|
|
346
|
-
{ label: '
|
|
347
|
-
{ label: '
|
|
346
|
+
{ label: getLocaleText('FWC.d4d51787581425240'), value: getLocaleText('FWC.46181787581558515'), detail: getLocaleText('FWC.1c931787580422092'), tone: 'warning' },
|
|
347
|
+
{ label: getLocaleText('FWC.b8a51787581109444'), value: getLocaleText('FWC.4be31787581561679'), detail: getLocaleText('FWC.ad861787579595850'), tone: 'warning' },
|
|
348
|
+
{ label: getLocaleText('FWC.50ac1787581109968'), value: getLocaleText('FWC.c9811787581588138'), detail: getLocaleText('FWC.43341787580422698'), tone: 'warning' },
|
|
348
349
|
];
|
|
349
350
|
if (minRows <= 0) return fallbackRows.slice(0, 3);
|
|
350
351
|
return referenceExecutiveTodoPadRows(fallbackRows, minRows);
|
|
@@ -366,11 +367,11 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
366
367
|
...row,
|
|
367
368
|
label,
|
|
368
369
|
title: label,
|
|
369
|
-
detail: detail || '
|
|
370
|
-
impact: impact || '
|
|
371
|
-
deadline: deadline || '
|
|
372
|
-
progress: progress || '
|
|
373
|
-
status: textValue(row.status, textValue(row.badge, '
|
|
370
|
+
detail: detail || getLocaleText('FWC.1c931787580422092'),
|
|
371
|
+
impact: impact || getLocaleText('FWC.46181787581558515'),
|
|
372
|
+
deadline: deadline || getLocaleText('FWC.46181787581558515'),
|
|
373
|
+
progress: progress || getLocaleText('FWC.62421787581588228'),
|
|
374
|
+
status: textValue(row.status, textValue(row.badge, getLocaleText('FWC.74471787581560851'))),
|
|
374
375
|
};
|
|
375
376
|
}
|
|
376
377
|
|
|
@@ -382,9 +383,9 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
382
383
|
*/
|
|
383
384
|
function referenceExecutiveTodoPadRows(rows: Array<Record<string, unknown>>, minRows: number): Array<Record<string, unknown>> {
|
|
384
385
|
const placeholders = [
|
|
385
|
-
{ label: '
|
|
386
|
-
{ label: '
|
|
387
|
-
{ label: '
|
|
386
|
+
{ label: getLocaleText('FWC.d4d51787581425240'), value: getLocaleText('FWC.46181787581558515'), detail: getLocaleText('FWC.1c931787580422092'), tone: 'warning' },
|
|
387
|
+
{ label: getLocaleText('FWC.b8a51787581109444'), value: getLocaleText('FWC.4be31787581561679'), detail: getLocaleText('FWC.ad861787579595850'), tone: 'warning' },
|
|
388
|
+
{ label: getLocaleText('FWC.50ac1787581109968'), value: getLocaleText('FWC.c9811787581588138'), detail: getLocaleText('FWC.43341787580422698'), tone: 'warning' },
|
|
388
389
|
];
|
|
389
390
|
return [...rows, ...placeholders]
|
|
390
391
|
.slice(0, Math.max(minRows, 3))
|
|
@@ -415,9 +416,9 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
415
416
|
function referenceExecutiveTodoBadge(item: Record<string, unknown>, index: number): string {
|
|
416
417
|
const explicitStatus = textValue(item.status, textValue(item.badge));
|
|
417
418
|
if (explicitStatus && !/待签批|待复核/.test(explicitStatus)) return explicitStatus;
|
|
418
|
-
if (index === 0 || /逾期|超期|应收|缺口/.test(nestedBlockItemTitle(item, index))) return '
|
|
419
|
-
if (index === 1) return '
|
|
420
|
-
return '
|
|
419
|
+
if (index === 0 || /逾期|超期|应收|缺口/.test(nestedBlockItemTitle(item, index))) return getLocaleText('FWC.f12a1787581611879');
|
|
420
|
+
if (index === 1) return getLocaleText('FWC.30db1787581590747');
|
|
421
|
+
return getLocaleText('FWC.45d01787581588091');
|
|
421
422
|
}
|
|
422
423
|
|
|
423
424
|
/**
|
|
@@ -443,7 +444,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
443
444
|
function referenceExecutiveTodoImpact(item: Record<string, unknown>, index: number): string {
|
|
444
445
|
return nestedBlockDisplayValue(
|
|
445
446
|
item.impact ?? item.amount ?? item.primaryValue ?? item.value,
|
|
446
|
-
index === 0 ? '
|
|
447
|
+
index === 0 ? getLocaleText('FWC.46181787581558515') : getLocaleText('FWC.895b1787581591272'),
|
|
447
448
|
);
|
|
448
449
|
}
|
|
449
450
|
|
|
@@ -456,7 +457,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
456
457
|
function referenceExecutiveTodoDeadline(item: Record<string, unknown>, index: number): string {
|
|
457
458
|
return nestedBlockDisplayValue(
|
|
458
459
|
item.deadline ?? item.dueDate ?? item.date ?? item.time,
|
|
459
|
-
index === 0 ? '
|
|
460
|
+
index === 0 ? getLocaleText('FWC.46181787581558515') : getLocaleText('FWC.895b1787581591272'),
|
|
460
461
|
);
|
|
461
462
|
}
|
|
462
463
|
|
|
@@ -469,7 +470,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
469
470
|
function referenceExecutiveTodoProgress(item: Record<string, unknown>, index: number): string {
|
|
470
471
|
return nestedBlockDisplayValue(
|
|
471
472
|
item.progress ?? item.ratio ?? item.stage,
|
|
472
|
-
index === 0 ? '
|
|
473
|
+
index === 0 ? getLocaleText('FWC.62421787581588228') : getLocaleText('FWC.895b1787581591272'),
|
|
473
474
|
);
|
|
474
475
|
}
|
|
475
476
|
|
|
@@ -493,12 +494,12 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
493
494
|
});
|
|
494
495
|
if (usableRows.length >= 4) return usableRows.slice(0, 6);
|
|
495
496
|
return [
|
|
496
|
-
{ label: '
|
|
497
|
-
{ label: '
|
|
498
|
-
{ label: '
|
|
499
|
-
{ label: '
|
|
500
|
-
{ label: '
|
|
501
|
-
{ label: '
|
|
497
|
+
{ label: getLocaleText('FWC.de801787581426642'), value: '8', tone: 'critical' },
|
|
498
|
+
{ label: getLocaleText('FWC.1b591787581427167'), value: '14', tone: 'critical' },
|
|
499
|
+
{ label: getLocaleText('FWC.05701787581427692'), value: '6', tone: 'critical' },
|
|
500
|
+
{ label: getLocaleText('FWC.0d821787581428217'), value: '5', tone: 'critical' },
|
|
501
|
+
{ label: getLocaleText('FWC.29601787581421875'), value: '3', tone: 'warning' },
|
|
502
|
+
{ label: getLocaleText('FWC.7a231787581428739'), value: '4', tone: 'warning' },
|
|
502
503
|
];
|
|
503
504
|
}
|
|
504
505
|
|
|
@@ -517,7 +518,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
517
518
|
return [
|
|
518
519
|
{
|
|
519
520
|
id: 'todo',
|
|
520
|
-
title: '
|
|
521
|
+
title: getLocaleText('FWC.65e61787581429265'),
|
|
521
522
|
visualKind: 'todoGrid',
|
|
522
523
|
fallbackItems: [
|
|
523
524
|
{ label: '预算追加审批', value: '5', tone: 'critical' },
|
|
@@ -527,33 +528,33 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
527
528
|
},
|
|
528
529
|
{
|
|
529
530
|
id: 'report',
|
|
530
|
-
title: '
|
|
531
|
+
title: getLocaleText('FWC.c1191787581429787'),
|
|
531
532
|
visualKind: 'quickLinks',
|
|
532
533
|
fallbackItems: [
|
|
533
|
-
{ label: '
|
|
534
|
-
{ label: '
|
|
535
|
-
{ label: '
|
|
534
|
+
{ label: getLocaleText('FWC.5ec51787581430313'), value: getLocaleText('FWC.842d1787581660917'), tone: 'neutral' },
|
|
535
|
+
{ label: getLocaleText('FWC.b43d1787580424713'), value: getLocaleText('FWC.842d1787581660917'), tone: 'neutral' },
|
|
536
|
+
{ label: getLocaleText('FWC.93241787581430837'), value: getLocaleText('FWC.842d1787581660917'), tone: 'neutral' },
|
|
536
537
|
],
|
|
537
538
|
},
|
|
538
539
|
{
|
|
539
540
|
id: 'entry',
|
|
540
|
-
title: '
|
|
541
|
+
title: getLocaleText('FWC.999b1787581431033'),
|
|
541
542
|
visualKind: 'quickLinks',
|
|
542
543
|
fallbackItems: [
|
|
543
|
-
{ label: '
|
|
544
|
-
{ label: '
|
|
544
|
+
{ label: getLocaleText('FWC.1f0c1787581625544') },
|
|
545
|
+
{ label: getLocaleText('FWC.30f41787581585508') },
|
|
545
546
|
{ label: 'HR' },
|
|
546
547
|
{ label: 'BI' },
|
|
547
548
|
],
|
|
548
549
|
},
|
|
549
550
|
{
|
|
550
551
|
id: 'message',
|
|
551
|
-
title: '
|
|
552
|
+
title: getLocaleText('FWC.27c21787581431468'),
|
|
552
553
|
visualKind: 'incidentList',
|
|
553
554
|
fallbackItems: [
|
|
554
|
-
{ label: '
|
|
555
|
-
{ label: '
|
|
556
|
-
{ label: '区域订单异动', value: '
|
|
555
|
+
{ label: getLocaleText('FWC.67d01787580423666'), value: '09:20', tone: 'critical' },
|
|
556
|
+
{ label: getLocaleText('FWC.c1501787581110492'), value: '14:00', tone: 'warning' },
|
|
557
|
+
{ label: '区域订单异动', value: getLocaleText('FWC.d6081787581661092'), tone: 'info' },
|
|
557
558
|
],
|
|
558
559
|
},
|
|
559
560
|
];
|
|
@@ -614,7 +615,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
614
615
|
.map((item) => nestedBlockOptionalNumber(nestedBlockItemValue(item)))
|
|
615
616
|
.filter((value): value is number => value !== undefined)
|
|
616
617
|
.reduce((sum, value) => sum + Math.max(0, value), 0);
|
|
617
|
-
return urgent > 0 ?
|
|
618
|
+
return urgent > 0 ? getLocaleText('FWC.f60f1787579733390', {p0: urgent}) : getLocaleText('FWC.74471787581560851');
|
|
618
619
|
}
|
|
619
620
|
|
|
620
621
|
/**
|
|
@@ -624,13 +625,13 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
624
625
|
*/
|
|
625
626
|
function referenceStrategyKpiMetrics(data: CustomCanvasData): Array<Record<string, unknown>> {
|
|
626
627
|
return [
|
|
627
|
-
referenceStrategyKpiMetricItem(data, '
|
|
628
|
-
referenceStrategyKpiMetricItem(data, '
|
|
629
|
-
referenceStrategyKpiMetricItem(data, '
|
|
630
|
-
referenceStrategyKpiMetricItem(data, '
|
|
631
|
-
referenceStrategyKpiMetricItem(data, '本月营收完成', /本月营收|完成率|目标完成|target/i, '72%', '
|
|
632
|
-
referenceStrategyKpiMetricItem(data, '
|
|
633
|
-
referenceStrategyKpiMetricItem(data, '
|
|
628
|
+
referenceStrategyKpiMetricItem(data, getLocaleText('FWC.c3921787581431931'), /营业收入|营收|收入|revenue/i, getLocaleText('FWC.e5951787579906290'), getLocaleText('FWC.02f41787579906696'), 'info'),
|
|
629
|
+
referenceStrategyKpiMetricItem(data, getLocaleText('FWC.156f1787581591796'), /净利率|利润|profit/i, '12.8%', getLocaleText('FWC.62951787580425238'), 'healthy'),
|
|
630
|
+
referenceStrategyKpiMetricItem(data, getLocaleText('FWC.999f1787581567881'), /现金流|cash/i, getLocaleText('FWC.fbfd1787580023333'), getLocaleText('FWC.61291787579596374'), 'critical'),
|
|
631
|
+
referenceStrategyKpiMetricItem(data, getLocaleText('FWC.af461787579907220'), /核心用户|订单|客户|user|order/i, getLocaleText('FWC.3ae71787580023355'), getLocaleText('FWC.40561787580425763'), 'healthy'),
|
|
632
|
+
referenceStrategyKpiMetricItem(data, '本月营收完成', /本月营收|完成率|目标完成|target/i, '72%', getLocaleText('FWC.c1041787579907745'), 'info'),
|
|
633
|
+
referenceStrategyKpiMetricItem(data, getLocaleText('FWC.a8c81787581432934'), /重点项目|项目|project/i, '8 / 11', getLocaleText('FWC.80241787580424187'), 'warning'),
|
|
634
|
+
referenceStrategyKpiMetricItem(data, getLocaleText('FWC.b2c61787581433456'), /市场份额|份额|share/i, '21.6%', getLocaleText('FWC.26e71787579521637'), 'healthy'),
|
|
634
635
|
];
|
|
635
636
|
}
|
|
636
637
|
|
|
@@ -643,17 +644,17 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
643
644
|
const semanticGroups: ReferenceOperationEfficiencyGroup[] = [
|
|
644
645
|
{
|
|
645
646
|
id: 'delivery',
|
|
646
|
-
title: '
|
|
647
|
+
title: getLocaleText('FWC.a3601787580426416'),
|
|
647
648
|
items: referenceOperationEfficiencyGroupItems(data, /交付|履约|订单准时|生产良率/),
|
|
648
649
|
},
|
|
649
650
|
{
|
|
650
651
|
id: 'resource',
|
|
651
|
-
title: '
|
|
652
|
+
title: getLocaleText('FWC.3c571787581433684'),
|
|
652
653
|
items: referenceOperationEfficiencyGroupItems(data, /资源利用|人均产值|服务响应|设备利用|库存周转/),
|
|
653
654
|
},
|
|
654
655
|
{
|
|
655
656
|
id: 'milestone',
|
|
656
|
-
title: '
|
|
657
|
+
title: getLocaleText('FWC.ecc21787580425985'),
|
|
657
658
|
items: referenceOperationEfficiencyGroupItems(data, /重点项目里程碑|里程碑|数字化工厂|成本专项|渠道升级|新品上市/),
|
|
658
659
|
},
|
|
659
660
|
];
|
|
@@ -671,7 +672,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
671
672
|
const sourceItems = nestedBlocks
|
|
672
673
|
.filter((block) => nestedBlockClassifierText(block) || nestedBlockDataSummary(block) || nestedBlockMetricValue(block))
|
|
673
674
|
.map((block, index) => ({
|
|
674
|
-
label: block.title ||
|
|
675
|
+
label: block.title || getLocaleText('FWC.29d11787579408118', {p0: index + 1}),
|
|
675
676
|
value: nestedBlockMetricValue(block),
|
|
676
677
|
detail: nestedBlockDataSummary(block),
|
|
677
678
|
tone: nestedBlockNeedsHumanIntervention(block) ? 'warning' : nestedBlockToneFromStatus(nestedBlockClassifierText(block)),
|
|
@@ -681,14 +682,14 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
681
682
|
if (sourceItems.length === 0) {
|
|
682
683
|
return [{
|
|
683
684
|
id: 'recognized',
|
|
684
|
-
title: '
|
|
685
|
-
items: [{ label: '等待业务口径', value: '
|
|
685
|
+
title: getLocaleText('FWC.0c771787581434506'),
|
|
686
|
+
items: [{ label: '等待业务口径', value: getLocaleText('FWC.895b1787581591272'), detail: getLocaleText('FWC.eee01787579250859'), tone: 'warning' }],
|
|
686
687
|
}];
|
|
687
688
|
}
|
|
688
689
|
const groupCount = Math.min(3, Math.max(1, sourceItems.length));
|
|
689
690
|
return Array.from({ length: groupCount }, (_, groupIndex) => ({
|
|
690
691
|
id: `recognized-${groupIndex + 1}`,
|
|
691
|
-
title: groupCount === 1 ? '
|
|
692
|
+
title: groupCount === 1 ? getLocaleText('FWC.0c771787581434506') : getLocaleText('FWC.2c351787579408135', {p0: groupIndex + 1}),
|
|
692
693
|
items: sourceItems.filter((_, itemIndex) => itemIndex % groupCount === groupIndex),
|
|
693
694
|
})).filter((group) => group.items.length > 0);
|
|
694
695
|
}
|
|
@@ -715,9 +716,9 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
715
716
|
const rawItems = block ? nestedBlockRawItems(block) : [];
|
|
716
717
|
if (rawItems.length > 0 && !nestedBlockItemsLookTooWeakForVisualKind(rawItems, 'progressList')) return rawItems.slice(0, 4);
|
|
717
718
|
return [
|
|
718
|
-
{ label: '
|
|
719
|
-
{ label: '
|
|
720
|
-
{ label: '
|
|
719
|
+
{ label: getLocaleText('FWC.fd081787581435030'), value: '72%', progress: 72, tone: 'info' },
|
|
720
|
+
{ label: getLocaleText('FWC.60141787581432415'), value: '64%', progress: 64, tone: 'warning' },
|
|
721
|
+
{ label: getLocaleText('FWC.b01d1787581111015'), value: '58%', progress: 58, tone: 'critical' },
|
|
721
722
|
];
|
|
722
723
|
}
|
|
723
724
|
|
|
@@ -731,12 +732,12 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
731
732
|
const rawItems = block ? nestedBlockRawItems(block) : [];
|
|
732
733
|
if (rawItems.length >= 4 && !nestedBlockItemsLookTooWeak(rawItems)) return rawItems.slice(0, 6);
|
|
733
734
|
return [
|
|
734
|
-
{ label: '
|
|
735
|
-
{ label: '
|
|
736
|
-
{ label: '
|
|
737
|
-
{ label: '
|
|
738
|
-
{ label: '
|
|
739
|
-
{ label: '
|
|
735
|
+
{ label: getLocaleText('FWC.382a1787581653436'), value: '62', progress: 52, tone: 'info' },
|
|
736
|
+
{ label: getLocaleText('FWC.df7d1787581654466'), value: '68', progress: 60, tone: 'info' },
|
|
737
|
+
{ label: getLocaleText('FWC.0c4d1787581655195'), value: '74', progress: 68, tone: 'healthy' },
|
|
738
|
+
{ label: getLocaleText('FWC.c34a1787581660100'), value: '71', progress: 64, tone: 'warning' },
|
|
739
|
+
{ label: getLocaleText('FWC.6b5f1787581660813'), value: '79', progress: 76, tone: 'healthy' },
|
|
740
|
+
{ label: getLocaleText('FWC.6bef1787581661151'), value: '83', progress: 84, tone: 'healthy' },
|
|
740
741
|
];
|
|
741
742
|
}
|
|
742
743
|
|
|
@@ -748,17 +749,17 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
748
749
|
function referenceOperationHealthStructureBlock(data: CustomCanvasData): CustomCanvasNestedBlock {
|
|
749
750
|
return referenceNestedBlock(data, /结构占比|收入结构|业务结构|渠道结构|区域结构/) ?? {
|
|
750
751
|
id: 'reference-operation-health-structure',
|
|
751
|
-
title: '
|
|
752
|
+
title: getLocaleText('FWC.97181787581328948'),
|
|
752
753
|
kind: 'chart',
|
|
753
754
|
slot: 'body',
|
|
754
755
|
dataBindingStatus: 'none',
|
|
755
756
|
data: {
|
|
756
757
|
visualKind: 'donut',
|
|
757
758
|
items: [
|
|
758
|
-
{ label: '
|
|
759
|
-
{ label: '
|
|
760
|
-
{ label: '
|
|
761
|
-
{ label: '
|
|
759
|
+
{ label: getLocaleText('FWC.7fad1787581435555'), value: '46%', share: 46, tone: 'info' },
|
|
760
|
+
{ label: getLocaleText('FWC.589b1787581436079'), value: '28%', share: 28, tone: 'healthy' },
|
|
761
|
+
{ label: getLocaleText('FWC.718e1787581436270'), value: '16%', share: 16, tone: 'warning' },
|
|
762
|
+
{ label: getLocaleText('FWC.0da91787581661202'), value: '10%', share: 10, tone: 'neutral' },
|
|
762
763
|
],
|
|
763
764
|
},
|
|
764
765
|
};
|
|
@@ -784,7 +785,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
784
785
|
return nestedBlocks
|
|
785
786
|
.filter((block) => pattern.test(nestedBlockClassifierText(block)))
|
|
786
787
|
.map((block, index) => ({
|
|
787
|
-
label: block.title ||
|
|
788
|
+
label: block.title || getLocaleText('FWC.1c631787579589361', {p0: index + 1}),
|
|
788
789
|
value: nestedBlockMetricValue(block),
|
|
789
790
|
detail: nestedBlockDataSummary(block),
|
|
790
791
|
tone: nestedBlockNeedsHumanIntervention(block) ? 'warning' : 'healthy',
|
|
@@ -915,10 +916,10 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
915
916
|
return [{ label: block.title, ...displayText, tone: nestedBlockToneFromStatus(text), nestedBlock: block }];
|
|
916
917
|
});
|
|
917
918
|
const fallbackRows = [
|
|
918
|
-
{ label: '
|
|
919
|
-
{ label: '
|
|
920
|
-
{ label: '
|
|
921
|
-
{ label: '
|
|
919
|
+
{ label: getLocaleText('FWC.999f1787581567881'), detail: getLocaleText('FWC.11fb1787579734265'), tone: 'critical' },
|
|
920
|
+
{ label: getLocaleText('FWC.7cfa1787581426117'), detail: getLocaleText('FWC.a5761787579521593'), tone: 'warning' },
|
|
921
|
+
{ label: getLocaleText('FWC.c49b1787581661254'), detail: getLocaleText('FWC.0dd71787579597507'), tone: 'warning' },
|
|
922
|
+
{ label: getLocaleText('FWC.72f31787581591957'), detail: getLocaleText('FWC.8ecb1787579596897'), tone: 'warning' },
|
|
922
923
|
];
|
|
923
924
|
return (rows.length > 0 ? rows : fallbackRows).slice(0, 4);
|
|
924
925
|
}
|
|
@@ -948,7 +949,7 @@ export function createReferenceRiskAndStrategyBindings(context: ReferenceRiskStr
|
|
|
948
949
|
* @returns Count label based on recognized risk rows.
|
|
949
950
|
*/
|
|
950
951
|
function referenceStrategyKpiRiskSummaryLabel(data: CustomCanvasData): string {
|
|
951
|
-
return
|
|
952
|
+
return getLocaleText('FWC.a9661787579521611', {p0: referenceStrategyKpiRiskItems(data).length});
|
|
952
953
|
}
|
|
953
954
|
|
|
954
955
|
/**
|