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