feat(server/rbac): 权限页聚合迁移、最后管理员保护与配置原子落盘

PageCatalog 将 admin-config 重构为 6 大聚合分类,并加旧 key 别名兼容旧链接;
RbacStore 接入原子写 + 损坏备份,新增「最后管理员」保护,避免操作后系统无任何在岗管理员;
ConfigStore 改用 AtomicFile 持久化;新增 Infra/AtomicFile 原子写工具(临时名带 GUID 防并发)。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zhaowei.huang
2026-06-08 16:09:01 +08:00
co-authored by Cursor
parent 91318bd7f4
commit e77ee818f1
4 changed files with 155 additions and 20 deletions
+23 -16
View File
@@ -30,7 +30,6 @@ public static class PageCatalog
// ── 管理端 / Platform:概览 ──
new("admin-dashboard", "总览", "概览", ScopePlatform),
new("admin-map-monitor", "地图监控", "概览", ScopePlatform),
new("admin-playback", "调度回放", "概览", ScopePlatform),
// ── 管理端 / Platform:设计与编排 ──
new("admin-maps", "地图管理", "设计与编排", ScopePlatform),
@@ -40,23 +39,15 @@ public static class PageCatalog
new("admin-cars", "车辆管理", "设计与编排", ScopePlatform),
new("admin-processes", "进程管理", "设计与编排", ScopePlatform),
new("admin-scripts", "脚本管理", "设计与编排", ScopePlatform),
new("admin-missions", "任务编排", "设计与编排", ScopePlatform),
new("admin-task-templates", "任务编排", "设计与编排", ScopePlatform),
// ── 管理端 / Platform:平台配置中心 ──
new("admin-config-system", "系统级配置", "平台配置中心", ScopePlatform),
new("admin-config-integrations", "外部系统对接", "平台配置中心", ScopePlatform),
new("admin-config-routing", "路径规划", "平台配置中心", ScopePlatform),
// ── 管理端 / Platform:平台配置中心(聚合页,每个 Key 对齐前端聚合路由 route.name ──
new("admin-config-strategy", "调度策略", "平台配置中心", ScopePlatform),
new("admin-vehicle-hub", "车辆运维", "平台配置中心", ScopePlatform),
new("admin-config-charge", "充电策略", "平台配置中心", ScopePlatform),
new("admin-config-task", "任务分配", "平台配置中心", ScopePlatform),
new("admin-config-traffic", "交通管制", "平台配置中心", ScopePlatform),
new("admin-config-auth", "权限与角色", "平台配置中心", ScopePlatform),
new("admin-config-device", "设备接入", "平台配置中心", ScopePlatform),
new("admin-config-scenario", "场景模板", "平台配置中心", ScopePlatform),
new("admin-config-location", "库位管理", "平台配置中心", ScopePlatform),
new("admin-config-ops", "运营维护", "平台配置中心", ScopePlatform),
new("admin-config-widget", "自定义控件", "平台配置中心", ScopePlatform),
new("admin-config-map-monitor", "地图监控配置", "平台配置中心", ScopePlatform),
new("admin-config-facility", "设备与库位", "平台配置中心", ScopePlatform),
new("admin-config-business", "业务与集成", "平台配置中心", ScopePlatform),
new("admin-config-ops-center", "运维与回放", "平台配置中心", ScopePlatform),
new("admin-config-system-center", "系统与权限", "平台配置中心", ScopePlatform),
// ── 运营端 / RCSMonitor ──
new("monitor-dashboard", "运营总览", "运营监控", ScopeMonitor),
@@ -75,6 +66,22 @@ public static class PageCatalog
{
["admin-config-vehicle"] = "admin-vehicle-hub",
["admin-config-fleet"] = "admin-vehicle-hub",
// 会话 16:平台配置中心入口按业务收敛为 6 个聚合页,旧 Key 迁移到对应聚合页 Key。
["admin-config-routing"] = "admin-config-strategy",
["admin-config-task"] = "admin-config-strategy",
["admin-config-traffic"] = "admin-config-strategy",
["admin-config-charge"] = "admin-config-strategy",
["admin-config-device"] = "admin-config-facility",
["admin-config-location"] = "admin-config-facility",
["admin-config-integrations"] = "admin-config-business",
["admin-config-scenario"] = "admin-config-business",
["admin-config-widget"] = "admin-config-business",
["admin-playback"] = "admin-config-ops-center",
["admin-config-ops"] = "admin-config-ops-center",
["admin-config-logs"] = "admin-config-ops-center",
["admin-config-map-monitor"] = "admin-config-ops-center",
["admin-config-system"] = "admin-config-system-center",
["admin-config-auth"] = "admin-config-system-center",
};
/// <summary>判断页面 Key 是否合法(用于角色保存时过滤掉脏数据 / 已下线页面)。</summary>