2026-05-29 10:51:04.624 | SUCCESS | plugins.base_generator:discover_plugins:84 - 加载插件 [cpi_chart]: CPI/PPI通胀图表生成器 2026-05-29 10:51:04.626 | SUCCESS | plugins.base_generator:discover_plugins:84 - 加载插件 [gdp_chart]: GDP趋势图表生成器 2026-05-29 10:51:04.626 | INFO | plugins.base_generator:discover_plugins:90 - 插件扫描完成,共加载 2 个生成器 2026-05-29 10:51:04.628 | INFO | ai.llm_analyst:__init__:9 - LLM分析师初始化,提供者: mock 2026-05-29 10:51:04.629 | INFO | orchestrator:_report_progress:54 - [LOAD] 创建新演示文稿(模板不存在: macro_analysis_template.pptx) 2026-05-29 10:51:04.757 | ERROR | __main__:handle_start_generation:82 - 生成过程出错 Traceback (most recent call last): File "C:\Users\dxzq\AppData\Local\Programs\Python\Python311\Lib\site-packages\eventlet\greenthread.py", line 272, in main result = function(*args, **kwargs) │ │ └ {} │ └ (, '04KQWf-21Cy15gXGAAAB', 'CF55wc3dPDdRhyZXAAAA', ['start_generation', ... └ > File "C:\Users\dxzq\AppData\Local\Programs\Python\Python311\Lib\site-packages\socketio\server.py", line 597, in _handle_event_internal r = server._trigger_event(data[0], namespace, sid, *data[1:]) │ │ │ │ │ └ ['start_generation', {'params': {'year': 2026, 'quarter': 'Q1'}}] │ │ │ │ └ '04KQWf-21Cy15gXGAAAB' │ │ │ └ '/' │ │ └ ['start_generation', {'params': {'year': 2026, 'quarter': 'Q1'}}] │ └ File "C:\Users\dxzq\AppData\Local\Programs\Python\Python311\Lib\site-packages\socketio\server.py", line 623, in _trigger_event return handler(*args) │ └ ('04KQWf-21Cy15gXGAAAB', {'params': {'year': 2026, 'quarter': 'Q1'}}) └ File "C:\Users\dxzq\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask_socketio\__init__.py", line 306, in _handler return self._handle_event(handler, message, real_ns, sid, │ │ │ │ │ └ '04KQWf-21Cy15gXGAAAB' │ │ │ │ └ '/' │ │ │ └ 'start_generation' │ │ └ │ └ File "C:\Users\dxzq\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask_socketio\__init__.py", line 858, in _handle_event ret = handler(*args) │ └ ({'params': {'year': 2026, 'quarter': 'Q1'}},) └ > File "F:\ppt\ppt_manager_v2\web_socket_app.py", line 72, in handle_start_generation output_path = orch.run_full_pipeline(params=params) │ │ └ {'year': 2026, 'quarter': 'Q1'} │ └ File "F:\ppt\ppt_manager_v2\orchestrator.py", line 238, in run_full_pipeline self.load_template(template_path) │ │ └ None │ └ File "F:\ppt\ppt_manager_v2\orchestrator.py", line 76, in load_template slide.shapes.title.text = "GDP趋势图" if slide.shapes.title else "" │ │ │ └ │ │ └ │ └ AttributeError: 'NoneType' object has no attribute 'text'