← 返回知识库 # COS → 生图 → 审图 → 网页 全管线文档 > 更新: 2026-07-05 | 包含5号(生图端) + 4号(管线端) --- ## 一、管线全景 ``` 5号(生图端) 4号(管线端) ┌───────────────┐ ┌──────────────────┐ │ GPT DALL-E │ 上传 COS │ dedup.py │ │ 批量生图 │ ──────────→ │ 下载到本地 │ │ │ │ │ │ _L.jpg 首图 │ │ sync_cos_to_ │ │ _s1.jpg 场景 │ │ review.py │ │ _c.jpg 搭配 │ │ → 写入审图数据库 │ └───────────────┘ │ │ │ review_server.py │ │ → 8899 审图网页 │ │ │ │ 审图通过 → │ │ upload_approved.py│ │ → 上传回COS │ │ │ │ gallery-server.py│ │ → 8895 展示网页 │ │ │ │ Next.js 商城前端 │ │ → 3000 商品详情页 │ └──────────────────┘ ``` --- ## 二、文件清单 ### 5号服务器(生图端) | 文件 | 功能 | |------|------| | `/root/tagger-agent/scripts/gpt-lookbook-loop.py` | **主生图脚本** — 从队列读取任务,通过 ChatGPT DALL-E 批量生成图片 | | `/root/tagger-agent/scripts/prompt_gen.py` | **提示词引擎** — 生成4组prompt:[Lookbook1, Lookbook2, Editorial1, Editorial2] | | `/root/tagger-agent/scripts/gen_outfit_plan.py` | **搭配方案生成** — v4算法,从DB读336款生成100套搭配方案 | | `/root/tagger-agent/scripts/outfit_matcher_v4.py` | **搭配算法v4** — 融合算法,含促销过滤 | | `/root/tagger-agent/scripts/run_pipeline.py` | **流水线调度** — 统一管理 sync/tag/outfit/audit/build_queue/lookbook 六阶段 | | `/root/tagger-agent/scripts/cos_image_audit.py` | **COS缺图审计** — 扫COS `generated/` 确定缺图SKU | | `/root/.hermes/scripts/queue-supplement.py` | **队列补充** — 为缺图单品添加 solo 任务 | | `/root/scripts/upload_lookbook_to_cos.py` | **COS上传** — 将本地lookbook图上传到COS `generated/` | | `/root/scripts/push-to-feishu.py` | **飞书推送** — 每15分钟扫最新目录推未推送图 | ### 5号关键目录 | 路径 | 内容 | |------|------| | `/data/lookbook/output/` | 生成图输出目录(含各batch子目录 + latest 软链接) | | `/data/lookbook/output/latest/` | 软链接 → 最新batch目录 | | `/data/lookbook/inbox/` | 输入文件(模特参考图、模板) | | `/root/tagger-agent/output/generation_queue.json` | 生图队列(447 jobs) | | `/root/tagger-agent/output/generation_progress.json` | 队列进度跟踪 | | `/root/tagger-agent/config/` | 配置文件目录 | | `/root/kling_pipeline_work/high_score_outfits.json` | 搭配方案(100套) | ### 5号配置文件 | 文件 | 内容 | |------|------| | `config/environment.json` | 环境配置:模特参考图路径、输出尺寸 | | `config/gallery.json` | 图库配置:输出目录、JPG质量、是否强制JPG | ### 4号服务器(管线端) | 文件 | 功能 | |------|------| | `/data/xinan-fashion/sync_cos_to_review.py` | **COS→审图同步** — 扫COS `generated/`,解析 `_c.jpg`/`_s1.jpg`/`_s2.jpg`/`_L.jpg`,写入 `review_images` 表 | | `/data/xinan-fashion/gallery-server.py` | **Gallery展示** — 从 `/cos_local/` 生成图片浏览网页(端口8895) | | `/data/pipeline_test/scripts/review/review_server.py` | **审图服务器** — 动态生成审图Web页面(端口8899) | | `/data/pipeline_test/scripts/cos/upload_approved.py` | **已审上传** — 审图通过的图片回传COS + 更新fashion.db | | `/data/dedup.py` | COS下载器(按文件名去重) | | `/data/clean_and_sync.py` | COS全桶扫描下载 | | `/data/dedup_images.py` | pHash视觉去重 | | `/data/compress_images.py` | JPG压缩到quality=65 | | `/data/build_image_index.py` | 构建图片索引 → `/data/image_index.json` | | `/data/xinan-fashion/src/app/` | Next.js商城前端(端口3000) | ### 4号关键目录 | 路径 | 内容 | |------|------| | `/data/cos_images/` | 从COS下载的原图(待审) | | `/data/cos_approved/` | 审图通过的图片 | | `/data/cos_trash/` | 视觉去重淘汰的图片 | | `/data/image_index.json` | 图片索引(build_image_index.py输出) | | `/data/review_results.json` | 审图裁决结果 | | `/data/xinan-fashion/data/fashion.db` | 商品数据库 | --- ## 三、命名规则(管线兼容) | 后缀 | 类型 | 用途 | 管线状态 | |------|------|------|---------| | `_L.jpg` | **Lookbook 首图** | 商品封面/卡片首图 | ✅ 已支持(2026-07-05新增) | | `_s1.jpg` | Scene 场景图1 | 户外场景展示 | ✅ 已有支持 | | `_s2.jpg` | Scene 场景图2 | 户外场景展示2 | ✅ 已有支持 | | `_c.jpg` | Collage 搭配图 | 搭配示意图 | ✅ 已有支持 | **展示优先级:** `_L.jpg` > `_c.jpg` > `_s1.jpg` > `_s2.jpg` > `_L.png`(兼容) **格式兼容:** 优先 JPG,无 JPG 时兼容 PNG。 --- ## 四、流水线全流程 ### 阶段1:生图(5号,每5小时) ``` gen_outfit_plan.py → 100套搭配方案 ↓ run_pipeline.py build_queue → COS缺图审计 + 搭配匹配 → generation_queue.json ↓ queue-supplement.py → 补单品solo任务 ↓ gpt-lookbook-loop.py 50 → ChatGPT DALL-E 批量生图 ├── _L.jpg(影棚首图,prompts[0]) └── _s1.jpg(户外场景,prompts[2]) ``` ### 阶段2:上传COS(5号) ``` upload_lookbook_to_cos.py → 上传 /data/lookbook/output/latest/* → COS generated/ ``` ### 阶段3:下载同步(4号) ``` dedup.py / clean_and_sync.py → COS generated/ → /data/cos_images/ ↓ sync_cos_to_review.py → 解析命名 → 写入 review_images 表 ├── _L.jpg → image_type='cover' ├── _c.jpg → image_type='generated' ├── _s1.jpg / _s2.jpg → image_type='scene' ``` ### 阶段4:审图(4号) ``` review_server.py(8899)→ 浏览/裁决/批量过审 ↓ upload_approved.py → 已审图片 → COS generated/ + 更新fashion.db ``` ### 阶段5:展示(4号) ``` gallery-server.py(8895)→ 从 cos_approved/ 生成展示网页 Next.js(3000)→ 从 fashion.db 生成商品详情页 Nginx → shop.hunanningyuan.cloud 反向代理 ``` --- ## 五、注意事项 ### 5.1 命名铁律 - **必须用管线已识别的后缀**:`_L.jpg` / `_c.jpg` / `_s1.jpg` / `_s2.jpg` - **禁止**使用 `_E.png`、`_L.png`、`_X.png` 等非标准命名 - `_L.png` 会被自动转成 `_L.jpg` 上传COS ### 5.2 格式要求 - 优先 JPG(网页加载快) - PNG 自动转 JPG(quality=85) - 脚本内置 `normalize_image_bytes()` 自动处理 ### 5.3 队列维护 - `failed` 状态的任务可直接重置为 `queued`(no_reason 是状态残留) - 每日第一次 build_queue 自动跳过,加 `--force` 强制重建 - `queue-supplement.py` 必须在 `build_queue` 之后运行 ### 5.4 配额管理 - GPT DALL-E 日配额有限(100张/天左右) - 每10张休息20分钟(REST_EVERY=10, REST_MINUTES=20) - 连续3+超时 → DALL-E Plus 额度用完 → kill进程等5小时 ### 5.5 双变体生成逻辑 - 每个队列job:先发影棚prompt → 等结果 → 换prompt → 等结果 - **不关session、不重新上传图片**,只换文字prompt - `_L.jpg` 和 `_s1.jpg` 跳过检测互相独立 - 共享同一组模特+服装参考图 ### 5.6 4号sync_cos需支持的后缀 `sync_cos_to_review.py` 目前支持 `_c.jpg` / `_s1.jpg` / `_s2.jpg` / `_L.jpg`。 如果新增其他后缀,必须在 `list_cos_files()` 和 `parse_filename()` 中同时添加。 ### 5.7 首图自动回退 `_L.jpg` 作为商品首图,有图就用,没图就自动往后推用 `_c.jpg` 或 `_s1.jpg`。