多省电价API的数据模型不能只存“峰价、平价、谷价”三个字段,而要支持省、市、电压等级、月份、时段、价格构成、更新时间、历史版本,并预留现货电价、节点电价和中长期价格扩展能力。
当系统只服务一个省份时,电价模型可以设计得很简单。但当业务扩展到多省、多项目、多客户时,电价模型会变得复杂。原因不是字段数量多,而是不同地区的规则差异会逐渐暴露出来。
例如:
- 有些地区有尖峰电价。
- 有些地区有深谷电价。
- 有些地区时段按季节变化。
- 有些地区电压等级影响价格。
- 有些地区存在特殊说明或附加口径。
如果模型一开始设计得太死,后续就会不断加临时字段,系统会越来越难维护。
不推荐的模型
{ "province": "浙江", "peakPrice": 1.02, "flatPrice": 0.68, "valleyPrice": 0.31 }这个模型适合展示,不适合系统接入。它无法表达时段、城市、电压等级、更新时间,也无法扩展尖峰和特殊规则。
推荐模型
{ "region": { "province": "浙江", "city": "杭州" }, "customer": { "userType": "industrial_commercial", "voltageLevel": "10kV" }, "effectivePeriod": { "month": "2026-06" }, "price": { "currency": "CNY", "unit": "kWh", "periods": [ { "periodType": "peak", "startTime": "09:00", "endTime": "11:00", "value": 1.0243 } ] }, "metadata": { "updatedAt": "2026-06-18T10:00:00+08:00", "sourceVersion": "2026-06-v1" } }关键设计原则
第一,时段用数组,不用固定字段。
第二,地区和用户属性分层,不要混在价格字段里。
第三,价格构成和总价分开,方便成本拆解。
第四,保留更新时间和版本号。
第五,特殊规则用notes或rules字段表达,不要塞进价格字段。
示例:
{ "rules": [ { "type": "seasonal", "description": "夏季尖峰时段适用特殊价格。" } ] }数据库表设计建议
可以拆成三张表:
| 表 | 作用 |
|---|---|
| price_region | 省、市、区域 |
| price_period | 时段、月份、类型 |
| price_value | 价格值、单位、更新时间 |
这样做的好处是后续可以扩展现货、中长期、充电桩电价等模块。
常见问题
Q:多省电价API为什么不能只按省份建模?
A:因为工商业电价往往还受到城市、电压等级、用户类型、月份、时段和价格构成影响。只按省份建模会导致后续扩展困难。
Q:现货电价数据能放进同一个模型吗?
A:可以共用区域、时间、价格和元数据层,但现货电价API通常还需要市场阶段、节点、时间粒度、点位序号和结算口径等扩展字段。
Q:电价API数据库设计要不要保留历史版本?
A:建议保留。历史版本对储能收益回测、客户报表追溯、价格变动分析和数据纠错都很重要。