Files
est-frame/README.md
2025-10-22 05:38:27 +00:00

56 lines
3.5 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# est-frame 框架说明
est-frame 是 EST 系统平台的前端框架,基于 Docusaurus 搭建门户与导航,负责登录鉴权、权限控制、以及将各功能子系统(布线/无线测试、场景模拟、竞赛等)通过 iframe 无缝嵌入。后端接口由 est-api 仓库提供。
## 运行与构建
- Node 版本要求:`>= 18`
- 安装依赖:`npm install`
- 本地开发:`npm start`(默认监听 `0.0.0.0:3001`
- 生产构建:`npm run build`
## 端口与服务约定
- `API_BASE_URL``${protocol}//${hostname}:3000`(见 `src/config.js`
- 提供 `/login``/check-auth``/user-info``/update-activity``/network-config` 等接口。
- `SURVEY_URL``${protocol}//${hostname}:3005`(考试服务)。
- 子系统iframe 注入,见 `DynamicAuthIframe``routeToPortMap`
- `:3002``/FlukeMoniPage``/NetAllyMoniPage``/Control` est-moni仓库
- `:3003``/Office``/Industry``/DataCenter``/Competition``/CompetitionAdmin`est-dsx仓库
> 提示:上述服务需独立运行并允许被本项目页面 iframe 加载;本项目通过 URL 查询参数将登录态与用户上下文传递给子系统。
## 鉴权与权限
- 登录页:`src/pages/login.js`,组件:`LoginComponent`
- 提交到 `/login`,前端使用 AES 加密。
- 成功后保存 `authToken``username` 并触发后续鉴权检查。
- 鉴权钩子:`src/hooks/useAuth.js`
- 初始化调用 `/check-auth` 验证令牌,成功则继续 `/user-info` 获取并缓存 `username``organization``userLevel``model` 等;每 5 分钟向 `/update-activity` 上报心跳。
- 页面包裹:`src/components/AuthWrapper.js`
- 除登录页外均受保护加载超时5s或未登录将重定向 `/login`
- 根据 `userLevel` 控制访问:
- Level 0仅 Fluke 相关路由
- Level 2仅 NetAlly 路由
- Level 3Fluke + NetAlly
- Level 4Fluke + NetAlly + 基础场景 + 竞赛
- Level ≥8包含管理员路由在内的全部访问
- 布局覆写:`src/theme/Layout.js` 将非登录页统一置于 `AuthWrapper` 下。
## 页面与功能src/pages
- `index.js`:首页门户,展示站点标题与功能入口(`HomepageFeatures`)。
- `login.js`:登录入口(`LoginComponent`)。
- `FlukeMoniPage.js` / `NetAllyMoniPage.js` / `Control.js`:通过 `DynamicAuthIframe` 加载 `:3002` 对应子系统。
- `Office.js` / `Industry.js` / `DataCenter.js`:通过 `DynamicAuthIframe` 加载 `:3003` 场景模拟页面,并携带 `faultScenarios` 参数;包含最佳体验的全屏提示。
- `Competition.js`:加载 `:3003` WorldSkill 竞赛场景。
- `CompetitionAdmin.js`:加载 `:3003/admin` 竞赛管理。
- `Survey.js`:加载问卷/调查(也可使用 `SurveyEmbed` 在文档页嵌入:`/s/{surveyId}?estorg=&estuser=`)。
- `AdminPanel.js`:管理面板(`components/AdminPanel`)。
- `About.js`:示例页,调用 `/network-config` 读取并展示网络配置。
## 关键组件与配置src/components, src/theme, src/config.js
- `useAuth`:封装登录状态、用户信息、心跳与工具方法(`login/logout/checkAuthStatus/getUserInfo`)。
- `AuthWrapper`:路由访问控制与未登录重定向。
- `DynamicAuthIframe`:根据当前路由映射至子系统地址,统一附加 `token/org/user/userLevel/estmodel` 等参数。
- `SurveyEmbed`:用于在页面内嵌问卷服务(来源 `SURVEY_URL`)。
- `DynamicTitle`:根据上下文动态设置页面标题。
- `src/config.js`:统一定义后端与问卷服务地址。