Files
MeshSate/app/templates/_nav_style.html
zhaolei 16f134e328 feat: MeshSafe 文件摆渡安全卫士 v1.0 初始提交
核心功能:
- 6 层检测管线: L0 结构分析 → L1 ClamAV → L2 文档深度检测 → L3 关键词匹配 → L4 YARA → L5 PE/二进制
- FastAPI + PostgreSQL + Redis + Docker Compose 架构
- 客户端 HMAC-SHA256 签名鉴权 + 限流 + 幂等性
- 控制台 UI (登录/Dashboard/诊断中心/策略管理/任务列表/测试中心/产品介绍页)
- 三层诊断定时器 (error_scan 30s / db_aggregate 30s / container_check 5min)

并发与稳定性修复:
- 诊断定时器 Redis 时间槽位锁 (多 worker 同一槽位只有一个执行)
- JSONL 存储 fcntl 跨进程排他锁 + 容错解码 + 原子重写
- 移除 SQLite fallback, 统一 PostgreSQL
- API_CLIENTS 脱敏为环境变量, .env 已 .gitignore
2026-10-28 19:07:11 +08:00

33 lines
2.0 KiB
HTML

{# ============================================================================
统一导航栏 + 徽章样式 —— 所有控制台页面 include 本文件
用法:<style>{% include "_nav_style.html" %}</style>
============================================================================ #}
nav { background: linear-gradient(135deg, #0f172a, #1e3a5f); color: white; padding: 0 24px; height: 54px;
display: flex; align-items: center; gap: 24px; box-shadow: 0 2px 12px rgba(15,23,42,.18); }
nav .logo { font-weight: 600; font-size: 15px; display: flex; align-items: center; gap: 8px; }
nav .logo-img { height: 28px; width: auto; border-radius: 5px; }
nav a { color: rgba(255,255,255,.72); text-decoration: none; font-size: 14px;
transition: color .2s; position: relative; padding: 0 2px; }
nav a:hover { color: #fff; }
nav a.active { color: #fff; font-weight: 500; }
nav a.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -18px;
height: 2px; background: #38bdf8; border-radius: 2px; }
nav .spacer { flex: 1; }
nav .user { font-size: 13px; color: rgba(255,255,255,.6); }
nav .user a { color: rgba(255,255,255,.6); margin-left: 12px; }
/* ---------- 统一风险徽章体系 ---------- */
.tag { font-size: 11px; padding: 2.5px 9px; border-radius: 5px; font-weight: 500; white-space: nowrap; }
.tag.ok { background: #dcfce7; color: #15803d; }
.tag.warn { background: #fef3c7; color: #b45309; }
.tag.notice{ background: #fff7ed; color: #c2410c; }
.tag.bad { background: #fee2e2; color: #b91c1c; }
.tag.err { background: #ede9fe; color: #6d28d9; }
.tag.muted { background: #f1f5f9; color: #64748b; }
.tag.plain { background: #f1f5f9; color: #475569; }
.tag.risk-high { background: #fee2e2; color: #b91c1c; }
.tag.risk-notice { background: #fff7ed; color: #c2410c; }
.tag.risk-safe { background: #dcfce7; color: #15803d; }
.tag.risk-fault { background: #ede9fe; color: #6d28d9; }
.tag.risk-idle { background: #f1f5f9; color: #64748b; }