docs: 初始化 cmshopee 文档、设计与项目骨架
- docs/ 完整 harness coding 文档集(愿景/需求/技术栈/架构/编码规则/任务/api/routes/current-state) - 5 Tab 流水线设计 + UI 效果图 SVG(docs/ui/) - cdp.py CDP 底座;prototypes/ 已验证原型脚本(待 editor.py 移植后清理) - AGENTS.md/CLAUDE.md 入口、progress.md 执行流水、.gitignore(排除凭证/DB/图片) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
# UI 效果图(SVG 线框)
|
||||
|
||||
cmshopee 5 Tab 桌面应用的界面效果图。SVG 可用浏览器直接打开查看。
|
||||
|
||||
| 文件 | 内容 |
|
||||
| --- | --- |
|
||||
| [overview-pipeline.svg](overview-pipeline.svg) | 5 Tab 流水线总览(stage:imported→collected→generated→confirmed→applied) |
|
||||
| [tab1-import-collect.svg](tab1-import-collect.svg) | ① 导入采集:导入 Excel、任务列表、采集旧标题/旧封面、回写、日志 |
|
||||
| [tab2-ai-generate.svg](tab2-ai-generate.svg) | ② AI生成:提示词、生成、新旧对照预览、确认/重生成 |
|
||||
| [tab3-update-shopee.svg](tab3-update-shopee.svg) | ③ 更新shopee:已确认任务、批次提交开关、执行结果、汇总 |
|
||||
| [tab4-accounts.svg](tab4-accounts.svg) | ④ 账号管理:账号列表、启动登录、检测登录、账号编辑弹窗 |
|
||||
| [tab5-settings.svg](tab5-settings.svg) | ⑤ 设置:AI 模型/Key、路径、端口 |
|
||||
|
||||
> 仅为线框效果图,最终样式以实现为准。界面职责与流程见 [../routes.md](../routes.md)。
|
||||
@@ -0,0 +1,91 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="420" viewBox="0 0 940 420" font-family="'Segoe UI','Microsoft YaHei',sans-serif">
|
||||
<defs>
|
||||
<marker id="arr" markerWidth="10" markerHeight="10" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 Z" fill="#9aa3b2"/></marker>
|
||||
<style>
|
||||
.bg{fill:#f4f6f9;stroke:#d3d9e2}
|
||||
.h1{fill:#1f2733;font-size:18px;font-weight:700}
|
||||
.sub{fill:#8a92a0;font-size:12px}
|
||||
.card{fill:#fff;stroke:#cdd6e2}
|
||||
.tt{fill:#2f6fed;font-size:13px;font-weight:700}
|
||||
.st{fill:#1f2733;font-size:12px;font-weight:600}
|
||||
.ds{fill:#5c6573;font-size:11px}
|
||||
.stage{fill:#eaf3ff;stroke:#cfe2fb}
|
||||
.stageT{fill:#1f4e91;font-size:11px;font-weight:600}
|
||||
.gate{fill:#fff7e6;stroke:#f0d089}
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="bg" x="0.5" y="0.5" width="939" height="419" rx="10"/>
|
||||
<text class="h1" x="24" y="40">cmshopee · 5 Tab 流水线总览</text>
|
||||
<text class="sub" x="24" y="60">工作流优先顺序 · 对象是 Excel 里的每一行任务 · 状态字段 stage 贯穿全程</text>
|
||||
|
||||
<!-- stage chips row (无 confirmed、无提交开关) -->
|
||||
<g transform="translate(24,84)">
|
||||
<rect class="stage" x="0" y="0" width="200" height="26" rx="13"/><text class="stageT" x="66" y="17">imported</text>
|
||||
<rect class="stage" x="230" y="0" width="200" height="26" rx="13"/><text class="stageT" x="292" y="17">collected</text>
|
||||
<rect class="stage" x="460" y="0" width="200" height="26" rx="13"/><text class="stageT" x="520" y="17">generated</text>
|
||||
<rect class="stage" x="690" y="0" width="200" height="26" rx="13"/><text class="stageT" x="742" y="17">applied(直接提交)</text>
|
||||
</g>
|
||||
|
||||
<!-- 5 tab cards -->
|
||||
<g transform="translate(24,140)">
|
||||
<!-- card template -->
|
||||
<g>
|
||||
<rect class="card" x="0" y="0" width="168" height="210" rx="8"/>
|
||||
<text class="tt" x="14" y="28">① 导入采集</text>
|
||||
<text class="st" x="14" y="52">读 Excel 输入列</text>
|
||||
<text class="ds" x="14" y="72">账号名/别名/商品id</text>
|
||||
<text class="st" x="14" y="98">只读采集</text>
|
||||
<text class="ds" x="14" y="118">抓旧标题</text>
|
||||
<text class="ds" x="14" y="136">下载旧封面到本地</text>
|
||||
<text class="ds" x="14" y="154">回写 Excel 旧字段</text>
|
||||
<text class="ds" x="14" y="190" fill="#20a464">→ collected</text>
|
||||
</g>
|
||||
<g transform="translate(193,0)">
|
||||
<rect class="card" x="0" y="0" width="168" height="210" rx="8"/>
|
||||
<text class="tt" x="14" y="28">② AI生成</text>
|
||||
<text class="st" x="14" y="52">提示词输入</text>
|
||||
<text class="ds" x="14" y="72">标题/封面分开</text>
|
||||
<text class="st" x="14" y="98">AI 生成</text>
|
||||
<text class="ds" x="14" y="118">旧标题→新标题</text>
|
||||
<text class="ds" x="14" y="136">旧封面→新封面</text>
|
||||
<text class="ds" x="14" y="156">双击看新旧封面</text>
|
||||
<text class="ds" x="14" y="190" fill="#20a464">→ generated(无确认)</text>
|
||||
</g>
|
||||
<g transform="translate(386,0)">
|
||||
<rect class="card" x="0" y="0" width="168" height="210" rx="8"/>
|
||||
<text class="tt" x="14" y="28">③ 更新shopee</text>
|
||||
<text class="st" x="14" y="52">已生成任务</text>
|
||||
<text class="ds" x="14" y="72">打开编辑页</text>
|
||||
<text class="ds" x="14" y="90">换标题 + 换封面</text>
|
||||
<text class="ds" x="14" y="108">直接点更新提交</text>
|
||||
<text class="st" x="14" y="134">串行 · 失败继续</text>
|
||||
<text class="ds" x="14" y="154">实时写库 + 回写Excel</text>
|
||||
<text class="ds" x="14" y="190" fill="#20a464">→ applied</text>
|
||||
</g>
|
||||
<g transform="translate(579,0)">
|
||||
<rect class="card" x="0" y="0" width="168" height="210" rx="8"/>
|
||||
<text class="tt" x="14" y="28">④ 账号管理</text>
|
||||
<text class="ds" x="14" y="52">账号名/别名/端口</text>
|
||||
<text class="ds" x="14" y="72">密码加密·仅参考</text>
|
||||
<text class="ds" x="14" y="92">独立 user-data-dir</text>
|
||||
<text class="ds" x="14" y="112">启动并登录(人工)</text>
|
||||
<text class="ds" x="14" y="132">检测登录状态</text>
|
||||
<text class="ds" x="14" y="184" fill="#8a92a0">配一次,少改</text>
|
||||
</g>
|
||||
<g transform="translate(772,0)">
|
||||
<rect class="card" x="0" y="0" width="144" height="210" rx="8"/>
|
||||
<text class="tt" x="14" y="28">⑤ 设置</text>
|
||||
<text class="ds" x="14" y="52">AI 模型/Key</text>
|
||||
<text class="ds" x="14" y="72">本地图片目录</text>
|
||||
<text class="ds" x="14" y="92">Chrome 路径</text>
|
||||
<text class="ds" x="14" y="112">端口范围</text>
|
||||
<text class="ds" x="14" y="184" fill="#8a92a0">全局配置</text>
|
||||
</g>
|
||||
|
||||
<!-- arrows between 1-2-3 -->
|
||||
<line x1="168" y1="105" x2="191" y2="105" stroke="#9aa3b2" stroke-width="2" marker-end="url(#arr)"/>
|
||||
<line x1="361" y1="105" x2="384" y2="105" stroke="#9aa3b2" stroke-width="2" marker-end="url(#arr)"/>
|
||||
</g>
|
||||
|
||||
<text class="sub" x="24" y="394">① ③ 依赖账号已配置且已登录(④);未配/未登录则执行按钮禁用并提示去④。存储:config.json + SQLite + 本地 images/。</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
@@ -0,0 +1,117 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="620" viewBox="0 0 940 620" font-family="'Segoe UI','Microsoft YaHei',sans-serif">
|
||||
<defs>
|
||||
<style>
|
||||
.win{fill:#f4f6f9;stroke:#d3d9e2}
|
||||
.hd{fill:#2b3a55}
|
||||
.title{fill:#fff;font-size:14px;font-weight:600}
|
||||
.tab{fill:#e8ebf0}
|
||||
.tabA{fill:#f4f6f9}
|
||||
.tabT{fill:#5c6573;font-size:13px}
|
||||
.tabTA{fill:#2f6fed;font-size:13px;font-weight:600}
|
||||
.sec{fill:#1f2733;font-size:13px;font-weight:600}
|
||||
.mut{fill:#8a92a0;font-size:11px}
|
||||
.cell{fill:#2a2f3a;font-size:12px}
|
||||
.th{fill:#5c6573;font-size:12px;font-weight:600}
|
||||
.btnP{fill:#2f6fed}
|
||||
.btnPT{fill:#fff;font-size:12px;font-weight:600}
|
||||
.btn{fill:#fff;stroke:#c5ccd6}
|
||||
.btnT{fill:#3a4150;font-size:12px}
|
||||
.panel{fill:#fff;stroke:#e2e6ec}
|
||||
.rowL{fill:#fafbfc}
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<!-- window -->
|
||||
<rect class="win" x="0.5" y="0.5" width="939" height="619" rx="8"/>
|
||||
<rect class="hd" x="0.5" y="0.5" width="939" height="40" rx="8"/>
|
||||
<rect class="hd" x="0.5" y="20" width="939" height="21"/>
|
||||
<text class="title" x="18" y="26">cmshopee · Shopee 商品批量改标题换封面</text>
|
||||
<circle cx="888" cy="20" r="6" fill="#f5bf4f"/><circle cx="910" cy="20" r="6" fill="#5ac26a"/><circle cx="866" cy="20" r="6" fill="#e0e4ea"/>
|
||||
|
||||
<!-- tab strip -->
|
||||
<g>
|
||||
<rect class="tab" x="0.5" y="41" width="939" height="38"/>
|
||||
<rect class="tabA" x="8" y="45" width="150" height="38"/>
|
||||
<rect x="8" y="45" width="150" height="3" fill="#2f6fed"/>
|
||||
<text class="tabTA" x="34" y="68">① 导入采集</text>
|
||||
<text class="tabT" x="186" y="68">② AI生成</text>
|
||||
<text class="tabT" x="330" y="68">③ 更新shopee</text>
|
||||
<text class="tabT" x="492" y="68">④ 账号管理</text>
|
||||
<text class="tabT" x="636" y="68">⑤ 设置</text>
|
||||
</g>
|
||||
|
||||
<!-- toolbar -->
|
||||
<g transform="translate(0,94)">
|
||||
<rect class="btn" x="18" y="0" width="110" height="30" rx="6"/><text class="btnT" x="34" y="20">导入 Excel…</text>
|
||||
<rect class="btn" x="136" y="0" width="64" height="30" rx="6"/><text class="btnT" x="152" y="20">移除</text>
|
||||
<rect class="btn" x="208" y="0" width="64" height="30" rx="6"/><text class="btnT" x="224" y="20">清空</text>
|
||||
<text class="mut" x="560" y="20">别名以 Excel“别名”列匹配账号 · 未匹配→略过</text>
|
||||
</g>
|
||||
|
||||
<!-- import summary bar -->
|
||||
<g transform="translate(18,130)">
|
||||
<rect x="0" y="0" width="904" height="40" rx="6" fill="#eef4ff" stroke="#cfe0fb"/>
|
||||
<text x="14" y="18" font-size="12.5" fill="#1f4e91" font-weight="600">▸ 导入汇总</text>
|
||||
<text x="86" y="18" font-size="12.5" fill="#2a2f3a">3 文件 · 128 行 · 有效 125 ·</text>
|
||||
<text x="300" y="18" font-size="12.5" fill="#c2473d">无效 3</text>
|
||||
<text x="350" y="18" font-size="12.5" fill="#2a2f3a">· 匹配 123 ·</text>
|
||||
<text x="448" y="18" font-size="12.5" fill="#c2473d">未匹配 5 ⚠</text>
|
||||
<text x="14" y="33" font-size="11" fill="#5c6573">匹配明细:女装店 60 · my主店 40 · 饰品店 23 (点“无效/未匹配”可在列表筛出定位)</text>
|
||||
</g>
|
||||
|
||||
<!-- task table -->
|
||||
<g transform="translate(18,180)">
|
||||
<rect class="panel" x="0" y="0" width="904" height="190" rx="6"/>
|
||||
<rect x="1" y="1" width="902" height="28" fill="#eef1f6"/>
|
||||
<text class="th" x="14" y="19">账号名</text>
|
||||
<text class="th" x="110" y="19">别名</text>
|
||||
<text class="th" x="210" y="19">商品ID</text>
|
||||
<text class="th" x="340" y="19">阶段</text>
|
||||
<text class="th" x="470" y="19">旧标题</text>
|
||||
<text class="th" x="770" y="19">旧封面</text>
|
||||
<!-- rows -->
|
||||
<g font-size="12">
|
||||
<rect class="rowL" x="1" y="29" width="902" height="32"/>
|
||||
<text class="cell" x="14" y="49">主店A</text><text class="cell" x="110" y="49">女装店</text>
|
||||
<text class="cell" x="210" y="49">51100639510</text>
|
||||
<circle cx="346" cy="45" r="4" fill="#20a464"/><text class="cell" x="356" y="49">已采集</text>
|
||||
<text class="cell" x="470" y="49">…顯瘦百搭T恤</text><text class="cell" x="770" y="49">old_…01.jpg</text>
|
||||
|
||||
<text class="cell" x="14" y="81">主店A</text><text class="cell" x="110" y="81">女装店</text>
|
||||
<text class="cell" x="210" y="81">51100640000</text>
|
||||
<circle cx="346" cy="77" r="4" fill="#b6bdc7"/><text class="cell" x="356" y="81">待采集</text>
|
||||
<text class="mut" x="470" y="81">—</text><text class="mut" x="770" y="81">—</text>
|
||||
|
||||
<rect class="rowL" x="1" y="93" width="902" height="32"/>
|
||||
<text class="cell" x="14" y="113">马来店</text><text class="cell" x="110" y="113">my主店</text>
|
||||
<text class="cell" x="210" y="113">52000000001</text>
|
||||
<circle cx="346" cy="109" r="4" fill="#20a464"/><text class="cell" x="356" y="113">已采集</text>
|
||||
<text class="cell" x="470" y="113">Korean Loose Tee</text><text class="cell" x="770" y="113">old_…07.jpg</text>
|
||||
|
||||
<text class="cell" x="14" y="145" fill="#c2473d">未知店</text><text class="cell" x="110" y="145" fill="#c2473d">x别名</text>
|
||||
<text class="cell" x="210" y="145">52999999</text>
|
||||
<circle cx="346" cy="141" r="4" fill="#e7a008"/><text class="cell" x="356" y="145" fill="#c2473d">略过·别名未匹配</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- action buttons -->
|
||||
<g transform="translate(18,382)">
|
||||
<rect class="btnP" x="0" y="0" width="178" height="34" rx="6"/><text class="btnPT" x="22" y="22">▶ 采集旧标题/旧封面</text>
|
||||
<rect class="btn" x="190" y="0" width="64" height="34" rx="6"/><text class="btnT" x="208" y="22">■ 停止</text>
|
||||
<rect class="btn" x="700" y="0" width="204" height="34" rx="6"/><text class="btnT" x="724" y="22">回写旧数据到 Excel</text>
|
||||
</g>
|
||||
|
||||
<!-- log -->
|
||||
<g transform="translate(18,432)">
|
||||
<text class="sec" x="0" y="12">运行日志</text>
|
||||
<rect class="panel" x="0" y="20" width="904" height="160" rx="6"/>
|
||||
<g font-family="Consolas,monospace" font-size="11.5" fill="#586073">
|
||||
<text x="14" y="42">[10:21:03] 文件 tw01.xlsx → 匹配账号「女装店」(9222)</text>
|
||||
<text x="14" y="62">[10:21:05] 51100639510 采集旧标题:…顯瘦百搭T恤</text>
|
||||
<text x="14" y="82">[10:21:07] 下载旧封面 → images/nuzhuang_01/51100639510_old.jpg</text>
|
||||
<text x="14" y="102">[10:21:08] set_collected ✓(已写 SQLite)</text>
|
||||
<text x="14" y="122">[10:21:14] 52999999 别名「x别名」未匹配账号 → 略过</text>
|
||||
<text x="14" y="142">[10:21:20] 采集完成 3/4,已回写 Excel 旧字段</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,105 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="620" viewBox="0 0 940 620" font-family="'Segoe UI','Microsoft YaHei',sans-serif">
|
||||
<defs>
|
||||
<style>
|
||||
.win{fill:#f4f6f9;stroke:#d3d9e2}.hd{fill:#2b3a55}.title{fill:#fff;font-size:14px;font-weight:600}
|
||||
.tab{fill:#e8ebf0}.tabA{fill:#f4f6f9}.tabT{fill:#5c6573;font-size:13px}.tabTA{fill:#2f6fed;font-size:13px;font-weight:600}
|
||||
.sec{fill:#1f2733;font-size:13px;font-weight:600}.mut{fill:#8a92a0;font-size:11px}
|
||||
.cell{fill:#2a2f3a;font-size:12px}.th{fill:#5c6573;font-size:12px;font-weight:600}
|
||||
.btnP{fill:#2f6fed}.btnPT{fill:#fff;font-size:13px;font-weight:600}
|
||||
.btn{fill:#fff;stroke:#c5ccd6}.btnT{fill:#3a4150;font-size:12px}
|
||||
.panel{fill:#fff;stroke:#e2e6ec}.inp{fill:#fff;stroke:#c5ccd6}.ta{fill:#fbfcfe;stroke:#c5ccd6}
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="win" x="0.5" y="0.5" width="939" height="619" rx="8"/>
|
||||
<rect class="hd" x="0.5" y="0.5" width="939" height="40" rx="8"/><rect class="hd" x="0.5" y="20" width="939" height="21"/>
|
||||
<text class="title" x="18" y="26">cmshopee · Shopee 商品批量改标题换封面</text>
|
||||
<circle cx="888" cy="20" r="6" fill="#f5bf4f"/><circle cx="910" cy="20" r="6" fill="#5ac26a"/><circle cx="866" cy="20" r="6" fill="#e0e4ea"/>
|
||||
|
||||
<rect class="tab" x="0.5" y="41" width="939" height="38"/>
|
||||
<rect class="tabA" x="166" y="45" width="138" height="38"/><rect x="166" y="45" width="138" height="3" fill="#2f6fed"/>
|
||||
<text class="tabT" x="34" y="68">① 导入采集</text>
|
||||
<text class="tabTA" x="196" y="68">② AI生成</text>
|
||||
<text class="tabT" x="330" y="68">③ 更新shopee</text>
|
||||
<text class="tabT" x="492" y="68">④ 账号管理</text>
|
||||
<text class="tabT" x="636" y="68">⑤ 设置</text>
|
||||
|
||||
<!-- LEFT ~1/4: prompts management -->
|
||||
<g transform="translate(18,96)">
|
||||
<rect class="panel" x="0" y="0" width="218" height="446" rx="6"/>
|
||||
|
||||
<!-- title prompt: single file + save -->
|
||||
<text class="sec" x="14" y="24">标题提示词</text>
|
||||
<rect class="btn" x="150" y="8" width="54" height="22" rx="5"/><text class="btnT" x="164" y="23">保存</text>
|
||||
<rect class="ta" x="14" y="36" width="190" height="78" rx="6"/>
|
||||
<text class="cell" x="22" y="56" fill="#586073" font-size="11">精简标题、去「T恤」、</text>
|
||||
<text class="cell" x="22" y="72" fill="#586073" font-size="11">突出韩版加绒保暖 ≤60字</text>
|
||||
<text class="mut" x="14" y="128">启动自动加载 title_prompt.txt 回显</text>
|
||||
|
||||
<!-- cover prompt: multi-template -->
|
||||
<text class="sec" x="14" y="160">封面提示词(模板)</text>
|
||||
<rect class="inp" x="14" y="170" width="190" height="24" rx="5"/><text class="cell" x="22" y="187" font-size="11">模板:韩版女装 ▼</text>
|
||||
<!-- icon toolbar -->
|
||||
<g font-size="11">
|
||||
<rect class="btn" x="14" y="200" width="34" height="24" rx="5"/><text class="btnT" x="22" y="216">+</text>
|
||||
<rect class="btn" x="52" y="200" width="34" height="24" rx="5"/><text class="btnT" x="60" y="216">💾</text>
|
||||
<rect class="btn" x="90" y="200" width="34" height="24" rx="5"/><text class="btnT" x="96" y="216">另存</text>
|
||||
<rect class="btn" x="128" y="200" width="34" height="24" rx="5"/><text class="btnT" x="136" y="216">改名</text>
|
||||
<rect class="btn" x="166" y="200" width="38" height="24" rx="5"/><text class="btnT" x="176" y="216">删除</text>
|
||||
</g>
|
||||
<rect class="ta" x="14" y="232" width="190" height="118" rx="6"/>
|
||||
<text class="cell" x="22" y="252" fill="#586073" font-size="11">纯白背景、保留主体、</text>
|
||||
<text class="cell" x="22" y="268" fill="#586073" font-size="11">呼应标题:</text>
|
||||
<text x="22" y="284" fill="#2f6fed" font-size="11">{新标题}</text>
|
||||
<!-- insert / preview -->
|
||||
<rect class="btn" x="14" y="360" width="92" height="26" rx="6"/><text class="btnT" x="26" y="377">插入标题</text>
|
||||
<rect class="btn" x="112" y="360" width="92" height="26" rx="6"/><text class="btnT" x="138" y="377">预览</text>
|
||||
<text class="mut" x="14" y="406">变量 {旧标题}{新标题}{商品id}{店铺}</text>
|
||||
<text class="mut" x="14" y="422">模型/并发/重试/分辨率/质量 → ⑤设置</text>
|
||||
</g>
|
||||
|
||||
<!-- RIGHT: filters + list -->
|
||||
<g transform="translate(248,96)">
|
||||
<!-- filter bar -->
|
||||
<rect class="inp" x="0" y="0" width="120" height="28" rx="6"/><text class="cell" x="12" y="18">批次:本次 ▼</text>
|
||||
<rect class="inp" x="130" y="0" width="120" height="28" rx="6"/><text class="cell" x="142" y="18">店铺:全部 ▼</text>
|
||||
<rect class="inp" x="260" y="0" width="120" height="28" rx="6"/><text class="cell" x="272" y="18">状态:全部 ▼</text>
|
||||
<rect class="btn" x="390" y="0" width="64" height="28" rx="6"/><text class="btnT" x="408" y="18">筛选</text>
|
||||
<text class="mut" x="470" y="18">双击某行 → 弹窗看 旧封面 | 新封面</text>
|
||||
|
||||
<!-- table -->
|
||||
<rect class="panel" x="0" y="40" width="656" height="362" rx="6"/>
|
||||
<rect x="1" y="41" width="654" height="28" fill="#eef1f6"/>
|
||||
<text class="th" x="14" y="59">店铺名</text><text class="th" x="96" y="59">商品ID</text>
|
||||
<text class="th" x="220" y="59">旧标题</text><text class="th" x="420" y="59">新标题</text><text class="th" x="600" y="59">状态</text>
|
||||
<g font-size="12">
|
||||
<rect x="1" y="69" width="654" height="30" fill="#fafbfc"/>
|
||||
<text class="cell" x="14" y="89">女装店</text><text class="cell" x="96" y="89">51100639510</text>
|
||||
<text class="cell" x="220" y="89">…顯瘦百搭T恤</text><text class="cell" x="420" y="89" fill="#1f6f43">…顯瘦百搭</text>
|
||||
<circle cx="606" cy="85" r="4" fill="#20a464"/><text class="cell" x="616" y="89">已生成</text>
|
||||
|
||||
<text class="cell" x="14" y="119">女装店</text><text class="cell" x="96" y="119">51100640000</text>
|
||||
<text class="cell" x="220" y="119">…加絨打底衫T恤</text><text class="mut" x="420" y="119">—</text>
|
||||
<circle cx="606" cy="115" r="4" fill="#b6bdc7"/><text class="cell" x="616" y="119">待生成</text>
|
||||
|
||||
<rect x="1" y="129" width="654" height="30" fill="#fafbfc"/>
|
||||
<text class="cell" x="14" y="149">my主店</text><text class="cell" x="96" y="149">52000000001</text>
|
||||
<text class="cell" x="220" y="149">Korean Loose Tee</text><text class="cell" x="420" y="149" fill="#1f6f43">Korean Oversize Tee</text>
|
||||
<circle cx="606" cy="145" r="4" fill="#20a464"/><text class="cell" x="616" y="149">已生成</text>
|
||||
|
||||
<text class="cell" x="14" y="179">饰品店</text><text class="cell" x="96" y="179">53000000009</text>
|
||||
<text class="cell" x="220" y="179">…百搭耳環飾品</text><text class="cell" x="420" y="179" fill="#2f6fed">生成中…</text>
|
||||
<circle cx="606" cy="175" r="4" fill="#2f6fed"/><text class="cell" x="616" y="179">处理中</text>
|
||||
</g>
|
||||
<text class="mut" x="14" y="392">新标题直接用 AI 输出(不可编辑)· 可对单行右键「重生成」· 无人工确认</text>
|
||||
</g>
|
||||
|
||||
<!-- bottom action -->
|
||||
<g transform="translate(0,556)">
|
||||
<text class="sec" x="248" y="24" font-size="12">进度:</text>
|
||||
<text class="cell" x="290" y="24">标题 30/30 · 封面 12/30 ·</text>
|
||||
<text x="470" y="24" font-size="12" fill="#c2473d">失败 1</text>
|
||||
<text class="mut" x="248" y="42">先并发生成标题 → 接着并发生成封面 · 每条完成即写库 · 停止可取消未开始项</text>
|
||||
<rect class="btnP" x="690" y="8" width="130" height="38" rx="6"/><text class="btnPT" x="724" y="32">▶ 开始生成</text>
|
||||
<rect class="btn" x="828" y="8" width="92" height="38" rx="6"/><text class="btnT" x="852" y="32">■ 停止</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
@@ -0,0 +1,81 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="620" viewBox="0 0 940 620" font-family="'Segoe UI','Microsoft YaHei',sans-serif">
|
||||
<defs><style>
|
||||
.win{fill:#f4f6f9;stroke:#d3d9e2}.hd{fill:#2b3a55}.title{fill:#fff;font-size:14px;font-weight:600}
|
||||
.tab{fill:#e8ebf0}.tabA{fill:#f4f6f9}.tabT{fill:#5c6573;font-size:13px}.tabTA{fill:#2f6fed;font-size:13px;font-weight:600}
|
||||
.sec{fill:#1f2733;font-size:13px;font-weight:600}.mut{fill:#8a92a0;font-size:11px}
|
||||
.cell{fill:#2a2f3a;font-size:12px}.th{fill:#5c6573;font-size:12px;font-weight:600}
|
||||
.btnP{fill:#2f6fed}.btnPT{fill:#fff;font-size:12px;font-weight:600}.btn{fill:#fff;stroke:#c5ccd6}.btnT{fill:#3a4150;font-size:12px}
|
||||
.panel{fill:#fff;stroke:#e2e6ec}.warn{fill:#fff7e6;stroke:#f0d089}
|
||||
</style></defs>
|
||||
<rect class="win" x="0.5" y="0.5" width="939" height="619" rx="8"/>
|
||||
<rect class="hd" x="0.5" y="0.5" width="939" height="40" rx="8"/><rect class="hd" x="0.5" y="20" width="939" height="21"/>
|
||||
<text class="title" x="18" y="26">cmshopee · Shopee 商品批量改标题换封面</text>
|
||||
<circle cx="888" cy="20" r="6" fill="#f5bf4f"/><circle cx="910" cy="20" r="6" fill="#5ac26a"/><circle cx="866" cy="20" r="6" fill="#e0e4ea"/>
|
||||
|
||||
<rect class="tab" x="0.5" y="41" width="939" height="38"/>
|
||||
<rect class="tabA" x="304" y="45" width="162" height="38"/><rect x="304" y="45" width="162" height="3" fill="#2f6fed"/>
|
||||
<text class="tabT" x="34" y="68">① 导入采集</text><text class="tabT" x="186" y="68">② AI生成</text>
|
||||
<text class="tabTA" x="334" y="68">③ 更新shopee</text>
|
||||
<text class="tabT" x="492" y="68">④ 账号管理</text><text class="tabT" x="636" y="68">⑤ 设置</text>
|
||||
|
||||
<!-- filter bar -->
|
||||
<g transform="translate(18,94)">
|
||||
<rect class="btn" x="0" y="0" width="120" height="28" rx="6"/><text class="btnT" x="12" y="18">批次:本次 ▼</text>
|
||||
<rect class="btn" x="130" y="0" width="120" height="28" rx="6"/><text class="btnT" x="142" y="18">店铺:全部 ▼</text>
|
||||
<rect class="btn" x="260" y="0" width="130" height="28" rx="6"/><text class="btnT" x="272" y="18">状态:已生成 ▼</text>
|
||||
<rect class="btnP" x="400" y="0" width="64" height="28" rx="6"/><text class="btnPT" x="418" y="18">筛选</text>
|
||||
</g>
|
||||
<!-- warn bar -->
|
||||
<g transform="translate(18,128)">
|
||||
<rect x="0" y="0" width="904" height="24" rx="6" fill="#fdeceb" stroke="#f3c2bd"/>
|
||||
<text x="14" y="16" font-size="12" fill="#b23b30">⚠ 「开始更新」对【当前筛选结果】执行:改标题+换封面并直接提交线上(无确认、无开关)</text>
|
||||
</g>
|
||||
|
||||
<!-- table -->
|
||||
<g transform="translate(18,162)">
|
||||
<rect class="panel" x="0" y="0" width="904" height="250" rx="6"/>
|
||||
<rect x="1" y="1" width="902" height="28" fill="#eef1f6"/>
|
||||
<text class="th" x="14" y="19">别名</text><text class="th" x="120" y="19">商品ID</text>
|
||||
<text class="th" x="250" y="19">新标题</text><text class="th" x="560" y="19">新封面</text>
|
||||
<text class="th" x="690" y="19">阶段</text><text class="th" x="800" y="19">结果</text>
|
||||
<g font-size="12">
|
||||
<rect x="1" y="29" width="902" height="34" fill="#fafbfc"/>
|
||||
<text class="cell" x="14" y="51">女装店</text><text class="cell" x="120" y="51">51100639510</text>
|
||||
<text class="cell" x="250" y="51">…顯瘦百搭</text><text class="cell" x="560" y="51">new_…01.jpg</text>
|
||||
<circle cx="696" cy="47" r="4" fill="#20a464"/><text class="cell" x="706" y="51">已应用</text>
|
||||
<text class="cell" x="800" y="51" fill="#1f6f43">成功·已提交</text>
|
||||
|
||||
<text class="cell" x="14" y="85">女装店</text><text class="cell" x="120" y="85">51100640200</text>
|
||||
<text class="cell" x="250" y="85">…加絨上衣</text><text class="cell" x="560" y="85">new_…02.jpg</text>
|
||||
<circle cx="696" cy="81" r="4" fill="#2f6fed"/><text class="cell" x="706" y="85">处理中…</text>
|
||||
<text class="mut" x="800" y="85">—</text>
|
||||
|
||||
<rect x="1" y="97" width="902" height="34" fill="#fafbfc"/>
|
||||
<text class="cell" x="14" y="119">my主店</text><text class="cell" x="120" y="119">52000000001</text>
|
||||
<text class="cell" x="250" y="119">Korean Loose Tee</text><text class="cell" x="560" y="119">new_…07.jpg</text>
|
||||
<circle cx="696" cy="115" r="4" fill="#b6bdc7"/><text class="cell" x="706" y="119">待应用</text><text class="mut" x="800" y="119">—</text>
|
||||
|
||||
<text class="cell" x="14" y="153">饰品店</text><text class="cell" x="120" y="153">53000000009</text>
|
||||
<text class="cell" x="250" y="153">…百搭耳環</text><text class="cell" x="560" y="153">new_…03.jpg</text>
|
||||
<circle cx="696" cy="149" r="4" fill="#c2473d"/><text class="cell" x="706" y="153">失败</text>
|
||||
<text class="cell" x="800" y="153" fill="#c2473d">更新按钮禁用</text>
|
||||
</g>
|
||||
<text class="mut" x="14" y="234">串行执行 · 单条失败继续 · 每条立即写回 SQLite</text>
|
||||
</g>
|
||||
|
||||
<!-- actions -->
|
||||
<g transform="translate(18,420)">
|
||||
<rect class="btnP" x="0" y="0" width="120" height="34" rx="6"/><text class="btnPT" x="26" y="22">▶ 开始更新</text>
|
||||
<rect class="btn" x="132" y="0" width="64" height="34" rx="6"/><text class="btnT" x="150" y="22">■ 停止</text>
|
||||
<rect class="btn" x="700" y="0" width="204" height="34" rx="6"/><text class="btnT" x="724" y="22">回写结果到 Excel</text>
|
||||
</g>
|
||||
|
||||
<!-- summary box -->
|
||||
<g transform="translate(18,470)">
|
||||
<rect class="warn" x="0" y="0" width="904" height="138" rx="6"/>
|
||||
<text class="sec" x="16" y="26">结束汇总</text>
|
||||
<text class="cell" x="16" y="54">成功:2 失败:1(更新按钮禁用 / 校验未过) 略过:0</text>
|
||||
<text class="cell" x="16" y="80">结果已写回原 Excel(旧/新标题、旧/新封面、更新状态)。</text>
|
||||
<text class="mut" x="16" y="104">⚠ 原 Excel 被打开锁定时回写失败 → 提示关闭后重试,或另存副本(SQLite 为事实来源)。</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,72 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="620" viewBox="0 0 940 620" font-family="'Segoe UI','Microsoft YaHei',sans-serif">
|
||||
<defs><style>
|
||||
.win{fill:#f4f6f9;stroke:#d3d9e2}.hd{fill:#2b3a55}.title{fill:#fff;font-size:14px;font-weight:600}
|
||||
.tab{fill:#e8ebf0}.tabA{fill:#f4f6f9}.tabT{fill:#5c6573;font-size:13px}.tabTA{fill:#2f6fed;font-size:13px;font-weight:600}
|
||||
.sec{fill:#1f2733;font-size:13px;font-weight:600}.mut{fill:#8a92a0;font-size:11px}
|
||||
.cell{fill:#2a2f3a;font-size:12px}.th{fill:#5c6573;font-size:12px;font-weight:600}
|
||||
.btnP{fill:#2f6fed}.btnPT{fill:#fff;font-size:12px;font-weight:600}.btn{fill:#fff;stroke:#c5ccd6}.btnT{fill:#3a4150;font-size:12px}
|
||||
.panel{fill:#fff;stroke:#e2e6ec}.inp{fill:#fff;stroke:#c5ccd6}.dlg{fill:#fff;stroke:#cdd4de}
|
||||
</style></defs>
|
||||
<rect class="win" x="0.5" y="0.5" width="939" height="619" rx="8"/>
|
||||
<rect class="hd" x="0.5" y="0.5" width="939" height="40" rx="8"/><rect class="hd" x="0.5" y="20" width="939" height="21"/>
|
||||
<text class="title" x="18" y="26">cmshopee · Shopee 商品批量改标题换封面</text>
|
||||
<circle cx="888" cy="20" r="6" fill="#f5bf4f"/><circle cx="910" cy="20" r="6" fill="#5ac26a"/><circle cx="866" cy="20" r="6" fill="#e0e4ea"/>
|
||||
|
||||
<rect class="tab" x="0.5" y="41" width="939" height="38"/>
|
||||
<rect class="tabA" x="466" y="45" width="150" height="38"/><rect x="466" y="45" width="150" height="3" fill="#2f6fed"/>
|
||||
<text class="tabT" x="34" y="68">① 导入采集</text><text class="tabT" x="186" y="68">② AI生成</text>
|
||||
<text class="tabT" x="330" y="68">③ 更新shopee</text>
|
||||
<text class="tabTA" x="496" y="68">④ 账号管理</text>
|
||||
<text class="tabT" x="636" y="68">⑤ 设置</text>
|
||||
|
||||
<!-- table -->
|
||||
<g transform="translate(18,100)">
|
||||
<rect class="panel" x="0" y="0" width="904" height="220" rx="6"/>
|
||||
<rect x="1" y="1" width="902" height="28" fill="#eef1f6"/>
|
||||
<text class="th" x="14" y="19">账号名</text><text class="th" x="140" y="19">别名</text>
|
||||
<text class="th" x="270" y="19">地区</text><text class="th" x="470" y="19">端口</text>
|
||||
<text class="th" x="560" y="19">登录状态</text><text class="th" x="720" y="19">备注</text>
|
||||
<g font-size="12">
|
||||
<rect x="1" y="29" width="902" height="32" fill="#fafbfc"/>
|
||||
<text class="cell" x="14" y="49">shop_tw_a</text><text class="cell" x="140" y="49">女装店</text>
|
||||
<text class="cell" x="270" y="49">seller.shopee.tw</text><text class="cell" x="470" y="49">9222</text>
|
||||
<circle cx="566" cy="45" r="4" fill="#20a464"/><text class="cell" x="576" y="49">已登录</text><text class="cell" x="720" y="49">主力店</text>
|
||||
|
||||
<text class="cell" x="14" y="81">shop_my</text><text class="cell" x="140" y="81">my主店</text>
|
||||
<text class="cell" x="270" y="81">seller.shopee.my</text><text class="cell" x="470" y="81">9223</text>
|
||||
<circle cx="566" cy="77" r="4" fill="#b6bdc7"/><text class="cell" x="576" y="81">未登录</text>
|
||||
|
||||
<rect x="1" y="93" width="902" height="32" fill="#fafbfc"/>
|
||||
<text class="cell" x="14" y="113">shop_tw_b</text><text class="cell" x="140" y="113">饰品店</text>
|
||||
<text class="cell" x="270" y="113">seller.shopee.tw</text><text class="cell" x="470" y="113">9224</text>
|
||||
<circle cx="566" cy="109" r="4" fill="#e7a008"/><text class="cell" x="576" y="113">未启动</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- buttons -->
|
||||
<g transform="translate(18,332)">
|
||||
<rect class="btn" x="0" y="0" width="64" height="30" rx="6"/><text class="btnT" x="14" y="20">+新增</text>
|
||||
<rect class="btn" x="72" y="0" width="64" height="30" rx="6"/><text class="btnT" x="88" y="20">✎编辑</text>
|
||||
<rect class="btn" x="144" y="0" width="64" height="30" rx="6"/><text class="btnT" x="160" y="20">🗑删除</text>
|
||||
<rect class="btnP" x="430" y="0" width="120" height="30" rx="6"/><text class="btnPT" x="450" y="20">▶ 启动并登录</text>
|
||||
<rect class="btn" x="558" y="0" width="100" height="30" rx="6"/><text class="btnT" x="574" y="20">🔄 检测登录</text>
|
||||
<rect class="btn" x="666" y="0" width="120" height="30" rx="6"/><text class="btnT" x="682" y="20">⧉ 生成快捷方式</text>
|
||||
</g>
|
||||
|
||||
<!-- edit dialog overlay -->
|
||||
<g transform="translate(300,380)">
|
||||
<rect class="dlg" x="0" y="0" width="340" height="218" rx="8"/>
|
||||
<rect x="0" y="0" width="340" height="34" rx="8" fill="#eef1f6"/><rect x="0" y="20" width="340" height="14" fill="#eef1f6"/>
|
||||
<text class="sec" x="16" y="22">新增 / 编辑账号</text>
|
||||
<g font-size="12" fill="#2a2f3a">
|
||||
<text x="20" y="62">账号名*</text><rect class="inp" x="96" y="48" width="224" height="22" rx="4"/>
|
||||
<text x="20" y="92">别名*</text><rect class="inp" x="96" y="78" width="224" height="22" rx="4"/>
|
||||
<text x="20" y="122">地区域名</text><rect class="inp" x="96" y="108" width="224" height="22" rx="4"/>
|
||||
<text x="20" y="152">端口/密码</text><rect class="inp" x="96" y="138" width="108" height="22" rx="4"/>
|
||||
<rect class="inp" x="212" y="138" width="108" height="22" rx="4"/><text x="222" y="153" fill="#8a92a0">••••(加密)</text>
|
||||
</g>
|
||||
<text class="mut" x="20" y="182">配置目录(只读):chrome_user_data_dir\nuzhuang</text>
|
||||
<rect class="btn" x="180" y="186" width="64" height="24" rx="5"/><text class="btnT" x="198" y="202">取消</text>
|
||||
<rect class="btnP" x="252" y="186" width="68" height="24" rx="5"/><text class="btnPT" x="276" y="202">保存</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,81 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="620" viewBox="0 0 940 620" font-family="'Segoe UI','Microsoft YaHei',sans-serif">
|
||||
<defs><style>
|
||||
.win{fill:#f4f6f9;stroke:#d3d9e2}.hd{fill:#2b3a55}.title{fill:#fff;font-size:14px;font-weight:600}
|
||||
.tab{fill:#e8ebf0}.tabA{fill:#f4f6f9}.tabT{fill:#5c6573;font-size:13px}.tabTA{fill:#2f6fed;font-size:13px;font-weight:600}
|
||||
.sec{fill:#1f2733;font-size:13px;font-weight:600}.mut{fill:#8a92a0;font-size:11px}
|
||||
.cell{fill:#2a2f3a;font-size:12px}.lbl{fill:#3a4150;font-size:12px}
|
||||
.btnP{fill:#2f6fed}.btnPT{fill:#fff;font-size:12px;font-weight:600}.btn{fill:#fff;stroke:#c5ccd6}.btnT{fill:#3a4150;font-size:12px}
|
||||
.panel{fill:#fff;stroke:#e2e6ec}.inp{fill:#fff;stroke:#c5ccd6}.sub{fill:#fafbfc;stroke:#eef1f6}
|
||||
</style></defs>
|
||||
<rect class="win" x="0.5" y="0.5" width="939" height="619" rx="8"/>
|
||||
<rect class="hd" x="0.5" y="0.5" width="939" height="40" rx="8"/><rect class="hd" x="0.5" y="20" width="939" height="21"/>
|
||||
<text class="title" x="18" y="26">cmshopee · Shopee 商品批量改标题换封面</text>
|
||||
<circle cx="888" cy="20" r="6" fill="#f5bf4f"/><circle cx="910" cy="20" r="6" fill="#5ac26a"/><circle cx="866" cy="20" r="6" fill="#e0e4ea"/>
|
||||
|
||||
<rect class="tab" x="0.5" y="41" width="939" height="38"/>
|
||||
<rect class="tabA" x="616" y="45" width="110" height="38"/><rect x="616" y="45" width="110" height="3" fill="#2f6fed"/>
|
||||
<text class="tabT" x="34" y="68">① 导入采集</text><text class="tabT" x="186" y="68">② AI生成</text>
|
||||
<text class="tabT" x="330" y="68">③ 更新shopee</text><text class="tabT" x="492" y="68">④ 账号管理</text>
|
||||
<text class="tabTA" x="640" y="68">⑤ 设置</text>
|
||||
|
||||
<!-- A. AI 模型管理 (master-detail) -->
|
||||
<g transform="translate(18,94)">
|
||||
<rect class="panel" x="0" y="0" width="904" height="170" rx="6"/>
|
||||
<text class="sec" x="14" y="24">AI 模型管理</text>
|
||||
|
||||
<!-- left: model selector -->
|
||||
<rect class="sub" x="14" y="36" width="250" height="120" rx="6"/>
|
||||
<text class="lbl" x="26" y="58">模型</text>
|
||||
<rect class="inp" x="26" y="64" width="226" height="26" rx="5"/><text class="cell" x="36" y="81">Nano Banana 2 ▼</text>
|
||||
<rect class="btn" x="26" y="98" width="70" height="26" rx="5"/><text class="btnT" x="44" y="115">新增</text>
|
||||
<rect class="btn" x="102" y="98" width="70" height="26" rx="5"/><text class="btnT" x="120" y="115">删除</text>
|
||||
<rect class="btnP" x="178" y="98" width="74" height="26" rx="5"/><text class="btnPT" x="190" y="115">测试连接</text>
|
||||
<text class="mut" x="26" y="142">至少各 1 个 文本/图像模型</text>
|
||||
|
||||
<!-- right: detail form -->
|
||||
<text class="lbl" x="286" y="56">服务商名称</text><rect class="inp" x="372" y="42" width="180" height="24" rx="4"/><text class="cell" x="382" y="59">Nano Banana 2</text>
|
||||
<text class="lbl" x="572" y="56">网址</text><rect class="inp" x="612" y="42" width="278" height="24" rx="4"/><text class="cell" x="620" y="59" font-size="11" fill="#586073">https://api.vectorengine.ai/v1/chat/completions</text>
|
||||
|
||||
<text class="lbl" x="286" y="92">类别</text><rect class="inp" x="372" y="78" width="92" height="24" rx="4"/><text class="cell" x="382" y="95">图像 ▼</text>
|
||||
<text class="lbl" x="478" y="92">api_type</text><rect class="inp" x="538" y="78" width="100" height="24" rx="4"/><text class="cell" x="548" y="95">auto ▼</text>
|
||||
<text class="lbl" x="656" y="92">连接超时</text><rect class="inp" x="724" y="78" width="56" height="24" rx="4"/><text class="cell" x="736" y="95">30</text><text class="mut" x="786" y="95">秒</text>
|
||||
|
||||
<text class="lbl" x="286" y="128">模型ID</text><rect class="inp" x="372" y="114" width="266" height="24" rx="4"/><text class="cell" x="382" y="131" font-size="11" fill="#586073">gemini-3.1-flash-image-preview</text>
|
||||
<text class="lbl" x="656" y="128">密钥</text><rect class="inp" x="724" y="114" width="140" height="24" rx="4"/><text class="cell" x="734" y="131" fill="#8a92a0">••••••••</text>
|
||||
<rect class="btn" x="868" y="114" width="22" height="24" rx="4"/><text class="btnT" x="874" y="131">👁</text>
|
||||
</g>
|
||||
|
||||
<!-- B. 角色 + 生成参数 -->
|
||||
<g transform="translate(18,272)">
|
||||
<rect class="panel" x="0" y="0" width="904" height="120" rx="6"/>
|
||||
<text class="sec" x="14" y="24">角色分配 + 生成参数</text>
|
||||
<text class="lbl" x="14" y="54">标题大模型</text><rect class="inp" x="100" y="40" width="190" height="24" rx="4"/><text class="cell" x="110" y="57">GPT-5.5 文本 ▼</text>
|
||||
<text class="lbl" x="320" y="54">图片大模型</text><rect class="inp" x="406" y="40" width="190" height="24" rx="4"/><text class="cell" x="416" y="57">Nano Banana 2 ▼</text>
|
||||
<text class="lbl" x="630" y="54">分辨率</text><rect class="inp" x="690" y="40" width="90" height="24" rx="4"/><text class="cell" x="700" y="57">1k ▼</text>
|
||||
<text class="mut" x="790" y="57">→ 返回超时 240s</text>
|
||||
|
||||
<text class="lbl" x="14" y="90">标题并发</text><rect class="inp" x="80" y="76" width="50" height="24" rx="4"/><text class="cell" x="98" y="93">4</text>
|
||||
<text class="lbl" x="150" y="90">图片并发</text><rect class="inp" x="216" y="76" width="50" height="24" rx="4"/><text class="cell" x="234" y="93">4</text>
|
||||
<text class="lbl" x="286" y="90">失败重试</text><rect class="inp" x="352" y="76" width="50" height="24" rx="4"/><text class="cell" x="370" y="93">2</text>
|
||||
<text class="lbl" x="422" y="90">jpg质量</text><rect class="inp" x="478" y="76" width="50" height="24" rx="4"/><text class="cell" x="496" y="93">90</text>
|
||||
<text class="mut" x="560" y="93">▸ 高级 分辨率→返回超时:512:180 1k:240 2k:360 4k:600(可改)</text>
|
||||
</g>
|
||||
|
||||
<!-- C. 路径与运行 -->
|
||||
<g transform="translate(18,400)">
|
||||
<rect class="panel" x="0" y="0" width="904" height="104" rx="6"/>
|
||||
<text class="sec" x="14" y="24">路径与运行</text>
|
||||
<text class="lbl" x="14" y="52">Chrome 路径</text><rect class="inp" x="100" y="38" width="520" height="24" rx="4"/>
|
||||
<text class="cell" x="110" y="55" font-size="11" fill="#586073">C:\Program Files\Google\Chrome\Application\chrome.exe</text>
|
||||
<rect class="btn" x="630" y="38" width="60" height="24" rx="4"/><text class="btnT" x="644" y="55">浏览…</text>
|
||||
<text class="lbl" x="14" y="88">图片目录</text><rect class="inp" x="100" y="74" width="180" height="24" rx="4"/><text class="cell" x="110" y="91" fill="#586073">images</text>
|
||||
<text class="lbl" x="300" y="88">DB</text><rect class="inp" x="334" y="74" width="160" height="24" rx="4"/><text class="cell" x="344" y="91" fill="#586073">cmshopee.db</text>
|
||||
<text class="lbl" x="520" y="88">端口范围</text><rect class="inp" x="586" y="74" width="70" height="24" rx="4"/><text class="cell" x="598" y="91">9222</text>
|
||||
<text class="lbl" x="662" y="88">–</text><rect class="inp" x="676" y="74" width="70" height="24" rx="4"/><text class="cell" x="688" y="91">9260</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0,512)">
|
||||
<rect class="btnP" x="822" y="0" width="100" height="34" rx="6"/><text class="btnPT" x="850" y="22">保存设置</text>
|
||||
<text class="mut" x="18" y="22">模型清单存 config/ai_models.json(密钥加密);选择与参数存 config.json。均 gitignore。</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.2 KiB |
Reference in New Issue
Block a user