# leo **Repository Path**: project_study_all/leo ## Basic Information - **Project Name**: leo - **Description**: LEO/MEO/GEO 全要素卫星星座综合管理系统,提供卫星追踪、星座管理、地面站运维、通信链路监控、实时遥测数据可视化以及 3D 轨道仿真等一站式解决方案。 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-10-09 - **Last Updated**: 2026-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LEO 卫星星座管理平台 LEO/MEO/GEO 全要素卫星星座综合管理系统,提供卫星追踪、星座管理、地面站运维、通信链路监控、实时遥测可视化、告警闭环处置、外部编目数据导入与 3D 轨道仿真等一站式解决方案。 ## 功能截图 ### 登录与仪表盘 ![登录](./img/登录.png) ![仪表盘](./img/仪表盘.png) ### 卫星与星座 ![卫星管理](./img/卫星管理.png) ![星座管理](./img/星座管理.png) ### 地面站与通信链路 ![地面站](./img/地面站.png) ![通信链路](./img/通信链路.png) ### 3D 仿真与轨道视图 ![3D仿真](./img/3D仿真.png) ![轨道视图](./img/轨道视图.png) ### 实时遥测 ![遥测监控](./img/遥测监控.png) ![遥测导出](./img/遥测导出.png) ### 告警中心 ![告警列表](./img/告警列表.png) ![告警闭环](./img/告警闭环.png) ![通知面板](./img/通知面板.png) ### 数据接入与数据管理中心 ![数据接入](./img/数据接入.png) ![接入监控](./img/接入监控.png) ![数据管理中心](./img/数据管理中心.png) ### 系统管理 ![日志审计](./img/日志审计.png) ## 技术栈 ### 后端 | 技术 | 版本 | 说明 | | ----------------- | ------ | -------------------------------- | | Spring Boot | 3.3.5 | 应用框架 | | Java | 17 | 运行环境 | | MyBatis-Flex | 1.10.4 | ORM 数据访问层 | | PostgreSQL | 16 | 关系型数据库(遥测按日分区存储) | | Redis | 7 | 缓存、告警持续计时 | | Flyway | - | 数据库迁移(启动时自动执行) | | jjwt | 0.12.6 | JWT 认证 | | SpringDoc OpenAPI | 2.6.0 | API 文档 | | Spring WebSocket | - | STOMP + SockJS 实时推送 | | Hutool | 5.8.32 | 通用工具库 | | JaCoCo | 0.8.15 | 测试覆盖率测量与门禁 | ### 前端 | 技术 | 版本 | 说明 | | ----------------- | ------- | ------------------ | | Vue | 3.5.13 | 前端框架 | | TypeScript | 5.6 | 类型安全 | | Vite | 6.0.3 | 构建工具 | | Element Plus | 2.9.1 | UI 组件库 | | Pinia | 2.2.6 | 状态管理 | | Vue Router | 4.4.5 | 路由管理 | | Axios | 1.7.7 | HTTP 客户端 | | STOMP.js / SockJS | 7.0/1.6 | WebSocket 实时通信 | | CesiumJS | 1.141.0 | 3D 地球可视化 | | ECharts | 5.5.1 | 数据图表 | | Vue I18n | 9.14.4 | 国际化(中/英) | | Playwright | 1.63 | 端到端测试 | | ESLint | 9 | 代码规范检查 | ## 核心功能 - **卫星管理** — 卫星全生命周期管理,支持按轨道类型、星座筛选,批量操作 - **星座管理** — 多卫星星座协同编排,支持分页查询与过滤 - **地面站运维** — 地面站配置管理(国家、区域、天线参数、频段、状态) - **通信链路监控** — 星间链路 (ISL) 与星地链路 (GSL) 的信号质量、带宽、延迟监控 - **实时遥测** — WebSocket 实时推送电池电量、太阳能板功率、温度、信噪比等关键指标;按日分区自动归档(默认保留 90 天),支持 CSV/JSON 导出 - **告警中心** — 阈值/区间/复合/趋势四类规则引擎定时评估遥测数据,告警状态机(FIRING → ACKNOWLEDGED → RESOLVED)闭环处置,关键告警实时推送至通知中心 - **数据管理中心** — 管理员专属:CelesTrak / Space-Track / KeepTrack 外部编目数据源的预览、导入与历史追溯,轨道类型自动分类 - **数据接入** — MQTT / FTP / SFTP / CoAP / HTTP REST / CCSDS AOS 等 21 种协议连接器的数据源配置、启停与运行监控 - **3D 可视化** — 基于 CesiumJS 的卫星轨道、星座覆盖与地球 3D 渲染 - **仪表盘分析** — KPI 卡片、轨道分布饼图、状态分布柱状图、系统活动概览 - **认证授权** — JWT 无状态认证 + 基于角色的访问控制 (RBAC),菜单与路由级权限控制 - **审计日志** — `@AuditLog` 注解 + AOP 切面对写操作自动留痕(用户、动作、资源、结果、耗时),管理员可检索 ## 项目结构 ``` LEO/ ├── leo-backend/ # Spring Boot 后端 │ ├── src/main/java/com/leo/satellite/ │ │ ├── common/ # 通用组件(JWT 过滤器、审计注解与切面、异常处理、统一响应) │ │ ├── config/ # 配置(Security、CORS、Redis、WebSocket、数据接入/管理中心属性) │ │ ├── controller/ # REST 控制器 │ │ ├── dataaccess/ # 数据接入框架(连接器抽象基类 + 21 个协议连接器 + 生命周期管理) │ │ ├── datacenter/ # 数据管理中心(CatalogProvider SPI + 外部编目 Provider 实现) │ │ ├── dto/ # 请求/响应传输对象 │ │ ├── entity/ # 实体模型 │ │ ├── mapper/ # MyBatis-Flex Mapper 接口 │ │ ├── service/ # 业务服务层(含告警评估引擎与通知) │ │ └── websocket/ # WebSocket 实时推送(遥测 / 告警 / 数据接入) │ ├── src/main/resources/ │ │ ├── application.yml # 应用配置(敏感项通过环境变量注入) │ │ ├── application-local.yml # 本地开发兜底配置(profile=local) │ │ ├── leo-local.yml.example # 数据管理中心本地凭证模板(复制为 leo-local.yml 使用) │ │ ├── db/migration/ # Flyway 迁移脚本(V1 基线 + V2~V7 迭代,启动时自动执行) │ │ └── mapper/ # MyBatis XML 映射文件 │ └── pom.xml # Maven 依赖管理(含 JaCoCo 覆盖率门禁) │ ├── leo-frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── api/ # API 接口层 │ │ ├── assets/styles/ # 全局样式与 Less 变量 │ │ ├── components/ # 可复用组件(通知中心、数据管理中心组件) │ │ ├── layouts/ # 布局组件(侧边菜单按角色过滤) │ │ ├── locales/ # 国际化(中/英) │ │ ├── router/ # 路由配置(登录态 + 角色守卫) │ │ ├── stores/ # Pinia 状态管理(用户 / 通知中心等) │ │ ├── types/ # TypeScript 类型定义 │ │ ├── utils/ # 工具函数(Axios 封装、遥测/告警 WebSocket 客户端) │ │ └── views/ # 页面视图 │ ├── e2e/ # Playwright 端到端测试 │ ├── package.json │ ├── nginx.conf # Nginx 部署配置 │ └── vite.config.ts │ ├── docker-compose.yml # Docker 一键部署编排 ├── img/ # 截图与架构图资源 └── README.md ``` ## 快速开始 ### 环境要求 - **JDK 17** 或更高版本 - **Node.js** (LTS 版本) - **PostgreSQL** 15 或更高版本 - **Redis** 6.0 或更高版本 - **Maven** 3.8+ ### 1. 数据库初始化 只需在 PostgreSQL 中创建空数据库,表结构与种子数据由后端启动时的 **Flyway 迁移**自动执行(脚本位于 `leo-backend/src/main/resources/db/migration/`,含 V1 基线与 V2~V7 迭代迁移;迁移记录写入 `flyway_schema_history` 表,重复启动幂等): ```sql CREATE DATABASE leo_satellite; ``` > 如需手动预置基线(本地开发仓库含 `V1__baseline.sql`,可选、脚本幂等): > > ```bash > psql -U postgres -d leo_satellite -f leo-backend/src/main/resources/db/migration/baseinit.sql > ``` ### 2. 后端启动 ```bash cd leo-backend mvn clean install -DskipTests mvn spring-boot:run ``` 后端默认运行在 `http://localhost:8080/api`,Swagger 文档位于 `http://localhost:8080/api/swagger-ui.html`。 ### 3. 前端启动 ```bash cd leo-frontend npm install npm run dev ``` 前端开发服务器默认运行在 `http://localhost:3000`,代理 `/api` 和 `/ws` 请求到后端(`/ws` 重写为 `/api/ws`)。 ### 4. 访问系统 打开浏览器访问 `http://localhost:3000`,使用以下账号登录: | 角色 | 用户名 | 密码 | 权限说明 | | ----------------- | ---------- | ---------- | -------------------------------------------- | | 管理员 (ADMIN) | `admin` | `admin123` | 全部功能,含用户管理、审计日志、数据管理中心 | | 操作员 (OPERATOR) | `operator` | `admin123` | 业务功能(无系统管理入口) | ## 环境配置 数据库连接与敏感项均通过**环境变量**注入(仓库不保存任何明文密钥)。可通过 IDE 运行配置、系统环境变量或根目录 `.env` 文件(Docker 部署时 compose 自动加载)设置: | 环境变量 | 说明 | 开发默认值 | | ----------------------------------------------- | ------------------------------------------- | ------------------------------------------------ | | `DB_URL` | PostgreSQL JDBC 连接串 | `jdbc:postgresql://localhost:5432/leo_satellite` | | `DB_USERNAME` | 数据库用户名 | `postgres` | | `DB_PASSWORD` | **数据库密码(生产必改)** | 本地开发由`application-local.yml` 兜底 | | `REDIS_HOST` / `REDIS_PORT` | Redis 地址 | `localhost` / `6379` | | `REDIS_PASSWORD` | Redis 密码(无密码时留空) | 空 | | `JWT_SECRET` | **JWT 签名密钥(生产必改,≥32 字节)** | 本地开发由`application-local.yml` 兜底 | | `SPRING_PROFILES_ACTIVE` | 激活的配置 profile | `local` | | `SPACE_TRACK_IDENTITY` / `SPACE_TRACK_PASSWORD` | Space-Track.org 账号(数据管理中心,可选) | 空(未配置时前端提示) | | `KEEPTRACK_API_KEY` | KeepTrack KeyApi 密钥(数据管理中心,可选) | 空(未配置时前端提示) | 数据管理中心的外部数据源账号还可在本地写入 `leo-backend/src/main/resources/leo-local.yml`(已被 `.gitignore` 忽略,模板见 `leo-local.yml.example`)。 配置解析优先级:环境变量 > 本地兜底配置(`leo-local.yml` / `application-local.yml`)> `application.yml`(占位符)。 > 生产环境部署前必须将 `DB_PASSWORD` 与 `JWT_SECRET` 设置为强随机值, > JWT 密钥可用 `openssl rand -base64 48` 生成。 > Token 有效期配置位于 `application.yml`:`jwt.expiration`(默认 24 小时)、`jwt.refresh-expiration`(默认 7 天)。 ## API 文档 启动后端后,可通过以下地址访问 OpenAPI / Swagger 交互式文档: ``` http://localhost:8080/api/swagger-ui.html ``` 主要 API 模块: | 模块 | 路径前缀 | 说明 | | ------------ | ---------------------- | ------------------------------------- | | 认证 | `/api/auth` | 登录、刷新 Token | | 卫星 | `/api/satellites` | CRUD、按轨道/星座查询 | | 星座 | `/api/constellations` | 星座管理 | | 地面站 | `/api/ground-stations` | 地面站管理 | | 通信链路 | `/api/comm-links` | 链路监控与管理 | | 遥测 | `/api/telemetry` | 遥测查询、最新快照、CSV/JSON 导出 | | 告警规则 | `/api/alert-rules` | 规则 CRUD 与启停 | | 告警记录 | `/api/alert-records` | 告警列表、未读计数、确认与已读 | | 仪表盘 | `/api/dashboard` | 统计数据聚合 | | 数据接入 | `/api/data-access` | 数据源配置、启停与监控 | | 数据管理中心 | `/api/data-center` | 外部编目预览与导入(仅管理员) | | 仿真 | `/api/simulation` | 仿真快照、KPI、故障注入与导出 | | 用户管理 | `/api/users` | 用户 CRUD、密码重置、启停(仅管理员) | | 审计日志 | `/api/audit-logs` | 操作审计检索(仅管理员) | ## 架构概览 系统采用前后端分离的**分层架构**,自顶向下划分为四层: ![架构概览](./img/jggl.png) ### 分层职责 | 层 | 说明 | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **表现层** | Vue 3 单页应用,负责 UI 渲染、用户交互、3D 可视化。通过 Pinia 管理状态,Axios 发起 HTTP 请求,SockJS/STOMP 订阅实时推送 | | **网关层** | Nginx 统一入口,处理静态资源分发、API 反向代理、WebSocket 升级、Gzip 压缩与缓存策略 | | **业务逻辑层** | Spring Boot 应用核心。Security 过滤器校验 JWT Token → Controller 接收请求 → Service 执行业务编排(含告警评估引擎定时扫描)→ 返回统一响应体`R`;写操作经 `@AuditLog` 切面自动留痕 | | **数据访问层** | MyBatis-Flex Mapper 完成 ORM 映射与分页查询;Redis 缓存按域分级 TTL(仪表盘统计 1 分钟 / 实体详情 30 分钟 / 默认 10 分钟);PostgreSQL 持久化业务数据,遥测表按日 Range 分区并由维护任务自动预建与清理 | ### 核心数据流 > 以「卫星分页查询」为例,展示端到端链路: ```mermaid sequenceDiagram actor U as 用户 participant FE as Vue 组件 participant Store as Pinia Store participant Axios as Axios 拦截器 participant Filter as JWT Filter participant Ctrl as SatelliteController participant Svc as SatelliteService participant Cache as Redis participant Mapper as Mapper participant DB as PostgreSQL U->>FE: 选择筛选条件并翻页 FE->>Store: dispatch fetchSatellites(params) Store->>Axios: GET /api/satellites?page=1&size=20 Axios->>Axios: 注入 Authorization: Bearer {token} Axios->>Filter: HTTP Request Filter->>Filter: 校验 JWT 签名与有效期 Filter->>Ctrl: 放行到 Controller Ctrl->>Svc: page(query) Svc->>Cache: 查询缓存 alt 缓存未命中 Svc->>Mapper: paginate(queryWrapper) Mapper->>DB: SELECT COUNT(*) ... SELECT * ... LIMIT OFFSET DB-->>Mapper: Page Mapper-->>Svc: PageResult Svc->>Cache: 写入 Redis(按域分级 TTL) else 缓存命中 Cache-->>Svc: 直接返回缓存数据 end Svc-->>Ctrl: PageResult Ctrl-->>Axios: 200 OK + R Axios->>Axios: 响应拦截:解包 data Axios-->>Store: PageResult Store-->>FE: 响应式更新 FE-->>U: 渲染表格与分页 ``` ### 实时遥测数据流 ```mermaid sequenceDiagram participant Browser as 浏览器前端 participant Nginx as Nginx participant WS as WebSocket Endpoint /api/ws participant Broker as STOMP Broker participant Publisher as TelemetryWebSocket Browser->>Nginx: WebSocket Upgrade 请求 Nginx->>WS: 代理转发 (Connection: Upgrade) WS->>WS: WsAuthChannelInterceptor 校验 CONNECT 帧 JWT Browser->>Broker: SUBSCRIBE /topic/telemetry/realtime Broker-->>Browser: 订阅确认 loop 每 5 秒 Publisher->>Publisher: 计算/采集遥测数据 Publisher->>Broker: convertAndSend("/topic/telemetry/realtime", payload) Broker-->>Browser: 推送遥测 JSON Browser->>Browser: 更新指标卡片 & 趋势图 end ``` ### 告警评估与通知数据流 ```mermaid sequenceDiagram participant Scheduler as 评估调度器(默认每 10 秒) participant Engine as AlertEvaluationService participant Evaluator as 规则评估器 participant Cache as Redis(持续计时) participant DB as PostgreSQL participant Broker as STOMP Broker participant UI as 通知中心(前端) Scheduler->>Engine: 触发一轮评估 Engine->>DB: 读取启用规则 + 各卫星最新遥测快照 Engine->>Evaluator: 按类型评估(THRESHOLD / RANGE / COMPOSITE / TREND) alt 越限且持续时长满足 Engine->>DB: 新建或原地刷新 FIRING 告警记录(去重索引) Engine->>Broker: 推送 ALERT_FIRING 至 /topic/alerts Broker-->>UI: 未读角标 +1;严重告警触发弹窗(同源 10 分钟去重) else 遥测恢复正常 Engine->>DB: 记录状态置为 RESOLVED Engine->>Broker: 推送 ALERT_RESOLVED end Note over Engine,Cache: 持续时长 > 0 的规则首次越限时间存 Redis(leo:alert:breach:*),
Redis 不可用时跳过持续判定,避免误触发 ``` ## 功能架构 系统按业务域划分为卫星资产、通信链路、遥测告警、数据治理与系统管理等功能模块: ![功能架构](./img/gnjg.png) ### 模块职责明细 | 模块 | 前端视图 | 后端 Controller | 核心能力 | | ---------------- | ----------------------------------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------- | | **卫星管理** | `SatelliteList` / `SatelliteDetail` | `SatelliteController` | 全生命周期 CRUD,按轨道类型(LEO/MEO/GEO)与星座筛选,批量删除 | | **星座管理** | `ConstellationList` | `ConstellationController` | 星座创建/编辑,轨道面与每面卫星数配置,发射/在轨数量追踪 | | **地面站管理** | `StationList` | `GroundStationController` | 全球站点登记,天线口径/类型/频段配置,运行状态管理 | | **通信链路** | `LinkList` | `CommunicationLinkController` | ISL(星间)/GSL(星地)链路监控,频率/数据率/调制方式/信号强度 | | **遥测监控** | `TelemetryView` | `TelemetryController` | 实时 WebSocket 推送,历史分页查询,按日分区归档,CSV/JSON 导出(单次上限 10 万行) | | **告警中心** | `AlertList` | `AlertController` / `AlertRecordController` | 四类规则 + 持续时长评估,状态机闭环,实时推送与通知中心角标/弹窗 | | **仪表盘分析** | `DashboardView` | `DashboardController` | 聚合统计(卫星/站/链路数),轨道分布饼图,状态分布柱状图 | | **轨道可视化** | `OrbitView` | (复用卫星数据) | 2D SVG 轨道环渲染,卫星动态定位,按轨道类型过滤 | | **3D 仿真** | `SimulationView` | `SimulationController` | CesiumJS 3D 地球,星座重建与模板(Starlink/ChinaNet/OneWeb),快照与 KPI,故障注入 | | **数据接入** | `DataSourceList` / `DataSourceDetail` / `DataAccessMonitor` | `DataAccessController` | 21 种协议连接器,数据源配置、启停与运行监控,接入实时流与心跳 | | **数据管理中心** | `DataCenterView` | `DataCenterController` | 外部编目数据源预览与导入,轨道自动分类,导入历史(仅管理员) | | **用户管理** | `UserList` | `UserController` | 用户 CRUD、密码重置、启停(仅管理员) | | **审计日志** | `AuditLogList` | `AuditController` | 敏感操作留痕检索(仅管理员) | ## 技术架构 ![技术架构](./img/jsjg.png) ### 关键技术决策 | 决策点 | 选择 | 理由 | | -------------- | ------------------------- | ----------------------------------------------------------------------------------------- | | **ORM 框架** | MyBatis-Flex | 比 MyBatis-Plus 更轻量,链式查询 + Lambda 表达式类型安全,分页插件开箱即用 | | **数据库迁移** | Flyway | 表结构与种子数据版本化演进,启动时自动执行、幂等可重放;既有库可基线收编 | | **认证方案** | JWT 无状态 + RBAC | 无需服务端 Session,适合前后端分离;方法级`@PreAuthorize` 双保险,WS CONNECT 帧复校验 JWT | | **实时通信** | STOMP over SockJS | 支持订阅/广播模式,SockJS 提供降级兼容;遥测、告警、数据接入共用推送通道 | | **告警引擎** | 定时评估 + Redis 持续计时 | 规则与评估器分层解耦,Redis 记录首次越限时间支撑"持续 N 秒"语义,不可用时安全降级 | | **遥测存储** | PostgreSQL 按日分区 | 大表按时间分区,过期分区整体 DROP 零成本清理,查询自动分区裁剪 | | **缓存策略** | Redis + Spring Cache | 注解驱动(@Cacheable),按缓存域分级 TTL + Key 前缀隔离,冷热数据差异化失效 | | **消息中心** | STOMP 推送 + 未读角标 | 告警实时触达(CRITICAL 弹窗),断线时静默降级为轮询,不影响主流程 | | **3D 可视化** | CesiumJS | 业界标准的地球渲染引擎,支持 TLE 轨道计算、CZML 时序数据 | | **API 文档** | SpringDoc OpenAPI | 兼容 Swagger UI,零注解侵入,自动生成 OpenAPI 3.0 规范文档 | ## 构建与部署 ### Docker 一键部署(推荐) 项目根目录已提供 `docker-compose.yml`,包含 PostgreSQL、Redis、后端、前端四个服务。 ```bash # 1.(可选)配置环境变量:复制模板并按需修改(生产必改密码与密钥) cp .env.example .env # 2. 在项目根目录启动 docker compose up -d ``` `.env` 中的变量会由 compose 注入对应容器:`DB_PASSWORD` / `JWT_SECRET` / `REDIS_PASSWORD`,以及数据管理中心可选的数据源凭证(`SPACE_TRACK_IDENTITY` / `SPACE_TRACK_PASSWORD` / `KEEPTRACK_API_KEY`);未设置时回退到开发默认值(**仅限本地演示,生产环境必须修改**)。 首次启动会自动: 1. 拉取 PostgreSQL 16、Redis 7 镜像并创建空库 2. 构建后端 Spring Boot 镜像并启动(端口 8080),由 Flyway 自动完成建表与种子数据写入 3. 构建前端 Nginx 镜像并启动(端口 80) 启动后访问 `http://localhost` 即可使用。 常用命令: ```bash # 查看运行状态 docker compose ps # 查看日志 docker compose logs -f backend docker compose logs -f frontend # 重新构建并启动 docker compose up -d --build # 停止所有服务 docker compose down # 停止并删除数据卷(⚠️ 会清空数据库) docker compose down -v ``` ### 手动部署 #### 后端打包 ```bash cd leo-backend mvn clean package -DskipTests java -jar target/leo-satellite-1.0.0-SNAPSHOT.jar ``` #### 前端构建 ```bash cd leo-frontend npm run build ``` `build` 脚本内置 `vue-tsc` 类型检查;构建产物位于 `leo-frontend/dist/`,可部署至 Nginx 或其他静态资源服务器。参考配置见 `leo-frontend/nginx.conf`。 ## 测试与质量保障 | 层面 | 命令 | 说明 | | --------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------ | | 后端测试 + 覆盖率门禁 | `cd leo-backend && mvn verify` | JUnit 5 + Mockito;JaCoCo 门禁:全局行覆盖 ≥ 70%、service/dataaccess 包 ≥ 80%,未达标构建失败 | | 前端类型检查 | `cd leo-frontend && npm run typecheck` | vue-tsc 全量类型检查,0 error | | 前端规范检查 | `cd leo-frontend && npm run lint` | ESLint 9(Vue + TypeScript 规则集) | | 端到端测试 | `cd leo-frontend && npm run test:e2e` | Playwright E2E:覆盖登录、仪表盘、卫星列表、遥测、告警实时、通知中心、数据管理中心、用户管理等关键链路 | ## 常见问题 | 问题 | 解决方法 | | ---------------------------- | ------------------------------------------------------------------------------------------------------------------- | | 数据库连接失败 | 检查 PostgreSQL 是否启动,确认`DB_URL` / `DB_PASSWORD`(或 `.env` / `application-local.yml`)配置正确 | | Redis 无法连接 | 确认 Redis 服务已启动,默认端口 6379 | | WebSocket 连接异常 | 确认 Vite 代理中`/ws` 已正确转发到后端;WS 会话需携带有效 JWT(CONNECT 帧鉴权),登录失效后需重新登录 | | 401 认证失败 | 检查 JWT 密钥与过期时间配置,确认 Token 在请求头中携带 | | 数据管理中心提示数据源未配置 | 在`leo-local.yml` 或环境变量中补充对应数据源账号/密钥后重启后端(模板见 `leo-local.yml.example`) | | 告警不触发 | 确认规则已启用、评估引擎开启(`leo.alert.evaluation.enabled=true`);持续时长类规则依赖 Redis,不可用时跳过持续判定 | | Flyway 迁移失败 | 检查数据库连通性与`flyway_schema_history` 校验和;本地开发可重建空库后重启(自动按序执行迁移) | | 端口冲突 | 后端默认 8080,前端默认 3000,可在配置文件中修改 | ## License 本项目仅供学习和参考使用。