from framework.core.base_api import BaseAPI from framework.config.settings import Config class BillingService(BaseAPI): def __init__(self): super().__init__(Config.CLOUD_BASE_URL, Config.CLOUD_AUTH_TOKEN) def fetch_billing_data(self, name: str = None, page_size: int = 500): endpoint = "/api/dcloudResourceApi/consumptions" params = { "page": 1, "pageSize": page_size, "exactMatch": "true" } if name: params["instanceName"] = name headers = self.get_common_headers("/admin/consumptions") data = self.request("GET", endpoint, params=params, headers=headers) # 提取数据项 data_body = data.get("data", {}) if isinstance(data_body, list): items = data_body else: items = data_body.get("list") or data_body.get("items") or [] # 精准匹配校准 (如果接口过滤不准) if name: items = [item for item in items if str(item.get("instanceName", "")) == name] return items