← 返回知识库
# COS→审图→网页 管线文档
## 一、COS 下载(去重下载)
| 文件 | 用途 | 所在服务器 |
|------|------|-----------|
| `dedup.py` | 扫 COS `generated/` + `generated_v2/`,按文件名去重 → 下载到 `/data/cos_images/` | 4号 |
| `clean_and_sync.py` | 全桶扫描(含删除AI模型文件),同名只保留最新 → 下载到 `/data/cos_images/` | 4号 |
| `sync_cos_to_review.py` | COS→审图数据库同步,解析 `_c.jpg / _s1.jpg / _s2.jpg` 写入 `review_images` 表 | 4号 |
## 二、图片处理
| 文件 | 用途 |
|------|------|
| `dedup_images.py` | pHash 视觉去重,内容完全相同的图片移到 `/data/cos_trash/` |
| `compress_images.py` | JPG 压缩到 quality=65 |
## 三、索引构建
| 文件 | 用途 |
|------|------|
| `build_image_index.py` | 读 `cos_images/` + `cos_approved/` + `factory_images/` + `fashion.db` → 输出 `/data/image_index.json`(含图片->SKU映射、审图状态) |
## 四、Web 网页生成
| 文件 | 用途 | 端口 |
|------|------|------|
| `review_server.py` | 审图服务器 — 动态生成审图Web页面,SKU浏览/裁决/批量过审/上传COS | **8899** |
| `gallery-server.py` | Gallery 浏览器 — 从本地 `/cos_local/` 生成图片浏览网页 | **8895** |
| `xinan-fashion/src/app/` | Next.js 商城前端 — 产品详情页、列表页、Swipe 页(从 fashion.db 读数据) | **3000** |
## 五、已审图片上传回 COS
| 文件 | 用途 |
|------|------|
| `upload_approved.py` | 把 `/data/cos_approved/` 通过的图片上传回 COS `generated/` + 更新 fashion.db |
## 六、Nginx 反向代理
| 文件 | 用途 |
|------|------|
| `shop-4hao.conf` | [shop.hunanningyuan.cloud](http://shop.hunanningyuan.cloud/) 代理:`/api/` → 8895,`/category/detail/poster` → 8895,`/` → 3000(Next.js) |
## 七、数据目录
| 路径 | 内容 |
|------|------|
| `/data/cos_images/` | 从COS下载的原图(待审) |
| `/data/cos_approved/` | 审图通过的图片 |
| `/data/cos_trash/` | 视觉去重淘汰的图片 |
| `/data/image_index.json` | 图片索引 |
| `/data/review_results.json` | 审图裁决结果 |
## 八、管线流程
```
dedup.py 从COS下载 → build_image_index.py 建索引 → review_server.py(8899)生成审图网页
→ 审图通过 → upload_approved.py 传回COS → gallery-server.py(8895)或Next.js(3000)展示
```
## 九、命名规则(需确认)
- `_c.jpg` — collage 搭配图(已支持)
- `_s1.jpg` / `_s2.jpg` — single 单品图(已支持)
- `_L.png` — lookbook 影棚图(新)
- ⚠️ `_E.png` — editorial 户外图(待确认是否需加入管线解析)