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

4.5 KiB
Raw Blame History

采集功能对接计划(方案三:扩展并入主仓 + 上报开关 + 自动打开试算页)

架构决策(已确认):

  • 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 buildwxt 独立构建 → .output/chrome-mv3),不进 start.command(扩展是手动加载 unpacked
  4. wxt.config.ts / package.json 的 name 改为 ozon-collector-extension(或同语境命名)

Step 2:上报功能改造(并入版扩展内,~150 行)

  1. src/storage/settings.tsBackendSettings 增加 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 reportProductL17-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.pyget_current_userapp_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.mdPhase 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 鉴权范围配置