将调度内核标识从 SimpleLite 全面重命名为 Simple3。
配置段/环境变量、Launcher、健康检查 API、OpenAPI 与前后端文案同步;兼容探测旧 SimpleLite 进程名。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6,10 +6,10 @@
|
||||
|
||||
`MIGU2.0` 是“迷毂 · 智能调度平台”的平台仓库,主要包含两部分:
|
||||
|
||||
- 平台后端:`MiGu.Server`,ASP.NET Core 8 WebAPI,监听默认 `8080`,负责登录、权限、配置中心、静态前端托管、YARP 反向代理和 SimpleLite 子进程拉起。
|
||||
- 平台后端:`MiGu.Server`,ASP.NET Core 8 WebAPI,监听默认 `8080`,负责登录、权限、配置中心、静态前端托管、YARP 反向代理和 Simple3 子进程拉起。
|
||||
- 平台前端:`frontends/apps/simple-platform-vue`,Vue 3 + Vite + Pinia + Element Plus 单页应用,单工程承载管理员端 `/admin/*` 与运营端 `/monitor/*`。
|
||||
|
||||
调度内核 `SimpleLite` 不在本仓库内,按 README 描述位于相邻仓库 `../Simple/SimpleLite`。当前仓库通过进程拉起、HTTP 代理、webVRender iframe 和本地文件读取等方式与 `SimpleLite` 协作。
|
||||
调度内核 `Simple3` 不在本仓库内,按 README 描述位于相邻仓库 `../Simple/Simple3`。当前仓库通过进程拉起、HTTP 代理、webVRender iframe 和本地文件读取等方式与 `Simple3` 协作。
|
||||
|
||||
## 2. 技术栈总览
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
- 授权:ASP.NET Core Authorization Policy + 自研 RBAC。
|
||||
- 代理:YARP Reverse Proxy。
|
||||
- 持久化:当前为 JSON 文件持久化,主要落在 `MiGu.Server/data/`;长期蓝图中计划接入 EF Core 多数据库 Provider。
|
||||
- 进程编排:`SimpleLiteLauncher` 拉起或复用 `SimpleLite.exe`。
|
||||
- 进程编排:`Simple3Launcher` 拉起或复用 `Simple3.exe`。
|
||||
|
||||
### 前端
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
|
||||
### 外部/相邻系统
|
||||
|
||||
- `SimpleLite.exe`:调度内核、地图/任务/车辆领域能力、Projection API、webVRender。
|
||||
- `Simple3.exe`:调度内核、地图/任务/车辆领域能力、Projection API、webVRender。
|
||||
- webVRender:默认 `8223`,由前端 `Workspace3D.vue` 以 iframe 方式嵌入。
|
||||
- SimpleLite Projection/Web API:默认 `8222`,通过 `/api/sl/*` 由 YARP 转发。
|
||||
- Simple3 Projection/Web API:默认 `8222`,通过 `/api/sl/*` 由 YARP 转发。
|
||||
|
||||
## 3. 顶层目录职责
|
||||
|
||||
@@ -64,33 +64,33 @@ flowchart LR
|
||||
Server --> Auth["Auth/RBAC/JWT"]
|
||||
Server --> Config["ConfigStore<br/>data/config-*.json"]
|
||||
Server --> Wizard["部署向导<br/>deployment profile"]
|
||||
Server --> Launcher["SimpleLiteLauncher"]
|
||||
Launcher -->|登录后按 launchMode 拉起/复用| SL["SimpleLite.exe<br/>相邻仓库"]
|
||||
Server -->|YARP /api/sl/*| SLApi["SimpleLite :8222"]
|
||||
Server --> Launcher["Simple3Launcher"]
|
||||
Launcher -->|登录后按 launchMode 拉起/复用| SL["Simple3.exe<br/>相邻仓库"]
|
||||
Server -->|YARP /api/sl/*| SLApi["Simple3 :8222"]
|
||||
Server -->|YARP /vr/*| VR["webVRender :8223"]
|
||||
Vue -->|iframe 或 /vr 代理| VR
|
||||
```
|
||||
|
||||
关键说明:
|
||||
|
||||
- `MiGu.Server` 负责托管 SPA、处理登录与配置、代理 `/api/sl/*` 到 SimpleLite。
|
||||
- 用户登录时可选择 `DesktopAndWeb` 或 `WebOnly`,后端转换为 SimpleLite 命令行 `--display-mode=web+local` 或 `--display-mode=web`。
|
||||
- `SimpleLiteLauncher` 默认 `FollowParent=false`,即 `MiGu.Server` 退出不会杀掉已启动的 SimpleLite。
|
||||
- 如果 `8222` 已经有 SimpleLite 在运行,后端会做 TCP + HTTP 探测并复用既有实例,避免重复拉起。
|
||||
- `MiGu.Server` 负责托管 SPA、处理登录与配置、代理 `/api/sl/*` 到 Simple3。
|
||||
- 用户登录时可选择 `DesktopAndWeb` 或 `WebOnly`,后端转换为 Simple3 命令行 `--display-mode=web+local` 或 `--display-mode=web`。
|
||||
- `Simple3Launcher` 默认 `FollowParent=false`,即 `MiGu.Server` 退出不会杀掉已启动的 Simple3。
|
||||
- 如果 `8222` 已经有 Simple3 在运行,后端会做 TCP + HTTP 探测并复用既有实例,避免重复拉起。
|
||||
- 前端的 3D/地图画布主要通过 `Workspace3D.vue` 加载 `http://localhost:8223` 或经 `/vr` 同源代理。
|
||||
|
||||
## 5. 文档蓝图与当前代码的差异
|
||||
|
||||
仓库中存在两类叙述:
|
||||
|
||||
- `README.md` 和 `MiGu.Server/README.md` 已经描述“用户先启动 `MiGu.Server`,登录后拉起 `SimpleLite`”这一当前实现。
|
||||
- `ARCHITECTURE.md` 仍保留较多早期蓝图,例如“SimpleLite 通过 SystemMission 拉起 MiGu.Server”“双 SPA 独立托管”“SimpleShared.* 多工程”“EF Core 多 Provider”等。
|
||||
- `README.md` 和 `MiGu.Server/README.md` 已经描述“用户先启动 `MiGu.Server`,登录后拉起 `Simple3`”这一当前实现。
|
||||
- `ARCHITECTURE.md` 仍保留较多早期蓝图,例如“Simple3 通过 SystemMission 拉起 MiGu.Server”“双 SPA 独立托管”“SimpleShared.* 多工程”“EF Core 多 Provider”等。
|
||||
|
||||
当前代码落地状态:
|
||||
|
||||
- 已落地:`MiGu.Server` 主入口、登录拉起 SimpleLite、YARP 代理、JWT/Cookie 鉴权、RBAC、配置中心 JSON 持久化、部署向导、日志管理、地图 JSON 预览、单 Vue SPA 管理/运营双域。
|
||||
- 部分落地:配置中心模型、运维白名单、SimpleLite 反射下发、webVRender 嵌入、地图编辑/监控前端能力。
|
||||
- 尚未在本仓库落地:`SimpleShared.*` 工程、EF Core 多数据库持久层、SystemMission 由 SimpleLite 反向守护平台、独立 `platform-vue`/`rcsmonitor-vue` 双工程、`packages/sl-controls` 共享组件库。
|
||||
- 已落地:`MiGu.Server` 主入口、登录拉起 Simple3、YARP 代理、JWT/Cookie 鉴权、RBAC、配置中心 JSON 持久化、部署向导、日志管理、地图 JSON 预览、单 Vue SPA 管理/运营双域。
|
||||
- 部分落地:配置中心模型、运维白名单、Simple3 反射下发、webVRender 嵌入、地图编辑/监控前端能力。
|
||||
- 尚未在本仓库落地:`SimpleShared.*` 工程、EF Core 多数据库持久层、SystemMission 由 Simple3 反向守护平台、独立 `platform-vue`/`rcsmonitor-vue` 双工程、`packages/sl-controls` 共享组件库。
|
||||
|
||||
## 6. 后端模块
|
||||
|
||||
@@ -101,14 +101,14 @@ flowchart LR
|
||||
- 修正 `ContentRootPath`:直接运行 `bin/Debug/net8.0/MiGu.Server.exe` 时向上寻找 `MiGu.Server.csproj`,确保配置、data、wwwroot 路径一致。
|
||||
- 默认监听:未配置 `urls` 时使用 `http://0.0.0.0:8080`。
|
||||
- WebRoot 自动探测:优先使用 `frontends/apps/simple-platform-vue/dist/index.html`,其次 `MiGu.Server/wwwroot/index.html`。
|
||||
- 注册 Controller、Swagger、CORS、JWT Bearer、Authorization Policy、YARP、ConfigStore、OpsAuditStore、HttpClient、SimpleLiteLauncher。
|
||||
- 注册 Controller、Swagger、CORS、JWT Bearer、Authorization Policy、YARP、ConfigStore、OpsAuditStore、HttpClient、Simple3Launcher。
|
||||
- 设置 Forwarded Headers,兼容反向代理后的 HTTPS Cookie。
|
||||
- 托管静态资源和 SPA fallback。
|
||||
|
||||
核心关系:
|
||||
|
||||
- 调用 `JwtIssuer` 颁发/验签 JWT。
|
||||
- 调用 `InternalTokenStore` 管理转发给 SimpleLite 的 `X-Platform-Internal-Token`。
|
||||
- 调用 `InternalTokenStore` 管理转发给 Simple3 的 `X-Platform-Internal-Token`。
|
||||
- YARP `sl-route` 会自动注入内部 token。
|
||||
- `app.MapControllers()` 处理平台自身 API,`app.MapReverseProxy()` 处理 `/api/sl/*` 与 `/vr/*`。
|
||||
|
||||
@@ -116,7 +116,7 @@ flowchart LR
|
||||
|
||||
职责:
|
||||
|
||||
- `POST /api/auth/login`:校验用户名密码与 scope,按登录请求 `launchMode` 拉起 SimpleLite,签发 JWT 和 Cookie。
|
||||
- `POST /api/auth/login`:校验用户名密码与 scope,按登录请求 `launchMode` 拉起 Simple3,签发 JWT 和 Cookie。
|
||||
- `POST /api/auth/logout`:清理 Cookie。
|
||||
- `GET /api/auth/me`:让前端对本地 token 进行服务端实校。
|
||||
- `POST /api/auth/switch-scope`:同一用户在 `Platform` 与 `RCSMonitor` 之间切换 scope,并由服务端重新计算权限。
|
||||
@@ -125,7 +125,7 @@ flowchart LR
|
||||
|
||||
- `RbacStore`:用户密码校验、scope 判断、有效权限计算。
|
||||
- `JwtIssuer`:签发 JWT。
|
||||
- `SimpleLiteLauncher`:登录后拉起或复用 SimpleLite。
|
||||
- `Simple3Launcher`:登录后拉起或复用 Simple3。
|
||||
- `ConfigStore`:读取部署画像,决定是否需要进入配置向导。
|
||||
|
||||
### 6.3 RBAC 权限模块:`Auth/`
|
||||
@@ -136,7 +136,7 @@ flowchart LR
|
||||
- `RbacModels.cs`:用户、角色、DTO。
|
||||
- `PageCatalog.cs`:页面权限目录。
|
||||
- `JwtIssuer.cs`:JWT 颁发和验签参数。
|
||||
- `InternalTokenStore.cs`:平台与 SimpleLite 内部通信 token。
|
||||
- `InternalTokenStore.cs`:平台与 Simple3 内部通信 token。
|
||||
|
||||
职责:
|
||||
|
||||
@@ -182,32 +182,32 @@ flowchart LR
|
||||
|
||||
- 前端 `useConfigStore` 统一读写这些 section。
|
||||
- 许多配置页只是不同 section 的编辑视图。
|
||||
- `deployment` section 还会参与菜单裁剪与 SimpleLite 插件选择。
|
||||
- `deployment` section 还会参与菜单裁剪与 Simple3 插件选择。
|
||||
|
||||
注意:
|
||||
|
||||
- 控制器类加了 `[Authorize]`,但当前 `PUT` 也是普通 `[Authorize]`,注释中曾提到 PlatformScope,实际代码没有强制仅平台 scope 可写。
|
||||
- 当前 JSON 文件属于占位持久层;长期架构文档计划迁移到 EF Core。
|
||||
|
||||
### 6.5 SimpleLite 拉起与诊断:`Launcher/`
|
||||
### 6.5 Simple3 拉起与诊断:`Launcher/`
|
||||
|
||||
主要文件:
|
||||
|
||||
- `SimpleLiteLauncher.cs`:拉起、复用、重启、诊断、插件选择联动。
|
||||
- `SimpleLiteOptions.cs`:绑定 `appsettings.json:SimpleLite`。
|
||||
- `SimpleLiteBuildSync.cs`:辅助同步/探测 SimpleLite 构建与 API。
|
||||
- `Simple3Launcher.cs`:拉起、复用、重启、诊断、插件选择联动。
|
||||
- `Simple3Options.cs`:绑定 `appsettings.json:Simple3`。
|
||||
- `Simple3BuildSync.cs`:辅助同步/探测 Simple3 构建与 API。
|
||||
|
||||
职责:
|
||||
|
||||
- 将业务启动模式翻译为 SimpleLite 内部 display mode:
|
||||
- 将业务启动模式翻译为 Simple3 内部 display mode:
|
||||
- `WebOnly` -> `--display-mode=web`
|
||||
- `DesktopAndWeb` -> `--display-mode=web+local`
|
||||
- 拉起前检查 `8222` 是否已有 SimpleLite,并用 `/projection/cars` 确认不是其他进程占用端口。
|
||||
- 查找 `SimpleLite.exe`:优先配置路径,再尝试相邻仓库、发布包同目录等候选路径。
|
||||
- 默认 Windows 下通过 `cmd /c start` 脱离父进程,避免关闭平台后端时带走 SimpleLite。
|
||||
- 拉起前检查 `8222` 是否已有 Simple3,并用 `/projection/cars` 确认不是其他进程占用端口。
|
||||
- 查找 `Simple3.exe`:优先配置路径,再尝试相邻仓库、发布包同目录等候选路径。
|
||||
- 默认 Windows 下通过 `cmd /c start` 脱离父进程,避免关闭平台后端时带走 Simple3。
|
||||
- `FollowParent=true` 时使用 Windows JobObject 绑定父子进程。
|
||||
- 写入 `plugins/active-scenes.json`,把部署向导选出的导航场景传给 SimpleLite。
|
||||
- `GET /api/health/simplelite` 返回配置、路径解析、端口、版本 API 可用性等诊断信息。
|
||||
- 写入 `plugins/active-scenes.json`,把部署向导选出的导航场景传给 Simple3。
|
||||
- `GET /api/health/simple3` 返回配置、路径解析、端口、版本 API 可用性等诊断信息。
|
||||
|
||||
### 6.6 运维白名单与审计:`OpsController` + `OpsAuditStore`
|
||||
|
||||
@@ -217,7 +217,7 @@ flowchart LR
|
||||
- 二次校验 JWT 的 `ops` claim。
|
||||
- 支持 `IdempotencyKey`,避免重复点击/重试重复下发。
|
||||
- `monitor.note.write` 仅写审计。
|
||||
- 其他运维动作需要在 `appsettings.json:Ops:Dispatch` 显式配置 `opCode -> "kind:Method"` 后,才会转发到 SimpleLite 反射 API。
|
||||
- 其他运维动作需要在 `appsettings.json:Ops:Dispatch` 显式配置 `opCode -> "kind:Method"` 后,才会转发到 Simple3 反射 API。
|
||||
- 审计记录由 `OpsAuditStore` 落盘,重启后不丢。
|
||||
|
||||
默认白名单:
|
||||
@@ -229,9 +229,9 @@ flowchart LR
|
||||
重要设计:
|
||||
|
||||
- 未配置映射时不会“假成功”,而是返回 `ok=false` 并说明“已记录审计但未下发”。
|
||||
- 真实下发路径为 SimpleLite 反射执行接口:`/projection/reflection/execute/{kind}/{id}/{method}`。
|
||||
- 真实下发路径为 Simple3 反射执行接口:`/projection/reflection/execute/{kind}/{id}/{method}`。
|
||||
|
||||
### 6.7 投影与 SimpleLite 代理
|
||||
### 6.7 投影与 Simple3 代理
|
||||
|
||||
模块组成:
|
||||
|
||||
@@ -249,8 +249,8 @@ flowchart LR
|
||||
职责:
|
||||
|
||||
- `GET /api/health`:平台后端健康检查,返回启动时间、运行时长、端口规划。
|
||||
- `GET /api/health/simplelite`:SimpleLite 路径和端口诊断。
|
||||
- `POST /api/health/simplelite/restart-for-update`:授权用户可触发关闭 SimpleLite、同步最新 DLL 并重新拉起。
|
||||
- `GET /api/health/simple3`:Simple3 路径和端口诊断。
|
||||
- `POST /api/health/simple3/restart-for-update`:授权用户可触发关闭 Simple3、同步最新 DLL 并重新拉起。
|
||||
|
||||
### 6.9 部署配置向导:`WizardController` + `DeploymentCatalog`
|
||||
|
||||
@@ -258,7 +258,7 @@ flowchart LR
|
||||
|
||||
- 首次部署时收集导航方式、功能模块、业务场景。
|
||||
- 保存后写入 `deployment` 配置 section。
|
||||
- 将导航方式映射为 SimpleLite 场景插件 ID,并调用 `SimpleLiteLauncher.WriteActiveScenes()` 写入 `plugins/active-scenes.json`。
|
||||
- 将导航方式映射为 Simple3 场景插件 ID,并调用 `Simple3Launcher.WriteActiveScenes()` 写入 `plugins/active-scenes.json`。
|
||||
- 按部署画像裁剪页面,例如当前 `wms` 模块会点亮 `admin-config-location`。
|
||||
|
||||
对外 API:
|
||||
@@ -273,7 +273,7 @@ flowchart LR
|
||||
|
||||
职责:
|
||||
|
||||
- 读取 SimpleLite 工作目录下的 `log/` 文件。
|
||||
- 读取 Simple3 工作目录下的 `log/` 文件。
|
||||
- 支持概览、文件列表、目录浏览、日志条目分页、合订本、日志分析、原文查看、下载。
|
||||
- 日志行按 `Diagnosis.Log` 的格式解析,支持标签聚合和数值字段识别。
|
||||
|
||||
@@ -290,14 +290,14 @@ flowchart LR
|
||||
|
||||
职责:
|
||||
|
||||
- 先调用 SimpleLite `/projection/map-edit/maps` 获取地图目录。
|
||||
- 先调用 Simple3 `/projection/map-edit/maps` 获取地图目录。
|
||||
- 再在本机读取对应地图 JSON 原文,供平台地图管理右侧预览。
|
||||
- 对地图名做非法字符检查,并校验最终路径必须落在地图目录下。
|
||||
|
||||
关系:
|
||||
|
||||
- 依赖 SimpleLite 与 MiGu.Server 同机部署。
|
||||
- 依赖 `SimpleLiteOptions.ProjectionPort` 和 `InternalTokenStore`。
|
||||
- 依赖 Simple3 与 MiGu.Server 同机部署。
|
||||
- 依赖 `Simple3Options.ProjectionPort` 和 `InternalTokenStore`。
|
||||
|
||||
## 7. 前端模块
|
||||
|
||||
@@ -328,7 +328,7 @@ flowchart LR
|
||||
|
||||
职责:
|
||||
|
||||
- 登录页采集用户名、密码、scope 和 SimpleLite 启动模式。
|
||||
- 登录页采集用户名、密码、scope 和 Simple3 启动模式。
|
||||
- 登录成功后保存 token、用户、scope、runMode、effectivePermissions 到 Pinia 与 localStorage。
|
||||
- `auth.validate()` 通过 `/api/auth/me` 处理服务端重启、JWT secret 重生导致的旧 token 失效问题。
|
||||
- `switchScope()` 不在客户端伪造权限,而是请求后端重新签发 token 和权限。
|
||||
@@ -346,7 +346,7 @@ flowchart LR
|
||||
- `api/config.ts`:配置中心读写。
|
||||
- `api/projection.ts`:站点、路径、车辆、任务投影。
|
||||
- `api/ops.ts`:运维白名单执行和审计。
|
||||
- `api/reflection.ts`:SimpleLite 反射对象、字段、方法执行。
|
||||
- `api/reflection.ts`:Simple3 反射对象、字段、方法执行。
|
||||
- `api/mapEdit.ts`:地图编辑相关 API。
|
||||
- `api/wizard.ts`:部署向导。
|
||||
- `api/logs.ts`:日志管理。
|
||||
@@ -354,7 +354,7 @@ flowchart LR
|
||||
关系:
|
||||
|
||||
- 所有平台 API 都以 `/api` 为 baseURL。
|
||||
- `/api/sl/*` 由 MiGu.Server 反代给 SimpleLite。
|
||||
- `/api/sl/*` 由 MiGu.Server 反代给 Simple3。
|
||||
- 开发环境可通过 `VITE_USE_MOCK=true` 使用前端 mock,但反射、工作台等部分 API 仍要求真实后端。
|
||||
|
||||
### 7.4 Shell、主题和权限控制组件
|
||||
@@ -418,7 +418,7 @@ flowchart LR
|
||||
- `useHistory`:撤销/重做命令栈。
|
||||
- `useSelection`:对象选择状态。
|
||||
- `useAlignment`、`useBatchGenerate`、`useClipboard`:编辑辅助能力。
|
||||
- `mapEditApi`、`reflectionApi`:与 SimpleLite 的地图编辑和反射 API 通信。
|
||||
- `mapEditApi`、`reflectionApi`:与 Simple3 的地图编辑和反射 API 通信。
|
||||
|
||||
#### 地图监控
|
||||
|
||||
@@ -431,7 +431,7 @@ flowchart LR
|
||||
- `VehicleMonitorPanel`:车辆监控台。
|
||||
- `MissionListPanel`:任务列表。
|
||||
- `MonitorSelectionPanel`:选中对象详情和动作。
|
||||
- `useProjectionStream`:订阅 SimpleLite/平台 SSE 事件。
|
||||
- `useProjectionStream`:订阅 Simple3/平台 SSE 事件。
|
||||
|
||||
### 7.7 运营端页面:`/monitor/*`
|
||||
|
||||
@@ -469,13 +469,13 @@ flowchart LR
|
||||
- 选择导航方式:磁导航、二维码导航、激光导航。
|
||||
- 选择功能模块:当前包含 WMS、PTL。
|
||||
- 选择业务场景模板。
|
||||
- 预览将激活的 SimpleLite 场景插件,如 `scene.magnetic`、`scene.qrcode`、`scene.laser`。
|
||||
- 预览将激活的 Simple3 场景插件,如 `scene.magnetic`、`scene.qrcode`、`scene.laser`。
|
||||
|
||||
保存后:
|
||||
|
||||
- 调用 `PUT /api/wizard/profile`。
|
||||
- 后端写入 `deployment` section。
|
||||
- 后端写入 SimpleLite `plugins/active-scenes.json`。
|
||||
- 后端写入 Simple3 `plugins/active-scenes.json`。
|
||||
- 前端调用 `auth.markWizardDone()`,跳转到对应首页。
|
||||
|
||||
## 8. 数据与持久化
|
||||
@@ -491,9 +491,9 @@ flowchart LR
|
||||
|
||||
这些文件采用 JSON 持久化,部分写入走 `AtomicFile`,损坏时会备份后回退默认值。
|
||||
|
||||
### SimpleLite 侧文件
|
||||
### Simple3 侧文件
|
||||
|
||||
MiGu.Server 会直接或间接使用 SimpleLite 工作目录:
|
||||
MiGu.Server 会直接或间接使用 Simple3 工作目录:
|
||||
|
||||
- `plugins/active-scenes.json`:部署向导写入,控制内核场景插件选择。
|
||||
- `log/**/*.log`:日志管理模块读取并分析。
|
||||
@@ -511,7 +511,7 @@ MiGu.Server 会直接或间接使用 SimpleLite 工作目录:
|
||||
- `/api/maps/{name}/content`:地图 JSON 预览。
|
||||
- `/api/health/*`:健康检查。
|
||||
|
||||
### 平台后端到 SimpleLite
|
||||
### 平台后端到 Simple3
|
||||
|
||||
- `/api/sl/*` -> YARP -> `http://127.0.0.1:8222/*`。
|
||||
- `/vr/*` -> YARP -> `http://127.0.0.1:8223/*`。
|
||||
@@ -533,7 +533,7 @@ flowchart TB
|
||||
RBAC["RbacStore / JwtIssuer"]
|
||||
Config["ConfigStore"]
|
||||
Wizard["WizardController"]
|
||||
Launcher["SimpleLiteLauncher"]
|
||||
Launcher["Simple3Launcher"]
|
||||
Ops["OpsController"]
|
||||
Logs["LogsController"]
|
||||
Maps["MapsContentController"]
|
||||
@@ -551,8 +551,8 @@ flowchart TB
|
||||
WizardVue["WizardView.vue"]
|
||||
end
|
||||
|
||||
subgraph SimpleLite["SimpleLite 相邻仓库"]
|
||||
SLExe["SimpleLite.exe"]
|
||||
subgraph Simple3["Simple3 相邻仓库"]
|
||||
SLExe["Simple3.exe"]
|
||||
Projection["Projection API :8222"]
|
||||
VRender["webVRender :8223"]
|
||||
LogsFile["log/**/*.log"]
|
||||
@@ -591,14 +591,14 @@ flowchart TB
|
||||
|
||||
## 11. 典型业务链路
|
||||
|
||||
### 11.1 登录并启动 SimpleLite
|
||||
### 11.1 登录并启动 Simple3
|
||||
|
||||
1. 用户打开 `/login`。
|
||||
2. 前端提交用户名、密码、scope、launchMode 到 `/api/auth/login`。
|
||||
3. `AuthController` 调 `RbacStore.VerifyCredentials()` 校验密码。
|
||||
4. `AuthController` 检查用户是否可使用请求的 scope。
|
||||
5. `AuthController` 调 `SimpleLiteLauncher.MaybeStart()`。
|
||||
6. `SimpleLiteLauncher` 复用或拉起 `SimpleLite.exe`。
|
||||
5. `AuthController` 调 `Simple3Launcher.MaybeStart()`。
|
||||
6. `Simple3Launcher` 复用或拉起 `Simple3.exe`。
|
||||
7. 后端计算有效权限,签发 JWT,写 httpOnly Cookie。
|
||||
8. 前端保存登录态,并按 `needsWizard` 跳转 `/wizard` 或业务首页。
|
||||
|
||||
@@ -608,7 +608,7 @@ flowchart TB
|
||||
2. 守卫确保 scope 为 `Platform`,并检查 `admin-map-editor` 页面权限。
|
||||
3. `MapEditorView` 加载 `Workspace3D`,以 `canvasOnly=true` 打开 `8223` webVRender。
|
||||
4. Vue 侧顶栏、工具栏、属性面板接管编辑 UI。
|
||||
5. 创建、删除、批量生成、字段修改等操作通过 `mapEditApi` 或 `reflectionApi` 调用 SimpleLite。
|
||||
5. 创建、删除、批量生成、字段修改等操作通过 `mapEditApi` 或 `reflectionApi` 调用 Simple3。
|
||||
6. `useHistory` 记录可回滚命令,部分操作会用快照恢复。
|
||||
|
||||
### 11.3 运营端执行运维动作
|
||||
@@ -618,7 +618,7 @@ flowchart TB
|
||||
3. 用户确认后调用 `/api/sl/ops/execute`。
|
||||
4. `OpsController` 校验白名单、JWT 操作码、幂等键。
|
||||
5. 若是备注,则只写审计;若是内核动作,读取 `Ops:Dispatch` 映射。
|
||||
6. 已配置映射时调用 SimpleLite 反射 execute;未配置映射时返回未下发。
|
||||
6. 已配置映射时调用 Simple3 反射 execute;未配置映射时返回未下发。
|
||||
7. 审计落盘,前端显示执行结果。
|
||||
|
||||
### 11.4 首次部署配置向导
|
||||
@@ -628,7 +628,7 @@ flowchart TB
|
||||
3. 前端加载 `/api/wizard/options` 和 `/api/wizard/profile`。
|
||||
4. 用户选择导航方式、模块、场景。
|
||||
5. 保存后端写 `deployment` section。
|
||||
6. 后端将导航方式转换为场景插件 ID,并写 SimpleLite `plugins/active-scenes.json`。
|
||||
6. 后端将导航方式转换为场景插件 ID,并写 Simple3 `plugins/active-scenes.json`。
|
||||
7. 后续登录时,`AuthController.BuildSession()` 会按部署画像裁剪可见页面。
|
||||
|
||||
## 12. 构建与运行
|
||||
@@ -645,7 +645,7 @@ dotnet run
|
||||
|
||||
- 平台:`http://localhost:8080/login`
|
||||
- 健康检查:`http://localhost:8080/api/health`
|
||||
- SimpleLite 诊断:`http://localhost:8080/api/health/simplelite`
|
||||
- Simple3 诊断:`http://localhost:8080/api/health/simple3`
|
||||
- Swagger:开发环境 `/swagger`
|
||||
|
||||
### 前端开发
|
||||
@@ -679,7 +679,7 @@ pnpm dev
|
||||
- 架构文档与当前实现存在历史差异,后续应更新 `ARCHITECTURE.md` 中关于启动归属、双 SPA 拆分、共享组件库和持久层状态的描述。
|
||||
- `ConfigController.Put` 当前只要求登录,未按注释限制 `PlatformScope`,如果运营 scope 可调用配置写入,需要确认是否符合预期。
|
||||
- 前端登录页仍有 Mock 文案,真实 API 模式下会误导用户。
|
||||
- `ServiceStatusView.vue` 目前展示大量 Mock 状态,尚未接入 `/api/health` 与 `/api/health/simplelite` 的真实数据。
|
||||
- `ServiceStatusView.vue` 目前展示大量 Mock 状态,尚未接入 `/api/health` 与 `/api/health/simple3` 的真实数据。
|
||||
- `ProjectionController` 是本地 Mock,占位意义大于生产意义,真实链路依赖 `/api/sl/*`。
|
||||
- 运维白名单默认没有 `Ops:Dispatch` 映射,未配置前只会审计,不会真实下发内核动作。
|
||||
- 多数据库、EF Core、SystemMission、独立前端包和共享组件库仍是蓝图,不应被外部交付文档表述为已完成。
|
||||
@@ -687,8 +687,8 @@ pnpm dev
|
||||
## 14. 快速索引
|
||||
|
||||
- 后端启动:`MiGu.Server/Program.cs`
|
||||
- 登录和启动 SimpleLite:`MiGu.Server/Controllers/AuthController.cs`
|
||||
- SimpleLite 拉起器:`MiGu.Server/Launcher/SimpleLiteLauncher.cs`
|
||||
- 登录和启动 Simple3:`MiGu.Server/Controllers/AuthController.cs`
|
||||
- Simple3 拉起器:`MiGu.Server/Launcher/Simple3Launcher.cs`
|
||||
- 配置中心:`MiGu.Server/Configs/ConfigStore.cs`
|
||||
- 权限中心:`MiGu.Server/Auth/RbacStore.cs`
|
||||
- 权限 API:`MiGu.Server/Controllers/RbacController.cs`
|
||||
|
||||
Reference in New Issue
Block a user