Files
ozon-seller-kit/.zcode/plans/plan-sess_0eb18e04-343a-4e41-a73a-97fcfd3d696b.md
T
2026-08-27 17:18:50 +08:00

51 lines
4.5 KiB
Markdown
Raw 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.
## 采集功能对接计划(方案三:扩展并入主仓 + 上报开关 + 自动打开试算页)
**架构决策**(已确认):
- ISS 扩展整体并入主仓 **`extensions/collector/`**(复数容器目录容纳未来多个 Chrome 插件,子目录用功能名;extension-v2 原地冻结、docs 标注废弃)
- 整个项目作为一个应用部署(server 8800 + studio 8900 + 扩展独立构建)
- 「ISS 独立产品化」远期通过构建/配置裁剪实现(扩展天然独立分发;server 的 suite API 模块不依赖 products),**本次不实现配置化,只保证模块边界不阻碍**
- 本地阶段不做 Token/鉴权:`/api/materials` 用 settings 开关放开鉴权(`app_auth_enabled: bool = False`,远期可开回)
---
### Step 1:扩展并入主仓
1. 清空主仓 `extension/`(现为空壳,只有 .output/.wxt 残留)
2.`image-suite-studio/extension/` 整体复制到主仓 **`extensions/collector/`**src/collector、src/profiles、src/bridge、src/api、src/storage、entrypoints/{background,content,bridge.content,panel.content,sidepanel}、wxt.config.ts、package.json
3. 构建方式:`pnpm -C extensions/collector build`wxt 独立构建 → .output/chrome-mv3),不进 start.command(扩展是手动加载 unpacked
4. wxt.config.ts / package.json 的 name 改为 `ozon-collector-extension`(或同语境命名)
### Step 2:上报功能改造(并入版扩展内,~150 行)
1. **`src/storage/settings.ts`**BackendSettings 增加 `reportEnabled: boolean`(默认 true)、`reportBaseUrl: string`(默认 `http://127.0.0.1:8800`)、`studioBaseUrl: string`(默认 `http://localhost:8900`);loadSettings 合并逻辑补新字段默认值
2. **`src/api/report.ts`(新文件)**`reportProduct(reportBaseUrl, payload)``POST {reportBaseUrl}/api/materials`,返回 `{ product_id, created }`。payload 组装:`{ platform, item_id, url, texts, images: [{url, group_key, variant_name, type, width, height}] }`——texts 用现成 `editedTexts()`images 用 `buildGeneratePayload` 同款映射(ScanResult.images + uploadedImages 按 selectedKeys 过滤);实施时先读主仓 `server/schemas/collection.py` 对齐字段名
3. **`entrypoints/background.ts`**:照 `planSuite` 分支模式新增 action `reportProduct`L17-56 监听器内加一个分支)
4. **`entrypoints/sidepanel/App.tsx`**
- settingsPopupL615-670):新增「上报商品」开关 + 「OSK 后台地址」+ 「试算页地址」三个设置项
- 01 商品信息 Section 末尾(L784 警告框后):加「上报商品」按钮——reportEnabled 且已采集时可用;点击 → `send('reportProduct', ...)` → 成功后 `chrome.tabs.create({ url: \`${studioBaseUrl}/trial/${product_id}\` })` + 成功提示;失败弹错误
5. 面板内生图功能保持不变(本期不动)
### Step 3:主仓 server 小改(免鉴权开关)
1. `server/config/settings.py`:加 `app_auth_enabled: bool = False`
2. `server/deps.py``get_current_user``app_auth_enabled=False` 时直接返回占位用户(跳过 JWT 校验);True 时走现有 JWT 逻辑——远期开鉴权只改配置
3. 主仓 `/api/materials` 契约已兼容 ISS ScanResult(响应已含 `product_id`),无需改动;重复采集同一商品返回同一 product_id(已实现),自动打开即回到原试算页
### Step 4:文档
1. `docs/v2.1/collect.md`:更新为方案三(扩展并入 `extensions/collector/` + 上报开关 + 配置化独立预留),标注 D2 决策修订、extension-v2 冻结
2. `docs/v2.1/README.md`Phase C 状态与实施方式更新
3. 主仓 `README.md`:扩展部分改为指向 `extensions/collector/`
### Step 5:验证
1. `pnpm -C extensions/collector build` → Chrome 开发者模式加载 `.output/chrome-mv3`
2. Ozon / 1688 / 淘宝商详页:快速采集 → 面板出现数据 → 点「上报商品」→ 新标签自动打开 `http://localhost:8900/trial/{id}`,采集箱出现该商品
3. 同一商品重复采集上报 → 打开同一试算页(不重复建商品)
4. 后端未启动时上报 → 面板显示错误提示
5. 主仓 `pnpm build` + 类型检查通过
### 后续阶段(不在本次范围)
- **Phase B**:从 ISS server 平移 planner/generator/prompts/watermark/tasks 到主仓 server/api/suite/* 等),打通试算页一键生成与单张 AI 生图——试算页前端契约已按此写好
- 远期「ISS-only 产品模式」:studio 构建变量裁剪路由 + server 鉴权范围配置