Initial release with production deploy config.
Add GitAtlas deploy assets, DATA_FILE support for isolated server data, and port documentation for sourcing.simosen.cn. Co-authored-by: Cursor <cursoragent@cursor.com>
@@ -0,0 +1,25 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 180" role="img" aria-labelledby="title desc">
|
||||
<title id="title">选品采购台</title>
|
||||
<desc id="desc">竞品采集、货源匹配与采购决策</desc>
|
||||
<defs>
|
||||
<linearGradient id="jade" x1="22" y1="18" x2="158" y2="162" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#249B90"/>
|
||||
<stop offset=".52" stop-color="#0D6A54"/>
|
||||
<stop offset="1" stop-color="#073C31"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brass" x1="58" y1="54" x2="122" y2="126" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFE6A1"/>
|
||||
<stop offset=".55" stop-color="#D39A36"/>
|
||||
<stop offset="1" stop-color="#A56F18"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect x="10" y="10" width="160" height="160" rx="36" fill="#FFFDF5"/>
|
||||
<rect x="18" y="18" width="144" height="144" rx="31" fill="url(#jade)"/>
|
||||
<path d="M48 74V57c0-5 4-9 9-9h17M106 48h17c5 0 9 4 9 9v17M132 106v17c0 5-4 9-9 9h-17M74 132H57c-5 0-9-4-9-9v-17" fill="none" stroke="#FFF8E8" stroke-linecap="round" stroke-width="8"/>
|
||||
<path d="M90 57 123 90 90 123 57 90 90 57Z" fill="url(#brass)"/>
|
||||
<path d="M90 70 110 90 90 110 70 90 90 70Z" fill="#FFF8E8"/>
|
||||
<circle cx="90" cy="90" r="10" fill="#0D6A54"/>
|
||||
<circle cx="125" cy="55" r="8" fill="#C9544A" stroke="#FFF8E8" stroke-width="3"/>
|
||||
<text x="205" y="86" fill="#073C31" font-family="Songti SC, STSong, Noto Serif CJK SC, serif" font-size="47" font-weight="700">选品采购台</text>
|
||||
<text x="207" y="128" fill="#65766A" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="21" font-weight="500">竞品采集 · 货源匹配 · 采购决策</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,27 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
||||
<title id="title">选品采购台品牌标识</title>
|
||||
<desc id="desc">扫描框汇聚多平台商品机会,中心标记代表被选中的高价值商品</desc>
|
||||
<defs>
|
||||
<linearGradient id="jade" x1="34" y1="24" x2="222" y2="232" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#249B90"/>
|
||||
<stop offset=".52" stop-color="#0D6A54"/>
|
||||
<stop offset="1" stop-color="#073C31"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brass" x1="91" y1="80" x2="174" y2="181" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFE6A1"/>
|
||||
<stop offset=".54" stop-color="#D39A36"/>
|
||||
<stop offset="1" stop-color="#A56F18"/>
|
||||
</linearGradient>
|
||||
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
|
||||
<feDropShadow dx="0" dy="10" stdDeviation="10" flood-color="#073C31" flood-opacity=".24"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<rect width="256" height="256" rx="56" fill="#FFFDF5"/>
|
||||
<rect x="12" y="12" width="232" height="232" rx="48" fill="url(#jade)" filter="url(#shadow)"/>
|
||||
<rect x="24" y="24" width="208" height="208" rx="38" fill="none" stroke="#FFF8E8" stroke-opacity=".24" stroke-width="2"/>
|
||||
<path d="M57 98V70c0-7 6-13 13-13h28M158 57h28c7 0 13 6 13 13v28M199 158v28c0 7-6 13-13 13h-28M98 199H70c-7 0-13-6-13-13v-28" fill="none" stroke="#FFF8E8" stroke-linecap="round" stroke-width="13"/>
|
||||
<path d="M128 72 184 128 128 184 72 128 128 72Z" fill="url(#brass)"/>
|
||||
<path d="M128 91 165 128 128 165 91 128 128 91Z" fill="#FFF8E8"/>
|
||||
<path d="M111 128c0-9 7-17 17-17s17 8 17 17-7 17-17 17-17-8-17-17Z" fill="#0D6A54"/>
|
||||
<circle cx="174" cy="82" r="12" fill="#C9544A" stroke="#FFF8E8" stroke-width="5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 69 KiB |
@@ -0,0 +1,73 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" role="img" aria-labelledby="title desc">
|
||||
<title id="title">选品采购台分享封面</title>
|
||||
<desc id="desc">采集商品线索,匹配货源,完成采购决策</desc>
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="1200" y2="630" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F8FFF9"/>
|
||||
<stop offset=".52" stop-color="#E8F6EF"/>
|
||||
<stop offset="1" stop-color="#FFF5DE"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="jade" x1="50" y1="44" x2="242" y2="236" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#249B90"/>
|
||||
<stop offset=".52" stop-color="#0D6A54"/>
|
||||
<stop offset="1" stop-color="#073C31"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brass" x1="102" y1="91" x2="184" y2="184" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFE6A1"/>
|
||||
<stop offset=".55" stop-color="#D39A36"/>
|
||||
<stop offset="1" stop-color="#A56F18"/>
|
||||
</linearGradient>
|
||||
<pattern id="grid" width="32" height="32" patternUnits="userSpaceOnUse">
|
||||
<path d="M32 0H0V32" fill="none" stroke="#0D6A54" stroke-opacity=".055"/>
|
||||
</pattern>
|
||||
<filter id="shadow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#073C31" flood-opacity=".16"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<rect width="1200" height="630" fill="url(#bg)"/>
|
||||
<rect width="1200" height="630" fill="url(#grid)"/>
|
||||
<circle cx="1120" cy="32" r="260" fill="#FFE6A1" opacity=".42"/>
|
||||
<circle cx="42" cy="610" r="250" fill="#249B90" opacity=".12"/>
|
||||
<g transform="translate(66 62)" filter="url(#shadow)">
|
||||
<rect width="208" height="208" rx="46" fill="#FFFDF5"/>
|
||||
<rect x="10" y="10" width="188" height="188" rx="40" fill="url(#jade)"/>
|
||||
<path d="M52 88V66c0-6 5-11 11-11h22M123 55h22c6 0 11 5 11 11v22M156 123v22c0 6-5 11-11 11h-22M85 156H63c-6 0-11-5-11-11v-22" fill="none" stroke="#FFF8E8" stroke-linecap="round" stroke-width="10"/>
|
||||
<path d="M104 64 144 104 104 144 64 104 104 64Z" fill="url(#brass)"/>
|
||||
<path d="M104 80 128 104 104 128 80 104 104 80Z" fill="#FFF8E8"/>
|
||||
<circle cx="104" cy="104" r="12" fill="#0D6A54"/>
|
||||
<circle cx="151" cy="58" r="10" fill="#C9544A" stroke="#FFF8E8" stroke-width="4"/>
|
||||
</g>
|
||||
<text x="66" y="334" fill="#073C31" font-family="Songti SC, STSong, Noto Serif CJK SC, serif" font-size="64" font-weight="700">选品采购台</text>
|
||||
<text x="69" y="405" fill="#315F55" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="28" font-weight="600">从商品机会,到放心采购</text>
|
||||
<text x="69" y="458" fill="#65766A" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="21">采集竞品 · 匹配货源 · 利润测算 · 拿样决策</text>
|
||||
<g transform="translate(660 88)">
|
||||
<rect width="464" height="452" rx="28" fill="#FFFDF5" stroke="#B9D5C7" stroke-width="2" filter="url(#shadow)"/>
|
||||
<text x="34" y="56" fill="#65766A" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="17" font-weight="600">PRODUCT OPPORTUNITY FLOW</text>
|
||||
<g transform="translate(34 86)">
|
||||
<rect width="396" height="78" rx="14" fill="#E5F4EE" stroke="#B9D5C7"/>
|
||||
<circle cx="40" cy="39" r="20" fill="#0D6A54"/>
|
||||
<path d="M31 39h18M40 30v18" stroke="#FFF8E8" stroke-linecap="round" stroke-width="4"/>
|
||||
<text x="76" y="33" fill="#073C31" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="20" font-weight="700">发现高潜商品</text>
|
||||
<text x="76" y="57" fill="#65766A" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="14">淘宝 / 小红书 / 更多平台线索</text>
|
||||
</g>
|
||||
<path d="M232 171v24" stroke="#A56F18" stroke-linecap="round" stroke-width="4"/>
|
||||
<path d="m224 190 8 8 8-8" fill="none" stroke="#A56F18" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
|
||||
<g transform="translate(34 202)">
|
||||
<rect width="396" height="78" rx="14" fill="#FFF3CB" stroke="#D9BD79"/>
|
||||
<path d="M20 24h40v30H20z" fill="#A56F18" rx="4"/>
|
||||
<path d="M26 24v-8h28v8" fill="none" stroke="#A56F18" stroke-width="4"/>
|
||||
<text x="76" y="33" fill="#5F4211" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="20" font-weight="700">匹配优质货源</text>
|
||||
<text x="76" y="57" fill="#7A6645" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="14">1688 厂家 / 价格 / 保障</text>
|
||||
</g>
|
||||
<path d="M232 287v24" stroke="#A56F18" stroke-linecap="round" stroke-width="4"/>
|
||||
<path d="m224 306 8 8 8-8" fill="none" stroke="#A56F18" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
|
||||
<g transform="translate(34 318)">
|
||||
<rect width="396" height="96" rx="14" fill="#0D6A54"/>
|
||||
<circle cx="40" cy="48" r="22" fill="#FFF8E8"/>
|
||||
<path d="m30 48 7 7 14-16" fill="none" stroke="#0D6A54" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
|
||||
<text x="76" y="42" fill="#FFF8E8" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="20" font-weight="700">形成采购决策</text>
|
||||
<text x="76" y="67" fill="#DDF2EF" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="14">筛选 / 利润 / 风险 / 拿样</text>
|
||||
<circle cx="367" cy="25" r="8" fill="#C9544A"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 39 KiB |
@@ -0,0 +1,497 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>选品采购台|竞品采集、货源匹配与采购决策</title>
|
||||
<meta name="description" content="采集淘宝、小红书等平台商品线索,匹配 1688 货源,完成筛选、利润测算、拿样与采购决策。" />
|
||||
<meta name="theme-color" content="#0d6a54" />
|
||||
<meta name="application-name" content="选品采购台" />
|
||||
<meta name="apple-mobile-web-app-title" content="选品采购台" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:locale" content="zh_CN" />
|
||||
<meta property="og:site_name" content="选品采购台" />
|
||||
<meta property="og:title" content="选品采购台|从商品机会,到放心采购" />
|
||||
<meta property="og:description" content="采集竞品、匹配货源、测算利润、推进拿样,一套系统完成选品采购决策。" />
|
||||
<meta property="og:image" content="__SHARE_ORIGIN__/assets/share-card.png" />
|
||||
<meta property="og:image:secure_url" content="__SHARE_ORIGIN__/assets/share-card.png" />
|
||||
<meta property="og:image:type" content="image/png" />
|
||||
<meta property="og:image:width" content="1200" />
|
||||
<meta property="og:image:height" content="630" />
|
||||
<meta property="og:url" content="__SHARE_ORIGIN__/" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="选品采购台|从商品机会,到放心采购" />
|
||||
<meta name="twitter:description" content="采集竞品、匹配货源、测算利润、推进拿样,一套系统完成选品采购决策。" />
|
||||
<meta name="twitter:image" content="__SHARE_ORIGIN__/assets/share-card.png" />
|
||||
<meta itemprop="name" content="选品采购台|从商品机会,到放心采购" />
|
||||
<meta itemprop="description" content="采集竞品、匹配货源、测算利润、推进拿样,一套系统完成选品采购决策。" />
|
||||
<meta itemprop="image" content="__SHARE_ORIGIN__/assets/share-card.png" />
|
||||
<link rel="icon" href="/favicon.ico" sizes="any" />
|
||||
<link rel="icon" href="/assets/brand-mark.svg" type="image/svg+xml" />
|
||||
<link rel="apple-touch-icon" href="/assets/brand-mark.png" />
|
||||
<link rel="stylesheet" href="/styles.css" />
|
||||
</head>
|
||||
<body class="auth-pending">
|
||||
<div id="startupScreen" class="startup-screen" role="status" aria-live="polite">
|
||||
<span><img src="/assets/brand-mark.svg" alt="" /></span>
|
||||
<strong>正在进入选品采购台</strong>
|
||||
</div>
|
||||
<section id="authGate" class="auth-gate" hidden>
|
||||
<header class="landing-nav">
|
||||
<a class="landing-logo" href="#authGate" aria-label="选品采购台">
|
||||
<span><img src="/assets/brand-mark.svg" alt="" /></span>
|
||||
<strong>选品采购台</strong>
|
||||
</a>
|
||||
<nav class="landing-links" aria-label="首页导航">
|
||||
<a href="#landingFlow">流程</a>
|
||||
<a href="#landingSignals">能力</a>
|
||||
<button type="button" data-auth-mode="login">登录</button>
|
||||
</nav>
|
||||
<div class="landing-nav-actions">
|
||||
<button id="landingBackBtn" class="button secondary" type="button" hidden>返回工作台</button>
|
||||
<button class="button secondary" type="button" data-auth-mode="login">登录</button>
|
||||
<button class="button primary" type="button" data-auth-mode="register">创建账号</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="landing-main">
|
||||
<section class="landing-hero">
|
||||
<div class="landing-hero-copy">
|
||||
<p class="eyebrow">Product Sourcing Intelligence</p>
|
||||
<div class="landing-route" aria-label="选品采购路径">
|
||||
<span>淘宝竞品</span>
|
||||
<i aria-hidden="true"></i>
|
||||
<span>小红书趋势</span>
|
||||
<i aria-hidden="true"></i>
|
||||
<span>1688 货源</span>
|
||||
<i aria-hidden="true"></i>
|
||||
<span>采购决策</span>
|
||||
</div>
|
||||
<h1>从商品机会,到放心采购</h1>
|
||||
<p class="landing-lead">采集淘宝、小红书等平台商品的图片、链接、价格和热度线索,再匹配 1688 同款货源、测算利润、推进拿样,为任何品类建立可复用的采购判断。</p>
|
||||
<div class="landing-signal-panel" aria-label="首批选品重点">
|
||||
<div>
|
||||
<span>第一批策略</span>
|
||||
<strong>¥100 内跑量</strong>
|
||||
<em>低价、轻决策、直播易讲</em>
|
||||
</div>
|
||||
<div>
|
||||
<span>主攻赛道</span>
|
||||
<strong>任意商品类目</strong>
|
||||
<em>饰品首发 / 规则可自定义</em>
|
||||
</div>
|
||||
<div>
|
||||
<span>采购判断</span>
|
||||
<strong>利润 + 风险</strong>
|
||||
<em>拿样价、供应商、话术一起看</em>
|
||||
</div>
|
||||
</div>
|
||||
<div class="landing-actions">
|
||||
<button class="button primary" type="button" data-auth-mode="register">创建账号开始选品</button>
|
||||
<button class="button secondary" type="button" data-auth-mode="login">登录已有工作台</button>
|
||||
</div>
|
||||
<div class="landing-metrics" aria-label="适用场景">
|
||||
<div><strong>¥100 内</strong><span>第一批跑量客单价</span></div>
|
||||
<div><strong>全品类可扩展</strong><span>从饰品模板开始,自定义赛道</span></div>
|
||||
<div><strong>直播优先</strong><span>拿样、话术、风险一起看</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="landing-product-shot" aria-label="产品工作台预览">
|
||||
<img class="buyer-board-image" src="/assets/jewelry-buyer-board.png" alt="直播饰品买手选品板,展示饰品图片、利润和货源判断" />
|
||||
<div class="product-shot-top">
|
||||
<span>Buyer Command</span>
|
||||
<strong>今日选品采购</strong>
|
||||
</div>
|
||||
<div class="product-shot-stats">
|
||||
<div><span>线索</span><strong>128</strong></div>
|
||||
<div><span>可跑量</span><strong>24</strong></div>
|
||||
<div><span>货源</span><strong>37</strong></div>
|
||||
</div>
|
||||
<div class="product-shot-card">
|
||||
<div class="shot-image">饰</div>
|
||||
<div>
|
||||
<p>藏式绿松石编绳手链</p>
|
||||
<strong>建议拿样 · 利润可跑</strong>
|
||||
<span>1688 ¥8.60 → 直播价 ¥39.90</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-shot-table">
|
||||
<div><span>竞品热度</span><strong>高</strong></div>
|
||||
<div><span>供应商保障</span><strong>实力厂家</strong></div>
|
||||
<div><span>风险提醒</span><strong>避开功效话术</strong></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="landingFlow" class="landing-flow" aria-label="选品采购流程">
|
||||
<div class="landing-section-head">
|
||||
<p class="eyebrow">Workflow</p>
|
||||
<h2>从“看见别人卖得好”到“自己敢进货”。</h2>
|
||||
</div>
|
||||
<div class="flow-rail">
|
||||
<article><span>01</span><h3>采集竞品</h3><p>淘宝、小红书页面里的图片、链接、价格、销量和可见话术,一键进库。</p></article>
|
||||
<article><span>02</span><h3>清洗筛选</h3><p>按饰品赛道、价格带、热度、直播表现力、风险词和利润模型自动打分。</p></article>
|
||||
<article><span>03</span><h3>匹配货源</h3><p>把 1688 同款/近似款放到竞品旁边,比厂家、拿样价、混批、售后保障。</p></article>
|
||||
<article><span>04</span><h3>拿样采购</h3><p>批量标记问供应商、已拿样、直播测试,最后沉淀采购决策清单。</p></article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="landingSignals" class="landing-signals" aria-label="系统能力">
|
||||
<div class="landing-section-head">
|
||||
<p class="eyebrow">What The System Does</p>
|
||||
<h2>不是收藏夹,是直播饰品买手的决策系统。</h2>
|
||||
</div>
|
||||
<div class="signal-board">
|
||||
<article><strong>竞品库</strong><span>淘宝 / 小红书 / 天猫</span><p>聚合对标款,保留原图、链接、价格和平台线索。</p></article>
|
||||
<article><strong>货源库</strong><span>1688</span><p>集中比较供应商、价格、同款相似度和采购保障。</p></article>
|
||||
<article><strong>款式匹配</strong><span>同款 / 近似款</span><p>按赛道和关键词把竞品与货源自动归组。</p></article>
|
||||
<article><strong>规则配置</strong><span>可视化后台</span><p>你自己维护赛道关键词、风险词、利润模型和自动标签。</p></article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
</section>
|
||||
|
||||
<div class="app-shell">
|
||||
<header class="mobile-header">
|
||||
<div class="mobile-title-row">
|
||||
<div>
|
||||
<p class="eyebrow">Sourcing</p>
|
||||
<h1 id="mobileViewTitle">选品采购 SaaS</h1>
|
||||
</div>
|
||||
<div class="mobile-header-actions">
|
||||
<button id="mobileAuthBtn" class="icon-button" type="button" aria-label="账号">账号</button>
|
||||
<button id="mobileFilterBtn" class="icon-button" type="button" aria-label="筛选">筛选</button>
|
||||
<button id="mobileRefreshBtn" class="icon-button" type="button" aria-label="刷新">刷新</button>
|
||||
</div>
|
||||
</div>
|
||||
<label class="mobile-search-field">
|
||||
<span class="sr-only">关键词搜索</span>
|
||||
<input id="mobileSearchInput" type="search" placeholder="搜索标题、供应商、标签" />
|
||||
</label>
|
||||
</header>
|
||||
|
||||
<aside class="sidebar">
|
||||
<div class="brand">
|
||||
<div class="brand-mark"><img src="/assets/brand-mark.svg" alt="" /></div>
|
||||
<div>
|
||||
<h1>选品采购台</h1>
|
||||
<p>竞品采集 / 货源匹配 / 采购决策</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="nav-stack" aria-label="产品导航">
|
||||
<div class="nav-section">
|
||||
<p class="nav-section-title">业务流程</p>
|
||||
<button class="nav-button active" data-view="overview"><span class="nav-icon" aria-hidden="true">01</span><span>首页总览</span></button>
|
||||
<button class="nav-button" data-view="capture"><span class="nav-icon" aria-hidden="true">02</span><span>采集中心</span></button>
|
||||
<button class="nav-button" data-view="competitors"><span class="nav-icon" aria-hidden="true">03</span><span>竞品库</span></button>
|
||||
<button class="nav-button" data-view="suppliers"><span class="nav-icon" aria-hidden="true">04</span><span>货源库</span></button>
|
||||
<button class="nav-button" data-view="matching"><span class="nav-icon" aria-hidden="true">05</span><span>款式匹配</span></button>
|
||||
<button class="nav-button" data-view="testing"><span class="nav-icon" aria-hidden="true">06</span><span>拿样测试</span></button>
|
||||
<button class="nav-button" data-view="decisions"><span class="nav-icon" aria-hidden="true">07</span><span>采购决策</span></button>
|
||||
</div>
|
||||
<div class="nav-section nav-admin">
|
||||
<p class="nav-section-title">系统配置</p>
|
||||
<button class="nav-button admin-only" data-view="admin" hidden><span class="nav-icon" aria-hidden="true">A</span><span>管理中心</span></button>
|
||||
<button class="nav-button" data-view="plugin"><span class="nav-icon" aria-hidden="true">T</span><span>采集插件</span></button>
|
||||
<button class="nav-button" data-view="rules"><span class="nav-icon" aria-hidden="true">R</span><span>规则配置</span></button>
|
||||
<button class="nav-button" data-view="account"><span class="nav-icon" aria-hidden="true">U</span><span>账号设置</span></button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section class="side-brief" aria-label="今日操作重点">
|
||||
<span>Live Commerce</span>
|
||||
<strong>从机会到采购决策</strong>
|
||||
<p>先采集竞品,再补 1688 同款,最后看利润、风险和拿样状态。</p>
|
||||
</section>
|
||||
|
||||
<section class="install-panel">
|
||||
<h2>插件安装</h2>
|
||||
<ol>
|
||||
<li>下载插件安装包并解压。</li>
|
||||
<li>打开 Chrome 扩展管理。</li>
|
||||
<li>开启开发者模式。</li>
|
||||
<li>加载解压后的文件夹。</li>
|
||||
</ol>
|
||||
<a id="extensionDownloadLink" class="button primary" href="/downloads/product-sourcing-capture-extension.zip" download>下载插件安装包</a>
|
||||
<code id="extensionPath">product-sourcing-capture-extension.zip</code>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<main class="main">
|
||||
<header class="topbar">
|
||||
<div>
|
||||
<p class="eyebrow">Sourcing Opportunity Desk</p>
|
||||
<h2>选品采购 SaaS</h2>
|
||||
<p class="topbar-subtitle">从淘宝、小红书竞品到 1688 货源,完成采集、清洗、匹配、拿样和采购决策。</p>
|
||||
<div class="topbar-signals" aria-label="产品定位">
|
||||
<span>Expert Workbench</span>
|
||||
<span>¥100 内跑量</span>
|
||||
<span>全品类可扩展</span>
|
||||
<span>风险可控</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topbar-actions">
|
||||
<span id="sessionBadge" class="session-badge">本地模式</span>
|
||||
<button id="openAuthPageBtn" class="button secondary" type="button">创建账号/登录</button>
|
||||
<button id="refreshBtn" class="button secondary">刷新</button>
|
||||
<button class="button primary" type="button" data-export-csv>导出 CSV</button>
|
||||
<button id="logoutBtn" class="button secondary" type="button" hidden>退出</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="command-strip" aria-label="今日任务状态">
|
||||
<article>
|
||||
<span>当前路径</span>
|
||||
<strong>竞品采集 → 1688 货源 → 拿样决策</strong>
|
||||
</article>
|
||||
<article>
|
||||
<span>首批策略</span>
|
||||
<strong>饰品全赛道 / 100 内跑量</strong>
|
||||
</article>
|
||||
<article>
|
||||
<span>管理员能力</span>
|
||||
<strong>用户 / 积分 / 兑换码 / Token</strong>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section id="workbenchPanel" class="workbench-panel"></section>
|
||||
|
||||
<section class="stats-grid" aria-label="统计">
|
||||
<article class="stat-card">
|
||||
<span>线索总数</span>
|
||||
<strong id="statTotal">0</strong>
|
||||
</article>
|
||||
<article class="stat-card">
|
||||
<span>待拿样</span>
|
||||
<strong id="statSample">0</strong>
|
||||
</article>
|
||||
<article class="stat-card">
|
||||
<span>1688 货源</span>
|
||||
<strong id="stat1688">0</strong>
|
||||
</article>
|
||||
<article class="stat-card">
|
||||
<span>匹配款组</span>
|
||||
<strong id="statTibetan">0</strong>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section id="filterToolbar" class="toolbar filter-bench" aria-label="筛选工具">
|
||||
<div class="filter-bench-head">
|
||||
<div>
|
||||
<p class="eyebrow">Filter Bench</p>
|
||||
<h3>选品筛选台</h3>
|
||||
<p id="filterContextText">按平台、赛道、状态、价格和风险快速缩小候选款。</p>
|
||||
</div>
|
||||
<div class="filter-bench-status" aria-label="筛选状态">
|
||||
<span id="filterModeLabel">全部候选</span>
|
||||
<strong id="filterResultCount">0</strong>
|
||||
<em id="filterActiveText">未启用筛选</em>
|
||||
</div>
|
||||
</div>
|
||||
<label>
|
||||
<span>关键词</span>
|
||||
<input id="searchInput" type="search" placeholder="标题、供应商、赛道、链接" />
|
||||
</label>
|
||||
<label>
|
||||
<span>平台</span>
|
||||
<select id="platformSelect">
|
||||
<option value="">全部平台</option>
|
||||
<option value="xiaohongshu">小红书</option>
|
||||
<option value="taobao">淘宝</option>
|
||||
<option value="tmall">天猫</option>
|
||||
<option value="1688">1688</option>
|
||||
<option value="other">其他</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>赛道</span>
|
||||
<select id="trackSelect">
|
||||
<option value="">全部赛道</option>
|
||||
<option value="藏式/民族风">藏式/民族风</option>
|
||||
<option value="耳饰">耳饰</option>
|
||||
<option value="项链">项链</option>
|
||||
<option value="手链/手镯">手链/手镯</option>
|
||||
<option value="戒指">戒指</option>
|
||||
<option value="发饰">发饰</option>
|
||||
<option value="包挂/手机链">包挂/手机链</option>
|
||||
<option value="银饰/珍珠/天然石风">银饰/珍珠/天然石风</option>
|
||||
<option value="未分类">未分类</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>建议动作</span>
|
||||
<select id="decisionSelect">
|
||||
<option value="">全部动作</option>
|
||||
<option value="拿样">拿样</option>
|
||||
<option value="继续观察">继续观察</option>
|
||||
<option value="暂不做">暂不做</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>状态</span>
|
||||
<select id="statusSelect">
|
||||
<option value="">全部状态</option>
|
||||
<option value="new">新采集</option>
|
||||
<option value="reviewing">待复核</option>
|
||||
<option value="asking_supplier">问供应商</option>
|
||||
<option value="ordered_sample">已拿样</option>
|
||||
<option value="live_testing">直播测试</option>
|
||||
<option value="rejected">已放弃</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>标签</span>
|
||||
<input id="tagInput" type="search" placeholder="低价跑量、藏式主推" />
|
||||
</label>
|
||||
<label>
|
||||
<span>价格带</span>
|
||||
<select id="priceBandSelect">
|
||||
<option value="">全部价格</option>
|
||||
<option value="under10">10 元以内</option>
|
||||
<option value="10to30">10-30 元</option>
|
||||
<option value="30to100">30-100 元</option>
|
||||
<option value="over100">100 元以上</option>
|
||||
<option value="unknown">待确认</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>货源</span>
|
||||
<select id="sourceSelect">
|
||||
<option value="">全部货源</option>
|
||||
<option value="only1688">只看 1688</option>
|
||||
<option value="non1688">竞品平台</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>风险</span>
|
||||
<select id="riskSelect">
|
||||
<option value="">全部风险</option>
|
||||
<option value="any">有风险提醒</option>
|
||||
<option value="high">高风险</option>
|
||||
<option value="low">低风险</option>
|
||||
</select>
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<section id="bulkToolbar" class="bulk-toolbar" aria-label="批量清理" hidden>
|
||||
<div class="bulk-status">
|
||||
<span id="bulkStatusText">已选</span> <strong id="selectedCount">0</strong> 条
|
||||
</div>
|
||||
<div class="bulk-actions">
|
||||
<button id="selectVisibleBtn" class="button secondary" type="button">全选当前结果</button>
|
||||
<button id="clearSelectionBtn" class="button secondary" type="button">取消选择</button>
|
||||
<button id="mobileStatusMenuBtn" class="button secondary mobile-bulk-status" type="button">改状态</button>
|
||||
<button class="button secondary" type="button" data-bulk-status="asking_supplier">问供应商</button>
|
||||
<button class="button secondary" type="button" data-bulk-status="ordered_sample">已拿样</button>
|
||||
<button class="button secondary" type="button" data-bulk-status="live_testing">直播测试</button>
|
||||
<button class="button secondary" type="button" data-bulk-status="rejected">放弃</button>
|
||||
<button id="tagSelectedBtn" class="button secondary" type="button">加标签</button>
|
||||
<button id="deleteSelectedBtn" class="button danger" type="button">删除所选</button>
|
||||
<button id="confirmDeleteBtn" class="button danger" type="button" hidden>确认删除</button>
|
||||
<button id="cancelDeleteBtn" class="button secondary" type="button" hidden>返回</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="emptyState" class="empty-state" hidden>
|
||||
<div class="empty-mark" aria-hidden="true">饰</div>
|
||||
<h3>还没有采集数据</h3>
|
||||
<p>先启动服务并安装插件,然后在淘宝、小红书或 1688 页面点击“采集当前页”。</p>
|
||||
<div class="empty-actions">
|
||||
<button id="emptyPrimaryBtn" class="button primary" type="button">配置插件</button>
|
||||
<button id="emptySecondaryBtn" class="button secondary" type="button">清空筛选</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="itemsGrid" class="items-grid" aria-live="polite"></section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<dialog id="itemDialog">
|
||||
<form method="dialog" class="dialog-card">
|
||||
<button class="dialog-close" value="cancel" aria-label="关闭">×</button>
|
||||
<div id="dialogContent"></div>
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<dialog id="authDialog" class="auth-dialog">
|
||||
<div class="dialog-card auth-dialog-card">
|
||||
<button class="dialog-close" type="button" data-auth-close aria-label="关闭">×</button>
|
||||
<div class="auth-dialog-copy">
|
||||
<p class="eyebrow">SaaS Workspace</p>
|
||||
<h2 id="authDialogTitle">登录工作台</h2>
|
||||
<p id="authDialogText">登录后进入你的直播饰品选品采购工作台。</p>
|
||||
</div>
|
||||
<form id="loginForm" class="auth-card auth-mode-panel">
|
||||
<label>
|
||||
<span>邮箱</span>
|
||||
<input name="email" type="email" autocomplete="email" required placeholder="you@example.com" />
|
||||
</label>
|
||||
<label>
|
||||
<span>密码</span>
|
||||
<input name="password" type="password" autocomplete="current-password" required placeholder="输入密码" />
|
||||
</label>
|
||||
<button class="button primary" type="submit">登录工作台</button>
|
||||
</form>
|
||||
<form id="registerForm" class="auth-card auth-mode-panel" hidden>
|
||||
<label>
|
||||
<span>昵称</span>
|
||||
<input name="name" autocomplete="name" placeholder="直播饰品买手" />
|
||||
</label>
|
||||
<label>
|
||||
<span>邮箱</span>
|
||||
<input name="email" type="email" autocomplete="email" required placeholder="you@example.com" />
|
||||
</label>
|
||||
<label>
|
||||
<span>密码</span>
|
||||
<input name="password" type="password" autocomplete="new-password" minlength="6" required placeholder="至少 6 位" />
|
||||
</label>
|
||||
<button class="button primary" type="submit">创建并接管本地库</button>
|
||||
</form>
|
||||
<p class="auth-switch-line">
|
||||
<span id="authSwitchText">还没有账号?</span>
|
||||
<button id="authSwitchButton" type="button" data-auth-switch>创建账号</button>
|
||||
</p>
|
||||
<p id="authMessage" class="auth-message"></p>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<dialog id="filterDialog" class="filter-dialog">
|
||||
<form method="dialog" class="dialog-card filter-sheet">
|
||||
<button class="dialog-close" value="cancel" aria-label="关闭">×</button>
|
||||
<h2>筛选</h2>
|
||||
<div class="filter-sheet-body"></div>
|
||||
<div class="topbar-actions">
|
||||
<button id="clearFiltersBtn" class="button secondary" type="button">清空筛选</button>
|
||||
<button class="button primary" value="confirm">完成</button>
|
||||
</div>
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<dialog id="statusActionDialog" class="action-sheet-dialog">
|
||||
<form method="dialog" class="dialog-card action-sheet">
|
||||
<button class="dialog-close" value="cancel" aria-label="关闭">×</button>
|
||||
<h2>改状态</h2>
|
||||
<div class="action-sheet-grid">
|
||||
<button class="button secondary" type="button" data-mobile-bulk-status="asking_supplier">问供应商</button>
|
||||
<button class="button secondary" type="button" data-mobile-bulk-status="ordered_sample">已拿样</button>
|
||||
<button class="button secondary" type="button" data-mobile-bulk-status="live_testing">直播测试</button>
|
||||
<button class="button danger" type="button" data-mobile-bulk-status="rejected">放弃</button>
|
||||
</div>
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<nav class="mobile-tabbar" aria-label="移动端导航">
|
||||
<button class="mobile-tab active" data-mobile-view="overview" type="button">首页</button>
|
||||
<button class="mobile-tab" data-mobile-view="capture" type="button">采集</button>
|
||||
<button class="mobile-tab" data-mobile-view="competitors" type="button">竞品</button>
|
||||
<button class="mobile-tab" data-mobile-view="suppliers" type="button">货源</button>
|
||||
<button class="mobile-tab" data-mobile-view="testing" type="button">拿样</button>
|
||||
<button class="mobile-tab" data-mobile-view="account" type="button">我的</button>
|
||||
</nav>
|
||||
|
||||
<script type="module" src="/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>藏式手链测试页</title>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<article class="offer-card">
|
||||
<a href="https://detail.1688.com/offer/998.html">
|
||||
<img src="https://img.alicdn.com/imgextra/i1/test.jpg" alt="藏式编绳手链" />
|
||||
<h2>藏式编绳手链 民族风 绿松石色 直播款</h2>
|
||||
</a>
|
||||
<p class="price">¥6.80 起</p>
|
||||
<p class="supplier">义乌源头饰品厂 现货 混批 支持拿样</p>
|
||||
<p>1000+人付款 求链接 问材质</p>
|
||||
</article>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||