泰达代理购电电价 · 查询接口

JSON over HTTP,UTF-8 编码,支持跨域(CORS)。价格单位见各接口的 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 = 同默认
方案 planstandard 常规代理购电;x1.5 执行 1.5 倍;传 all 取两者
分类 catlarge 大工业(两部制,有基本电费);general 一般工商业(单一制);all
电压 voltage可传 lt1 / 1-10 / 35 / 110-220,也可传全称(如 1-10千伏)
鉴权默认不启用;如服务端设置了环境变量 TEDAPOWER_API_TOKEN,需带请求头 X-API-Token

接口

GET/api/v1/meta

返回期次列表、可选枚举(电压等级/分类/方案)与字段说明,适合前端初始化下拉框。 latest 为最新发布的一期,effective / default 为当前应执行的一期 (本月已发布则为本月,否则为最近一个已发布月份)。

GET/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月)"}
  ]
}
GET/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 是电价构成项。

GET/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}, ...]}}
GET/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}}
GET/api/v1/images

某期公告原图地址:url 为本站归档副本(可长期访问,不怕原站撤图), remote 为原站地址。period 参数可选。

GET/img/<period>/<filename>

直接返回图片二进制,带 7 天缓存头,可直接放进 <img src>。

GET/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 只保留前三段)。

错误码

codeHTTP含义
bad_request400参数不合法
bad_plan / bad_cat / bad_voltage / bad_item / bad_by400枚举值不支持
missing_demand / missing_capacity400测算基本电费缺少对应用量
unauthorized401缺少或错误的 API Token
period_not_found404期次不存在
no_data / empty404该期或该条件无数据

调用示例

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"])   # 平段 / 高峰

← 返回查询页