360 Secure SkillHub
360 安全技能中心

Energy App Middle Integration

面向 changyuanfeilun 能源平台的集成参考,说明 Owner/Provider/Platform REST 路由、gRPC 客户端配置、X-ACCESS-TOKEN 等认证头、租户隔离、下游服务与数据库依赖,并列出常见错误与关键 DTO。

effort02
effort02
热度 37.49
最近更新 2026-05-11 17:44:17
分类:开发依赖:纯提示词应用场景:API 集成

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add energy-app-middle-integration
Metadata
name
energy-app-middle-integration
description
Use when integrating with the energy-app-middle BFF service - covers REST API endpoints, gRPC client setup, authentication headers, multi-tenancy, and downstream service dependencies for the changyuanfeilun energy platform.

energy-app-middle Integration Guide

Overview

energy-app-middle is a BFF + API aggregation layer for the distributed energy management platform. It exposes REST APIs to three client types (Owner / Provider / Platform) and orchestrates calls to IoT Core, IoT PaaS, IAM, algorithm services, and time-series databases.

Quick Reference

Client Type Base Path Audience
Owner API /api/owner/* Energy asset owners
Provider API /api/provider/* Service providers
Platform API /platform-api/* Platform admins
gRPC Server port 9090 Internal services
Management port 38081 Actuator / metrics

1. Key REST Endpoints

Owner API (/api/owner/)

Method Path Description
GET /api/owner/der/control_record/{resourceId} DER control records (paginated)
GET/POST /api/owner/der/control_automation/{resourceId} DER automation settings
POST /api/owner/der/control_automation/{resourceId}/switch Toggle automation on/off
POST /api/owner/der/control_automation/{resourceId}/device Device automation properties
GET/POST /api/owner/project/price/{projectId} Electricity pricing
GET /api/owner/project/statistics/* Project electricity statistics
GET /api/owner/project/trend/* Project trend charts
GET/POST /api/owner/der/plan_prompt/* DER plan prompts

Provider API (/api/provider/)

Method Path Description
GET /api/provider/der/{resourceId}/billing_type Billing type (TOU/Market)
GET/POST /api/provider/der/{resourceId}/market_price_config Market price configs

Platform API (/platform-api/)

Method Path Description
GET /platform-api/market/config?marketCode={code} Market metric configurations
POST /platform-api/data Query market metric data

2. Authentication & Headers

Token validation is delegated to IAM via gRPC. All requests must carry:

Header Description
X-ACCESS-TOKEN JWT token (validated by IAM)
X-App App code
X-Tenant Tenant code
X-UID User UID (set by gateway)
X-PUID Parent UID (for sub-accounts)

All data is tenant-scoped — tenantCode is extracted from request context and applied to every query.

3. gRPC Integration (Internal Services)

Dependency

<dependency>
    <groupId>com.feilun</groupId>
    <artifactId>energy-app-middle-grpc-interface</artifactId>
</dependency>

Client Configuration

grpc:
  client:
    energy-app-middle:
      address: dns:///energy-app-middle.${K8S_POD_NS}.svc.cluster.local:9090
      negotiationType: PLAINTEXT
      enableKeepAlive: true

4. Downstream Dependencies

Service Protocol Purpose
iam gRPC Token validation, authorization
iot-core gRPC Device management & queries
iot-paas gRPC Device grouping, batch tasks
basic gRPC Infrastructure services
algorithm-der-power-forecast HTTP PV power forecasting
algorithm-dispatch HTTP DR dispatch planning
algorithm-bess-opt HTTP Battery storage optimization
algorithm-bid HTTP VPP spot bidding
MySQL JDBC Transactional data
TDEngine JDBC Time-series device metrics
RisingWave JDBC Real-time metric aggregation
Apache Pulsar Messaging Device events, market data
PowerJob HTTP Distributed job scheduling

5. Key DTOs

DerAutomationSettingsReq:
  dailyMaxImport/Export, dailyMinimalImport/Export (Double)
  maximumExportPower/ImportPower (Double)
  opportunityImportPrice/ExportPrice (Double)

DerControlRecordRes:
  resourceId, controlCode, status
  startTime, endTime, controlDate
  controlCurve (JSON array of power points)

MarketMetricDataReq:
  marketCode (AEMO_REGIONS: NSW1/QLD1/VIC1/SA1/TAS1)
  metrics (List<String>), targetId, startTime, endTime

6. Environment Variables

Variable Purpose
K8S_POD_NS Kubernetes namespace (used in gRPC addresses)
BIZ_NAME Business code (energy-app-middle)
SPRING_PROFILES_ACTIVE Profile (localdev / prod)
k8s.all.mysql.host/port MySQL connection
k8s.eam.mysql.database MySQL database name
k8s.all.tdengine.host TDEngine host
k8s.all.risingwave.host/port RisingWave connection
k8s.all.pulsar.service-url Pulsar broker URL
k8s.all.powerjob.worker.server-address PowerJob server

7. Common Mistakes

Mistake Fix
Missing X-Tenant header Required for all requests — tenant isolation is enforced
Calling gRPC without X-UID/X-PUID IoT PaaS interceptor requires both headers
Querying metrics without time range TDEngine/RisingWave queries require startTime + endTime
Wrong marketCode AEMO regions: NSW1, QLD1, VIC1, SA1, TAS1 only