From c5cbc12b13db8e46f31ef1848f0d3d5652503148 Mon Sep 17 00:00:00 2001 From: OoO Date: Wed, 13 May 2026 19:07:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=88=E4=BD=8F=E8=A7=80=E6=B8=AC=E5=8F=B0?= =?UTF-8?q?=E9=BB=9E=E9=99=A3=E7=B5=82=E7=AB=AF=E5=B1=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 2 +- scripts/check_observability_ui.py | 27 ++++ static/css/observability-system.css | 168 ------------------------ web/static/css/observability-system.css | 168 ------------------------ 4 files changed, 28 insertions(+), 337 deletions(-) diff --git a/config.py b/config.py index 3ab0442..0007471 100644 --- a/config.py +++ b/config.py @@ -320,7 +320,7 @@ YOUTUBE_API_KEY = os.getenv('YOUTUBE_API_KEY', '') # ========================================== # 系統版本與路徑 # ========================================== -SYSTEM_VERSION = "V10.119" +SYSTEM_VERSION = "V10.120" LOG_FILE_PATH = os.path.join(BASE_DIR, 'logs/system.log') public_url = PUBLIC_URL # 用於模板顯示 diff --git a/scripts/check_observability_ui.py b/scripts/check_observability_ui.py index 39d872c..9f87805 100644 --- a/scripts/check_observability_ui.py +++ b/scripts/check_observability_ui.py @@ -77,6 +77,8 @@ TEMPLATE_RULES = [ REQUIRED_CSS_SNIPPETS = [ "--obs-title-size", "--obs-value-size", + "--obs-matrix-dot", + "v3.10 terminal dot-matrix layer", ".momo-observability-mode", ".obs-chart-frame", ".obs-chart-frame-tall", @@ -168,6 +170,31 @@ def scan_css() -> list[str]: if snippet not in text: findings.append(f"{CSS_PATH}: missing required token/class `{snippet}`") + terminal_marker = ( + "/* v3.10 terminal dot-matrix layer: this must stay at EOF to win the cascade. */" + ) + marker_count = text.count(terminal_marker) + if marker_count != 1: + findings.append( + f"{CSS_PATH}: expected exactly one terminal dot-matrix layer, found {marker_count}" + ) + else: + marker_pos = text.rfind(terminal_marker) + tail = text[marker_pos:] + if len(tail) > 4200: + findings.append( + f"{CSS_PATH}: terminal dot-matrix layer must remain near EOF so later rules cannot override it" + ) + + for legacy_marker in ( + "v3.8 dot-matrix integration", + "v3.9 final dot-matrix layer", + ): + if legacy_marker in text: + findings.append( + f"{CSS_PATH}: remove obsolete `{legacy_marker}`; keep only the v3.10 terminal layer" + ) + web_path = ROOT / WEB_CSS_PATH if not web_path.exists(): findings.append( diff --git a/static/css/observability-system.css b/static/css/observability-system.css index 00245c1..7cb5183 100644 --- a/static/css/observability-system.css +++ b/static/css/observability-system.css @@ -1871,174 +1871,6 @@ } } -/* v3.9 final dot-matrix layer: keep the texture after all legacy neutralizers. */ -.momo-observability-mode { - --obs-matrix-dot: radial-gradient(color-mix(in srgb, var(--obs-accent) 14%, transparent) 0.85px, transparent 0.95px); - --obs-matrix-dot-soft: radial-gradient(color-mix(in srgb, var(--obs-muted) 12%, transparent) 0.75px, transparent 0.9px); - --obs-matrix-size: 13px 13px; -} - -.momo-observability-mode :is( - .obs-hero, - .agent-hero, - .biz-command, - .runtime-hero, - .calls-hero, - .gov-hero, - .gate-hero, - .rag-hero, - .qa-hero, - .quality-hero, - .ppt-hero, - .obs-signal, - .agent-signal, - .biz-signal, - .runtime-signal, - .calls-signal, - .gov-signal, - .gate-signal, - .rag-signal, - .qa-signal, - .quality-signal, - .ppt-signal -) { - background-image: var(--obs-matrix-dot) !important; - background-position: 0 0 !important; - background-size: var(--obs-matrix-size) !important; -} - -.momo-observability-mode :is( - .obs-panel, - .agent-panel, - .biz-panel, - .runtime-panel, - .calls-panel, - .gov-panel, - .gate-panel, - .rag-panel, - .qa-panel, - .quality-panel, - .ppt-panel, - .biz-filter-card, - .biz-alert-strip, - .biz-strategy-card, - .biz-mini-metric, - .biz-decision-card, - .episode-card, - .similar-box, - .fix-card, - .root-card, - .rec-card, - .agent-card, - .caller-card, - .host-lane, - .strategy-card, - .obs-route-card, - .obs-pill, - [class$="-pill"], - .biz-badge, - .badge -) { - background-image: var(--obs-matrix-dot-soft) !important; - background-position: 0 0 !important; - background-size: var(--obs-matrix-size) !important; -} - -/* v3.8 dot-matrix integration: keep this after v3.4-v3.7 overrides. */ -.momo-observability-mode { - --obs-matrix-dot: radial-gradient(color-mix(in srgb, var(--obs-accent) 14%, transparent) 0.85px, transparent 0.95px); - --obs-matrix-dot-soft: radial-gradient(color-mix(in srgb, var(--obs-muted) 12%, transparent) 0.75px, transparent 0.9px); - --obs-matrix-size: 13px 13px; -} - -.momo-observability-mode :is( - .obs-hero, - .agent-hero, - .biz-command, - .runtime-hero, - .calls-hero, - .gov-hero, - .gate-hero, - .rag-hero, - .qa-hero, - .quality-hero, - .ppt-hero, - .obs-panel, - .agent-panel, - .biz-panel, - .runtime-panel, - .calls-panel, - .gov-panel, - .gate-panel, - .rag-panel, - .qa-panel, - .quality-panel, - .ppt-panel, - .obs-signal, - .agent-signal, - .biz-signal, - .runtime-signal, - .calls-signal, - .gov-signal, - .gate-signal, - .rag-signal, - .qa-signal, - .quality-signal, - .ppt-signal, - .biz-filter-card, - .biz-alert-strip, - .biz-strategy-card, - .biz-mini-metric, - .biz-decision-card, - .episode-card, - .similar-box, - .fix-card, - .root-card, - .rec-card, - .agent-card, - .caller-card, - .host-lane, - .strategy-card, - .obs-route-card -) { - background-color: var(--momo-bg-surface, #faf6ec) !important; - background-image: var(--obs-matrix-dot) !important; - background-position: 0 0 !important; - background-size: var(--obs-matrix-size) !important; -} - -.momo-observability-mode :is( - .obs-panel, - .agent-panel, - .biz-panel, - .runtime-panel, - .calls-panel, - .gov-panel, - .gate-panel, - .rag-panel, - .qa-panel, - .quality-panel, - .ppt-panel, - .biz-filter-card, - .biz-strategy-card, - .episode-card, - .host-lane, - .caller-card, - .agent-card, - .rec-card, - .fix-card, - .root-card, - .strategy-card -) { - background-image: var(--obs-matrix-dot-soft) !important; -} - -.momo-observability-mode :is(.obs-pill, [class$="-pill"], .biz-badge, .badge) { - background-image: var(--obs-matrix-dot-soft) !important; - background-position: 0 0 !important; - background-size: 10px 10px !important; -} - /* v3.3 observability hardening: shared visual system, bounded data surfaces, mobile-safe widths. */ .momo-observability-mode { --obs-title-size: 1.8rem; diff --git a/web/static/css/observability-system.css b/web/static/css/observability-system.css index 00245c1..7cb5183 100644 --- a/web/static/css/observability-system.css +++ b/web/static/css/observability-system.css @@ -1871,174 +1871,6 @@ } } -/* v3.9 final dot-matrix layer: keep the texture after all legacy neutralizers. */ -.momo-observability-mode { - --obs-matrix-dot: radial-gradient(color-mix(in srgb, var(--obs-accent) 14%, transparent) 0.85px, transparent 0.95px); - --obs-matrix-dot-soft: radial-gradient(color-mix(in srgb, var(--obs-muted) 12%, transparent) 0.75px, transparent 0.9px); - --obs-matrix-size: 13px 13px; -} - -.momo-observability-mode :is( - .obs-hero, - .agent-hero, - .biz-command, - .runtime-hero, - .calls-hero, - .gov-hero, - .gate-hero, - .rag-hero, - .qa-hero, - .quality-hero, - .ppt-hero, - .obs-signal, - .agent-signal, - .biz-signal, - .runtime-signal, - .calls-signal, - .gov-signal, - .gate-signal, - .rag-signal, - .qa-signal, - .quality-signal, - .ppt-signal -) { - background-image: var(--obs-matrix-dot) !important; - background-position: 0 0 !important; - background-size: var(--obs-matrix-size) !important; -} - -.momo-observability-mode :is( - .obs-panel, - .agent-panel, - .biz-panel, - .runtime-panel, - .calls-panel, - .gov-panel, - .gate-panel, - .rag-panel, - .qa-panel, - .quality-panel, - .ppt-panel, - .biz-filter-card, - .biz-alert-strip, - .biz-strategy-card, - .biz-mini-metric, - .biz-decision-card, - .episode-card, - .similar-box, - .fix-card, - .root-card, - .rec-card, - .agent-card, - .caller-card, - .host-lane, - .strategy-card, - .obs-route-card, - .obs-pill, - [class$="-pill"], - .biz-badge, - .badge -) { - background-image: var(--obs-matrix-dot-soft) !important; - background-position: 0 0 !important; - background-size: var(--obs-matrix-size) !important; -} - -/* v3.8 dot-matrix integration: keep this after v3.4-v3.7 overrides. */ -.momo-observability-mode { - --obs-matrix-dot: radial-gradient(color-mix(in srgb, var(--obs-accent) 14%, transparent) 0.85px, transparent 0.95px); - --obs-matrix-dot-soft: radial-gradient(color-mix(in srgb, var(--obs-muted) 12%, transparent) 0.75px, transparent 0.9px); - --obs-matrix-size: 13px 13px; -} - -.momo-observability-mode :is( - .obs-hero, - .agent-hero, - .biz-command, - .runtime-hero, - .calls-hero, - .gov-hero, - .gate-hero, - .rag-hero, - .qa-hero, - .quality-hero, - .ppt-hero, - .obs-panel, - .agent-panel, - .biz-panel, - .runtime-panel, - .calls-panel, - .gov-panel, - .gate-panel, - .rag-panel, - .qa-panel, - .quality-panel, - .ppt-panel, - .obs-signal, - .agent-signal, - .biz-signal, - .runtime-signal, - .calls-signal, - .gov-signal, - .gate-signal, - .rag-signal, - .qa-signal, - .quality-signal, - .ppt-signal, - .biz-filter-card, - .biz-alert-strip, - .biz-strategy-card, - .biz-mini-metric, - .biz-decision-card, - .episode-card, - .similar-box, - .fix-card, - .root-card, - .rec-card, - .agent-card, - .caller-card, - .host-lane, - .strategy-card, - .obs-route-card -) { - background-color: var(--momo-bg-surface, #faf6ec) !important; - background-image: var(--obs-matrix-dot) !important; - background-position: 0 0 !important; - background-size: var(--obs-matrix-size) !important; -} - -.momo-observability-mode :is( - .obs-panel, - .agent-panel, - .biz-panel, - .runtime-panel, - .calls-panel, - .gov-panel, - .gate-panel, - .rag-panel, - .qa-panel, - .quality-panel, - .ppt-panel, - .biz-filter-card, - .biz-strategy-card, - .episode-card, - .host-lane, - .caller-card, - .agent-card, - .rec-card, - .fix-card, - .root-card, - .strategy-card -) { - background-image: var(--obs-matrix-dot-soft) !important; -} - -.momo-observability-mode :is(.obs-pill, [class$="-pill"], .biz-badge, .badge) { - background-image: var(--obs-matrix-dot-soft) !important; - background-position: 0 0 !important; - background-size: 10px 10px !important; -} - /* v3.3 observability hardening: shared visual system, bounded data surfaces, mobile-safe widths. */ .momo-observability-mode { --obs-title-size: 1.8rem;