# 调度配置现状梳理 > 状态:2026-10-19 重构前梳理,基于 master `87182c7`。本文只记录现有代码的行为与问题,不代表新需求;新需求见 [requirements.md](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 逻辑分散、不一致 5. “优先级 → 调度类型”映射存在三份(详情展示、JSON 导出、`parseScheduling.ts`),覆盖范围不同:导出遇 A 直接抛“未实现”;`parseScheduling` 多 `noPriority`;`9,9,9` 等自定义组合都无法识别。 6. 详情按 `seasonName` 分组而非 `ccociateSn` 配对,同季节名多组“工作日 + 周末”会互相覆盖;导出按 `seasonName + month` 分组,口径与展示不同。 7. 数据异常直接 `throw`,详情弹窗整体渲染失败,无容错展示。 8. 导出中 `id`/`key` 用 `Date.now()`,同一循环内重复。 ### 4.3 类型与结构 9. 生产服接口透传 `interface{}`,前端 `interface.ts` 与测试服写入 DTO 是两套结构,存在差异。 10. 双环境通过复制函数区分(`FwhTestXxx`),未像 `fwh_mqtt` 那样做成环境参数化的通用模块。 11. 命名不统一:`despatch`/`dispatch` 混用;云端字段自带拼写问题(`derSchdule`、`eletic*`、`ccociate*`、`mookRunCount`),需决定是否在 DTO 层映射。