From efbb22494e21fbe9fc23263e4bbf37ef9b5a8a3f Mon Sep 17 00:00:00 2001 From: Eric0801 <33929918+Eric0801@users.noreply.github.com> Date: Thu, 23 Oct 2025 01:47:39 +0800 Subject: [PATCH] fix: improve load_assets error handling and logging - Split data_tw and data_us loading into separate try-catch blocks - Add detailed logging for successful loads and errors - Ensure variables are always initialized to empty dict on failure - Fix potential None value issue in strategy_tw route --- main.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 1b89ec5..6db365e 100644 --- a/main.py +++ b/main.py @@ -63,11 +63,24 @@ def load_assets(): try: with open('assets_tw.json') as f: data_tw = json.load(f) + logger.info(f"Loaded assets_tw.json with {len(data_tw)} items") + except FileNotFoundError as e: + logger.warning(f"Assets file not found: {e}") + data_tw = {} + except Exception as e: + logger.error(f"Error loading assets_tw.json: {e}") + data_tw = {} + + if data_us is None: + try: with open('assets_us.json') as f: data_us = json.load(f) + logger.info(f"Loaded assets_us.json with {len(data_us)} items") except FileNotFoundError as e: - print(f"Warning: Assets file not found: {e}") - data_tw = {} + logger.warning(f"Assets file not found: {e}") + data_us = {} + except Exception as e: + logger.error(f"Error loading assets_us.json: {e}") data_us = {} def login_required(): @@ -234,6 +247,7 @@ def strategy(): else: flash('使用投組功能請先登入。', 'warning') return redirect(url_for('login')) + load_assets() # Ensure assets are loaded session['tw'] = 0 return render_template('strategy_tw.html', data_us = data_us, data_tw=data_tw, stock=['TSLA']) @@ -248,6 +262,7 @@ def strategy_tw(): else: flash('使用投組功能請先登入。', 'warning') return redirect(url_for('login')) + load_assets() # Ensure assets are loaded session['tw'] = 1 return render_template('strategy_tw.html', data_tw=data_tw, stock=['2330.TW']) @@ -625,6 +640,7 @@ def copy_portfolio(): return redirect(url_for('login')) if not 'tw' in session: return redirect(url_for('index')) + load_assets() # Ensure assets are loaded session['tw'] = 0 return render_template('strategy_tw.html', data_us = data_us, data_tw=data_tw, stock=session['currStockList'])