Kaynağa Gözat

feat(service): 添加阴影图处理目录完整性校验功能

- 修改validate_folder_integrity方法的文档字符串,更新为检查800x800目录和阴影图处理目录
- 添加阴影图处理目录路径变量shadow_dir并验证其存在性
- 实现阴影图处理目录文件数量统计逻辑
- 添加预期阴影图数量计算(原始图数量×2)
- 增加阴影图处理文件数量的严格校验逻辑
- 更新日志输出信息,显示阴影图处理校验结果
rambo 19 saat önce
ebeveyn
işleme
93b38966f6
1 değiştirilmiş dosya ile 27 ekleme ve 5 silme
  1. 27 5
      python/service/run_main.py

+ 27 - 5
python/service/run_main.py

@@ -265,7 +265,7 @@ class RunMain:
     def validate_folder_integrity(self, folder_path, folder_name, expected_output_count=None):
         """
         验证货号文件夹的完整性
-        检查800x800目录中的文件数量是否等于预期数量
+        检查800x800目录和阴影图处理目录中的文件数量是否等于预期数量
         
         Args:
             folder_path: 货号文件夹路径
@@ -280,6 +280,7 @@ class RunMain:
         
         original_dir = "{}/原始图".format(folder_path)
         processed_dir = "{}/800x800".format(folder_path)
+        shadow_dir = "{}/阴影图处理".format(folder_path)
         
         # 检查目录是否存在
         if not os.path.exists(original_dir):
@@ -290,6 +291,10 @@ class RunMain:
             logger.warning(f"[目录校验] 货号 {folder_name} - 800x800目录不存在: {processed_dir}")
             return False, 0, 0, 0, f"800x800目录不存在"
         
+        if not os.path.exists(shadow_dir):
+            logger.warning(f"[目录校验] 货号 {folder_name} - 阴影图处理目录不存在: {shadow_dir}")
+            return False, 0, 0, 0, f"阴影图处理目录不存在"
+        
         # 统计原始图文件数量(只统计图片文件)
         _Type = [".png", ".PNG", ".jpg", ".JPG", ".gif", ".GIF", ".jpge", ".JPGE"]
         original_files = []
@@ -309,6 +314,15 @@ class RunMain:
         
         processed_count = len(processed_files)
         
+        # 统计阴影图处理目录文件数量
+        shadow_files = []
+        for f in os.listdir(shadow_dir):
+            _, ext = os.path.splitext(f)
+            if ext in _Type:
+                shadow_files.append(f)
+        
+        shadow_count = len(shadow_files)
+        
         # 计算预期的输出文件数量
         if expected_output_count is None:
             # 从配置中获取主图尺寸列表
@@ -339,17 +353,25 @@ class RunMain:
         else:
             expected_count = expected_output_count
         
-        logger.info(f"[目录校验] 货号 {folder_name} - 原始图: {original_count}张, 800x800: {processed_count}张, 预期: {expected_count}张")
+        # 预期的阴影图数量 = 原始图数量 * 2(每个原图生成2个文件:阴影图和抠图)
+        expected_shadow_count = original_count * 2
+        
+        logger.info(f"[目录校验] 货号 {folder_name} - 原始图: {original_count}张, 800x800: {processed_count}张, 预期: {expected_count}张, 阴影图: {shadow_count}张, 预期阴影图: {expected_shadow_count}张")
         
         # 如果原始图为空,认为无效
         if original_count == 0:
             logger.error(f"[目录校验] 货号 {folder_name} - 原始图目录为空")
             return False, original_count, processed_count, expected_count, "原始图目录为空"
         
-        # 严格检查:处理后的文件数量必须等于预期数量
+        # 严格检查:800x800文件数量必须等于预期数量
         if processed_count != expected_count:
-            logger.error(f"[目录校验] 货号 {folder_name} - 处理失败: 预期{expected_count}张,实际{processed_count}张 (原始图{original_count}张 × {len(out_pic_size_list) if 'out_pic_size_list' in locals() else '?'}个尺寸)")
-            return False, original_count, processed_count, expected_count, f"处理文件数量不匹配: 预期{expected_count}张,实际{processed_count}张"
+            logger.error(f"[目录校验] 货号 {folder_name} - 800x800处理失败: 预期{expected_count}张,实际{processed_count}张 (原始图{original_count}张 × {len(out_pic_size_list) if 'out_pic_size_list' in locals() else '?'}个尺寸)")
+            return False, original_count, processed_count, expected_count, f"800x800文件数量不匹配: 预期{expected_count}张,实际{processed_count}张"
+        
+        # 严格检查:阴影图处理文件数量必须等于原始图的2倍
+        if shadow_count != expected_shadow_count:
+            logger.error(f"[目录校验] 货号 {folder_name} - 阴影图处理失败: 预期{expected_shadow_count}张(原始图{original_count}张 × 2),实际{shadow_count}张")
+            return False, original_count, processed_count, expected_count, f"阴影图文件数量不匹配: 预期{expected_shadow_count}张,实际{shadow_count}张"
         
         logger.info(f"[目录校验] 货号 {folder_name} - 校验通过 ✓")
         return True, original_count, processed_count, expected_count, "校验通过"