守住觀測台點陣終端層
All checks were successful
CD Pipeline / deploy (push) Successful in 58s

This commit is contained in:
OoO
2026-05-13 19:07:44 +08:00
parent 46e819a020
commit c5cbc12b13
4 changed files with 28 additions and 337 deletions

View File

@@ -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 # 用於模板顯示

View File

@@ -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(

View File

@@ -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;

View File

@@ -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;