Selaa lähdekoodia

fix: safetyFsApproval 投资估算 data 为 dict 时 record_list 取 data['data'],避免 KeyError slice(同步 Clerk2.5)

何文松 3 viikkoa sitten
vanhempi
commit
4b9bb9c7da
1 muutettua tiedostoa jossa 14 lisäystä ja 14 poistoa
  1. 14 14
      pdf_converter_v2/parser/json_converter.py

+ 14 - 14
pdf_converter_v2/parser/json_converter.py

@@ -338,13 +338,13 @@ def parse_markdown_to_json(markdown_content: str, first_page_image: Optional[Ima
             
             if investment_record:
                 data = investment_record.to_dict()
-                logger.info(f"[JSON转换] 投资估算解析成功,共 {len(data)} 条记录")
-                
-                # 输出前3条记录的摘要
-                if data:
-                    for idx, item in enumerate(data[:3]):
-                        logger.debug(f"[JSON转换] 记录 {idx+1}: No={item.get('No', '')}, Name={item.get('name', '')}, Level={item.get('Level', '')}")
-                
+                # safetyFsApproval 可能返回 {"projectInfo": {...}, "data": [...]},取列表用于条数与摘要
+                record_list = data.get("data", []) if isinstance(data, dict) else (data if isinstance(data, list) else [])
+                logger.info(f"[JSON转换] 投资估算解析成功,共 {len(record_list)} 条记录")
+                if record_list:
+                    for idx, item in enumerate(record_list[:3]):
+                        if isinstance(item, dict):
+                            logger.debug(f"[JSON转换] 记录 {idx+1}: No={item.get('No', '')}, Name={item.get('name', '')}, Level={item.get('Level', '')}")
                 result = {"document_type": forced_document_type, "data": data}
             else:
                 logger.error("[JSON转换] 投资估算解析失败:parse_investment_record 返回 None")
@@ -441,13 +441,13 @@ def parse_markdown_to_json(markdown_content: str, first_page_image: Optional[Ima
         
         if investment_record:
             data = investment_record.to_dict()
-            logger.info(f"[JSON转换] 投资估算解析成功,共 {len(data)} 条记录")
-            
-            # 输出前3条记录的摘要
-            if data:
-                for idx, item in enumerate(data[:3]):
-                    logger.debug(f"[JSON转换] 记录 {idx+1}: No={item.get('No', '')}, Name={item.get('name', '')}, Level={item.get('Level', '')}")
-            
+            # safetyFsApproval 可能返回 {"projectInfo": {...}, "data": [...]},取列表用于条数与摘要
+            record_list = data.get("data", []) if isinstance(data, dict) else (data if isinstance(data, list) else [])
+            logger.info(f"[JSON转换] 投资估算解析成功,共 {len(record_list)} 条记录")
+            if record_list:
+                for idx, item in enumerate(record_list[:3]):
+                    if isinstance(item, dict):
+                        logger.debug(f"[JSON转换] 记录 {idx+1}: No={item.get('No', '')}, Name={item.get('name', '')}, Level={item.get('Level', '')}")
             result = {"document_type": doc_type, "data": data}
         else:
             logger.error("[JSON转换] 投资估算解析失败:parse_investment_record 返回 None")