This commit is contained in:
@@ -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 # 用於模板顯示
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user