feat:完成大部分数据文件上传解析功能

This commit is contained in:
2026-10-08 08:23:01 -07:00
parent 05c050d2ba
commit bb6a9405db
27 changed files with 2675 additions and 18 deletions
+32
View File
@@ -0,0 +1,32 @@
"""数据文件各环节共用的异常和上限"""
# 每张表的数据行数上限
MAX_TABLE_ROWS = 1_000_000
UNSUPPORTED_FORMAT = "不支持的文件格式,支持 CSV、TSV、Excel、JSON、JSONL、Parquet"
class DataFileError(Exception):
"""文件无法接收或解析;status 是返回给调用方的 HTTP 状态码,message 可以直接展示
解析在子进程里执行,异常要能跨进程传递,所以参数原样放进 args
"""
def __init__(self, status: int, message: str):
super().__init__(status, message)
self.status = status
self.message = message
def __str__(self) -> str:
return self.message
def where(sheet: str | None) -> str:
"""警告和错误信息的位置前缀:Excel 写 sheet 名,其他格式不写"""
return f"{sheet}:" if sheet else ""
def rows_exceeded(sheet: str | None) -> DataFileError:
return DataFileError(
422, f"{where(sheet)}超过 {MAX_TABLE_ROWS // 10_000} 万行,请拆分后上传"
)