diff --git a/datasource/flask_api_source.py b/datasource/flask_api_source.py index 254ab0e..f80fe22 100644 --- a/datasource/flask_api_source.py +++ b/datasource/flask_api_source.py @@ -231,13 +231,19 @@ class FlaskAPIDataSource: if response.status_code != 200: return None - data = response.json() + # 处理 zstd 响应 + try: + data = response.json() + except (json.JSONDecodeError, requests.exceptions.JSONDecodeError): + data = json.loads(response.text) - if 'error' in data or 'nav' not in data: + if 'error' in data: return None - nav_data = data.get('nav', {}) - records = nav_data.get('data', []) + # 解析净值数据 + # Flask server 返回格式: {'nav': {'data': [...], 'count': N}, 'premium_series': [...]} + nav_section = data.get('nav', {}) + records = nav_section.get('data', []) if not records: return None @@ -247,6 +253,14 @@ class FlaskAPIDataSource: df['date'] = pd.to_datetime(df['date']) df = df.set_index('date') + # 添加溢价率信息(如果有) + if 'premium_series' in data: + df.attrs['premium_series'] = data['premium_series'] + if 'latest_premium' in data: + df.attrs['latest_premium'] = data['latest_premium'] + if 'premium_stats' in data: + df.attrs['premium_stats'] = data['premium_stats'] + return df except Exception as e: