# 压缩机故障预测波形工作台 当前版本实现整体浏览效果,包含标注保存和登录鉴权: - 查询 `point_name`、`measurement_type`、`minTime`、`maxTime` - 三行时间点选择器,三种测量类型共享按 `sample_time` 排序的时间点索引 - 时间窗口按时间点数量选择,支持 `+/-1` - 压力、位移、加速度分图和归一化合并显示 - 后端抽样,保留周期边界和键相点 - `second_value >= 30`、每转 8 个脉冲、长脉冲为 0 度的周期识别 - 双击曲线查看压力-角度图和压力-体积功图,双击空白处标注 / 取消标注 - 登录鉴权(内置账号),所有数据接口需登录后访问 ## 启动后端 在项目根目录执行: ```bash python3 -m pip install -r backend/requirements.txt uvicorn app.main:app --app-dir backend --reload --port 8000 ``` 后端默认读取项目根目录的 `数据库.md`。也可以使用环境变量覆盖: ```bash DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=root DB_PASSWORD='...' \ DB_NAME=compressorsensor uvicorn app.main:app --app-dir backend --reload --port 8000 ``` 没有可用 MySQL 时,默认 `DEMO_MODE=auto` 会自动显示演示数据;强制演示数据可以使用: ```bash DEMO_MODE=always uvicorn app.main:app --app-dir backend --reload --port 8000 ``` ## 启动前端 另开一个终端,在 `frontend` 目录执行: ```bash npm install npm run dev ``` 浏览器访问 `http://localhost:5173`。 生产构建: ```bash npm run build ``` ## 主要接口 - `POST /api/login` —— 登录,返回 token(账号/密码见下) - `POST /api/logout` —— 登出 - `GET /api/health` - `GET /api/query-options` - `GET /api/time-points` - `POST /api/wave-window` - `GET /api/wave-files/{wave_file_id}/periods/{period_number}` - `GET /api/annotation-config` —— 返回标注宽度 `annotationWidth`(后端 `ANNOTATION_WIDTH` 配置,默认 10) - `GET /api/annotations?wave_file_ids=1,2,3` —— 查询指定波形文件的标注索引 - `POST /api/annotations` —— 创建标注(`wave_file_id`、`label`、`period_start/end`、`sample_index_start/end`) - `DELETE /api/annotations/{id}` —— 删除标注 除 `POST /api/login` 外,所有接口都需要在请求头携带 `Authorization: Bearer `。 ## 登录账号 内置账号(可用环境变量 `AUTH_USER` / `AUTH_PASSWORD` 覆盖): - 账号:`aaabbb` - 密码:`Aa*147258&cd` token 有效期默认 12 小时(`AUTH_TOKEN_TTL_SECONDS` 可配),服务重启后需重新登录。 ## 标注说明 - 标注只在波形图上进行:双击曲线查看功图,双击空白处标注 / 取消标注。 - 标注宽度由后端配置 `ANNOTATION_WIDTH`(默认 10,即 10 个周期为一段)。 - 标注块不重叠:计算宽度块时会在点击周期所在的空闲区间内居中取宽度。 - 标注数据只存索引,不存波形数据,表结构见 `wave_annotation`(`backend/app/db.py` 内建表语句,服务启动时自动建表)。