diff --git a/docs/02-prd.md b/docs/02-prd.md index 6829a23..85915b9 100644 --- a/docs/02-prd.md +++ b/docs/02-prd.md @@ -251,13 +251,14 @@ 要求: - **文件位置**:`/<时间戳>.xlsx`,与 `<时间戳>/` 子目录同级。 -- **格式**:与 AI 穿搭读取的 `标题生成产品图.xlsx` 完全一致,共六列(首行为表头,数据从第 2 行起): +- **格式**:与 `标题生成产品图.xlsx` 字段名完全一致,共七列(首行为表头,数据从第 2 行起): - A 标题:印花文件名(不含扩展名) - - B 货号:留空(货号可选,AI 穿搭支持空货号) - - C 衣服图路径:对应印花子目录的绝对路径,末尾含路径分隔符(`/`) + - B 商品id:留空(AI 穿搭支持空货号) + - C 原始图片路径:对应印花子目录的绝对路径,末尾含路径分隔符(`\`) - D 生成结果图片路径:留空(由 AI 穿搭写回) - E 完成状态:留空(由 AI 穿搭写回) - F 失败原因:留空(由 AI 穿搭写回) + - G 货憨憨上传状态:留空 - **行数**:等于本次批量产出的有效印花子目录数(即目录内至少有一个合成图文件),按印花文件名字母序排列。 - 若本次批量无任何成功的印花子目录,则不生成 Excel。 - Excel 生成后弹出信息框提示用户,内容包含文件路径和「可切换到 AI 穿搭页直接使用」的引导语;用户点击「确定」关闭。 diff --git a/src/services/excel_service.py b/src/services/excel_service.py index 193e882..bb23eb2 100644 --- a/src/services/excel_service.py +++ b/src/services/excel_service.py @@ -149,7 +149,9 @@ def read_all_rows(excel_path): workbook.close() -_OUTFIT_SOURCE_HEADERS = ["标题", "货号", "衣服图路径", "生成结果图片路径", "完成状态", "失败原因"] +_OUTFIT_SOURCE_HEADERS = [ + "标题", "商品id", "原始图片路径", "生成结果图片路径", "完成状态", "失败原因", "货憨憨上传状态", +] def write_outfit_source_excel(excel_path, rows): @@ -157,14 +159,15 @@ def write_outfit_source_excel(excel_path, rows): rows: ordered sequence of (print_name, subdir_path) pairs. subdir_path should end with a path separator so AI穿搭 treats it as a directory. - Columns: A=print_name, B=empty(货号可空), C=subdir_path, D/E/F=empty (AI穿搭 writes back). + Columns match 标题生成产品图.xlsx: A=print_name, B=empty(商品id), C=subdir_path, + D/E/F=empty (AI穿搭 writes back), G=empty(货憨憨上传状态). """ rows = list(rows) wb = Workbook() ws = wb.active ws.append(_OUTFIT_SOURCE_HEADERS) for print_name, subdir_path in rows: - ws.append([print_name, None, subdir_path, None, None, None]) + ws.append([print_name, None, subdir_path, None, None, None, None]) wb.save(str(excel_path)) wb.close() logger.info("Wrote outfit source Excel: %s (%d rows)", excel_path, len(rows)) diff --git a/tests/test_excel_service.py b/tests/test_excel_service.py index 0000d02..8db81f8 100644 --- a/tests/test_excel_service.py +++ b/tests/test_excel_service.py @@ -156,8 +156,8 @@ class TestOutfitExcelService(unittest.TestCase): ws = wb.active try: self.assertEqual( - [ws.cell(1, c).value for c in range(1, 7)], - ["标题", "货号", "衣服图路径", "生成结果图片路径", "完成状态", "失败原因"], + [ws.cell(1, c).value for c in range(1, 8)], + ["标题", "商品id", "原始图片路径", "生成结果图片路径", "完成状态", "失败原因", "货憨憨上传状态"], ) self.assertEqual(ws.max_row, 3) # 1 header + 2 data self.assertEqual(ws.cell(2, 1).value, "floral")