current-state.md 8.7 KB

调度配置现状梳理

状态:2026-10-19 重构前梳理,基于 master 87182c7。本文只记录现有代码的行为与问题,不代表新需求;新需求见 requirements.md。

1. 功能概览

现有功能是云端 TOU 调度模版的只读浏览器:后端代理 FWH 云平台的模版接口,前端展示列表、详情并导出 JSON。写入(新增/更新)只在 MCP 工具中提供,且仅支持测试服。

层 位置 现状
路由 src/router/record.ts(despatch-config) 菜单“调度配置”,子页“调度模版(生产)”“调度模版(测试)”
生产页 src/views/despatch-config/touTemplatePro.vue 列表:模版类型/发布状态/关键字过滤、分页;右键或按钮“查看”弹窗显示详情
测试页 src/views/despatch-config/touTemplateTest.vue 空页面,只有 NCard
详情组件 src/views/despatch-config/component/templateTable.vue 按季节 × 日类型分组展示时段表;由优先级反推调度类型 A~H;下载 JSON(外部配置编辑器格式);xlsx 按钮禁用
前端 API src/service/despatchConfig/ 仅 list、info,仅生产服
后端路由/控制器 service/routes/despatchConfigRoutes.go、service/controllers/despatchConfigControllers.go GET /despatchConfig/touTemplatePro/list、/info
Service service/services/despatchConfigServices.go 生产服:list、detail;测试服:list、detail、save、cites
Repo(生产) service/repositories/api/fwh_pro/fwh_touTemplate.go selectIotTouTemplateList、getIotTouTemplateDetailById,结果为 interface{} 透传
Repo(测试) service/repositories/api/fwh_test/fwh_touTemplate.go 另有 updateOrSaveIotTouTemplate、selectCitesList
DTO service/dto/fwhTestTouTemplateDTO.go、service/dto/touTemplateDTO.go 测试服写入 DTO 完整;TouTemplateItemInfo 未被使用
MCP service/cmd/mcp/tools/service/tou_template.go service_tou_template_list/detail/save/cites;save、cites 仅测试服
知识文档 deploy/kiro/skills/fwh-toolbox-workflow/references/tou-template.md 字段字典、日类型配对、校验规则,是目前最完整的字段说明
相关模块 src/views/local-utils/log-357-parser/func/parseScheduling.ts 357 日志解析中另一套“优先级 → 调度类型”映射

2. 云端接口(hes-gateway)

接口 方法 用途 已接入环境
/hes-gateway/manage/selectIotTouTemplateList POST form 模版列表;支持 sourceType、status、search、分页,另有 countryId、provinceId、更新时间范围(未使用) 生产、测试
/hes-gateway/manage/getIotTouTemplateDetailById POST form 模版详情 生产、测试
/hes-gateway/manage/updateOrSaveIotTouTemplate POST JSON 新增/更新,返回模版 ID;templateId 有值为更新 测试
/hes-gateway/manage/selectCitesList GET 国家/省/市列表;查省市需 countryId 且 type=1 测试

尚未找到:发布、取消发布、删除模版的接口。

3. 数据模型

Template(模版主体)
  国家/省、电力公司(简称/全称)、DER 计划、资费套餐、电价类型 electricityType、
  名称、mookRunCount、priority、env(位域)、sourceType、status
 └─ strategyList[](策略)
      seasonName、month("1,2,…")、日类型、可选购电/卖电电价
      日类型配对:每天(ccociateType=1, dayType=3, ccociateSn="")
                或 工作日(2,1) + 周末/节假日(3,2),同组共用 ccociateSn("0" 起递增)
     └─ detailVoList[](时段,00:00→24:00 首尾衔接全覆盖)
          waveType 峰平谷、name、briefDescribe、solarPriority/loadPriority(3 值字符串)、
          各功率上限/固定功率(kW,单台)、SOC、offGrid/solarCutoff/heatEnable/powerOffApower/rampTime…

字段完整定义见 tou-template.md 与 fwhTestTouTemplateDTO.go。

调度类型由 solarPriority + loadPriority 组合反推:

光伏优先级 负载优先级 类型
1,2,0 1,3,2 A 光伏余电馈网
1,2,0 1,2,0 B 电池待机
1,3,2 1,2,0 C 光伏余电充电
1,3,2 1,3,2 D 自发自用
1,2,3 1,2,0 E/G 光伏优先充电(G 为使能电网充电)
1,2,0 1,2,3 F/H 电池优先供载(H 为使能电池馈网)
其他 — 有 dischargePower 视为强制放电,有 chargePower 视为充电/备电,否则未知

4. 问题清单

4.1 功能缺失

  1. 测试服页面为空,测试服 API 未暴露给前端。
  2. 页面不能新增、编辑、复制、发布;写入只能走 MCP,且仅测试服。
  3. xlsx 导出未实现;JSON 导出为外部“配置编辑器”格式(新需求中不再支持)。
  4. 无国家/地区下拉,未使用云端已支持的国家、省、更新时间过滤。

4.2 逻辑分散、不一致

  1. “优先级 → 调度类型”映射存在三份(详情展示、JSON 导出、parseScheduling.ts),覆盖范围不同:导出遇 A 直接抛“未实现”;parseScheduling 多 noPriority;9,9,9 等自定义组合都无法识别。
  2. 详情按 seasonName 分组而非 ccociateSn 配对,同季节名多组“工作日 + 周末”会互相覆盖;导出按 seasonName + month 分组,口径与展示不同。
  3. 数据异常直接 throw,详情弹窗整体渲染失败,无容错展示。
  4. 导出中 id/key 用 Date.now(),同一循环内重复。

4.3 类型与结构

  1. 生产服接口透传 interface{},前端 interface.ts 与测试服写入 DTO 是两套结构,存在差异。
  2. 双环境通过复制函数区分(FwhTestXxx),未像 fwh_mqtt 那样做成环境参数化的通用模块。
  3. 命名不统一:despatch/dispatch 混用;云端字段自带拼写问题(derSchdule、eletic*、ccociate*、mookRunCount),需决定是否在 DTO 层映射。