Files
2026-08-27 17:18:50 +08:00

75 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# V2.1 采集方案(扩展并入主仓 + 上报开关)
> 状态:已实施(Phase C 完成)
> 参考项目:`/Users/joey-xd/sites/seller-store/image-suite-studio`(下称 ISS
> 架构(方案三,D2 决策修订):**ISS 扩展整体并入主仓 `extensions/collector/`**,成为唯一采集工具
> extension-v2 原地冻结、不再维护);扩展新增「上报商品」功能,采集后一键入库主仓后台并自动打开商品试算页。
> 「ISS 独立产品化」远期通过构建/配置裁剪实现(扩展天然独立分发;server 的 suite API 模块不依赖 products),
> 不在代码层分叉——这是「单仓维护」与「独立产品可能」的折中。
---
## 1. 目录与形态
```
ozon-seller-kit/
├── extensions/ # Chrome 插件集合(复数,容纳未来多个插件)
│ └── collector/ ← ISS 扩展并入版(三平台采集 + 套图生图面板 + 商品上报)
├── extension-v1/ # 冻结(旧 1688/淘宝)
├── extension-v2/ # 冻结(旧 Ozon 采集,被 collector 取代)
├── server/ # 唯一后端(8800)
└── studio/ # 前端(试算页等)
```
- 构建:`pnpm -C extensions/collector build``.output/chrome-mv3`Chrome 开发者模式加载 unpacked
- 扩展包名:`ozon-collector-extension`;manifest 名保留「电商套图工作台」
- host_permissions 已加 `127.0.0.1:8800`(上报)与 `8900`(试算页)
## 2. 采集引擎(与 ISS 完全一致,见下表)
| 平台 | 主路径 | 兜底/补充 |
|---|---|---|
| **Ozon** | ① SSR `data-state` widget 白名单 | ② JSON-LD ③ 站内 `entrypoint-api.bx`(两 URL 合并)④ DOM + 模拟滚动 |
| **淘宝/天猫** | ① MAIN world 桥读 `__ICE_APP_CONTEXT__`(不调 mtop 防风控) | ② DOM(前缀匹配类名、详情图排除评价区;desc 故意不采) |
| **1688** | ① MAIN world 桥读 `window.context`deepFindskuProps 全维展开 + skuMapOriginal + 尺寸重量参数) | ② DOM(`#productAttributes` cells、`#detail` |
采集数据结构 ScanResult`{ platform, itemId, url, texts[], images[], breadcrumbs?, stats, warnings, source }`texts: kind/content/pairsimages: groupKey/groupName/variantName/url/index/type)。
## 3. 商品上报(v2.1 新增)
```
快速采集(页内悬浮面板 / Side Panel
│ scanCurrentPage() → ScanResult(面板内可编辑标题/尺寸/重量/描述)
「上报商品」按钮(01 商品信息区块下方;设置里可开关)
│ POST {reportBaseUrl}/api/materials
│ payload = { source: {platform, itemId, url, collectedAt},
│ texts: editedTexts(), // 编辑后文本
│ images: 全量采集图(groupKey/groupName/variantName/url/index/type,
│ refererOrigin: 源页 origin } // 服务端下载源图带 Referer
响应 { product_id } → chrome.tabs.create 打开 {studioBaseUrl}/trial/{product_id}
```
要点:
- **契约**:主仓 `MaterialsRequest`camelCase`source.itemId``groupKey``variantName`)与 ISS ImageMaterial 字段同名,直接映射;响应 `product_id` 用于打开试算页
- **重复上报**:服务端按 `platform + itemId` 复用商品(返回同一 product_id)→ 打开同一试算页
- **鉴权**:本地阶段主仓为宽松模式(未带 token 放行匿名),扩展直接裸调;远期收紧时在扩展 settings 加 token 即可
- **设置项**(面板「服务端设置」弹窗内新增):启用商品上报开关 / OSK 后台地址(默认 `http://127.0.0.1:8800`/ 试算页地址(默认 `http://localhost:8900`
- 手动上传图(ISS 的 upload 组合)本期不上报;试算页内可用「上传图片」补(`/api/materials/bytes`
## 4. 面板能力(保持 ISS 原样)
快速采集、商品信息编辑、图片勾选/上传/下载、AI 智能规划、风格/生图要求/模型选择、一键生图、生成结果导出——全部保留,仍连 ISS 生图 server(`baseUrl`,默认 3300)。
后续 Phase B 把生图服务端平移进主仓后,`baseUrl``reportBaseUrl` 可统一指向主仓。
## 5. 与 ISS 的差异总表
| 维度 | ISS(独立项目) | 本仓 extensions/collector |
|---|---|---|
| 采集引擎 | 三平台完整版 | 相同(整体并入) |
| 生图面板 | 连 ISS server3300 | 同左(Phase B 后可切主仓) |
| 商品入库 | 无 | 「上报商品」→ 主仓 /api/materials + 自动打开试算页 |
| 鉴权 | 无 | 本地宽松模式(远期收紧) |
| 独立产品化 | 本体 | 远期:构建/配置裁剪出 collector + suite API 即可独立 |