unit 字段。| 项目 | 说明 |
|---|---|
| 成功响应 | {"ok": true, "data": ...},HTTP 200 |
| 失败响应 | {"ok": false, "error": {"code": "...", "message": "..."}},HTTP 4xx/5xx |
期次 period | 格式 YYYY-MM,表示电价执行月份(如 2026-10 为 2026 年 10 月 1–31 日执行)。不传 = 当前应执行的一期; latest = 最新发布的一期;current = 同默认 |
方案 plan | standard 常规代理购电;x1.5 执行 1.5 倍;传 all 取两者 |
分类 cat | large 大工业(两部制,有基本电费);general 一般工商业(单一制);all |
电压 voltage | 可传 lt1 / 1-10 / 35 / 110-220,也可传全称(如 1-10千伏) |
| 鉴权 | 默认不启用;如服务端设置了环境变量 TEDAPOWER_API_TOKEN,需带请求头 X-API-Token |
/api/v1/meta返回期次列表、可选枚举(电压等级/分类/方案)与字段说明,适合前端初始化下拉框。
latest 为最新发布的一期,effective / default 为当前应执行的一期
(本月已发布则为本月,否则为最近一个已发布月份)。
/api/v1/periods期次列表(新的在前),含 status(ok 全部字段通过校验,partial 有需人工复核项)
与 effective(是否为当前应执行的一期)。
{
"ok": true,
"data": [
{"period": "2026-10", "year": 2026, "month": 10, "status": "ok",
"vdate": "2026-09-29", "images": 1, "effective": true,
"title": "天津泰达电力有限公司代理购电工商业用户电价表(2026年10月)"}
]
}
/api/v1/prices| 参数 | 必填 | 说明 |
|---|---|---|
period | 否 | 默认当前应执行的一期;可用 latest / current |
plan | 否 | 默认 standard |
cat | 否 | 默认 all |
voltage | 否 | 不传返回全部电压等级 |
GET /api/v1/prices?period=2026-10&cat=large&voltage=1-10&plan=standard
{
"ok": true,
"data": {
"period": "2026-10",
"unit": {"flat": "元/千瓦时", "demand": "元/千瓦·月", ...},
"rows": [{
"plan": "standard", "plan_label": "常规代理购电",
"cat": "large", "cat_label": "大工业(两部制)",
"voltage": "1-10千伏",
"items": {"flat": 0.68934575, "peak": 1.02152475, "valley": 0.35716675,
"td_dist": 0.1631, "demand": 43.2, "capacity": 27.0},
"globals": {"agent": 0.390531, "loss": 0.009844,
"sys": 0.098702, "fund": 0.02716875}
}],
"images": [{"page": 1, "filename": "714_01.png",
"url": "http://你的域名/img/2026-10/714_01.png",
"remote": "https://www.tedapower.com:8086/....png"}],
"source": {"id": "714", "vdate": "2026-09-29", "status": "ok", ...}
}
}
items 字段:flat 平段(非分时)、peak 高峰、valley 低谷、
sharp 尖峰(仅 1/2/7/8/12 月有)、td_dist 输配电价、
demand 最大需量、capacity 变压器容量。globals 是电价构成项。
/api/v1/history| 参数 | 必填 | 说明 |
|---|---|---|
item | 否 | 默认 flat |
voltage | 否 | 默认 1-10 |
plan | 否 | 默认 standard |
cat | 否 | 默认 large |
GET /api/v1/history?item=flat&voltage=1-10
{"ok":true,"data":{"item":"flat","item_label":"平段","unit":"元/千瓦时",
"points":[{"period":"2025-12","value":0.69830975}, ...]}}
/api/v1/bill按用电量测算两部制工业电费(不含功率因数调整)。
| 参数 | 必填 | 说明 |
|---|---|---|
voltage | 是 | 如 1-10 |
sharp/peak/flat/valley | 否 | 各时段电量 kWh |
demand | 二选一 | 最大需量 kW |
capacity | 二选一 | 变压器容量 kVA |
by | 否 | demand(默认)/ capacity |
period / plan | 否 | 默认最新一期 / 常规方案 |
GET /api/v1/bill?voltage=1-10&peak=60000&flat=120000&valley=40000&demand=800
{"ok":true,"data":{
"lines":[{"item":"peak","qty":60000,"price":1.02152475,"amount":61291.49}, ...],
"energy_amount":158299.64,"base_amount":34560.0,"total_amount":192859.64,
"total_kwh":220000.0,"avg_price":0.876635}}
/api/v1/images某期公告原图地址:url 为本站归档副本(可长期访问,不怕原站撤图),
remote 为原站地址。period 参数可选。
/img/<period>/<filename>直接返回图片二进制,带 7 天缓存头,可直接放进 <img src>。
/api/v1/stats接口调用统计(本站自身记录的调用明细,非电价数据)。参数 days 控制趋势天数(3–60,默认 14)。
GET /api/v1/stats?days=14
{"ok":true,"data":{
"totals":{"all":1234,"today":56,"yesterday":41,"week":320,"month":900},
"clients":{"unique_ip_30d":7},
"perf":{"avg_ms":12.4,"p95_ms":48,"error_rate":0.0121,"samples_30d":900},
"by_endpoint":[{"endpoint":"/api/v1/prices","n":520,"avg_ms":11.2,"errors":2}],
"by_day":[{"day":"2026-10-27","n":41},{"day":"2026-10-28","n":56}],
"by_status":[{"status":200,"n":1190},{"status":404,"n":8}],
"top_periods":[{"period":"2026-10","n":330}],
"recent":[{"ts":"10-28 09:12:33","endpoint":"/api/v1/prices",
"status":200,"ms":9,"ip":"192.168.1.*","period":"2026-10"}],
"retention_days":90,"days":14}}
说明:只统计 /api/v1/* 的请求;图片 /img/、页面、/healthz
与该统计接口本身不计入。来源 IP 已脱敏(IPv4 只保留前三段)。
| code | HTTP | 含义 |
|---|---|---|
bad_request | 400 | 参数不合法 |
bad_plan / bad_cat / bad_voltage / bad_item / bad_by | 400 | 枚举值不支持 |
missing_demand / missing_capacity | 400 | 测算基本电费缺少对应用量 |
unauthorized | 401 | 缺少或错误的 API Token |
period_not_found | 404 | 期次不存在 |
no_data / empty | 404 | 该期或该条件无数据 |
curl "http://127.0.0.1:8080/api/v1/prices?period=2026-10&cat=large&voltage=1-10"
import requests
r = requests.get("http://127.0.0.1:8080/api/v1/prices",
params={"period": "2026-10", "cat": "large", "voltage": "1-10"})
row = r.json()["data"]["rows"][0]
print(row["items"]["flat"], row["items"]["peak"]) # 平段 / 高峰