修复智能填表功能:支持直接从结构化数据提取列值并完善JSON解析
- 新增 _extract_values_from_structured_data 方法,直接从Excel rows提取列值 - 新增 _extract_values_by_regex 方法,使用正则从损坏的JSON中提取值 - 增大 max_tokens (500→50000) 和 max_length (8000→200000) 限制 - 改进JSON解析逻辑,处理markdown代码块包裹和不完整JSON - 解决LLM返回被截断的JSON无法正确解析的问题
This commit is contained in:
@@ -26,7 +26,9 @@ class MongoDB:
|
||||
try:
|
||||
self.client = AsyncIOMotorClient(
|
||||
settings.MONGODB_URL,
|
||||
serverSelectionTimeoutMS=5000,
|
||||
serverSelectionTimeoutMS=30000, # 30秒超时,适应远程服务器
|
||||
connectTimeoutMS=30000, # 连接超时
|
||||
socketTimeoutMS=60000, # Socket 超时
|
||||
)
|
||||
self.db = self.client[settings.MONGODB_DB_NAME]
|
||||
# 验证连接
|
||||
|
||||
@@ -104,8 +104,15 @@ class XlsxParser(BaseParser):
|
||||
# pandas 读取失败,尝试 XML 方式
|
||||
df = self._read_excel_sheet_xml(file_path, sheet_name=target_sheet, header_row=header_row)
|
||||
|
||||
# 检查 DataFrame 是否为空
|
||||
if df is None or df.empty:
|
||||
# 检查 DataFrame 是否为空(但如果有列名,仍算有效)
|
||||
if df is None:
|
||||
return ParseResult(
|
||||
success=False,
|
||||
error=f"工作表 '{target_sheet}' 读取失败"
|
||||
)
|
||||
|
||||
# 如果 DataFrame 为空但有列名(比如模板文件),仍算有效
|
||||
if df.empty and len(df.columns) == 0:
|
||||
return ParseResult(
|
||||
success=False,
|
||||
error=f"工作表 '{target_sheet}' 为空,请检查 Excel 文件内容"
|
||||
|
||||
Reference in New Issue
Block a user