# 故障录波当前实现状态 > 核对日期:2026-10-16。本文只描述当前仓库事实,不代表设计目标已经落地。目标见 [requirements.md](requirements.md),设计见 [technical-design.md](technical-design.md) 和 [ui-design.md](ui-design.md)。 ## 1. 能力现状 | 能力 | 当前状态 | 代码依据 | | --- | --- | --- | | 生产服/测试服 MQTT | **已完成**(2026-10-16):按环境各建一个客户端实例;单个环境初始化失败只记日志、不影响服务启动;原复制包 `fwh_mqtt_test` 已删除 | `service/repositories/mqtt/fwh_mqtt/fwh_mqtt_client.go` 的 `Env`、`ParseEnv`、`InitFwhMqttClient(env, cfg)`;`service/main.go`;单元测试 `fwh_mqtt_client_test.go`。未用真实设备验证 | | MQTT 收发方式 | 只有一问一答(`sendMessageWait`)和只发送(`sendMessageOnce`);没有持续监听;空闲 5 分钟断开 | `fwh_mqtt_client.go` | | 参数设置 | 已有 MQTT 入口,等待 `378` 后返回;接口支持可选 `env`;没有观察 `379` 逐项结果;前端无环境选择、无确认弹窗 | `fwh_mqtt_fault_record.go`、`/faultRecord/paramSetting`、`src/views/fault-record/write/index.vue` | | 设备信息(`cmd=0`) | 未实现 | — | | 录波记录获取(`cmd=2` + `607~610` + 下载) | 未实现;`607~610` 只有日志类型常量 | `service/domain/fwhProMqttDomain.go` | | 参数读取(`cmd=3`) | 未实现 | `src/views/fault-record/read/index.vue` 为空页面 | | 取消(`cmd=4`) | 未实现 | — | | 协议编解码、文件解析、CSV | 未实现;`service/function/FaultRecordFile` 为空目录 | — | | 异步任务与恢复 | 未实现;可复用 asynq 任务系统 | `service/task`,参考 `task/queue/dataDownloadQueue` | | 操作记录与文件存储 | 未实现;可复用 MongoDB、MinIO | `service/repositories/mongo`、`service/repositories/minio`、`service/utils/minio` | | 站点设备列表 | 生产服、测试服的站点信息接口均已存在,未用于本功能 | `fwh_pro.QuerySiteInfoList`、`fwh_test.QuerySiteInfoList`(`fhpSn` 为 aPower SN 列表) | | 前端菜单 | 现为“故障录波配置 → 读取配置/写入配置”,未按新结构调整 | `src/router/record.ts` | ## 2. 现有代码入口 | 位置 | 当前作用 | | --- | --- | | `service/utils/mqttClient/mqttClient.go` | paho 封装:连接、订阅(断线重连后自动恢复)、发布 | | `service/repositories/mqtt/fwh_mqtt/fwh_mqtt_client.go` | 按环境的 FWH MQTT 客户端;发送经 worker 串行处理 | | `service/repositories/mqtt/fwh_mqtt/fwh_mqtt_fault_record.go` | `377/378` 常量、参数设置结构、`FaultRecordParamSetting`、调试用 `ChargeChannel` | | `service/repositories/mqtt/fwh_mqtt/fwh_mqtt_debug.go` | `EnableXlog`,固定使用生产服 | | `service/repositories/mqtt/fwh_mqtt/test/main.go` | 测试服手动调试脚本 | | `service/services/faultRecordServices.go`、`controllers/faultRecordControllers.go`、`routes/faultRecordRoutes.go` | 参数设置 HTTP 路径 `/faultRecord/paramSetting` | | `src/views/fault-record/write/index.vue`、`read/index.vue` | 旧参数设置页面、读取页占位 | | `service/repositories/api/fwh_pro/fwh_faultRecord.go` | 现有 FWH API 故障录波流程(DataDownload 使用,不改动) | ## 3. 与设计的差距 按 [technical-design.md](technical-design.md) 的分层,尚需实现: 1. **L2 协议编解码与解析器**:`377` 构造;`378/379/607~610` 解析(含 `608` 重复键);解压;`hexData`、`failuredata`、`waveformdata` 解析;CSV 生成。 2. **L1 客户端改造**:增加 `Subscribe`(多订阅者、引用计数、订阅期间不空闲断开)和通用信封构造;把业务代码移出客户端包。 3. **下载**:按环境域名、无 token 下载 hes-upload 文件。 4. **存储**:Mongo `fault_record_operations`、MinIO `fault-record///`。 5. **L3 任务执行器**:`faultRecordQueue`、网关锁、状态机、取消、重启恢复。 6. **L4/L5 接口**:创建操作、查询状态与历史、取消、导出、设备列表。 7. **前端**:新菜单结构和四个功能页、录波详情、参数设置新页面。 依赖实测才能最终确认的部分见 [technical-design.md](technical-design.md#9-待实测前提)。