fix(export): 生成的 AI 穿搭 Excel 字段名对齐标题生成产品图.xlsx
B 列从「货号」改为「商品id」,C 列从「衣服图路径」改为「原始图片路径」, 补第 7 列「货憨憨上传状态」留空,与用户实际模板文件完全一致。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+4
-3
@@ -251,13 +251,14 @@
|
||||
要求:
|
||||
|
||||
- **文件位置**:`<output>/<时间戳>.xlsx`,与 `<时间戳>/` 子目录同级。
|
||||
- **格式**:与 AI 穿搭读取的 `标题生成产品图.xlsx` 完全一致,共六列(首行为表头,数据从第 2 行起):
|
||||
- **格式**:与 `标题生成产品图.xlsx` 字段名完全一致,共七列(首行为表头,数据从第 2 行起):
|
||||
- A 标题:印花文件名(不含扩展名)
|
||||
- B 货号:留空(货号可选,AI 穿搭支持空货号)
|
||||
- C 衣服图路径:对应印花子目录的绝对路径,末尾含路径分隔符(`/`)
|
||||
- B 商品id:留空(AI 穿搭支持空货号)
|
||||
- C 原始图片路径:对应印花子目录的绝对路径,末尾含路径分隔符(`\`)
|
||||
- D 生成结果图片路径:留空(由 AI 穿搭写回)
|
||||
- E 完成状态:留空(由 AI 穿搭写回)
|
||||
- F 失败原因:留空(由 AI 穿搭写回)
|
||||
- G 货憨憨上传状态:留空
|
||||
- **行数**:等于本次批量产出的有效印花子目录数(即目录内至少有一个合成图文件),按印花文件名字母序排列。
|
||||
- 若本次批量无任何成功的印花子目录,则不生成 Excel。
|
||||
- Excel 生成后弹出信息框提示用户,内容包含文件路径和「可切换到 AI 穿搭页直接使用」的引导语;用户点击「确定」关闭。
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user