Просмотр исходного кода

fix(s8): clarify monitoring card semantics for demo

- 模块卡主标题「累计异常数」→「当前待处理异常」,与三色数字(绿正常 / 黄关注 / 红严重)口径一致
- 三色数字补 valueLabels:正常执行订单 / 关注异常 / 严重异常,避免「20」被误读为异常数
- Delivery / Production / Supply 右侧近 24h 类型卡均时 / 关闭率统一显示 "--",避免与待处理数量分母不一致引发误读
- Overview「S8 功能异常多维分析」装饰文案「最近24小时 / 实时快照」改为「累计统计」,与实际全量口径一致
YY968XX 3 месяцев назад
Родитель
Сommit
5be4885bdb

+ 9 - 5
Web/src/views/aidop/s8/monitoring/S8MonitoringDeliveryPage.vue

@@ -49,13 +49,15 @@
 								<span class="anomaly-type-card__count">{{ formatInteger(item.total) }}</span>
 							</div>
 							<div class="anomaly-type-card__metrics">
+								<!-- S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:cell-data 近24h 窗口下,均时/关闭率分母与待处理数量口径不一致,
+								     演示前先统一显示 `--` 避免误读,待 cell-data 接通真实近24h 指标后恢复。 -->
 								<div class="anomaly-type-card__metric">
 									<div class="anomaly-type-card__metric-label">均时</div>
-									<div class="anomaly-type-card__metric-value">{{ formatHours(item.avgProcessHours) }}</div>
+									<div class="anomaly-type-card__metric-value">--</div>
 								</div>
 								<div class="anomaly-type-card__metric">
 									<div class="anomaly-type-card__metric-label">关闭率</div>
-									<div class="anomaly-type-card__metric-value anomaly-type-card__metric-value--accent">{{ formatPercent(item.closeRate) }}</div>
+									<div class="anomaly-type-card__metric-value anomaly-type-card__metric-value--accent">--</div>
 								</div>
 							</div>
 						</article>
@@ -202,10 +204,10 @@ const moduleData = reactive<{ list: S8ModuleOrderSummary[] }>({ list: [] });
 const pageConfig = useS8PageConfigDriver({ pageCode: 'DELIVERY', pageCodePrefix: 'DELIVERY' });
 
 // fallback 硬编码(不删除,作 page-config 失败时回退)
-// S8-MONITORING-PAGES-STAGE-CARD-SEMANTICS-UNIFY-1:主指标统一为「累计异常数」+ value=total,与 overview 口径一致。
+// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:主指标统一改「当前待处理异常」,与三色数字语义一致。
 const STAGE_META_FALLBACK = [
-	{ code: 'S1', title: '销售评审', icon: Checked as Component, metricLabel: '累计异常数' },
-	{ code: 'S7', title: '订单交付', icon: Van as Component,     metricLabel: '累计异常数' },
+	{ code: 'S1', title: '销售评审', icon: Checked as Component, metricLabel: '当前待处理异常' },
+	{ code: 'S7', title: '订单交付', icon: Van as Component,     metricLabel: '当前待处理异常' },
 ] as const;
 
 const ANOMALY_TYPES_FALLBACK: ReadonlyArray<{ key: string; label: string }> = [
@@ -269,6 +271,8 @@ const stageCards = computed(() =>
 			value: formatInteger(total),
 			// S8-DASHBOARD-MODULE-TRICOLOR-SEMANTICS-1:三色数字(绿正常 / 黄关注 / 红严重)
 			values: buildModuleTriColorStats({ total: red + yellow, red, yellow }),
+			// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:明确三色语义。
+			valueLabels: { green: '正常执行订单', yellow: '关注异常', red: '严重异常' },
 			healthRate: closeRate,
 			healthRateText: hasSamples ? undefined : '--',
 			statusLabel: `${red + yellow} 异常`,

+ 12 - 9
Web/src/views/aidop/s8/monitoring/S8MonitoringOverviewPage.vue

@@ -98,8 +98,8 @@
 						</div>
 
 					<div class="s8-monitor__tabs" aria-hidden="true">
-						<span class="s8-monitor__tab">最近24小时</span>
-						<span class="s8-monitor__tab s8-monitor__tab--active">实时快照</span>
+						<!-- S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:原「最近24小时 / 实时快照」装饰文案与实际全量口径不符,改为「累计统计」。 -->
+						<span class="s8-monitor__tab s8-monitor__tab--active">累计统计</span>
 					</div>
 				</div>
 
@@ -196,14 +196,15 @@ const numberFormatter = new Intl.NumberFormat('zh-CN');
 
 // S8-MODULE-CARD-METRIC-LABEL-UNIFY-1:S1-S7 主指标统一为「累计异常数」+ valueMode=total,
 // 取 orderGrid.modules[].total 直显,避免同组卡片语义不一致影响演示叙事。
+// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:模块卡主标题改「当前待处理异常」,与三色数字(正常执行订单/关注异常/严重异常)口径一致。
 const STAGE_META_FALLBACK: ReadonlyArray<StageMeta> = [
-	{ code: 'S1', title: '销售评审', icon: Checked, metricLabel: '累计异常数', valueMode: 'total' },
-	{ code: 'S2', title: '计划排产', icon: TrendCharts, metricLabel: '累计异常数', valueMode: 'total' },
-	{ code: 'S3', title: '物料备料', icon: ShoppingBag, metricLabel: '累计异常数', valueMode: 'total' },
-	{ code: 'S4', title: '生产制造', icon: Tools, metricLabel: '累计异常数', valueMode: 'total' },
-	{ code: 'S5', title: '质量检测', icon: DataAnalysis, metricLabel: '累计异常数', valueMode: 'total' },
-	{ code: 'S6', title: '总装入库', icon: Box, metricLabel: '累计异常数', valueMode: 'total' },
-	{ code: 'S7', title: '订单交付', icon: Van, metricLabel: '累计异常数', valueMode: 'total' },
+	{ code: 'S1', title: '销售评审', icon: Checked, metricLabel: '当前待处理异常', valueMode: 'total' },
+	{ code: 'S2', title: '计划排产', icon: TrendCharts, metricLabel: '当前待处理异常', valueMode: 'total' },
+	{ code: 'S3', title: '物料备料', icon: ShoppingBag, metricLabel: '当前待处理异常', valueMode: 'total' },
+	{ code: 'S4', title: '生产制造', icon: Tools, metricLabel: '当前待处理异常', valueMode: 'total' },
+	{ code: 'S5', title: '质量检测', icon: DataAnalysis, metricLabel: '当前待处理异常', valueMode: 'total' },
+	{ code: 'S6', title: '总装入库', icon: Box, metricLabel: '当前待处理异常', valueMode: 'total' },
+	{ code: 'S7', title: '订单交付', icon: Van, metricLabel: '当前待处理异常', valueMode: 'total' },
 ];
 
 const CATEGORY_DEFS_FALLBACK: ReadonlyArray<{ key: string; title: string; icon: Component }> = [
@@ -507,6 +508,8 @@ function buildStageCard(
 		// S8-DASHBOARD-MODULE-TRICOLOR-SEMANTICS-1:三色数字(绿正常 / 黄关注 / 红严重)
 		// 全部为自然数;warning + serious = 异常总数;绿色暂用 DEFAULT_NORMAL_WORK_ORDER_COUNT。
 		values: buildModuleTriColorStats({ total: anomalyCount, red, yellow }),
+		// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:明确三色语义,避免「20」被误读为异常数。
+		valueLabels: { green: '正常执行订单', yellow: '关注异常', red: '严重异常' },
 		healthRate: closeRate,
 		healthRateText: hasSamples ? undefined : '--',
 		statusLabel: timeout > 0 ? `${timeout} 超时` : `${anomalyCount} 异常`,

+ 10 - 6
Web/src/views/aidop/s8/monitoring/S8MonitoringProductionPage.vue

@@ -49,13 +49,15 @@
 								<span class="anomaly-type-card__count">{{ formatInteger(item.total) }}</span>
 							</div>
 							<div class="anomaly-type-card__metrics">
+								<!-- S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:cell-data 近24h 窗口下,均时/关闭率分母与待处理数量口径不一致,
+								     演示前先统一显示 `--` 避免误读,待 cell-data 接通真实近24h 指标后恢复。 -->
 								<div class="anomaly-type-card__metric">
-									<div class="anomaly-type-card__metric-label">异常数</div>
-									<div class="anomaly-type-card__metric-value">{{ formatRate(item.avgProcessHours) }}</div>
+									<div class="anomaly-type-card__metric-label">均时</div>
+									<div class="anomaly-type-card__metric-value">--</div>
 								</div>
 								<div class="anomaly-type-card__metric">
 									<div class="anomaly-type-card__metric-label">关闭率</div>
-									<div class="anomaly-type-card__metric-value anomaly-type-card__metric-value--accent">{{ formatPercent(item.closeRate) }}</div>
+									<div class="anomaly-type-card__metric-value anomaly-type-card__metric-value--accent">--</div>
 								</div>
 							</div>
 						</article>
@@ -200,10 +202,10 @@ const moduleData = reactive<{ list: S8ModuleOrderSummary[] }>({ list: [] });
 // ─── G-09 一期 Part D:page-config driver 接入 ─────────────────────────
 const pageConfig = useS8PageConfigDriver({ pageCode: 'PRODUCTION', pageCodePrefix: 'PRODUCTION' });
 
-// S8-MONITORING-PAGES-STAGE-CARD-SEMANTICS-UNIFY-1:主指标统一为「累计异常数」+ value=total
+// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:主指标统一改「当前待处理异常」,与三色数字语义一致
 const STAGE_META_FALLBACK = [
-	{ code: 'S2', title: '计划排产', icon: TrendCharts as Component, metricLabel: '累计异常数' },
-	{ code: 'S6', title: '总装入库', icon: Box as Component,         metricLabel: '累计异常数' },
+	{ code: 'S2', title: '计划排产', icon: TrendCharts as Component, metricLabel: '当前待处理异常' },
+	{ code: 'S6', title: '总装入库', icon: Box as Component,         metricLabel: '当前待处理异常' },
 ] as const;
 
 const ANOMALY_TYPES_FALLBACK: ReadonlyArray<{ key: string; label: string }> = [
@@ -263,6 +265,8 @@ const stageCards = computed(() =>
 			value: formatInteger(total),
 			// S8-DASHBOARD-MODULE-TRICOLOR-SEMANTICS-1:三色数字(绿正常 / 黄关注 / 红严重)
 			values: buildModuleTriColorStats({ total: red + yellow, red, yellow }),
+			// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:明确三色语义。
+			valueLabels: { green: '正常执行订单', yellow: '关注异常', red: '严重异常' },
 			healthRate: closeRate,
 			healthRateText: hasSamples ? undefined : '--',
 			statusLabel: `${red + yellow} 异常`,

+ 10 - 10
Web/src/views/aidop/s8/monitoring/S8MonitoringSupplyPage.vue

@@ -48,14 +48,13 @@
 								<span class="anomaly-type-card__name">{{ item.label }}</span>
 								<span class="anomaly-type-card__count">{{ formatInteger(item.total) }}</span>
 							</div>
+							<!-- S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:cell-data 近24h 窗口下,关闭率分母与待处理数量口径不一致,
+							     演示前先统一显示 `--`,进度条置 0;待 cell-data 接通真实近24h 指标后恢复。 -->
 							<div class="anomaly-type-card__bar-row">
 								<div class="anomaly-type-card__bar-track">
-									<div
-										class="anomaly-type-card__bar-fill"
-										:style="{ width: `${Math.min(item.closeRate, 100)}%` }"
-									/>
+									<div class="anomaly-type-card__bar-fill" :style="{ width: '0%' }" />
 								</div>
-								<span class="anomaly-type-card__bar-label">关闭率 {{ formatPercent(item.closeRate) }}</span>
+								<span class="anomaly-type-card__bar-label">关闭率 --</span>
 							</div>
 						</article>
 					</div>
@@ -205,12 +204,11 @@ const moduleData = reactive<{ list: S8ModuleOrderSummary[] }>({ list: [] });
 // ─── G-09 一期 Part D:page-config driver 接入 ─────────────────────────
 const pageConfig = useS8PageConfigDriver({ pageCode: 'SUPPLY', pageCodePrefix: 'SUPPLY' });
 
-// S8-MONITORING-PAGES-STAGE-CARD-SEMANTICS-UNIFY-1:主指标统一为「累计异常数」+ value=total。
-// S4 不再用 avgHours 作主数字;S5 不再用 closeRate% 作主数字;均时/闭环率改为底部 wideRateLabel 展示。
+// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:主指标统一改「当前待处理异常」,与三色数字语义一致。
 const STAGE_META_FALLBACK = [
-	{ code: 'S3', title: '物料备料', icon: ShoppingBag as Component,  metricLabel: '累计异常数' },
-	{ code: 'S4', title: '生产制造', icon: Tools as Component,        metricLabel: '累计异常数' },
-	{ code: 'S5', title: '质量检测', icon: DataAnalysis as Component, metricLabel: '累计异常数' },
+	{ code: 'S3', title: '物料备料', icon: ShoppingBag as Component,  metricLabel: '当前待处理异常' },
+	{ code: 'S4', title: '生产制造', icon: Tools as Component,        metricLabel: '当前待处理异常' },
+	{ code: 'S5', title: '质量检测', icon: DataAnalysis as Component, metricLabel: '当前待处理异常' },
 ] as const;
 
 const ANOMALY_TYPES_FALLBACK: ReadonlyArray<{ key: string; label: string }> = [
@@ -275,6 +273,8 @@ const stageCards = computed(() =>
 			value: formatInteger(total),
 			// S8-DASHBOARD-MODULE-TRICOLOR-SEMANTICS-1:三色数字(绿正常 / 黄关注 / 红严重)
 			values: buildModuleTriColorStats({ total: red + yellow, red, yellow }),
+			// S8-MONITORING-DEMO-SEMANTICS-CLOSURE-1:明确三色语义。
+			valueLabels: { green: '正常执行订单', yellow: '关注异常', red: '严重异常' },
 			healthRate: closeRate,
 			healthRateText: hasSamples ? undefined : '--',
 			statusLabel: `${red + yellow} 异常`,