有效授权
{{ dashboardMetric('active') }}
在线账号
{{ dashboardMetric('online_accounts') }}
已过期
{{ dashboardMetric('expired') }}
已封禁
{{ dashboardMetric('banned') }}
授权汇总
按正式 MEM 授权口径统计,点击应用可直接进入对应授权列表。
授权总数{{ dashboardMetric('total') }}
已绑定账号{{ dashboardMetric('bound_accounts') }}
未使用授权{{ dashboardMetric('unused') }}
{{ s.row.display_name || s.row.name }}{{ s.row.name }}
客户端授权失败(24 小时)
这里只统计已到达服务器的授权拒绝;网络断开不会被误算。
共 {{ stats.mem_authorization.auth_failures_24h?.total || 0 }} 次
最近 24 小时没有授权拒绝
{{ item.label }}
{{ item.error_code }}
{{ item.count }}
最近:{{ formatDate(item.last_seen_at) }}
操作日志
统计数据加载成功后显示操作日志
暂无操作日志
{{ formatDate(log.created_at) }}
{{ log.action }}
{{ log.details }}
我的应用
{{ s.row.display_name }}
{{ s.row.name }}
机器黑名单 (硬件指纹)
SMBIOS: {{ s.row.smbios_uuid.slice(0,20) }}...
Disk: {{ s.row.disk_wwn.slice(0,20) }}{{ s.row.disk_wwn.length > 20 ? '...' : '' }}
MGuid: {{ s.row.machine_guid.slice(0,20) }}...
TPM: {{ s.row.tpm_ek_hash.slice(0,16) }}...
运行时资源
管理员列表
站点配置
这里的内容会被客户端读取后展示在卡密对话框 / 主面板顶栏 / 关于页等位置. 改完立即生效, 客户端下次启动时拉到新值.
{{ s.row.key }}
{{ siteConfigKeyHints[s.row.key] || '' }}
修改密码
当前账号
{{ loginForm.username }} {{ userRole }}
授权中心
{{ currentMemApp.display_name }}
按应用拆分授权,当前应用的卡密、绑定账号和在线人数只在本页内聚合。
授权总数
{{ memSummary.total }}
有效授权
{{ memSummary.active }}
在线账号
{{ memSummary.online_accounts }}
已绑账号
{{ memSummary.bound_accounts }}
封禁授权
{{ memSummary.banned }}
未发放
{{ memSummary.unused }}
机器码有效
{{ memSummary.profile_feature_active || 0 }}
当前只显示 {{ currentMemApp?.display_name || '-' }} 的授权数据;新增应用后可在右上角切换,避免不同产品的卡密混在一起。
{{ s.row.key }}{{ s.row.note }}
在线 {{ s.row.online_count }}
{{ profileFeatureDaysText(s.row) }}
{{ s.row.duration_hours }} 小时
{{ s.row.expiry_date ? formatDate(s.row.expiry_date) : '未激活' }}
{{ s.row.source_key_hint }}{{ s.row.key_hint }}{{ s.row.consumed_by_license_hint || '-' }}用户报错日志
这里只展示客户端已签名上报的崩溃、后台任务异常和突然终止诊断,不触发封卡、封设备或 IP 限制。
退出性质{{ crashKindLabel(crashReport(s.row).kind) }}
{{ crashReport(s.row).kind || '-' }}事件标记
{{ crashReport(s.row).incidentEvent || '-' }}异常码 / HRESULT
{{ crashReport(s.row).wer.exceptionCode || crashReport(s.row).hresult || '-' }}报告编号
{{ crashReport(s.row).reportId || '-' }}最后动作{{ crashActionLabel(crashReport(s.row).lastAction) }}
{{ crashReport(s.row).lastAction || '-' }}崩溃时未完成{{ crashActionLabel(crashReport(s.row).unfinishedAction) }} 未发现未完成动作
{{ crashReport(s.row).unfinishedAction || '-' }}原始客户端
{{ crashReport(s.row).originBuildId || '-' }}{{ shortHash(crashReport(s.row).originExeSha256, 16, 12) }}补传客户端
{{ crashReport(s.row).reporterBuildId || '-' }}{{ shortHash(crashReport(s.row).reporterExeSha256, 16, 12) }}进程与运行时间
{{ formatDurationMs(crashReport(s.row).uptimeMs) }}
PID {{ crashReport(s.row).processId || '-' }}{{ formatDurationMs(crashReport(s.row).uptimeMs) }}
最后存活 / 阶段开始{{ formatDate(crashReport(s.row).lastAliveAt) }}
{{ formatDate(crashReport(s.row).stageChangedAt) }}
{{ formatDate(crashReport(s.row).stageChangedAt) }}
Windows 故障模块
{{ crashReport(s.row).wer.faultModule || '-' }}{{ crashReport(s.row).wer.faultOffset || '-' }}Windows 报告
{{ crashReport(s.row).wer.matchBasis || '未匹配到 WER 元数据' }}
{{ crashReport(s.row).wer.reportId || '-' }}{{ crashReport(s.row).wer.matchBasis || '未匹配到 WER 元数据' }}
崩溃 Dump{{ crashDumpStatusLabel(crashReport(s.row).dump) }}
下载 Dump
查看原始脱敏详情
{{ memEventEvidenceJson(s.row) }}{{ crashReport(s.row).keyHint }}{{ shortHash(crashReport(s.row).hwid) }}{{ crashReport(s.row).exceptionType || '-' }}
{{ crashLogsError ? '当前未能读取报错日志' : '所选时间范围没有客户端异常报告' }}
重新刷新
查看最近 30 天
请确认后台服务和管理员会话正常后重试;读取失败不会被显示成“没有报错”。
支持崩溃遥测的新客户端会先在本机安全排队,并在下一次成功登录后签名回传。旧客户端或尚未重新登录的异常不会出现在这里。
安全中心
MEM 防护先按结论处理:强证据再复核封禁,旧版本先通知更新,过期卡密和弱信号只记录。
需要处理
{{ securityDecisionCount('handle') }}
强证据或已执行封禁,打开详情复核对象和原因。
需要更新
{{ securityDecisionCount('update') }}
旧版本、发布包不一致,先通知客户更新,不直接封禁。
仅观察
{{ securityDecisionCount('observe') }}
过期卡密、单次失败和弱信号,仅保留记录。
高级筛选与技术统计
事件 {{ memSecuritySummary.total }} · 严重 {{ memSecuritySummary.critical }} · 自动封禁 {{ memSecuritySummary.auto_bans }} · 只记录 {{ memSecuritySummary.record_only }} · 生效设备拒绝 {{ memSecuritySummary.active_denied_devices }} · IP 策略:仅审计
默认只显示时间、对象、结论和建议;点击行左侧箭头查看“为什么”和完整证据。
结论{{ securityDecisionLabel(s.row) }}
建议动作{{ securityRecommendedAction(s.row) }}
为什么{{ securityDecisionReason(s.row) }}
发生位置{{ s.row.detail ? securityDetail(s.row.detail) : '未提供额外位置' }}
触发事件{{ securityLabel(s.row.event_type, 'event') }}
警报编号
{{ s.row.alert_id || '无需告警' }}查看完整前因后果与原始证据
{{ memEventEvidenceJson(s.row) }}{{ s.row.key || '未知卡密' }}HWID {{ shortHash(s.row.hwid_sha256) }} · {{ s.row.ip || 'IP 未记录' }}{{ shortHash(s.row.hwid_sha256) }}
发布门禁状态
当前运行 {{ memReadinessLoading ? '检查中' : (!memReadinessLoaded ? (memReadinessError ? '读取失败' : '未检查') : (memReadiness.runtime_ok ? '正常' : '异常')) }}
{{ memReadinessLoading ? '正在读取现网运行条件' : (memReadinessLoaded ? (memReadinessError ? '本次复查未完成,继续显示上次结果' : (memReadiness.runtime_ok ? '现网运行条件已满足' : '存在影响现网运行的阻断项')) : (memReadinessError ? '未取得当前状态' : '尚未执行现网门禁检查')) }}
严格模式 {{ memReadinessLoading ? '检查中' : (!memReadinessLoaded ? (memReadinessError ? '读取失败' : '未检查') : (memReadiness.commercial_strict ? (memReadiness.strict_ready ? '正常' : '阻断') : '未启用')) }}
{{ memReadinessLoading ? '正在读取 strict 预检结果' : (memReadinessLoaded ? (memReadinessError ? '本次复查未完成,继续显示上次结果' : (memReadiness.commercial_strict ? '当前按严格门禁执行' : ((memReadiness.strict_blockers || []).length ? `预检发现 ${(memReadiness.strict_blockers || []).length} 项,展开查看` : '启用前仍需执行正式全量预检'))) : (memReadinessError ? '请点击复查重新读取' : '检查完成后显示严格模式状态')) }}
复查
最近检查:{{ formatDate(memReadinessCheckedAt) }}
当前运行问题
- {{ item }}
运行提醒
- {{ item }}
strict 配置参考与技术明细
这里展示当前配置的参考检查;严格模式关闭时不代表已经通过完整启用验收。正式启用时会重新检查保护器、发布门禁、运行自测和最终逆向复查是否形成同一 Build 的证明闭环;缺少门禁/运行自测/最终逆向复查证明会阻断部署。
允许名单:
{{ (memReadiness.allowlist_hashes || []).length }}生效哈希:
{{ (memReadiness.active_release_hashes || []).length }}期望签名主体:
{{ (memReadiness.expected_release_signers || []).length }}生效签名主体:
{{ (memReadiness.active_release_signers || []).length }}保护器:
{{ (memReadiness.active_release_protector_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}商业门禁:
{{ (memReadiness.active_release_gate_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}运行自测:
{{ (memReadiness.active_release_runtime_smoke_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}最终逆向复查:
{{ (memReadiness.active_release_final_reverse_audit_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}数据库连接池:
{{ memReadiness.db_pool_size || 0 }} + {{ memReadiness.db_pool_max_overflow || 0 }} = {{ memReadiness.db_pool_capacity || 0 }} / 最小 {{ memReadiness.db_min_pool_capacity || 0 }}中继内部认证:
{{ memReadiness.relay_internal_auth_configured ? '已配置' : '缺失' }}设备拒绝策略:
{{ securityLabel(memReadiness.device_deny_hit_action, 'action') }}, 公共机器码阈值 {{ memReadiness.device_deny_common_hwid_threshold || 0 }}, IP {{ securityLabel(memReadiness.device_deny_ip_policy || 'audit_only', 'policy') }}强制告警:
{{ memReadiness.security_alert_require_webhook ? '是' : '否' }}热路径索引:
{{ (memReadiness.present_hot_path_indexes || []).length }}/{{ ((memReadiness.present_hot_path_indexes || []).length + (memReadiness.missing_hot_path_indexes || []).length) }}后台资源:
{{ (memReadiness.admin_frontend_external_refs || []).length }} 外链 / {{ (memReadiness.admin_frontend_missing_assets || []).length }} 缺失 / {{ (memReadiness.admin_frontend_invalid_assets || []).length }} 无效操作审计:
{{ memReadiness.operation_audit_log_checked_rows || 0 }}/{{ memReadiness.operation_audit_log_rows || 0 }} 已检查, {{ memReadiness.operation_audit_log_broken_rows || 0 }} 破损篡改审计:
{{ memReadiness.tamper_event_audit_checked_rows || 0 }}/{{ memReadiness.tamper_event_audit_rows || 0 }} 已检查, {{ memReadiness.tamper_event_audit_broken_rows || 0 }} 破损SQLite 残留:
{{ (memReadiness.runtime_sqlite_artifacts || []).join(',') || (memReadiness.runtime_sqlite_artifacts_checked ? '已清理' : '未检查') }}
严格模式阻断项
- {{ item }}
警告项
- {{ item }}