修复流水详情原始文件关联与Mock随机logId

This commit is contained in:
wkc
2026-03-20 16:25:22 +08:00
parent d7c9f0e5bf
commit 079b412d38
11 changed files with 427 additions and 15 deletions

View File

@@ -94,6 +94,8 @@ class FileService:
"""文件上传和解析服务"""
INNER_FLOW_TOTAL_RECORDS = 200
LOG_ID_MIN = settings.INITIAL_LOG_ID
LOG_ID_MAX = 99999
def __init__(self, staff_identity_repository=None):
self.file_records: Dict[int, FileRecord] = {} # logId -> FileRecord
@@ -104,6 +106,18 @@ class FileService:
"""按 logId 获取已存在的文件记录。"""
return self.file_records.get(log_id)
def _generate_log_id(self) -> int:
"""生成当前进程内未占用的随机 logId。"""
available_capacity = self.LOG_ID_MAX - self.LOG_ID_MIN + 1
if len(self.file_records) >= available_capacity:
raise RuntimeError("可用 logId 已耗尽")
while True:
candidate = random.randint(self.LOG_ID_MIN, self.LOG_ID_MAX)
if candidate not in self.file_records:
self.log_counter = candidate
return candidate
def _infer_bank_name(self, filename: str) -> tuple:
"""根据文件名推断银行名称和模板名称"""
if "支付宝" in filename or "alipay" in filename.lower():
@@ -230,9 +244,8 @@ class FileService:
Returns:
上传响应字典
"""
# 生成唯一logId
self.log_counter += 1
log_id = self.log_counter
# 生成唯一 logId
log_id = self._generate_log_id()
# 推断银行信息
bank_name, template_name = self._infer_bank_name(file.filename)
@@ -570,9 +583,8 @@ class FileService:
data_start_date_id = request.dataStartDateId
data_end_date_id = request.dataEndDateId
# 使用递增 logId确保与上传链路一致
self.log_counter += 1
log_id = self.log_counter
# 使用随机 logId确保与上传链路一致且不覆盖现有记录
log_id = self._generate_log_id()
rule_hit_plan = self._build_rule_hit_plan(log_id)
primary_enterprise_name, primary_account_no = self._generate_primary_binding()