emcp/document/前后端启动说明.md
2026-05-18 09:12:14 +08:00

8.3 KiB
Raw Blame History

电气量测控平台前后端启动说明

1. 文档说明

本文档用于说明 EMCP 项目前后端的开发环境准备、依赖安装、启动步骤、访问地址以及常见问题处理方式。

项目目录:

  • 根目录:d:\Trae_space\EMCP
  • 后端目录:d:\Trae_space\EMCP\backend
  • 前端目录:d:\Trae_space\EMCP\frontend
  • 文档目录:d:\Trae_space\EMCP\document

2. 当前项目技术栈

2.1 后端

  • 语言:Python 3.8
  • 当前虚拟环境版本:Python 3.8.10
  • 框架:FastAPI
  • 服务启动:Uvicorn
  • 配置存储:JSON
  • 报警存储:SQLite
  • 实时通信:WebSocket

2.2 前端

  • 框架:Vue 3
  • 构建工具:Vite
  • HTTP 请求:Axios

3. 启动前准备

3.1 后端准备

后端目录已创建虚拟环境:

  • 虚拟环境路径:d:\Trae_space\EMCP\backend\.venv

如虚拟环境不存在,可在 backend 目录重新创建:

cd d:\Trae_space\EMCP\backend
py -3.8 -m venv .venv

激活虚拟环境:

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1

3.2 前端准备

确保本机已安装:

  • Node.js
  • npm

进入前端目录后通过 npm 安装依赖。


4. 首次安装依赖

4.1 安装后端依赖

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1
pip install -e .[dev]

说明:

  • 当前项目已包含 setup.pypyproject.toml
  • pip install -e .[dev] 因环境兼容问题失败,可先升级 pip 后重试:
python -m pip install --upgrade pip
pip install -e .[dev]

4.2 安装前端依赖

cd d:\Trae_space\EMCP\frontend
npm install

5. 启动后端

5.1 启动命令

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1
.\.venv\Scripts\python.exe -m uvicorn app.main:app --reload

5.2 启动成功标志

终端出现类似信息表示启动成功:

Uvicorn running on http://127.0.0.1:8000

5.3 后端访问地址

  • 健康检查:http://127.0.0.1:8000/
  • 接口文档:http://127.0.0.1:8000/docs
  • OpenAPIhttp://127.0.0.1:8000/openapi.json

5.4 后端主要接口

  • 实时数据:GET /api/real-time-data
  • 设备状态:GET /api/device-status
  • 设备配置:POST /api/config/device
  • 通道配置:POST /api/config/channel
  • 线路报警设置:POST /api/config/line_alarm_setting
  • AI 报警设置:POST /api/config/ai_alarm_setting
  • 系统设置:POST /api/config/system
  • 报警历史:GET /api/alarm/list
  • 控制指令:POST /api/control/switch

5.5 WebSocket 地址

  • 实时数据:ws://127.0.0.1:8000/ws/real-time
  • 报警推送:ws://127.0.0.1:8000/ws/alarm

5.6 后端 Debug 调试启动

开发阶段如果需要断点调试后端,推荐使用以下两种方式。

方式一:在 IDE 中直接调试 uvicorn

适用于 Trae / VS Code / Cursor 一类支持 launch.json 的编辑器。

可在工作区创建或补充调试配置文件:

  • d:\Trae_space\EMCP\.vscode\launch.json

示例配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug FastAPI Backend",
      "type": "python",
      "request": "launch",
      "module": "uvicorn",
      "cwd": "d:\\Trae_space\\EMCP\\backend",
      "args": [
        "app.main:app",
        "--host",
        "127.0.0.1",
        "--port",
        "8000",
        "--reload"
      ],
      "jinja": true,
      "justMyCode": true
    }
  ]
}

使用方式:

  1. 打开项目根目录 d:\Trae_space\EMCP
  2. 选择 Debug FastAPI Backend
  3. 启动调试
  4. backend/app/ 下设置断点

说明:

  • cwd 必须指向 backend,否则 app.main:app 可能导入失败
  • 调试时建议使用后端虚拟环境解释器:d:\Trae_space\EMCP\backend\.venv\Scripts\python.exe
  • 如果 --reload 导致断点命中不稳定,可临时去掉 --reload

方式二:使用 debugpy 启动后再附加调试

先安装调试依赖:

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1
pip install debugpy

然后使用以下命令启动:

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1
python -m debugpy --listen 5678 -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload

启动后可在 IDE 中使用“附加到进程/Attach”方式连接

  • 主机:127.0.0.1
  • 端口:5678

如果不需要热重载,也可以使用更稳定的命令:

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1
python -m debugpy --listen 5678 -m uvicorn app.main:app --host 127.0.0.1 --port 8000

Debug 调试建议

  • 需要稳定断点时,优先关闭 --reload
  • 排查接口逻辑时,建议在以下位置打断点:
    • backend/app/api/routes/
    • backend/app/services/platform_service.py
    • backend/app/adapters/device_client.py
  • 如果要调试模拟采集链路,可重点查看:
    • backend/app/tasks/polling.py
    • backend/app/cache/memory_store.py
    • backend/app/ws/manager.py

6. 启动前端

6.1 启动命令

cd d:\Trae_space\EMCP\frontend
npm run dev -- --host 127.0.0.1 --port 5173

6.2 启动成功标志

终端出现类似地址表示启动成功:

Local: http://127.0.0.1:5173/

6.3 前端访问地址

  • 前端页面:http://127.0.0.1:5173/

7. 推荐启动顺序

建议按以下顺序启动:

  1. 先启动后端
  2. 再启动前端
  3. 浏览器打开前端地址进行联调

原因:

  • 前端默认请求后端接口:http://127.0.0.1:8000/api
  • 前端默认连接后端 WebSocket
    • ws://127.0.0.1:8000/ws/real-time
    • ws://127.0.0.1:8000/ws/alarm

前端接口配置位置:

  • frontend/src/api/http.ts

默认请求头中已携带:

  • X-API-Token: admin123

8. 模拟系统说明

当前项目后端默认启用模拟设备采集。

后端配置位置:

  • backend/app/core/config.py

当前关键配置:

use_mock_device: bool = True
poll_interval_seconds: float = 0.5

说明:

  • use_mock_device = True 表示使用模拟设备数据源
  • 后端会按 0.5 秒周期采集模拟数据
  • 前端可用于联调实时数据、设备状态、报警历史、控制指令、配置保存等功能

9. 当前已打通页面

当前前端页面均已可以进入,已完成联调的页面如下:

  • 实时数据
  • 设备状态
  • 设备配置
  • 通道配置
  • 报警设置
  • 报警历史
  • 控制指令
  • 系统设置

其中:

  • 设备状态 支持手动刷新
  • 报警历史 支持分页和刷新
  • 设备配置 / 通道配置 / 报警设置 已接通真实后端提交接口

10. 常用开发命令

10.1 后端测试

cd d:\Trae_space\EMCP\backend
.\.venv\Scripts\Activate.ps1
python -m pytest

10.2 前端构建

cd d:\Trae_space\EMCP\frontend
npm run build

11. 常见问题

11.1 后端启动失败,提示类型注解错误

如果出现类似报错:

TypeError: 'type' object is not subscriptable

原因通常是 Python 版本不兼容。当前项目要求使用:

  • Python 3.8

请确认虚拟环境版本是否正确。

11.2 前端页面打不开

请检查:

  • 前端服务是否已启动
  • 地址是否为 http://127.0.0.1:5173/
  • npm install 是否已执行成功

11.3 前端有页面但接口不通

请检查:

  • 后端服务是否已启动
  • 后端地址是否为 http://127.0.0.1:8000
  • frontend/src/api/http.tsbaseURL 是否正确

11.4 页面能打开但实时数据不更新

请检查:

  • 后端是否正常运行
  • 后端轮询任务是否已启动
  • WebSocket 是否可连
  • 若 WebSocket 未连通,前端当前会自动回退到 HTTP 轮询读取实时数据

11.5 保存接口返回 401 或 403

请检查请求头中是否包含:

X-API-Token: admin123

12. 关闭服务

在各自终端中按:

Ctrl + C

即可停止前端或后端服务。


13. 建议

日常开发建议保持两个独立终端:

  • 终端 1后端 uvicorn
  • 终端 2前端 vite

如果需要后续交付或部署,可在本说明基础上继续补充:

  • 生产环境启动说明
  • Windows 开机自启说明
  • Ubuntu / RK3568 部署说明
  • Nginx 反向代理说明