import { createRoot } from 'react-dom/client'; import { useState } from 'react'; import type { ScanResult } from '../../src/collector/scan'; function App() { const [status, setStatus] = useState('准备就绪'); const [result, setResult] = useState(null); const [error, setError] = useState(''); const handleScan = async () => { setStatus('采集中...'); setError(''); setResult(null); try { // 获取当前活跃 tab const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); if (!tab?.id) { setError('无法获取当前标签页'); setStatus('准备就绪'); return; } // 执行采集(调用 content script 暴露的全局函数) const scanResult = await chrome.scripting.executeScript({ target: { tabId: tab.id }, func: () => (window as any).__SellerHelper?.scan() }); const data = scanResult[0]?.result; if (!data) { setError('当前页面不支持采集(仅支持 1688/淘宝商品详情页)'); setStatus('准备就绪'); return; } setResult(data); setStatus('采集完成'); } catch (err) { setError(`采集失败: ${err instanceof Error ? err.message : String(err)}`); setStatus('准备就绪'); } }; return (

Seller Helper

1688/淘宝 商品采集

状态: {status}
{error && (
{error}
)} {result && (
{result.platform} · {result.itemId}
{new Date(result.scannedAt).toLocaleString()}

文本 ({result.texts.length})

{result.texts.map((t, i) => (
{t.kind}: {t.content.substring(0, 50)}...
))}

图片 ({result.images.length})

{Object.entries(result.stats).map(([group, count]) => (
{group}: {count}
))}
{result.warnings.length > 0 && (

⚠️ 警告

{result.warnings.map((w, i) => (
{w}
))}
)}
)}
💡 使用说明:
  1. 打开 1688 或淘宝商品详情页
  2. 滚动到页面底部(加载详情图)
  3. 点击"开始采集"按钮
); } const root = createRoot(document.getElementById('root')!); root.render(); export default App;