📋 任务库
在右侧面板上传 Excel 并选择处理模式
任务将在队列中排队执行,结果在此展示
在线 Listing 数据加载中...
输入 Item ID / URL / SKU 后开始实时抓取核验
资料库数据同步中...
通途商品资料和售卖资料将显示在这里
库存数据加载中...
正在加载底价表…
正在加载决策矩阵…
🏭 仓库中心
| 仓库 | 通途ID | 站点/类型 | Location | HT | 同步 | 路由 | 矩阵 | SKU/库存 | 价格库/矩阵 | 问题 |
|---|---|---|---|---|---|---|---|---|---|---|
| 正在加载仓库中心… | ||||||||||
| SKU | 账户 | 站点 | 当前仓库 | 类型 | 处理时间 | 物品所在地 | 切仓次数 | 最近切仓 | 原因 |
|---|---|---|---|---|---|---|---|---|---|
| 选择筛选条件或点击仓库卡片查看绑定 | |||||||||
| 任务ID | 文件名 | 模式 | 状态 | SKU | 时间 | 操作 |
|---|---|---|---|---|---|---|
| 加载中... | ||||||
| Key | 账号 | 站点 | 仓库 | 包邮 | Fulfillment | Return | Payment | Handling | 状态 |
|---|
配置文件位于 config/ 目录
夜间同步窗口 00:30–08:30 | Token 每 30 分钟刷新 | 通途 API 串行执行避限流
| ERP 商品增量同步 | 01:00, 05:00 | - |
| 售卖资料增量同步 | 02:00, 06:00 | - |
| 库存同步 | 12:00, 18:00 | - |
| 全量同步(周一) | 周一 04:00 | - |
| 供应商同步 | 周六 03:00 | - |
| eBay Listing 增量 | 03:00, 07:00 | - |
| Token 保活 | 每 30 分钟 | - |
| 模版同步 | 每 7 天 | - |
| 订单桥接 | :00-:05 | - |
| 🫀 心跳巡检 | :10-:12 (2h) | - |
| 库存监控 | :15-:20 | - |
| Listing 审核 | :15-:16 | - |
| ⚡自动调整 | :05-:55 | - |
| 自动上架 | :50-:55 | - |
| 自动绑定 | :55-:58 | - |
| 📦 自动补货 | 10:00, 22:00 | - |
| 📊 每日日报 | 16:00 | - |
左边深色栏 — 切页面用的(资料库、历史、配置、说明),最下面那个绿色小圆点是系统心跳灯,绿色=正常,黄色=部分异常,红色=挂了。
中间大区域 — 你的产品数据都在这里展示,最上面一排是搜索筛选栏。
右边面板 — 上传文件、选模式、看进度,都在这里操作。
上传成功后会显示文件名和大小(绿色的 ✅)。
如果不知道表格格式,点旁边的「📥 下载模板」先下一个看看。
上传文件后,右边面板出现 3 个快捷模式按钮,直接点一个:
| 👁️ 快速预览 | 导入 + 生成SKU + 定价,不写ERP,用来看看效果 |
| ⚡ 创建模式 | 导入 + SKU + 批量文案 + 批量图片 + 写入ERP(不含浏览器导入) |
| 🚀 一站式 | 全自动:创建 + 文案 + 图片 + 写ERP + 墨文档自动登录通途浏览器导入 |
想自定义?展开下方「⚙️ 手动自定义模式(高级)」,分别设置运行模式、文案、图片、自动导入。
在墨文档 AI 对话框里用大白话说就行,比如:
「帮我试写文案和生成图片」
「完整流程全部生成并导入通途」
「只预览SKU不生成文案」
AI 理解后会显示一个配置摘要,确认没问题就点「确认执行」。
- 理解自然语言 — 不用记指令,像聊天一样说需求就行
- 记住上下文 — 提过 SKU 后,后续说「帮我重新生成」它就知道是哪个
- 智能补全 — 只说「图片有问题」时,它会追问确认操作
- 多轮对话 — 可以一步步细化需求,不必一次性说全
你:128TO260309001 图片只有供应商原图
墨文档:已找到该 SKU,要重新生成图片吗?
你:对,按规则生成8张
墨文档:✅ 确认重新生成 128TO260309001 的图片(8张),点击确认执行
日志窗口会滚动显示:解析表格 → 生成 SKU → AI 写文案 → 生成图片 → 计算定价 → 导出 Excel → 写入ERP → 浏览器导入通途 ...
别关页面,等进度条走到 100% 就行了。
⏱️ 速度参考:1 个 SKU 纯文案约 2-3 分钟,批量图片每个 SKU 约 1-2 分钟,浏览器导入约 3-5 分钟。
📋 商品资料 · 📦 售卖资料 · 🏪 eBay刊登 · 📦 Amazon刊登 · 🛍️ Shopify
最上面会出现一个体检报告,三个大色块告诉你整体情况:
0 正常 1 警告 0 失败
点色块可以快速筛选:比如点「失败」就只显示有问题的产品,方便你集中处理。
筛选栏也能按 SKU编号、关键词、平台、时间范围来搜。
系统会逐项检查:类目、品牌、图片、定价、文案标题、描述,每项用 ✅❌⚠️ 标出来。
比如上图显示品牌是 ⚠️(Unbranded),就是说这个产品没识别到品牌,你可能需要手动补一下。
一眼就知道哪里要改,不用一个个翻。
| 环节 | 做什么 | 预览 | 创建 | 一站式 |
| ① 导入解析 | 解析Excel,提取产品信息 | ✅ | ✅ | ✅ |
| ② SKU生成 | 生成标准SKU编号 + 推断类目/品牌 | ✅ | ✅ | ✅ |
| ③ AI文案 | 生成标题、描述、Item Specifics、多语言 | — | ✅ 批量 | ✅ 批量 |
| ④ AI图片 | 2张原图裂变8张(白底+场景+角度+细节) | — | ✅ 批量 | ✅ 批量 |
| ⑤ 定价计算 | 根据重量/尺寸计算各站点售价 | ✅ | ✅ | ✅ |
| ⑥ 导出Excel | 生成eBay/Amazon/Shopify/售卖资料Excel | ✅ | ✅ | ✅ |
| ⑦ 写入ERP | API写入通途商品资料+售卖资料 | — | ✅ | ✅ |
| ⑧ 浏览器导入 | 墨文档自动登录通途,导入平台资料Excel | — | — | ✅ |
A:看右下角日志有没有在动,看左下角心跳灯是不是绿的。绿的就没事,AI 在想事情比较慢,耐心等。
Q:跑完发现文案不满意怎么办?
A:重新上传表格再跑一次,或者用「试写」模式先看效果。
Q:体检报告显示"失败"怎么处理?
A:点「失败」色块筛选出来 → 点 SKU 的状态标记看哪项失败 → 针对性修复后重跑。
Q:想只跑某几个 SKU 怎么办?
A:把那几个 SKU 单独存一个 Excel 上传就行。
Q:「创建模式」和「一站式」有什么区别?
A:创建模式完成 ①-⑦ 步(生成资料+写入ERP),但不含浏览器自动导入。一站式在此基础上多一步:墨文档自动登录通途,把 eBay/Amazon/Shopify 平台资料 Excel 导入进去。
Q:手动模式和 AI 对话有什么区别?
A:效果完全一样。按钮点选更直观,AI 对话可以用自然语言灵活定制(如「只写3个试试」「只生成图片不写文案」)。
Q:墨文档 AI 助手能做什么?
A:墨文档是 Listing Forge 的智能助手,可以理解自然语言指令、记住对话上下文、智能分析任务配置。你可以用大白话跟它交流,比如「帮我重新生成这个SKU的图片」「一站式全部搞定」等。
Q:AI 对话和修改模式有什么区别?
A:两者都是对已有 SKU 重新生成。AI 对话用自然语言(如「128TOxxx 重新生成图片」),适合明确知道要做什么;修改模式是快捷按钮,勾选要重生的内容后批量执行,适合批量操作多个 SKU。
| 格式 | [类目编码 3位][品牌代码 2位][日期 YYMMDD]S[序号 2位] |
|---|---|
| 示例 | 271HD260203S01 → 类目271(rocker arms) + Honda + 2026-02-03 + 第1个 |
| 标准长度 | 13位(常规3位类目)/ 14位(新类目4位,≥1001) |
| 序号 | 每批次从 01 起递增,同批次共用同一日期 |
类目编码
- 配置文件:
config/sku_category_codes.json - 精确匹配 → 模糊匹配(包含关系)
- 未匹配:自动从 1001 起分配新编码并写入配置
品牌代码
- 配置文件:
config/brand_codes.json - 支持中英文别名匹配(如 "本田; honda" → HD)
- 未匹配品牌默认代码:
XX
品牌代码示例 ▸
| Honda | HD | Toyota | TO | Nissan | NS |
| Ford | FD | BMW | BW | Mazda | MZ |
| Hyundai | HY | Mitsubishi | MI | Universal | UN |
英文标题(词组1)
| 结构 | 核心产品名 + Suitable for + Make + Model + 排量/发动机代码 + OE编号 |
|---|---|
| 长度 | 70–80 字符,硬性上限 80 |
| 必须使用 | Suitable for(不可用 for / fits / compatible with) |
禁止事项
- 禁止词:OEM / Genuine / Original / Brand New / High Quality / Premium / Perfect Fit
- 禁止缩写:compat. / comp. / approx. / pcs. / qty. / w/ / incl.
- 禁止:句号(.)、emoji、中文、引号、自有品牌名、MPN
标题词组2(差异化)
- 同义替换:Parking Sensor → PDC Sensor / Reverse Sensor;Water Pump → Coolant Pump
- 车型顺序可调换,年份格式变化:2013-2020 → 13-20 / 2013 onwards
- 数量变化:Pack of 4 → 4PCS;介词变化:for → Fits
- 必须 ≤80 字符,且与词组1内容不同
非英语标题
| 语言 | "Suitable for" 翻译 |
|---|---|
| DE 德语 | Passend für / Für |
| FR 法语 | Compatible avec / Pour |
| IT 意大利语 | Adatto per / Per |
| ES 西班牙语 | Compatible con / Para |
| PT 葡萄牙语 | Compatível com / Para |
- 技术术语(型号、部件号、品牌名、尺寸)保持原文
- 超过80字符自动按语义压缩,优先保留高搜索频率词
纯文本描述(五段式)
- Description — 产品功能描述
- Features — 产品特性列表
- Specifications — 技术规格
- Compatible With — 每行
Suitable for Make Model Year... - Package Include — 包装清单
结尾固定附加:All trademarks mentioned are the property of their respective owners...
复杂描述(HTML 格式)
- 基于五段式转格式,不新增内容
- 字体:Arial, sans-serif;标题 14px bold;正文 13px
- 各段内用
<br>换行
简易描述
- 带格式(baseRichText):与复杂描述相同的 HTML 格式
- 纯文本(textDescribe):五段式纯文本,无任何 HTML 标签
亮点描述(Amazon Bullet Points)
- 5 条,每条 100–255 字符,纯英文,不加句号
- 固定顺序:① 功能/用途 ② 适配范围 ③ 材料/结构 ④ 规格/替代部件号 ⑤ 安装/使用价值
- 禁止:premium / top quality / best / perfect / OEM / Genuine / Original
- 允许:designed to fit / supports / helps / restores / provides / ensures
- 格式:
<p>要点1</p><p>要点2</p>...
非英语描述
- 翻译语言:DE / FR / IT / ES / PT
- 型号、部件号、品牌名、尺寸保持原文
- OE 编号、重量格式不翻译
图片类型
| 代码 | 名称 | 生成方式 |
|---|---|---|
ZT2 | 白底主图 | 供应商原图 → AI 去水印去背景,1000×1000 |
BD1 | 左旋角度图 | ZT2 → PIL 旋转 -15°,白底填充 |
BD2 | 右旋角度图 | ZT2 → PIL 旋转 +15°,白底填充 |
BG1 | 场景图 | ZT2 → AI 场景合成(发动机舱背景) |
BD3 | 局部放大图 | ZT2 → PIL 中心裁剪 55% 放大到 1000×1000 |
生成顺序:供应商原图 → ZT2(AI) → BD1/BD2/BD3(PIL) + BG1(AI)
图片组规则(通途售卖资料)
| 图片组 | 主图 | 额外图 | 适用店铺 |
|---|---|---|---|
| 组1 | BG1(场景图) | BD1, BD2, BD3 | eBay: SL, XEX, YIXIN, HY, ABG, TR |
| 组2 | ZT2(白底) | BD1, BD2, BD3 | Amazon YIXIN, Shopify HY |
| 组3 | ZT2(白底) | BD3, BD1, BD2 | Amazon XEX, Shopify XEX |
- 每组:主图(W) 1张 + 额外图(E) + 详情图(D)
- 每个图片组总数上限 10 张,超出自动截断
- 橱窗图库(A):全部 AI 生成图,上限 10 张
- 供应商原图仅放 ERP imgUrls 和橱窗图(A),不进图片组(L)
属性输出顺序
- Brand / Manufacture(二者一致)
- Type
- Manufacturer Part Number
- OE/OEM Number(从 Reference Numbers 清洗)
- Condition(默认 New)
- Placement on Vehicle
- Colour / Material / Features
- Fitment 1–5(车型兼容)
- Universal Fitment / Vehicle Origin
- Warranty(默认 1 Year)
品牌自动映射
| 产品类型 | Brand / Manufacture |
|---|---|
| 冷却系统 | maxcool auto parts |
| 起动机/发电机 | all in redbox |
| 家居/户外 | all in home box |
| 化工液体 | all in chemi box |
| 其他汽配 | kaka auto parts |
| 无法分类 | Unbranded |
禁止品牌:Bosch / Denso / NGK / Gates / Brembo / Hella / Valeo / Delphi / Aisin / SKF
Fitment 规则
- 格式:
Suitable for Make Model Series Engine Body YearRange - 相同车型连续年份用 en-dash 合并(2013–2020)
- 最多 5 行;超过时压缩为
Suitable for {Make} (Multiple Variants) - 来源优先级:描述 Compatible With → 产品 compatibility → item_specifics → 标题
Placement on Vehicle 允许值
Engine Compartment / Front / Rear / Left / Right / Upper / Lower(多个用逗号分隔)
字段限制
- 属性名 ≤ 65 字符,属性值 ≤ 100 字符
- Unknown 值不输出
- 非英语自动翻译属性名和固定值(DE/FR/IT/ES/PT)
1. 来源与写入
- 导入来源:Excel 导入模板「特性标签」列(原「销售渠道」,兼容旧名)
- 通途写入:
productLabelNames字段,自动调用LabelQuery/createLabel确保标签存在 - 默认标签:所有产品自动带
Listing Forge,特性标签追加在后 - 内存缓存避免重复创建
2. 站点限定规则
特性标签为「XX分销」时,eBay 刊登资料 仅生成对应站点的行,未设置标签则全站点上架。
| 特性标签 | 限定站点 | 站点代码 |
|---|---|---|
| 澳洲分销 | eBay 澳大利亚站 | AU |
| 美国分销 | eBay 美国站(Vehicle Parts 自动走 Motors) | US / MOTORS |
| 英国分销 | eBay 英国站 | UK |
| 欧洲分销 | eBay 德/法/意/西四站 | DE FR IT ES |
| 德国分销 | eBay 德国站 | DE |
| 法国分销 | eBay 法国站 | FR |
| 意大利分销 | eBay 意大利站 | IT |
| 西班牙分销 | eBay 西班牙站 | ES |
| 加拿大分销 | eBay 加拿大站 | CA |
| 未设置 / 空 | 不限制,全站点上架(AU, US, UK, DE, FR, IT, ES, CA) | |
- 多标签:用逗号/顿号分隔,取并集。如「澳洲分销, 美国分销」→ AU + US 两个站点
- 简写兼容:「澳洲」=「澳洲分销」,「美国」=「美国分销」等
- 影响范围:eBay 刊登 Excel(eBay平台资料 + pa sheet);通途产品资料 Excel 标签列同步写入
- 不影响:ERP 商品创建(createProduct)不受限,所有产品照常写入通途
3. 示例
| SKU | 特性标签 | eBay 导出行为 |
|---|---|---|
| 101HD250516S03 | 澳洲分销 | 仅生成 AU 站行 |
| 159MZ250714S07 | 澳洲分销, 美国分销 | 生成 AU + US(MOTORS) 站行 |
| 161NS250822S03 | (空) | 生成全部 8 站行 |
| 165HA230927S01 | 欧洲分销 | 生成 DE + FR + IT + ES 四站行 |
📐 核心定价公式(ebay-ads 标准 v2)
总变动成本(AUD) = 总变动成本(CNY) / 汇率(4.72)
分母 = 1 − 佣金(12%) − 汇损(1.37%) − 退货(3.5%) − 广告(4.5%) − 目标毛利(24%) = 0.5463
建议售价 = ceil(总变动成本_AUD / 0.5463 × 100) / 100
- 佣金 12%:eBay FVF 最终成交费
- 汇损 1.37%:eBay 自动货币转换损耗
- 退货 3.5%:平均退货率预估
- 广告 4.5%:Promoted Listings 广告平均支出
- 目标毛利 24%:默认值,可按品类/库龄/竞争度分级调整(如滞销品降到 15%、爆品维持 24%+)
- 最低售价保护:最终售价 = max(公式计算价, 站点最低售价)
成本数据来源
| 费项 | 来源 | 字段 |
|---|---|---|
| 采购价 | ERP products / inventory | cost_cny / goods_cur_cost |
| 头程运费 | inventory_stocks | first_shipping_fee |
| 头程关税 | inventory_stocks | first_tariff |
| 其他费用 | inventory_stocks | other_fee |
| 产品重量 | Tongtool goodsWeight | weight_g |
| 包装尺寸 | ERP products | package_length/width/height_cm |
尾程运费计算
| 仓库类型 | 物流渠道 | 计算方式 |
|---|---|---|
| HK(国内仓) | SpeedPAK HK→买家 | 按重量/体积重 + 操作费 |
| 海外仓-澳大利亚 | AU国内配送 | 重量段运费表 + handling + unloading |
| 虚拟仓-澳大利亚 | UBI | 按计费重查规则表 |
| 海外仓-美国/英国 | SpeedPAK(近似) | 按目标国费率 |
🏛️ VAT 处理规则(重要)
| 发货方式 | VAT 由谁承担 | cost_ratio取值 | 说明 |
|---|---|---|---|
| 中国直发 → 任何站点 | eBay平台代收 | direct(0.55) | 卖家定价不含VAT,买家结算时平台加税 |
| 海外仓 → UK/EU站点 | 卖家含税定价 | overseas(较低) | 售价必须包含VAT |
| 海外仓 → US/AU/CA | 平台代收/无VAT | overseas(同direct) | 卖家不含VAT |
🏭 仓库 / 物品所在地(Item Location) / ERP仓库映射
| 仓库代码 | 类型 | 物品所在地(eBay) | 对应ERP仓库 | 实际子仓库 |
|---|---|---|---|---|
| HK | 直发仓 | Guangzhou, CN 510000 | HK(国内花都仓库*) | —(SpeedPAK/云途直发) |
| 虚拟仓-澳大利亚 | 虚拟仓 | Sydney NSW, AU 2000 | 虚拟仓-澳大利亚 | HK发货,eBay显示AU地址 |
| 海外仓-澳大利亚 | 海外仓 | New South Wales, AU 2144 | 海外仓-澳大利亚 | 橙联一心-悉尼仓, 璟川(液体)悉尼仓, OC墨尔本仓, 万邑通澳洲 |
| 海外仓-美国 | 海外仓 | South Plainfield NJ, US 08861 | 海外仓-美国 | OC美东新泽西仓, OC美西洛杉矶仓, 递四方美西1仓, 万邑通USKY3 |
| 海外仓-英国 | 海外仓 | Leicester, GB LE19 4DB | 海外仓-英国 | 橙联一心-英国仓, Jason UK仓 |
🚚 物流渠道覆盖
| 物流渠道 | 仓库 | 覆盖站点 | 参与定价 | 运费计算 |
|---|---|---|---|---|
| SpeedPAK(橙联直发) | HK 香港仓 | US, MOTORS, UK, DE, FR, IT, ES, CA, AU | ✅ 是 | 按计费重+操作费+附加费 |
| 海外仓本地配送 | 海外仓-AU/US/UK | AU, US, UK | ✅ 是 | 重量段运费表+handling+unloading |
| 虚拟仓 UBI/中通 | 虚拟仓-澳大利亚 | AU (BG/AG账号) | ✅ 是 | 按重量段单价+操作费 |
| 云途 (YunExpress) | HK 香港仓 | US, UK, DE, FR, IT, ES, CA | 路由备选 | 按计费重+挂号费 |
💱 各站点汇率与成本系数(v2 按仓库区分)
| 站点 | 货币 | 汇率(1目标=?RMB) | cost_ratio(直发) | cost_ratio(海外仓) | VAT税率 | 最低售价 |
|---|---|---|---|---|---|---|
| US / MOTORS | USD | 7.25 | 0.55 | 0.55 | 0% | 4.99 |
| UK | GBP | 9.15 | 0.55 | 0.4573 | 20% | 4.99 |
| AU | AUD | 4.72 | 0.55 | 0.55 | 10% | 7.99 |
| DE | EUR | 7.85 | 0.55 | 0.4643 | 19% | 5.99 |
| FR | EUR | 7.85 | 0.55 | 0.4573 | 20% | 5.99 |
| IT | EUR | 7.85 | 0.55 | 0.4437 | 22% | 5.99 |
| ES | EUR | 7.85 | 0.55 | 0.4504 | 21% | 5.99 |
| CA | CAD | 5.35 | 0.55 | 0.55 | 0% | 6.99 |
直发cost_ratio统一0.55,eBay代收VAT不影响卖家定价。海外仓发UK/EU需含税,系数相应降低。红色数值表示含VAT调整。
📦 SpeedPAK 运费计算规则 ▸
计费重规则
| 条件 | 计费重 |
|---|---|
| 所有边长 < 40cm | 计费重 = 实重 |
| 最长边 ≥ 40cm 且 体积重 ≤ 实重×1.3 | 计费重 = 实重 |
| 最长边 ≥ 40cm 且 体积重 > 实重×1.3 | 计费重 = 实重 + (体积重 − 实重×1.3) ↑取整 |
体积重 = L×W×H / 6000 × 1000 (克)
各站点参数(完整分段)
| 站点 | 重量段(g) | 单价(元/kg) | 操作费(元) | 上限(kg) | 附加 |
|---|---|---|---|---|---|
| US | 1~100 | 138 | 24 | 31.5 | 清关费10.5元/票 |
| 101~200 | 138 | 25 | |||
| 201~450 | 138 | 28 | |||
| 451~31500 | 138 | 39 | |||
| UK | 1~10000 | 90 | 17.6 | 10 | — |
| DE | 1~400 | 127.7 | 18.1 | 30 | — |
| 401~30000 | 112.2 | 24.3 | |||
| FR | 1~500 | 108.0 | 24.0 | 20 | — |
| 501~20000 | 114.5 | 23.0 | |||
| IT | 1~2000 | 108.1 | 26.8 | 2(超重禁刊!) | — |
| ES | 1~20000 | 146.0 | 20.0 | 20 | — |
| CA | 1~30000 | 133.0 | 26.2 | 30 | — |
| AU | 1~22000 | 88.7 | 38.5 | 22 | 实重>3kg二次收费(LWH/4000) |
✈️ 云途 YunExpress 运费规则 ▸
运费(RMB) = 计费重_kg × 单价 + 挂号费
| 站点 | 单价(元/kg) | 挂号费(元) | 上限(kg) |
|---|---|---|---|
| US | 109~115(分段) | 31~56 | 30 |
| UK | 58~62 | 16 | 5 |
| DE | 85 | 25 | 10 |
| FR | 93 | 25 | 5 |
| IT | 70~72 | 25 | 30 |
| ES | 80 | 20 | 5 |
| CA | 65~72(分段) | 21~23 | 30 |
🏬 AU 虚拟仓 (UBI) 运费规则 ▸
运费(RMB) = 计费重_g × 单价(元/g) + 操作费
| 重量段(g) | 单价(元/g) | 操作费(元) |
|---|---|---|
| 0~250 | 0.03762 | 27.45 |
| 250~500 | 0.03877 | 27.45 |
| 500~1000 | 0.04932 | 28.77 |
| 1000~2000 | 0.05026 | 35.43 |
| 2000~3000 | 0.05229 | 38.81 |
| 3000~4000 | 0.05229 | 38.81 |
| 4000~5000 | 0.05241 | 38.81 |
| 5000~7000 | 0.05320 | 38.81 |
| 7000~10000 | 0.05587 | 38.81 |
| 10000~15000 | 0.06057 | 38.81 |
| 15000~22000 | 0.07655 | 38.81 |
超22kg无匹配→返回None(禁刊)
🏠 海外仓运费(头程均摊) ▸
总成本 = 采购价_RMB × 1.035
(国际运费已在入仓时支付,不再精确计算)
📉 扣减规则(半包邮 / 不包邮) ▸
不包邮售价 = 全包邮售价 − 不包邮扣减额
注意:AU 直发有专属扣减表(speedpak_au_direct_deduction.json),非 AU 站点直发不做扣减
AU 海外仓扣减表(完整 0~85kg)
| 重量段(kg) | 半包邮(AUD) | 不包邮(AUD) |
|---|---|---|
| 0~0.5 | 6.0 | 10.0 |
| 0.5~1 | 7.0 | 15.0 |
| 1~2 | 8.0 | 17.0 |
| 2~3 | 9.0 | 19.0 |
| 3~4 | 11.0 | 22.0 |
| 4~5 | 12.0 | 22.86 |
| 5~7 | 13.0 | 27.13 |
| 7~10 | 15.0 | 34.47 |
| 10~15 | 18.0 | 46.42 |
| 15~20 | 23.0 | 64.50 |
| 20~22 | 25.0 | 67.69 |
| 22~25 | 60.0 | 83.0 |
| 25~30 | 62.0 | 88.0 |
| 30~35 | 81.0 | 111.0 |
| 35~40 | 93.0 | 126.0 |
| 40~45 | 97.0 | 134.0 |
| 45~50 | 134.0 | 200.0 |
| 50~60 | 152.0 | 220.0 |
| 60~70 | 156.0 | 230.0 |
| 70~80 | 161.0 | 240.0 |
| 80~85 | 165.0 | 250.0 |
| >85 | 禁止刊登(999) | |
黄色底色为 22kg+ 大件区,扣减值陡增
AU 直发(SpeedPAK)扣减表
| 重量段(g) | 半包邮(AUD) | 不包邮(AUD) |
|---|---|---|
| 0~500 | 5.0 | 10.0 |
| 500~1000 | 6.0 | 14.0 |
| 1000~2000 | 7.0 | 16.0 |
| 2000~3000 | 8.0 | 18.0 |
| 3000~5000 | 10.0 | 22.0 |
| 5000~7000 | 12.0 | 26.0 |
| 7000~10000 | 14.0 | 32.0 |
| 10000~15000 | 17.0 | 42.0 |
| 15000~22000 | 22.0 | 58.0 |
仅 AU 站直发有扣减;其他站点直发不扣减(全包邮)
AU 虚拟仓(UBI)扣减表
| 重量段(g) | 半包邮(AUD) | 状态 |
|---|---|---|
| 0~100 | 2.0 | 确认 |
| 100~500 | 2.0 | 确认 |
| 500~1000 | 5.0 | 确认 |
| 1000~2000 | 7.0 | 确认 |
| 2000~3000 | 9.0 | 待确认 |
| 3000~5000 | 12.0 | 待确认 |
| 5000~10000 | 15.0 | 待确认 |
| 10000~15000 | 18.0 | 待确认 |
| 15000~22000 | 22.0 | 待确认 |
| 无匹配 | 2.0(默认) | — |
📊 完整计算示例(10个场景) ▸
① 计费重: 所有边<40cm → 计费重=300g
② 运费: 201~450g段: 0.3×138+28=69.40 + 清关10.5 = 79.90 RMB
③ 售价: ceil((25+79.90)/0.55/7.25×100)/100 = ceil(2631)/100 = USD 26.31
① 头程: 50×3.5% = 1.75, 总成本=51.75 RMB
② 售价: ceil(51.75/0.55/4.72×100)/100 = AUD 19.94
③ 扣减(1~2kg): 半包邮=19.94−8.0=11.94 | 不包邮=19.94−17.0=2.94
② 运费: 0.5×90+17.6 = 62.60 RMB
③ 售价: cost_ratio=0.55(直发不含税) → ceil((35+62.60)/0.55/9.15×100)/100 = GBP 19.40
买家实际支付: 19.40×1.20 = 23.28 GBP(eBay代加20%VAT)
① 头程: 35×3.5% = 1.225, 总成本=36.225 RMB
② 售价: cost_ratio=0.4573(海外仓含税!) → ceil(36.225/0.4573/9.15×100)/100 = GBP 8.66
此价格已含20%VAT,买家看到即最终价
② 运费: 1~400g段: 0.4×127.7+18.1 = 69.18 RMB
③ 售价: ceil((30+69.18)/0.55/7.85×100)/100 = EUR 22.97
eBay代收19% VAT
① 计费重: 体积重=1500g, 1500/800=1.875 < 2 → 计费重=800g
② 运费: 500~1000g段: 800×0.04932+28.77 = 68.23 RMB
③ 售价: ceil((40+68.23)/0.55/4.72×100)/100 = AUD 41.69
④ 扣减: 半包邮=41.69−2.00=39.69 | 不包邮=41.69−(68.23/4.72)=27.23
② 运费: 1.0×133+26.2 = 159.20 RMB
③ 售价: ceil((45+159.20)/0.55/5.35×100)/100 = CAD 69.40
② 运费: 0.2×108+24 = 45.60 RMB
③ 售价: ceil((10+45.60)/0.55/7.85×100)/100 = EUR 12.88
② 运费: 1.5×108.1+26.8 = 188.95 RMB
③ 售价: ceil((30+188.95)/0.55/7.85×100)/100 = EUR 50.71
② 运费: 0.3×146+20 = 63.80 RMB
③ 售价: ceil((20+63.80)/0.55/7.85×100)/100 = EUR 19.41
🏷️ 分销定价(参考)
⚠️ 重要注意事项
- 定价按实际仓库/站点/账号匹配物流渠道:HK→SpeedPAK,海外仓→本地配送,虚拟仓→UBI/中通(云途仅路由备选)
- IT站点SpeedPAK上限仅2kg,超重禁止刊登
- AU SpeedPAK实重>3kg 需额外二次收费(体积重=LWH/4000)
- US SpeedPAK 每单加清关费 10.5元
- 所有价格向上取整到分(ceil到小数点后2位)
- 直发到UK/EU → eBay代收VAT → 卖家定不含税价(cost_ratio=0.55)
- 海外仓发UK/EU → 卖家含税定价(cost_ratio降低,已含VAT)
- 所有站点有最低售价保护,低于阈值自动上调
🚫 屏蔽模板(Exclusion Templates)
每个站点的直发 listing 会关联屏蔽模板,限制超尺寸/超重包裹:
| 站点 | 屏蔽模板名 |
|---|---|
| AU | 澳大利亚-直发-低于2KG-ALL-单边(不超55CM)/三边超尺寸(不超90CM) 澳大利亚-直发-超2KG-ALL-单边(不超90CM)/三边超尺寸(不超180CM) |
| US/Motors | 美国/Motors-直发-低于2KG-ALL-单边(不超55CM)/三边超尺寸(不超90CM) 美国/Motors-直发-超2KG-ALL-单边(不超90CM)/三边超尺寸(不超180CM) |
| UK | 英国-直发-低于2KG-ALL / 英国-直发-超2KG-ALL(同上尺寸规格) |
| DE/FR/IT/ES | 各站-直发-低于2KG-ALL / 各站-直发-超2KG-ALL(同上尺寸规格) |
| CA | 加拿大-直发-低于2KG-ALL / 加拿大-直发-超2KG-ALL(同上尺寸规格) |
| AU 海外仓 | 澳洲-海外仓-常规 / 澳洲-海外仓-超尺寸屏蔽偏远地区 / 澳洲-海外仓-只发Sydney Metro / 澳洲-海外仓-不发国际(液体/粉末/超长/超重/刀具/枪支/仓库) |
📋 退货策略(Return Policy)
| 模式 | 适用账号 | 退货期 | 退货运费 | 说明 |
|---|---|---|---|---|
| Business Policy | FS, SAT, TO, CL, xd, ZE, AB, XDN | 由 Policy ID 决定 | 由 Policy ID 决定 | SellerProfiles 引用 return_policy_id |
| Inline 模式 | RA, AR, BG, AG, AC, AS, GO, MCN, NXD, NAP, PAD, RPA, NOR | 30天 | 买家承担 | XML 内嵌 Days_30 + Buyer |
📦 包邮类型说明
运费已含在售价中,eBay buyer 看到的是免运费。
海外仓模式(仅 AU)按账号区分三种包邮策略:
| 包邮类型 | 账号 | Rate Table 格式 | 新西兰 |
|---|---|---|---|
| 全包邮 | FS, RA | {band}全包邮-澳洲海外仓 | {band}新西兰全包邮-橙联 |
| 部分包邮 | AR, SAT, TO, CL, xd, BG, AG | {band}部分包邮-澳洲海外仓 | {band}新西兰部分包邮-橙联 |
| 不包邮 | ZE, AB | {band}不包邮-澳洲海外仓 | {band}新西兰不包邮-橙联 |
包邮类型仅影响海外仓 listing 的 Rate Table 和价格字段选择。直发模式下即使 ZE/AB 账号也是全包邮(Free Shipping)。
📏 各站点重量上限
| 站点 | 直发上限 | 海外仓上限 | 超重处理 |
|---|---|---|---|
| AU | 22 kg | 85 kg | 禁刊(运费返回 None) |
| US / Motors | 31.5 kg | — | 禁刊 |
| UK | 10 kg | — | 禁刊 |
| DE | 30 kg | — | 禁刊 |
| FR | 20 kg | — | 禁刊 |
| IT | 2 kg | — | 超重直接禁刊(极低限制!) |
| ES | 20 kg | — | 禁刊 |
| CA | 30 kg | — | 禁刊 |
📋 站点必填 Item Specifics
| 站点 | 必填属性 | 处理方式 | 需删除 |
|---|---|---|---|
| DE | Hersteller (制造商) | 从 Brand/Marke 映射,缺省 Unbranded | MPN, UPC |
| ES | Marca (品牌) | 从 Brand 映射,缺省 Sin marca | MPN, UPC |
| US/Motors | Manufacturer Part Number + UPC | MPN 从 Ref Numbers 取; UPC 缺省 Does Not Apply | UPC 弹出到 ProductListingDetails |
| UK | — | 无特殊 | MPN, UPC |
| FR | — | ⚠ 不自动填法语品牌字段 | MPN, UPC |
| IT | — | ⚠ 不自动填意语品牌字段 | MPN, UPC |
| AU | — | 使用产品自带 category_id | — |
⚠ FR/IT 站若类目要求本地化品牌字段而系统未自动填,可能导致刊登失败。
🔧 其他站点特殊逻辑
- US/Motors 分类:Taxonomy API 可能返回 tree 100 类目 → 自动切 SiteID=100;非 Motors 市场用 tree 100 可能被拒
- US/Motors 重量单位:使用 English (磅/盎司),其余站点使用 Metric (千克/克)
- EU 站点退货:Inline 模式下 ReturnPolicy 不含 RefundOption 字段(避免失败)
- ConditionID:默认 1000 (New),若 eBay 返回 condition 错误 → 重试不带 ConditionID
固定列(16列)
产品ID | 主SKU | 站点 | 建议售价 | 包装制度 | 长 | 宽 | 高 | 较大单位重量 | 较小单位重量 | 第一类目ID | 第二类目ID | 批量销售数 | 物品状态 | 物品状态描述 | UPC/EAN/ISBN
动态列(物品属性对)
- 最少 18 对(36列),动态扩展
- 非英语站点属性名/值翻译为对应语言
重量规则
| 站点 | 包装制度 | 较大单位 | 较小单位 |
|---|---|---|---|
| US / MOTORS | English | lbs(整数部分) | oz(余数) |
| 其他所有 | Metric | kg(整数部分) | g(余数) |
固定默认值
- UPC/EAN/ISBN:
发布Listing时由刊登模板决定 - 批量销售数:留空
- 物品状态:
New
1. 账号总览 — 简码 · 卖家ID · 账户组 · Token状态
| 简码 | eBay 卖家ID | 账户组 | Token状态 | 可上架站点 |
|---|---|---|---|---|
| xd | xdreamauto2000 | SL | ✅ 可用 | AU (SpeedPAK + 海外仓 + 虚拟仓) |
| AB | auto-bugs | SL | ✅ 可用 | AU (SpeedPAK + 海外仓 + 虚拟仓) |
| CL | coolparts4car | SL | ✅ 可用 | AU (SpeedPAK + 海外仓 + 虚拟仓) |
| AR | areyou | YIXIN | ✅ 可用 | AU (SpeedPAK + 海外仓 + 虚拟仓) |
| FS | fship80 | YIXIN | ✅ 可用 | AU (SpeedPAK + 海外仓全包邮 + 虚拟仓全包邮) |
| SAT | supeedmotorauto | YIXIN | ✅ 可用 | AU (SpeedPAK + 海外仓 + 虚拟仓) |
| TO | tbuyop511 | YIXIN | ✅ 可用 | AU (SpeedPAK + 海外仓 + 虚拟仓) |
| ZE | zei9nro | YIXIN | ✅ 可用 | AU (SpeedPAK) |
| RA | racingauto | SL | ⚠️ 需重授权 | AU (SpeedPAK + 海外仓全包邮) |
| AC | autocool20 | SL | ❌ 无Token | US, Motors |
| AS | autosuperman2017 | SL | ❌ 无Token | US, Motors |
| GO | supeedghost | SL | ❌ 无Token | US, Motors |
| MCN | autocool2000 | SL | ❌ 无Token | US, Motors |
| XDN | xdreamauto2020 | SL | ❌ 无Token | CA |
| AG | aussieautogear | TR | ❌ 无Token | AU (海外仓 + 虚拟仓) |
| BG | autobridg-44 | ABG | ❌ 无Token | AU (海外仓 + 虚拟仓) |
| NXD | xdream3000 | YIXIN | ❌ 无Token | UK |
| NAP/NOR | nordautoparts | YIXIN | ❌ 无Token | DE, ES |
| PAD | pieceautodistrict | YIXIN | ❌ 无Token | FR |
| RPA | ricambiproauto | YIXIN | ❌ 无Token | IT |
2. 账号 → 站点映射总表
| 站点 | eBay Marketplace ID | 货币 | 上架账号 | 物流渠道 |
|---|---|---|---|---|
| 🇦🇺 澳大利亚 | EBAY_AU | AUD | xd, AB, CL, AR, FS, SAT, TO, ZE, RA, BG, AG | SpeedPAK / 海外仓 / 虚拟仓(UBI) |
| 🇺🇸 美国 | EBAY_US | USD | AC, AS, GO, MCN | SpeedPAK (HK直发) |
| 🏎️ Motors | EBAY_MOTORS | USD | AC, AS, GO, MCN | SpeedPAK (HK直发) |
| 🇬🇧 英国 | EBAY_GB | GBP | NXD | SpeedPAK (HK直发) |
| 🇩🇪 德国 | EBAY_DE | EUR | NAP | SpeedPAK (HK直发) |
| 🇫🇷 法国 | EBAY_FR | EUR | PAD | SpeedPAK (HK直发) |
| 🇮🇹 意大利 | EBAY_IT | EUR | RPA | SpeedPAK (HK直发) |
| 🇪🇸 西班牙 | EBAY_ES | EUR | NOR | SpeedPAK (HK直发) |
| 🇨🇦 加拿大 | EBAY_CA | CAD | XDN | SpeedPAK (HK直发) |
3. 澳大利亚站 — 三种物流模式详解
澳大利亚站是最复杂的,同一个账号可能走三种不同物流:
| 参与账号 | AR, FS, SAT, TO, ZE, AB, CL, RA, xd |
| 发货仓库 | HK 香港仓 |
| 国内运费模版 | 澳洲-直发-SL/YIXIN |
| 国际运费模版 | 澳洲-直发-SL/YIXIN |
| Rate Table | 无(运费内含在 Shipping Policy 中) |
| 物品所在地 | Guangzhou, CN 510000(国内花都仓库*) |
| 运费计算 | SPEEDPAK_DIRECT(按计费重+操作费+附加费) |
| 全包邮账号 | FS, RA |
| 部分包邮账号 | AR, SAT, TO, CL, xd, BG, AG |
| 发货仓库 | 海外仓-澳大利亚(实际:万邑通/递四方/橙联等) |
| 国内运费模版 | 澳洲海外仓-ALL |
| 国际运费模版 | 按重量段 → {重量}KG新西兰{包邮类型}-橙联 |
| Rate Table | 按重量段自动匹配:{重量}KG{包邮类型}-澳洲海外仓 |
| 物品所在地 | New South Wales, AU 2144(澳洲海外仓地址) |
| 运费计算 | AU_OVERSEAS_WAREHOUSE(重量段运费表+handling+unloading) |
部分包邮 = Rate Table 名含「部分包邮」,国际模版名含「部分包邮」
| 全包邮账号 | FS, RA |
| 部分包邮账号 | AR, SAT, TO, CL, xd, BG, AG |
| UBI/中通专属 | BG, AG(XEX/TR/ABG账户组) |
| 发货仓库 | 虚拟仓-澳大利亚(实际从HK发,eBay显示AU地址) |
| 国内运费模版 | 澳洲虚拟仓-ALL |
| 国际运费模版 | 无 |
| Rate Table | 按重量段自动匹配:{重量}KG{包邮类型}-直发 |
| 物品所在地 | Sydney, AU 2000(虚拟仓地址) |
| 运费计算 | AU_VIRTUAL_WAREHOUSE_DIRECT(UBI/中通渠道运费) |
4. 海外仓 / 虚拟仓 Rate Table 重量段对照
| 全包邮 (FS, RA) | 部分包邮 (其他) | 国际NZ模版 |
|---|---|---|
| 0-0.5KG全包邮-澳洲海外仓 | 0-0.5KG部分包邮-澳洲海外仓 | 0-0.5KG新西兰{类型}-橙联 |
| 0.5-1KG全包邮 | 0.5-1KG部分包邮 | 0.5-1KG新西兰{类型}-橙联 |
| 1-2KG全包邮 | 1-2KG部分包邮 | 1-2KG新西兰{类型}-橙联 |
| 2-3KG全包邮 | 2-3KG部分包邮 | 2-3KG新西兰{类型}-橙联 |
| 3-4KG / 4-5KG | 3-4KG / 4-5KG | 同上 |
| 5-7KG / 7-10KG | 5-7KG / 7-10KG | 同上 |
| 10-15KG / 15-20KG | 10-15KG / 15-20KG | 同上 |
| 20-22KG / 22-25KG | 20-22KG / 22-25KG | 无(仅国内) |
| 25-30 / 30-35 / 35-40 | 25-30 / 30-35 / 35-40 | 无(仅国内) |
| 40-45KG / 50-55KG / 80-85KG | 超大件,仅全包邮账号 | |
| 全包邮 (FS, RA) | 部分包邮 (其他) | UBI/中通 (BG, AG) |
|---|---|---|
| 0-0.5KG全包邮-直发 | 0-0.5KG部分包邮-直发 | 同部分包邮 |
| 0.5-1KG全包邮-直发 | 0.5-1KG部分包邮-直发 | 同部分包邮 |
| 1-2KG / 2-3KG | 1-2KG / 2-3KG | 同上 |
| 3-4KG / 4-5KG | 3-4KG / 4-5KG | 同上 |
| 5-6KG / 6-7KG / 7-8KG | 5-6KG / 6-7KG / 7-8KG | 同上 |
| 8-9 / 9-10 / 10-11 / 11-12 | 同上 | 同上 |
| 12-13 / 13-14 / 14-15 | 同上 | 同上 |
| 15-16 / 16-17 / 17-18 | 同上 | 同上 |
| 18-19KG / 19-20KG | 18-19KG / 19-20KG | 同上 |
5. 非澳站点 — SpeedPAK 直发运费模版
| 站点 | 账号 | 账户组 | 国内运费模版 | 国际运费模版 | Rate Table |
|---|---|---|---|---|---|
| 🇺🇸 美国 | AC, AS, GO, MCN | SL | 美国-直发-SL | 美国-直发-SL | 无 |
| 🏎️ Motors | AC, AS, GO, MCN | SL | Motors-直发-SL | Motors-直发-SL | 无 |
| 🇬🇧 英国 | NXD | YIXIN | 英国-直发-YIXIN | 英国-直发-YIXIN | 无 |
| 🇩🇪 德国 | NAP | YIXIN | 德国-直发-YIXIN | 德国-直发-YIXIN | 无 |
| 🇫🇷 法国 | PAD | YIXIN | 法国-直发-YIXIN | 法国-直发-YIXIN | 无 |
| 🇮🇹 意大利 | RPA | YIXIN | 意大利-直发-YIXIN | 意大利-直发-YIXIN | 无 |
| 🇪🇸 西班牙 | NOR | YIXIN | 西班牙-直发-YIXIN | 西班牙-直发-YIXIN | 无 |
| 🇨🇦 加拿大 | XDN | SL | 加拿大-直发-SL | 加拿大-直发-SL | 无 |
6. eBay Business Policies — 必填策略
每个 eBay Listing (Offer) 必须绑定三个 Business Policy,通过 eBay Account API 自动获取:
| 策略类型 | eBay 字段名 | 作用 | 获取方式 |
|---|---|---|---|
| Fulfillment Policy | fulfillmentPolicyId | 配送方式、处理时间、运费模版 | 通过 Account API 按站点获取默认策略,或按运费模版名称匹配 |
| Return Policy | returnPolicyId | 退货规则(是否接受、退货天数、运费承担) | 通过 Account API 获取默认退货策略 |
| Payment Policy | paymentPolicyId | 付款方式(Managed Payments) | 通过 Account API 获取默认付款策略 |
GET /sell/account/v1/fulfillment_policy) 实时获取并缓存。如果获取失败,需要先在 eBay Seller Hub 中手动创建对应站点的 Business Policy。
7. 上架自检核对清单(13+6项)
| PRE-01 | 账号映射 — 简码→Token账户ID |
| PRE-02 | OAuth Token — 有效且未过期 |
| PRE-03 | 物流路由 — 匹配到有效规则 |
| PRE-04 | Fulfillment Policy — ID 非空 |
| PRE-05 | Return Policy — ID 非空 |
| PRE-06 | Payment Policy — ID 非空 |
| PRE-07 | Rate Table — 海外仓/虚拟仓必须匹配到 |
| PRE-08 | 定价 — 售价 > 0 且 ≥ 最低售价 |
| PRE-09 | eBay 类目 — categoryId 非空 |
| PRE-10 | SKU — 格式合规且非空 |
| PRE-11 | 标题 — 非空且 ≤80字符 |
| PRE-12 | 描述 — 非空 |
| PRE-13 | 图片 — 至少1张有效URL |
| POST-01 | Offer 存在 — offerId 非空 |
| POST-02 | Offer 状态 — status=PUBLISHED, listingId非空 |
| POST-03 | Marketplace — 与目标站点一致 |
| POST-04 | Fulfillment Policy — 与预期ID一致 |
| POST-05 | Return Policy — 与预期ID一致 |
| POST-06 | Payment Policy — 与预期ID一致 |
8. 物流路由选择逻辑
logistics_routing_rules.json (100条规则) 匹配Step 2: 优先级:海外仓 > 虚拟仓 > SpeedPAK直发(如果库存在海外仓则优先海外仓发货)
Step 3: 匹配结果确定:Rate Table 名称 · 国内运费模版 · 国际运费模版 · 运费计算器类型
Step 4: Rate Table 名称 → 在
ebay_rate_tables 表中查找对应 rate_table_idStep 5: 运费模版名称 → 在
ebay_shipping_policies 表中查找对应 fulfillmentPolicyIdStep 6: 组装 Offer Payload → 提交到 eBay Inventory API
9. 上架 API 端点
| 端点 | 功能 | 区别 |
|---|---|---|
POST /api/ebay/direct-publish | 直接上架 | 仅做基础校验,直接调用 eBay API |
POST /api/ebay/validated-publish | 自检上架 | 13项前检 + 上架 + 6项后验 + 自动下架/重试 |
{"run_id": "...", "account_id": "xd", "sites": ["AU"], "dry_run": false}dry_run=true 时仅执行前检,不实际调用 eBay API。
输出格式
Title 规则
- 来源必须是原文数据改写,≤70 字符
- 禁止 Replacement / Aftermarket / Premium 等虚化词
- 必须包含真实参数(车型、年份、引擎代码、尺寸等)
handle 规则
- 全部小写,仅英文数字和短横线
- 由 Title 生成,可缩短但不能丢核心关键词
SEO Description 规则
- 10–20 个英文词,一句话
- 包含:产品类型 + 关键参数 + 适配重点
- 禁止虚化词、主观词、营销词
- 优先级:OEM号/件号 > 核心产品名 > 车型信息 > Fitment > 材质/功能
- 逗号分隔,总长 ≤250 字符
- 禁止:4PCS / 1PC / Set of / for / suitable / compatible / with / premium / high quality / best
| 字段 | 规则 |
|---|---|
| productName | 英文标题 → 翻译成中文 |
| declareCnName | 中文品名(报关用) |
| declareEnName | 英文品名(报关用) |
| productPackingName | 中文配货名称 |
| productPackingEnName | 英文配货名称 |
| categoryCode | 通途分类编码(自动映射或创建) |
| productWeight | 产品净重(g) |
| packageWeight | 包装重量(g) |
| productLength/Width/Height | 产品尺寸(cm) |
| packageLength/Width/Height | 包装尺寸(cm) |
| imgUrls | 供应商图+AI图,上限10张 |
| productFeature | 产品特点:OE号 + 适配描述(不含链接) |
| productLabelNames | 特性标签:Listing Forge + 导入表「特性标签」列值(如"澳洲分销"),限定上架站点 |
| suppliers | 供应商名 + purchaseRemark(采购备注)+ purchaseLink(采购链接,单独写入报价API) |
| 文件路径 | 用途 |
|---|---|
config/sites.json | 站点、汇率、成本系数 |
config/sale_accounts.json | 店铺账号、图片组规则、标题组规则 |
config/sku_category_codes.json | SKU 类目 → 3/4位编码 |
config/brand_codes.json | 品牌 → 2位代码 |
config/tongtool_category_map.json | 通途ERP分类映射 |
config/speedpak_freight_rules.json | 橙联SpeedPAK运费规则 |
config/yunexpress_direct_rates_v1.json | 云途直发运费(路由参考) |
config/au_virtual_warehouse_pricing_rules.json | UBI虚拟仓运费 |
config/au_overseas_warehouse_weight_deduction.json | 海外仓重量段扣减 |
config/logistics_routing_rules_v2026_01_20.json | 物流路由、渠道、仓库映射 |
config/prompts/title_rules.txt | 多语言标题规则 |
config/prompts/title_group_v2.txt | 标题词组2差异化规则 |
config/prompts/item_specifics_rules.md | Item Specifics 生成规则 |
config/prompts/amazon_bullet_points.txt | 亮点描述规则 |
config/prompts/shopify_seo.txt | Shopify SEO三段式规则 |
config/prompts/search_keywords_rules.txt | Amazon搜索关键字规则 |
| 任务 | 优先模型 | 回退模型 | 超时 |
|---|---|---|---|
| 英文标题 / 描述 / 属性 | DeepSeek (deepseek-chat) | 百炼 qwen3.5-plus | 65s → 15s |
| Amazon 亮点 / 搜索关键字 | DeepSeek (deepseek-chat) | 百炼 qwen3.5-plus | 65s → 15s |
| Shopify SEO 三段式 | DeepSeek (deepseek-chat) | 百炼 qwen3.5-plus | 65s → 15s |
| 多语言标题翻译 (DE/FR/ES/IT/PT) | DeepSeek (deepseek-chat) | 百炼 qwen-plus | 30s → 8s |
| 多语言描述翻译 | DeepSeek (deepseek-chat) | 百炼 qwen-plus | 30s → 8s |
| Item Specifics 属性浓缩 | DeepSeek (deepseek-chat) | 百炼 qwen-plus | 30s → 8s |
| 平台分类推理 | DeepSeek (deepseek-chat) | 百炼 qwen3.5-plus | 65s → 15s |
并行机制:每个 SKU 内部,英文文案生成完成后,5 种语言的标题翻译并行(5线程),5 种语言的描述翻译并行(5线程),两组之间也并行。
属性浓缩:属性名 ≤50字符,属性值 ≤100字符,超限用 AI 语义浓缩(非截断),结果缓存避免重复调用。
| 任务 | 模型 | 备注 |
|---|---|---|
| 水印/LOGO检测 | 百炼 qwen-vl-plus | 返回 CLEAN / DIRTY,超时 60s |
| 图片质量审查 | 百炼 qwen-vl-plus | 对比供应商原图与 AI 生成图 |
| 图片类型 | 生成方式 | 模型调用链 |
|---|---|---|
| ZT2 / ZT3 白底主图 | rembg 抠图 + 水印清理 |
① rembg CPU 抠图(~1s,免费) ② Qwen-VL 检测水印 ③ 有水印 → Gemini 3 Pro/Flash (Google 原生SDK) 去水印 ④ 仍有 → 即梦 I2I (jimeng_t2i_v40) 去水印 ⑤ 仍有 → TextIn I2I (wan2.6-image) 去水印 ⑥ 全失败 → 保留当前版本 |
| BG1 场景版式图 | AI 场景 + PIL 合成 |
① WanX T2I 生成 16:9 场景背景(~4s) ② 失败 → 即梦 T2I(~8s) ③ PIL 合成:上方场景 + 下方产品 + 右下角局部缩略图 |
| BD1 / BD2 角度图 | PIL 本地旋转 | ZT2 → PIL 旋转 ±15°(<0.1s,免费) |
| BD3 / BD4 角度图 | PIL 本地旋转 | ZT3 → PIL 旋转 ±15°(<0.1s,免费) |
| XQ1 局部放大图 | PIL 中心裁剪 | ZT2 → PIL 中心 55% 裁剪放大(<0.1s,免费) |
去水印链路:Gemini Pro/Flash(原生SDK) → 即梦 I2I → TextIn(wan2.6-image),逐级回退。
瓶颈:ZT2/ZT3 水印清理是最耗时环节(平均 ~42s/SKU),BG1 场景生成很快(~4s)但与 ZT2 并行不影响总耗时。
| 模型 | 供应商 | 类型 | 用途 |
|---|---|---|---|
| deepseek-chat | DeepSeek | 文本 LLM | 所有文本生成(主力模型) |
| qwen3.5-plus | 阿里云百炼 | 文本 LLM | 英文文案回退 |
| qwen-plus | 阿里云百炼 | 文本 LLM | 翻译回退 |
| qwen-vl-plus | 阿里云百炼 | 视觉 LLM | 水印检测、图片质量审查 |
| gemini-3-pro-image / flash-image | Google (原生SDK → OpenRouter回退) | 图片编辑 | ZT2/ZT3 水印清理首选(Pro→Flash→OpenRouter) |
| jimeng_t2i_v40 | 火山方舟 (即梦AI) | 文生图/图生图 | ZT2/ZT3 水印清理备选、BG1场景回退 |
| wan2.6-image (TextIn) | 阿里云百炼 WanX | 图生图 | ZT2/ZT3 水印清理末选(Gemini+即梦均失败后) |
| wan2.6-t2i | 阿里云百炼 WanX | 文生图 | BG1 场景背景生成 |
| rembg | 本地 CPU | 抠图 | ZT2/ZT3 背景去除(免费) |
| 阶段 | 平均耗时 | 说明 |
|---|---|---|
| AI 文案(英文+多语言) | ~31s | DeepSeek 为主,含 5 语言并行翻译 |
| AI 图片(8张) | ~86s | 瓶颈在 ZT2/ZT3 水印清理 |
| 定价计算 | ~44s | 8 站点逐站计算 |
| API 商品创建 | ~51s | 受通途 API 限流影响 |
| API 售卖资料 | ~38s | 含图片 URL 上传 |
| 单 SKU 合计 | ~250s | 约 4 分 10 秒(核心处理时间) |
对比人工:同样工作(修图、写文案、算价格、填 ERP)人工约 30-60 分钟/SKU。
• 旧:price_adjustment / warehouse_switch 任务既当指挥官,又当会计(自己写 SQL 查成本/重量),账算错。
• 新:任务只当指挥官;算账统一交给底层「报价机」(
pricing_facade) 和「路由机」(routing_facade)。完整文档见
docs/PRICING_ADJ_ARCHITECTURE.md(单一权威源)
🛡️ 四道门防护(所有 new_price > 0 的任务都过门)
| 顺序 | 门名 | 实现位置 | 触发条件 | 命中动作 |
|---|---|---|---|---|
| 1 | 仓库锁 | pricing_facade._select_best_warehouse_row | 海外 listing 优先非国内仓行(即使零库存) | 防止跌入国内成本,输入端稳定 |
| 2 | 保底熔断 | bottom_price.get_sku_bottom_price + adj_auto_executor 预检 | new_price < bottom × DEFAULT_SAFETY_MARGIN | 转 pending_review,记 skipped(不算 failed) |
| 3 | 反震荡锁 | price_checker._anti_oscillation_check | 24h 内连续相反方向调价 | 跳过本次入队 |
| 4 | 方向一致性 | price_checker._already_in_queue + _pending_warehouse_switch_blocks_price | 同 SKU 已有切仓任务时拒绝再入调价 | 由切仓任务统一处理(含价) |
🔁 通途 auto-relist 应对(双层)
第一层 — 增量同步内置去重继承(
listing_sync.sync_to_db)每次 :06-:14 同步后,对同 (sku, account, site) 内:
• 新行 warehouse=NULL 且旧行非空 → 继承 12 字段(warehouse / handling_time / rate_table_local / rate_table_international / shipping_policy / item_location / item_postal_code / country / shipping_service / intl_shipping_service / shipping_profile_id / pricing_mode)
• 新 listing_id 更大 → 旧行标记为 ended
第二层 — 每天 01:40 兜底清理(
cleanup_ended_listings)• 删除已有 active 兄弟的 ended 行
• 删除超过 30 天且无 active 兄弟的 ended 行
• 调用
purge_ended_listings 拒绝队列中针对 ended 的任务(精确路径用 listing_id,模糊路径全 ended 才拒)
🆔 listing_id 贯通链路
price_checker.run 读 listing → _submit(row, listing_id=...)→
submit_price_adjustment(row, listing_id=...) 写入 adjustment_queue.listing_id→
adj_auto_executor 兄弟去重按 (sku, account, type, listing_id) 粒度(不再误杀同 SKU 多变体)→ 执行前
_is_listing_ended(item) 精确拦截 ended(节省 API 调用)→ 成功后
_update_binding_record 回写 sku_warehouse_bindings.listing_id(唯一权威写入方)
📂 文件依赖关系
scheduler.py(中央调度,HOURLY_TASKS / DAILY_TASKS)
├── ebay_listing_sync (×6/天 :06-:14) → listing_sync.sync_to_db
├── ebay_listing_full_sync (周一 05:00) → 同上 full=True
├── ended_cleanup (01:40) → listing_sync.cleanup_ended_listings
├── inventory_check (:15-:20) → inventory_monitor.check_all_bindings
├── price_check (:17-:22) ★ → price_checker.run
├── listing_auto_approve (:15-:16) → adjustment_review.auto_approve
└── adj_auto_execute (:05-:55) → adj_auto_executor.run
price_checker.py
├── pricing_facade.get_target_price / get_sku_full_profile
├── routing_facade.suggest_route
├── bottom_price.get_sku_bottom_price
└── adjustment_review.AdjustmentReviewManager
├── submit_price_adjustment(row, listing_id=...) ★
├── submit_adjustments(switches)
└── _upgrade_row_to_warehouse_switch(id, sw) ← 升级路径也带 listing_id ★
inventory_monitor.py
├── routing_facade.suggest_route
└── adjustment_review.submit_adjustments ← 仅入队,不写 binding ★
adj_auto_executor.py
├── adjustment_review.purge_ended_listings (前/后各一次)
├── pre_sync_listings (按账号增量)
├── classify_priority (按 site 币种换算 get_exchange_rate) ★
├── bottom_price.get_sku_bottom_price (含价 warehouse_switch 也走) ★
├── _dedup_sibling_queue (按 listing_id 粒度) ★
└── listing_adjuster.revise_item / batch_feed
└── 成功后 → _update_binding_record → sku_warehouse_bindings
listing_sync.py
├── (步骤1) 通途去重:继承 12 字段(同 site 内)★
├── (步骤2) 标记旧 active 为 ended(同 site 内)★
└── cleanup_ended_listings → adjustment_review.purge_ended_listings
📊 监控指标(建议看板)
| 指标 | 预期值 | 异常阈值 | 定位日志 |
|---|---|---|---|
| 通途去重继承条数 / 同步 | 视周期波动 | > 1000/次 | [%s] 通途去重 |
| cleanup_ended_listings.expired_cleaned | < 200/天 | > 1000/天 | scheduler 日志 |
| bottom_fuse skipped | < 50/天 | > 200/天 → 检查保底表 | [保底熔断-Trading] |
| 切仓阻塞调价命中 | < 100/天 | > 500/天 → 检查切仓积压 | [价格巡检] 已有切仓任务 |
| adjustment_queue pending | < 5000 | > 20000 → 加速模式 | UI 待调整面板 |
📝 v2.1 重构清单(2026-04-23)
15 项修改(8 文件 +244 / -85 行,Sonnet review 11/11 通过)
- Wave 1 — P0 阻塞修复:
schema.py补 listing_id 列 ·listing_heartbeat修 NameError ·inventory_monitor移除提前写 binding · ON CONFLICT 仅在新值非空时更新 listing_id - Wave 2 — 通途去重继承扩展:
listing_sync继承 12 字段 · 去重加 site 维度 · cleanup_ended_listings 返回值改正 - Wave 3 — 四道门贯通 + listing_id 精确化:
adjustment_review全链路写 listing_id ·price_checker调价/切仓互斥 ·price_checkerORDER BY 避免抽错 ·adj_auto_executorclassify_priority 按 site 币种 · bottom_fuse 覆盖含价 warehouse_switch · bottom_fuse 命中算 skipped · 兄弟去重按 listing_id ·schedulerprice_check 后移到 :17-:22
🏪 账号分类:一般账号 vs 虚拟仓账号
| 类型 | 账号 | 简码 | 海外仓有货 Location | 海外仓无货 Location | 直发物流 |
|---|---|---|---|---|---|
| 一般账号 | fship80 | FS | New South Wales | Guangzhou (CN) | SpeedPAK |
| areyou | AR | New South Wales | Guangzhou (CN) | SpeedPAK | |
| supeedmotorauto | SAT | New South Wales | Guangzhou (CN) | SpeedPAK | |
| tbuyop511 | TO | New South Wales | Guangzhou (CN) | SpeedPAK | |
| zei9nro | ZE | New South Wales | Guangzhou (CN) | SpeedPAK | |
| auto-bugs | AB | New South Wales | Guangzhou (CN) | SpeedPAK | |
| coolparts4car | CL | New South Wales | Guangzhou (CN) | SpeedPAK | |
| racingauto | RA | New South Wales | Guangzhou (CN) | SpeedPAK | |
| xdreamauto2000 | XD | New South Wales | Guangzhou (CN) | SpeedPAK | |
| 虚拟仓账号 | autobridg-44 | BG | New South Wales | Sydney (AU) | UBI/中通 |
| aussieautogear | AG | New South Wales | Sydney (AU) | UBI/中通 |
虚拟仓账号断货后 Location 显示 Sydney(澳洲地址),实际从花都仓经 UBI/中通发出;一般账号断货后 Location 变为 Guangzhou(暴露国内发货)。
📌 Item Location 与仓库类型对应(判断依据)
| Item Location | 仓库类型 | 实际发货 | 物流渠道 |
|---|---|---|---|
| New South Wales | 海外仓 | 澳洲本地仓库 | AU Domestic Standard |
| Sydney | 虚拟仓 | 花都仓 → UBI/中通 → AU | UBI / 中通(Sydney, AU 2000) |
| Guangzhou | 国内直发 | 花都仓 → SpeedPAK → AU | SpeedPAK |
⚠ 判断仓库类型看 Item Location,不看账号名称。虚拟仓账号海外仓有货时行为与一般账号完全一致,Location = New South Wales。
🔀 切仓触发条件
| 方向 | 触发条件 | Location 变化 |
|---|---|---|
| 切国内仓 | 该 SKU 在所有澳洲海外仓 ERP 库存 = 0 | NSW → Sydney(虚拟仓) 或 Guangzhou(一般) |
| 切海外仓 | 该 SKU 在某澳洲海外仓有库存 > 0 | Sydney/Guangzhou → New South Wales |
| 海外仓 A→B(同类型):只更新内部绑定,不修改 eBay listing | ||
不触发切仓:含仿牌/粉末/颗粒/液体/侵权标签 | 超重超尺寸无法 SpeedPAK 直发 | 虚拟仓断货且 UBI/中通不可达(库存设0,保持在售)
🗂️ 仓库路由优先级
1. 海外仓有库存 → New South Wales(handling=1或3天)
2. 海外仓全无货 → Guangzhou(花都仓有货=2天,无货=平均到货天数)
1. 海外仓有库存 → New South Wales(handling=1或3天)
2. UBI/中通可达 → Sydney(花都仓有货=5天,无货=平均到货+5天)
3. 均不可达 → 库存设0,保持在售
⏱️ Handling Time 动态计算规则
| 仓库类型 | Location | 库存状态 | Handling Time | 说明 |
|---|---|---|---|---|
| 海外仓(橙联/OC) | New South Wales | 有货 | 1 天 | 橙联悉尼仓、OC墨尔本仓 |
| 海外仓(万邑通/璟川) | New South Wales | 有货 | 3 天 | 万邑通、璟川 |
| 国内直发 | Guangzhou (CN) | 花都仓有货 | 1 天 | SpeedPAK 直发(当天备货发出) |
| 国内直发 | Guangzhou (CN) | 花都仓无货 | 平均到货天数 | 兜底 7~9 天;超40天数量改0 |
| 虚拟仓 | Sydney (AU) | 花都仓有货 | 5 天 | UBI/中通基础时效 |
| 虚拟仓 | Sydney (AU) | 花都仓无货 | 平均到货天数 + 5 天 | 等货到花都仓 + UBI基础时效 |
1. 优先:通途采购入库历史均值 avg(入库日 − 采购日 + 2天客户下单差)
2. 其次:供应商交货周期
3. 兜底:生产 2天 + 国内物流(广东省内 3天 / 省外 5天)+ 仓库处理 2天 = 7~9 天(虚拟仓 +5天 = 12~14 天)
eBay 合法值:1/2/3/4/5/6/7/10/15/20/30/40 天,向上贴合;超过 40 天数量改 0
⚙️ 切仓执行逻辑(跨类型才调用 eBay API)
cross_type = old_type ≠ new_type → 才执行 ReviseFixedPriceItem(两步操作)
Step 1: 切换 Shipping Policy(handling time 由 Policy 控制)
Step 2: 修改 Country / Location / Price
| 切仓方向 | 账号类型 | Item Location | Country | Handling Time | 物流 |
|---|---|---|---|---|---|
| 海外仓 → 国内 | 虚拟仓 BG/AG | NSW → Sydney | AU 不变 | 有货 5天 / 无货 到货+5天 | UBI/中通 |
| 海外仓 → 国内 | 一般账号 | NSW → Guangzhou | AU → CN | 有货 2天 / 无货 平均到货天数 | SpeedPAK |
| 国内 → 海外仓 | 所有账号 | Sydney/GZ → New South Wales | CN → AU | 1天(橙联/OC)或 3天(万邑通/璟川) | AU本地 |
📊 自动执行优先级(每小时 :05–:55)
| 优先级 | 触发条件 | 执行方式 |
|---|---|---|
| P0 立即止血 | 利润率 < 0%(亏损)或 < 3%(超薄利) | 立即自动改价,不等人工 |
| P1 高优先 | 切仓任务 / 价格差距 > 30% | 自动审批,优先执行 |
| P2 常规 | 价格差距 15%~30% / 其他调价 | 自动审批,排队执行 |
| P3 人工 | dimension_review(缺尺寸数据) | 保留人工审核,补数据后执行 |
2小时无人工干预自动批准 | 同 SKU 有切仓任务时,纯改价必须合并进切仓行(禁止单独仅改价)
🔀 方向判定规则(捆绑 + 多属性通用)
| 场景 | 子 SKU 库存分布 | 方向 | 说明 |
|---|---|---|---|
| 全子海外 | 所有子 SKU 仅海外仓有库存 | overseas | 最优情况,海外仓发货 |
| 部分子海外 | 部分子海外有库存,部分国内 | overseas | 有海外库存即走海外 |
| 任一子海外 | 至少一个子 SKU 海外仓有库存 | overseas | 同上 |
| 混合库存 | 子 SKU 同时在海外+国内有库存 | overseas | 海外有就算海外 |
| 纯国内 | 所有子 SKU 仅国内仓有库存,无海外 | domestic | 无海外库存,只能国内直发 |
| 全无库存 | 所有子 SKU 均无库存 | domestic | 兜底直发 |
📋 捆绑商品(Bundle)
- 数据来源:通途 ERP productType=2 的捆绑商品,缓存于 bundle_cache.json
- 结构:父 SKU → 多个子 SKU(各有数量),如 A-2X3 = A 的 2 件 × 3 组
- 库存判断:分别查询每个子 SKU 在海外仓和国内仓的可用库存
- 拆分建议:子 SKU 有库存但无独立在线刊登 → 建议拆分上架
- 排除仓库:花都仓(Pro虚拟澳洲仓) 不参与库存判断;海外仓退货仓已作为 AU 海外仓启用
🔗 多属性商品(Variation)
- 判定:父 SKU 自身无库存,但存在 SKU-N 格式子 SKU 有库存
- 库存判断:同捆绑商品规则,按子 SKU 各仓库存判定方向
- 定价:汇总子 SKU 成本和重量,调用 calculate_listing_price 计算建议价
- 仓库选择:海外方向 → 海外仓-澳大利亚,国内方向 → HK
- 拆分建议:子 SKU 有库存但无独立刊登 → 建议拆分
A. Listing Forge 内置调度器(每小时循环)
| 时间窗口 | 任务 | API / 数据源 | 频率 | 失败方案 | 备注 |
|---|---|---|---|---|---|
| :00–:05 | 订单桥接 | 通途 orderQuery | 每小时 | 下一小时自动重试 | 最高优先级 |
| :05–:15 | 库存全量同步 | 通途 stocksQuery | 12:00/18:00 | 下次窗口补拉 | 影响切仓判断 |
| :06–:14 | ERP 商品增量同步 | 通途 goodsQuery | 01:00/05:00 | 下次窗口补拉 | 夜间窗口 |
| :06–:14 | 售卖资料增量同步 | 通途 listingStoreStatistics | 02:00/06:00 | 下次窗口补拉 | 夜间窗口 传 updatedDateBegin 真增量 |
| :06–:14 | eBay Listing 增量同步 | eBay GetSellerList | 3次/天 3/11/19h | 下次窗口补拉 全量周一05:00兜底 | 20账号·增量模式 数据共享给Ads |
| :06–:25 | 通途全量同步 | 通途 (全部) | 每周一+五 04:00 | 手动触发全量 | 耗时较长 ERP + 售卖资料全量 |
| :10–:12 | Listing 心跳巡检 | 本地 DB | 每2小时 | 自动重试 | 74000+ listing 扫描 |
| :15–:20 | 库存监控 → 切仓发现 | 本地 DB | 每小时 | 下一小时重扫 | 结果写入 adjustment_queue |
| :15–:16 | Listing 自动审核 | 本地 DB | 每小时 | — | pending_review超2h自动放行 |
| :17–:22 | 🔍 价格巡检(X 光机) | 本地 DB | 每小时 | 下一小时重扫 | 偏差>10% 入队 已后移避开同步窗口 含调价/切仓互斥 |
| 01:40 (UTC) | 已下架 Listing 清理 | 本地 DB | 每天 1次 | 下一天重试 | 清理 ended 孤儿+拒绝队列任务 cleanup_ended_listings |
| :05–:55 | ⚡ 自动调整执行(切仓+调价) | 纯改价→Feed API 切仓→Trading API | 每小时 常规 8轮×40条 加速 15轮×80条 | API限额→暂停 失败率>50%→暂停 下一小时自动恢复 | P0/P1/P2 全自动审批+执行 纯改价走Feed(不耗Trading配额) 兄弟Listing自动同步+去重 积压>500条自动加速 P3 等人工审核 |
| :50–:55 | 自动上架 | Inventory API (REST) | 每小时 | 通途失败→日志 eBay失败→重试 | 含图片URL上传 |
| :55–:58 | 自动绑定 | 本地 DB | 每小时 | — | |
| :55–:59 | 自动补货 (3件虚拟库存) | eBay Trading API | 10:00/22:00 | 下次窗口重试 | 虚拟仓零库存SKU |
| :55–:59 | 供应商同步 | 通途 API | 周六 03:00 | 手动触发 | |
| :00–:05 | 📊 每日综合日报 | 本地 DB | 每天 16:00 | — | 库存/订单/切仓/改价/ 备份/心跳/API预算 合并推送 |
API 预算分配(每日)
| API | 日限额 | 用途 | 消耗估算 |
|---|---|---|---|
| Trading API | ~5,000/天 | listing_sync (3次) + 切仓执行 + 自检 | 同步~1,200 + 切仓~2,800 |
| Feed API (REST) | 150 批次/天 | 纯改价批量提交(每批可含数百条) | ~10 批/天(释放Trading额度) |
| Inventory API (REST) | 2,000,000/天 | auto_publish 上架 | 极低消耗 |
| Marketing API (REST) | 独立额度 | Ads 系统(独立 cron) | 不走 LF |
Listing Forge 独立线程
| 任务 | 频率 | API | 失败方案 | 备注 |
|---|---|---|---|---|
| eBay Token 保活 | 每 30 分钟 | eBay OAuth | Ads Token刷新兜底 | 本地缓存校验 |
| eBay 模版同步 | 每 7 天 | eBay Sell Account | 手动触发 | |
| adjustment_queue 备份 | 每 5 分钟 | 本地 DB → JSON | — | 内置,无需cron |
B. Listing Forge 外部定时任务(cron)
| UTC 时间 | 任务 | 频率 | 失败方案 | 备注 |
|---|---|---|---|---|
| :10 (3/7/11/15/19/23) | LF→Ads 数据桥接 | 6次/天 | Ads 回退到 eBay API 抓取 | 在 eBay 同步后 +4min 导出 74000+ listing JSON |
| 0:00 / 12:00 | 切仓审核报告 → 企微 | 每天 2次 | 手动查DB | 推送亏损/偏差统计 |
| 3:30/9:30/15:30/21:30 | 墨文档质检 → 企微 | 每天 4次 | 手动运行 mowendang_audit.py | 检查近24h生成任务 |
| 18:00 | 数据备份 | 每天 | 手动 backup.sh | |
| 18:05 | Git 自动备份 | 每天 | 手动 push | |
| 23:50 | 版本日志生成 | 每天 | — | |
| 周一 05:00 | eBay 全量同步 | 每周 | 手动 sync_ebay_complete.sh full | 确保数据完整性 |
C. Ads 广告系统 (ads.slcoolco.net)
| UTC 时间 | 任务 | 频率 | API / 数据源 | 失败方案 | 备注 |
|---|---|---|---|---|---|
| 每30分钟 | Token 刷新 | 48次/天 | eBay OAuth | @reboot自动补刷 | 统一入口,LF共用 |
| 每小时整点 | 分时出价调度器 | 24次/天 | eBay Ads API | 下一小时重试 | PLP/PLG 出价调整 |
| 每3小时 | 风险监控 | 8次/天 | eBay Ads API | 推送企微告警 | 监控广告花费异常 |
| 每6小时 | eBay 数据同步 | 4次/天 | 订单+广告+报告 | 3次自动重试 | active_listings 已改为读 LF 桥接 节省 ~600 API调用/天 |
| 05:30 | 成本数据桥接 (LF→Ads) | 每天 | LF PostgreSQL erp_products 表 | 手动运行 enrich_cost_from_lf.py | 31000+ SKU 成本同步 覆盖率 92% |
| 7:00 / 19:00 | 策略自动执行 | 每天 2次 | eBay Ads API | 推送企微报告 | 出价+预算优化 |
| 10:00 | 日报 → 企微 | 每天 | 本地数据汇总 | — | 20:00 AEST 推送 |
| 03:00 | 通途重量同步 | 每天 | LF PostgreSQL | 手动运行 | 更新体积重数据 |
| 每2小时 | Ads 数据备份 | 12次/天 | 本地 | — | |
| 周日 02:00 | 出价学习器 | 每周 | 本地分析 | 手动触发 | 学习历史出价效果 |
| 周五 04:00 | 周报生成 | 每周 | 本地汇总 | — | |
| 周一 05:00 | 广告审查报告 | 每周 | Ads API | — | |
| 每月1日 20:00 | 月报生成 | 每月 | 本地汇总 | — |
D. CB Sourcing 选品系统 (sourcing.slcoolco.net)
| UTC 时间 | 任务 | 频率 | 数据源 | 失败方案 | 备注 |
|---|---|---|---|---|---|
| 每10分钟 | Supervisor 守护 | 144次/天 | 本地进程管理 | 自动重启任务 | 监控爬虫+推送队列 |
| 事件触发 | 1688 商品采集 | 按需 | 1688 API/爬虫 | 进队列等待重试 | 价格/重量/尺寸抓取 |
| 事件触发 | Fitment 匹配 | 按需 | 车型数据库 | 标记待处理 | OEM→车型适配 |
| 事件触发 | 推送到 LF | 按需 | LF API | 标记推送失败重试 | 含采购价/重量/尺寸 |
E. 系统间数据共享
LF ebay_listing_sync (:06) →
live_listings 表 (74000+ 条)→ export_listings_for_ads.py (:10) → JSON 文件 → Ads raw/ 目录
→ Ads pre_execution_fetch 检测桥接 (<4h) → 跳过 GetSellerList
→ 如桥接过期 → 自动回退到 eBay API 直接抓取
ERP 成本数据(LF → Ads):
enrich_cost_from_lf.py (每天 05:30) → 从 LF PostgreSQL
erp_products 表拉取→ 更新 Ads 的
sku_weight_map.json(31000+ SKU,覆盖率 92%)选品数据(Sourcing → LF):
CB Sourcing 通过 LF API 推送产品(含 OEM、采购价、重量、尺寸、Fitment)
→ LF 自动生成 SKU + 文案 + 图片 + 定价 + 同步通途
F. API 额度预算(每日)
| 调用方 | 日调用量 | API | 说明 |
|---|---|---|---|
| LF listing_sync | ~1200 次 | eBay GetSellerList | 6次×20账号 |
| LF adj_auto_execute | ~960 次 | eBay ReviseItem | 最多120条/h × 8h |
| Ads 订单+广告 | ~800 次 | eBay Orders/Ads | 4次×20账号 |
| 已用桥接替代 → 节省 | |||
| 总计 | ~2960 / 5000 | 安全余量 40% |
限流防护 & 失败恢复策略
- 通途 API:全部串行执行(QPS≤1),夜间 6 个独立窗口间隔 1 小时,避免 524/526 错误
- eBay Trading API:adj_auto_executor 内置限额检测,触发后暂停当轮并推送企微,下一小时自动续
- eBay Active Listings:LF 统一抓取 → 导出 JSON → Ads 消费(不再重复调 API)
- Token 过期:Ads refresh_tokens.py 每 30 分钟刷新(统一入口),LF 内置 keepalive 做本地校验
- 数据库连接:所有 DB 操作在 try/except 中,失败不阻塞主流程,记录 sync_logs
- 网络中断:cron 任务自带重试逻辑(max 3 次),supervisor 自动拉起崩溃进程
每次 CB Sourcing 推送或 Web 上传 Excel,系统自动执行"门禁检测 → 自动修复 → 重新检测 → 标记状态"全流程,无需手动触发。
▌ 触发条件(自动,无需手动)
| 触发方式 | 入口 | 说明 |
|---|---|---|
| CB Sourcing 推送 | POST /api/sourcing-import | 每次选品推送自动执行 |
| Web UI 上传 Excel | POST /api/run(创建模式) | 每次上传自动执行 |
| 续跑/重跑任务 | app.py create 续跑 | 每次续跑自动执行 |
▌ 执行流程
定价前先扫描 weight_g=0 的 SKU,从数据库三级查补重量,补完立即重算定价
对所有必要字段逐一打分:error(阻断)/ warn(提示)
按优先级顺序执行各修复项,修完后重新门禁,直到通过或达到轮数上限
全部通过 → auto_approved(可自动上架);仍有 error → pending_review(等人工)
▌ 必要字段检测标准
| 字段 | 检测项 | 级别 | 自动修复? |
|---|---|---|---|
| 重量 weight_g | ≤ 0 或缺失 | error | ✅ 三级查补(ERP→库存→OE模糊) |
| 成本 purchase_cost_rmb | ≤ 0 或缺失 | error | ❌ 需人工填写 |
| 尺寸 L/W/H cm | 任一 ≤ 0 | warn | ✅ 同重量查补,顺带回填 |
| 标题 title_en | 为空 | error | ✅ LLM 文案重试(最多1次) |
| 描述 description | 为空 / < 200字符 | error / warn | ✅ LLM 文案重试 |
| 类目 category_code | 无效 / 动态分配编码 | error | ✅ AI 类目重推 |
| 定价 price_map | 无可达站点 | error | ✅ 补重后重算(依赖重量修复) |
| AI图片 | < 3 张成功 | error | ✅ 多余供应商图重试AI |
| 占位图 | 含 source=placeholder | error + 阻断 | ❌ 禁止自动上架,需人工替换 |
| ERP同步 | 商品资料/售卖资料失败 | error | ✅ 指数退避重试 |
▌ 图片生成降级策略
▌ 重量三级查补策略
| 优先级 | 数据源 | 匹配方式 | 同时补充 |
|---|---|---|---|
| 1 | erp_products 表 | SKU 精确匹配 | length/width/height_cm |
| 2 | inventory_stocks 表 | goods_sku 精确匹配 | — |
| 3 | erp_products 表 | OE 号模糊匹配(LIKE) | — |
| 三级均无数据 → 标记 pending_review,等人工填写 | |||
▌ 最终状态说明
| 状态 | 含义 | 后续动作 |
|---|---|---|
| auto_approved | 门禁全通过,所有必要字段齐全 | 可直接触发自动上架 |
| pending_review | 仍有 error 字段未修复(重量/成本/占位图等) | 在任务管理 → 待审核 中人工补充后放行 |