- 删除无用的文件和错误日志 - 创建统一的 imports 模块集中管理依赖 - 重构组件使用新的 imports 方式 - 修复文档路径大小写问题 - 优化类型定义和接口导出 - 更新依赖版本 - 改进错误处理和API配置 - 统一组件导出方式
38 KiB
38 KiB
19 广告系统业务闭环 v1.0
本文档包含广告系统的完整设计:维度体系、数据库结构、后端服务、前端组件、数据源抽象、订阅等级、AI权限、交叉学习架构
1️⃣ 广告系统概述
1.1 系统定位
广告系统是业务核心页,直接影响利润放大。系统需要:
- 管理多平台广告(Amazon/TikTok/Shopee/eBay等)
- 提供AI驱动的优化建议
- 支持人工与AI协作决策
- 记录运营经验实现跨平台学习
1.2 核心理念
| 理念 | 说明 |
|---|---|
| AI建议一直有 | 不管什么订阅等级,AI建议永不中断 |
| AI执行看等级 | 能不能自动执行,看用户付费多少 |
| 数据分层索引 | AI处理能力有限,数据要分层索引/模型化 |
| 跨平台学习 | 通用指标交叉学习,平台专用指标独立学习 |
2️⃣ 广告维度体系(四层结构)
2.1 维度层级图
┌─────────────────────────────────────────────────────────┐
│ 📊 最终结果层:实际消耗 / 实际营收 / 净收益 / ROI │
└─────────────────────────────────────────────────────────┘
↑
┌─────────────────────────────────────────────────────────┐
│ 1️⃣ 广告计划维度(Campaign Level) │
│ 预算/消耗/收入/ROI/ROAS/订单数/开始时间 │
└─────────────────────────────────────────────────────────┘
↑
┌─────────────────────────────────────────────────────────┐
│ 2️⃣ 商品维度(Product Level)← 你刚补充的 │
│ 商品图片/名称/状态/消耗/订单数/收入/ROI │
└─────────────────────────────────────────────────────────┘
↑
┌─────────────────────────────────────────────────────────┐
│ 3️⃣ 素材维度(Creative Level) │
│ 创意ID/视频指标/CTR/CVR/完播率 │
└─────────────────────────────────────────────────────────┘
↑
┌─────────────────────────────────────────────────────────┐
│ 4️⃣ 人工操作维度(Human Operation Level) │
│ 运营经验/干预成功率/响应时间/操作记录 │
└─────────────────────────────────────────────────────────┘
2.2 第一层:广告计划维度(Campaign)
| 字段 | 类型 | 说明 |
|---|---|---|
| campaignId | string | 广告计划唯一ID |
| campaignName | string | 广告计划名称 |
| status | enum | ACTIVE/PAUSED/ENDED/DRAFTED |
| roasBid | decimal | ROAS出价(目标ROAS) |
| targetRoi | decimal | 目标ROI |
| budget | decimal | 预算 |
| dailyBudget | decimal | 日预算 |
| netSpend | decimal | 净花费 |
| totalSpend | decimal | 总花费 |
| totalRevenue | decimal | 总收入 |
| totalOrders | integer | 总订单数 |
| avgOrderCost | decimal | 平均订单成本 = 净花费/订单数 |
| roi | decimal | ROI = 总收入/总花费 |
| startDate | date | 开始时间 |
| endDate | date | 结束时间 |
| platform | enum | AMAZON/TIKTOK/SHOPEE/EBUY等 |
| shopId | string | 店铺ID |
| advertiserName | string | 广告主名称 |
2.3 第二层:商品维度(Product)
| 字段 | 类型 | 说明 |
|---|---|---|
| productId | string | 商品ID |
| productName | string | 商品名称 |
| productImage | string | 商品图片URL |
| campaignId | string | 所属广告计划ID |
| seriesName | string | 推广系列名称 |
| status | enum | ACTIVE/PAUSED |
| spend | decimal | 该商品消耗金额 |
| orders | integer | 该商品订单数 |
| avgOrderCost | decimal | 平均订单成本 |
| revenue | decimal | 该商品收入 |
| roi | decimal | 该商品ROI |
| shopName | string | 店铺名称 |
| advertiserName | string | 广告主名称 |
2.4 第三层:素材维度(Creative)
| 字段 | 类型 | 说明 |
|---|---|---|
| creativeId | string | 创意ID |
| seriesId | string | 推广系列ID |
| seriesName | string | 推广系列名称 |
| productId | string | 商品ID |
| statDate | date | 统计日期 |
| spend | decimal | 消耗金额 |
| orderCost | decimal | 单订单成本 |
| revenue | decimal | 总收入 |
| roi | decimal | 投资回报率 |
| currency | enum | USD/CNY/EUR等 |
| orders | integer | 订单数 |
| productCtr | decimal | 商品点击率 = clicks/impressions |
| productClicks | integer | 商品点击数 |
| productImpressions | integer | 商品展示数 |
| adCtr | decimal | 广告点击率 |
| adCvr | decimal | 广告转化率 |
| videoWatch2s | decimal | 2秒视频观看率(TikTok) |
| videoWatch6s | decimal | 6秒视频观看率(TikTok) |
| videoWatch25 | decimal | 25%视频观看率 |
| videoWatch50 | decimal | 50%视频观看率 |
| videoWatch75 | decimal | 75%视频观看率 |
| videoWatch100 | decimal | 100%视频观看率 |
| creativeStatus | enum | 投放中/暂停/结束 |
| shopName | string | 店铺名称 |
| advertiserName | string | 广告主名称 |
2.5 第四层:人工操作维度(Human Operation)
| 字段 | 类型 | 说明 |
|---|---|---|
| operatorId | string | 操作人ID |
| operatorName | string | 操作人名称 |
| operateTime | datetime | 操作时间 |
| operateType | enum | 启动/暂停/调预算/调出价/换素材/审核通过/审核拒绝等 |
| targetType | enum | 广告计划/商品/素材 |
| targetId | string | 操作对象ID |
| beforeValue | json | 操作前的值 |
| afterValue | json | 操作后的值 |
| reason | string | 操作原因 |
| expectedEffect | string | 预期效果 |
| actualEffect | json | 实际效果(事后回填) |
| success | boolean | 是否成功(事后评估) |
操作类型枚举:
| 类型 | 说明 |
|---|---|
| RESUME | 启动广告 |
| PAUSE | 暂停广告 |
| ADJUST_BUDGET | 调整预算 |
| ADJUST_BID | 调整出价 |
| CHANGE_CREATIVE | 更换素材 |
| APPROVE | 审核通过 |
| REJECT | 审核拒绝 |
| CHANGE_SCHEDULE | 修改投放时间 |
| ADD_KEYWORDS | 添加关键词 |
| REMOVE_KEYWORDS | 删除关键词 |
3️⃣ 数据库设计(cf_ad_* 表结构)
3.1 表清单
| 表名 | 说明 |
|---|---|
| cf_ad_campaign | 广告计划表 |
| cf_ad_product | 广告商品表 |
| cf_ad_creative | 广告素材表 |
| cf_ad_human_operation | 人工操作记录表 |
| cf_ad_platform_metrics | 平台原始指标表(每日) |
| cf_ad_ai_suggestion | AI建议记录表 |
3.2 cf_ad_campaign(广告计划表)
CREATE TABLE cf_ad_campaign (
id VARCHAR(36) PRIMARY KEY,
tenant_id VARCHAR(36) NOT NULL COMMENT '租户ID',
shop_id VARCHAR(36) NOT NULL COMMENT '店铺ID',
campaign_id VARCHAR(64) NOT NULL COMMENT '平台广告计划ID',
campaign_name VARCHAR(256) NOT NULL COMMENT '广告计划名称',
platform VARCHAR(32) NOT NULL COMMENT '平台:AMAZON/TIKTOK/SHOPEE等',
status ENUM('DRAFTED','ACTIVE','PAUSED','ENDED') DEFAULT 'DRAFTED',
budget DECIMAL(12,2) DEFAULT 0 COMMENT '总预算',
daily_budget DECIMAL(12,2) DEFAULT 0 COMMENT '日预算',
roas_bid DECIMAL(10,4) DEFAULT 0 COMMENT 'ROAS出价',
target_roi DECIMAL(10,4) DEFAULT 0 COMMENT '目标ROI',
net_spend DECIMAL(12,2) DEFAULT 0 COMMENT '净花费',
total_spend DECIMAL(12,2) DEFAULT 0 COMMENT '总花费',
total_revenue DECIMAL(12,2) DEFAULT 0 COMMENT '总收入',
total_orders INT DEFAULT 0 COMMENT '总订单数',
avg_order_cost DECIMAL(10,2) DEFAULT 0 COMMENT '平均订单成本',
roi DECIMAL(10,4) DEFAULT 0 COMMENT 'ROI',
start_date DATE COMMENT '开始时间',
end_date DATE COMMENT '结束时间',
advertiser_name VARCHAR(128) COMMENT '广告主名称',
ai_confidence DECIMAL(5,4) DEFAULT 1.0 COMMENT 'AI信心指数',
last_optimized_at DATETIME COMMENT '最后优化时间',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_tenant_campaign (tenant_id, campaign_id, platform),
INDEX idx_tenant_shop (tenant_id, shop_id),
INDEX idx_platform_status (platform, status)
) COMMENT='广告计划表';
3.3 cf_ad_product(广告商品表)
CREATE TABLE cf_ad_product (
id VARCHAR(36) PRIMARY KEY,
tenant_id VARCHAR(36) NOT NULL,
shop_id VARCHAR(36) NOT NULL,
campaign_id VARCHAR(36) NOT NULL COMMENT '关联广告计划',
product_id VARCHAR(64) NOT NULL COMMENT '商品ID',
product_name VARCHAR(256) COMMENT '商品名称',
product_image VARCHAR(512) COMMENT '商品图片',
series_name VARCHAR(128) COMMENT '推广系列名称',
status ENUM('ACTIVE','PAUSED') DEFAULT 'ACTIVE',
spend DECIMAL(12,2) DEFAULT 0 COMMENT '消耗',
orders INT DEFAULT 0 COMMENT '订单数',
avg_order_cost DECIMAL(10,2) DEFAULT 0 COMMENT '平均订单成本',
revenue DECIMAL(12,2) DEFAULT 0 COMMENT '收入',
roi DECIMAL(10,4) DEFAULT 0 COMMENT 'ROI',
shop_name VARCHAR(128) COMMENT '店铺名称',
advertiser_name VARCHAR(128) COMMENT '广告主名称',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_campaign_product (campaign_id, product_id),
INDEX idx_tenant_shop (tenant_id, shop_id)
) COMMENT='广告商品表';
3.4 cf_ad_creative(广告素材表)
CREATE TABLE cf_ad_creative (
id VARCHAR(36) PRIMARY KEY,
tenant_id VARCHAR(36) NOT NULL,
campaign_id VARCHAR(36) NOT NULL,
product_id VARCHAR(36) NOT NULL,
creative_id VARCHAR(64) NOT NULL COMMENT '平台素材ID',
series_id VARCHAR(64) COMMENT '推广系列ID',
series_name VARCHAR(128) COMMENT '推广系列名称',
creative_url VARCHAR(512) COMMENT '素材URL',
creative_type ENUM('IMAGE','VIDEO') DEFAULT 'IMAGE',
status ENUM('RUNNING','PAUSED','ENDED') DEFAULT 'RUNNING',
spend DECIMAL(12,2) DEFAULT 0,
revenue DECIMAL(12,2) DEFAULT 0,
roi DECIMAL(10,4) DEFAULT 0,
currency VARCHAR(8) DEFAULT 'USD',
orders INT DEFAULT 0,
product_ctr DECIMAL(8,4) DEFAULT 0 COMMENT '商品点击率',
product_clicks INT DEFAULT 0,
product_impressions INT DEFAULT 0,
ad_ctr DECIMAL(8,4) DEFAULT 0,
ad_cvr DECIMAL(8,4) DEFAULT 0,
video_watch_2s DECIMAL(8,4) DEFAULT 0 COMMENT '2秒观看率',
video_watch_6s DECIMAL(8,4) DEFAULT 0,
video_watch_25 DECIMAL(8,4) DEFAULT 0,
video_watch_50 DECIMAL(8,4) DEFAULT 0,
video_watch_75 DECIMAL(8,4) DEFAULT 0,
video_watch_100 DECIMAL(8,4) DEFAULT 0,
shop_name VARCHAR(128),
advertiser_name VARCHAR(128),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_campaign_creative (campaign_id, creative_id),
INDEX idx_product (product_id)
) COMMENT='广告素材表';
3.5 cf_ad_human_operation(人工操作记录表)
CREATE TABLE cf_ad_human_operation (
id VARCHAR(36) PRIMARY KEY,
tenant_id VARCHAR(36) NOT NULL,
operator_id VARCHAR(36) NOT NULL,
operator_name VARCHAR(64) NOT NULL,
operate_time DATETIME NOT NULL,
operate_type ENUM('RESUME','PAUSE','ADJUST_BUDGET','ADJUST_BID','CHANGE_CREATIVE',
'APPROVE','REJECT','CHANGE_SCHEDULE','ADD_KEYWORDS','REMOVE_KEYWORDS') NOT NULL,
target_type ENUM('CAMPAIGN','PRODUCT','CREATIVE') NOT NULL,
target_id VARCHAR(36) NOT NULL,
before_value JSON COMMENT '操作前值',
after_value JSON COMMENT '操作后值',
reason TEXT COMMENT '操作原因',
expected_effect TEXT COMMENT '预期效果',
actual_effect JSON COMMENT '实际效果',
success BOOLEAN COMMENT '是否成功',
evaluated_at DATETIME COMMENT '评估时间',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_tenant_operator (tenant_id, operator_id),
INDEX idx_target (target_type, target_id),
INDEX idx_operate_time (operate_time)
) COMMENT='人工操作记录表';
3.6 cf_ad_ai_suggestion(AI建议记录表)
CREATE TABLE cf_ad_ai_suggestion (
id VARCHAR(36) PRIMARY KEY,
tenant_id VARCHAR(36) NOT NULL,
shop_id VARCHAR(36) NOT NULL,
campaign_id VARCHAR(36),
product_id VARCHAR(36),
creative_id VARCHAR(36),
suggestion_type ENUM('RESUME','PAUSE','ADJUST_BUDGET','ADJUST_BID',
'CHANGE_CREATIVE','CREATE','DELETE') NOT NULL,
target_type ENUM('CAMPAIGN','PRODUCT','CREATIVE') NOT NULL,
target_id VARCHAR(36) NOT NULL,
current_value JSON NOT NULL COMMENT '当前值',
suggested_value JSON NOT NULL COMMENT '建议值',
confidence DECIMAL(5,4) NOT NULL COMMENT '置信度 0-1',
risk_level ENUM('LOW','MEDIUM','HIGH','CRITICAL') DEFAULT 'LOW',
estimated_impact JSON COMMENT '预估影响',
reason TEXT COMMENT 'AI推理原因',
status ENUM('PENDING','APPROVED','REJECTED','EXECUTED','EXPIRED') DEFAULT 'PENDING',
required_action ENUM('AUTO_EXECUTE','PENDING_REVIEW','AUTO_REJECT') DEFAULT 'PENDING_REVIEW',
reviewed_by VARCHAR(36),
reviewed_at DATETIME,
executed_at DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_tenant_campaign (tenant_id, campaign_id),
INDEX idx_status (status),
INDEX idx_required_action (required_action)
) COMMENT='AI建议记录表';
4️⃣ 后端API结构
4.1 Controller层
server/src/api/controllers/
├── AdController.ts # 广告计划CRUD
├── AdProductController.ts # 广告商品CRUD
├── AdCreativeController.ts # 广告素材CRUD
├── AdOperationController.ts # 人工操作记录
└── AdAnalyticsController.ts # 数据分析
4.2 Service层
server/src/services/
├── AdCampaignService.ts # 广告计划服务
├── AdProductService.ts # 广告商品服务
├── AdCreativeService.ts # 广告素材服务
├── AdHumanOperationService.ts # 人工操作服务
├── AdAnalyticsService.ts # 数据分析服务
└── AdAIRecommendationService.ts # AI建议服务
4.3 核心API接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/ad/campaigns | 获取广告计划列表 |
| POST | /api/v1/ad/campaigns | 创建广告计划 |
| GET | /api/v1/ad/campaigns/:id | 获取广告计划详情 |
| PUT | /api/v1/ad/campaigns/:id | 更新广告计划 |
| PUT | /api/v1/ad/campaigns/:id/status | 更新广告状态 |
| POST | /api/v1/ad/campaigns/:id/resume | 启动广告 |
| POST | /api/v1/ad/campaigns/:id/pause | 暂停广告 |
| GET | /api/v1/ad/campaigns/:id/products | 获取广告商品列表 |
| GET | /api/v1/ad/campaigns/:id/analytics | 获取广告分析数据 |
| GET | /api/v1/ad/ai-suggestions | 获取AI建议列表 |
| POST | /api/v1/ad/ai-suggestions/:id/approve | 审批AI建议 |
| POST | /api/v1/ad/ai-suggestions/:id/reject | 拒绝AI建议 |
| GET | /api/v1/ad/operations | 获取操作记录 |
| POST | /api/v1/ad/operations | 记录人工操作 |
4.4 Service接口定义
// AdCampaignService.ts
export class AdCampaignService {
// 基础CRUD
static async createCampaign(params: CreateCampaignParams): Promise<AdCampaign>;
static async getCampaignById(id: string): Promise<AdCampaign>;
static async updateCampaign(id: string, updates: Partial<AdCampaign>): Promise<AdCampaign>;
static async deleteCampaign(id: string): Promise<void>;
// 状态操作
static async resumeCampaign(id: string, userId: string): Promise<AdCampaign>;
static async pauseCampaign(id: string, userId: string): Promise<AdCampaign>;
// 查询
static async listCampaigns(tenantId: string, shopId: string, filters?: CampaignFilters): Promise<AdCampaign[]>;
static async getCampaignAnalytics(id: string, dateRange: DateRange): Promise<CampaignAnalytics>;
// AI相关
static async getAISuggestions(campaignId: string): Promise<AISuggestion[]>;
static async applyAISuggestion(suggestionId: string, approved: boolean, userId: string): Promise<void>;
}
5️⃣ 前端组件结构
5.1 页面结构
dashboard/src/pages/Ad/
├── index.tsx # 广告主页
├── CampaignList.tsx # 广告计划列表
├── CampaignDetail.tsx # 广告计划详情
├── ProductList.tsx # 广告商品列表
├── CreativeList.tsx # 广告素材列表
├── AIOptimization/ # AI优化模块
│ ├── index.tsx # AI优化主页
│ ├── SuggestionList.tsx # 建议列表
│ └── SuggestionDetail.tsx # 建议详情
├── Analytics/ # 数据分析模块
│ ├── index.tsx # 分析主页
│ ├── PerformanceChart.tsx # 效果图表
│ └── TrendAnalysis.tsx # 趋势分析
└── OperationLog/ # 操作记录模块
└── index.tsx # 操作日志
5.2 DataSource抽象层
// dashboard/src/services/adDataSource.ts
// ==================== 类型定义 ====================
export interface AdCampaign {
id: string;
campaignName: string;
platform: Platform;
status: CampaignStatus;
budget: number;
spend: number;
revenue: number;
roi: number;
// ... 其他字段
}
export interface AdProduct {
id: string;
productId: string;
productName: string;
productImage: string;
campaignId: string;
status: ProductStatus;
spend: number;
orders: number;
revenue: number;
roi: number;
}
export interface AdCreative {
id: string;
creativeId: string;
productId: string;
creativeUrl: string;
creativeType: 'IMAGE' | 'VIDEO';
status: CreativeStatus;
spend: number;
orders: number;
roi: number;
videoMetrics?: VideoMetrics;
}
export interface AISuggestion {
id: string;
suggestionType: SuggestionType;
targetType: 'CAMPAIGN' | 'PRODUCT' | 'CREATIVE';
targetId: string;
currentValue: any;
suggestedValue: any;
confidence: number;
riskLevel: RiskLevel;
status: SuggestionStatus;
}
// ==================== DataSource接口 ====================
export interface IAdDataSource {
// 广告计划
fetchCampaigns(params?: CampaignQueryParams): Promise<AdCampaign[]>;
fetchCampaignById(id: string): Promise<AdCampaign>;
createCampaign(data: CreateCampaignData): Promise<AdCampaign>;
updateCampaign(id: string, data: UpdateCampaignData): Promise<AdCampaign>;
resumeCampaign(id: string): Promise<AdCampaign>;
pauseCampaign(id: string): Promise<AdCampaign>;
// 广告商品
fetchProductsByCampaign(campaignId: string): Promise<AdProduct[]>;
// 广告素材
fetchCreativesByProduct(productId: string): Promise<AdCreative[]>;
// AI建议
fetchAISuggestions(campaignId?: string): Promise<AISuggestion[]>;
approveSuggestion(id: string): Promise<AISuggestion>;
rejectSuggestion(id: string): Promise<AISuggestion>;
// 分析数据
fetchCampaignAnalytics(campaignId: string, dateRange: DateRange): Promise<CampaignAnalytics>;
// 操作记录
fetchOperations(params?: OperationQueryParams): Promise<OperationRecord[]>;
recordOperation(data: OperationRecordData): Promise<OperationRecord>;
}
6️⃣ 订阅等级与AI权限映射
6.1 订阅等级定义
| 等级 | 说明 | 典型用户 |
|---|---|---|
| FREE | 免费版 | 个人卖家/试用用户 |
| BASIC | 基础版 | 小型卖家 |
| PROFESSIONAL | 专业版 | 中型卖家 |
| ENTERPRISE | 企业版 | 大型卖家/代理商 |
6.2 AI权限映射
| 功能 | FREE | BASIC | PROFESSIONAL | ENTERPRISE |
|---|---|---|---|---|
| AI建议 | ✅ 始终有 | ✅ 始终有 | ✅ 始终有 | ✅ 始终有 |
| 广告计划创建 | 人工 | 人工 | AI辅助 | AI自动 |
| 广告启动/暂停 | 人工 | 人工+低风险AI | AI中风险 | AI高风险 |
| 预算调整 | 人工 | ≤1000自动 | ≤10000自动 | 无限制 |
| 素材更换 | 人工 | 人工 | AI辅助 | AI自动 |
| 数据分析深度 | 基础 | 进阶 | 高级 | 全部 |
| 跨平台学习 | ❌ | ❌ | ✅ | ✅ |
| 自定义阈值 | ❌ | ❌ | ✅ | ✅ |
6.3 阈值配置示例
const AI_PERMISSION_CONFIG = {
FREE: {
autoExecuteConfidence: 1.0, // 必须100%置信度(实际上不可能)
maxAutoBudget: 0,
allowedRiskLevels: [],
requireHumanApproval: true,
},
BASIC: {
autoExecuteConfidence: 0.95,
maxAutoBudget: 1000,
allowedRiskLevels: ['LOW'],
requireHumanApproval: true,
},
PROFESSIONAL: {
autoExecuteConfidence: 0.80,
maxAutoBudget: 10000,
allowedRiskLevels: ['LOW', 'MEDIUM'],
requireHumanApproval: false,
},
ENTERPRISE: {
autoExecuteConfidence: 0.55,
maxAutoBudget: Infinity,
allowedRiskLevels: ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'],
requireHumanApproval: false,
},
};
7️⃣ 交叉学习架构
7.1 设计原则
| 原则 | 说明 |
|---|---|
| 通用指标交叉学习 | spend/revenue/orders/roi/ctr/cvr 所有平台通用 |
| 平台专用指标独立学习 | video_watch_*/acos等只在对应平台学习 |
| 分层模型架构 | 通用层 → 平台专用层 |
7.2 交叉学习架构图
┌─────────────────────────────────────────────────────────────┐
│ 数据输入层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Amazon │ │ TikTok │ │ Shopee │ │ eBay │ │
│ │ 数据 │ │ 数据 │ │ 数据 │ │ 数据 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼───────────┼───────────┼───────────┼────────────────┘
↓ ↓ ↓ ↓
┌─────────────────────────────────────────────────────────────┐
│ 指标提取层 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 通用指标提取 │ │
│ │ spend, revenue, orders, roi, ctr, cvr │ │
│ │ → 进入跨平台学习池 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Amazon专用 │ │ TikTok专用 │ │ Shopee专用 │ │
│ │ ACoS指标 │ │ 视频指标 │ │ 平台互动指标 │ │
│ │ → 独立学习 │ │ → 独立学习 │ │ → 独立学习 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 模型训练层 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 跨平台通用模型 │ │
│ │ 学到:预算分配原则/出价策略/效果预测 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Amazon模型 │ │ TikTok模型 │ │ Shopee模型 │ │
│ │ ACoS优化 │ │ 视频优化 │ │ 互动优化 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 建议输出层 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 通用建议:预算怎么分/要不要暂停/要不要加投 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │Amazon建议 │ │TikTok建议 │ │Shopee建议 │ │
│ │ 降低ACoS │ │ 优化视频开头 │ │ 提高互动率 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
7.3 维度索引/模型
| 索引/模型 | 说明 | AI调用场景 |
|---|---|---|
| campaign_aggregation | 广告计划聚合统计 | 需要计划级汇总时 |
| product_ranking | 商品效果排序 | 需要商品级排名时 |
| creative_scoring | 素材效能评分 | 需要素材对比时 |
| human_experience | 运营经验提取 | 需要学习人工策略时 |
| time_series_trend | 时间序列趋势 | 需要看周期性规律时 |
8️⃣ 决策流程与人工介入点
8.1 完整业务流程
┌─────────────────────────────────────────────────────────────┐
│ 1️⃣ 创建产品(本地库) │
│ 人工/系统创建 → 本地产品表 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2️⃣ 复制产品 │
│ 手动触发 或 广告需要时自动触发 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3️⃣ 一对多刊登 │
│ 单平台×多产品 / 多平台×多产品 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 4️⃣ AI换图 │
│ 自动生成5倍主图+详情图 → 人工确认 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 5️⃣ 创建广告计划 │
│ 人工确认预算/关键词 → PENDING_REVIEW(预算>10000) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 6️⃣ 广告启停 │
│ AI监控数据 → 给出建议 → 人工确认/执行 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 7️⃣ 人工操作记录 │
│ 记录操作 → 评估效果 → 学习经验 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 📊 最终结果:实际消耗 / 实际营收 / ROI │
└─────────────────────────────────────────────────────────────┘
8.2 人工介入点汇总
| 阶段 | 介入条件 | 介入原因 |
|---|---|---|
| 产品复制 | 无API平台 | AI无法自动操作 |
| AI换图 | 生成完成 | 确认图片质量 |
| 创建广告 | 预算>10000 | 金额大需确认 |
| 广告启停 | 置信度55-80% | AI拿不准 |
| 广告重建 | 始终 | 新决策需确认 |
| 素材更换 | 始终 | 人工确认素材 |
| 批量操作 | 看订阅等级 | AI可能接管 |
8.3 AI批量操作接管逻辑
8.3.1 批量操作AI接管原则
| 操作类型 | AI可接管 | 条件 |
|---|---|---|
| 修改价格 | ✅ | 订阅等级 ≥ BASIC + 置信度 ≥ 阈值 |
| 修改库存 | ✅ | 订阅等级 ≥ BASIC + 置信度 ≥ 阈值 |
| 修改标题 | ✅ | 订阅等级 ≥ PROFESSIONAL + AI生成 |
| 修改类目 | ❌ | 始终人工(涉及分类逻辑) |
| 修改包装重量/尺寸 | ✅ | 订阅等级 ≥ BASIC |
| 修改是否到货付款 | ❌ | 始终人工(涉及风控) |
| 修改Seller SKU | ❌ | 始终人工(涉及映射) |
| 批量上架 | ✅ | 订阅等级 ≥ PROFESSIONAL + AI分析通过 |
| 批量下架 | ✅ | 订阅等级 ≥ PROFESSIONAL + AI分析通过 |
8.3.2 批量操作AI流程
用户发起批量操作
↓
┌─────────────────────────────────────┐
│ 判断:订阅等级 ≥ BASIC? │
├──────────────┬──────────────────────┤
│ 是 │ 否 │
↓ ↓
AI分析数据 人工执行
+ 生成建议 (无AI介入)
↓
┌─────────────────────────────────────┐
│ 判断:置信度 ≥ 阈值? │
├──────────────┬──────────────────────┤
│ 是 │ 否 │
↓ ↓
AI自动执行 人工确认
+ 记录经验 + 记录经验
↓
AI学习这次操作
8.3.3 批量操作统一入口
所有批量操作统一在 OperationAgent(AI运营中心) 执行:
pages/OperationAgent/
├── components/
│ ├── ProductBatch/
│ │ ├── BatchEditModal.tsx # 批量编辑(价格/库存/标题等)
│ │ ├── BatchListingModal.tsx # 批量上架
│ │ └── BatchDelistModal.tsx # 批量下架
│ ├── AdBatch/
│ │ ├── AdCreateModal.tsx # 新建广告
│ │ ├── AdBatchResume.tsx # 批量启动
│ │ └── AdBatchPause.tsx # 批量暂停
│ ├── AISuggestionList.tsx # AI建议
│ └── HumanOperationLog.tsx # 人工操作记录
产品页面只保留:列表查看 + 详情查看,禁止放置任何操作功能
8.3.4 批量操作类型定义
enum BatchOperationType {
// 产品批量操作
BATCH_EDIT_PRICE = 'BATCH_EDIT_PRICE', // 批量修改价格
BATCH_EDIT_INVENTORY = 'BATCH_EDIT_INVENTORY', // 批量修改库存
BATCH_EDIT_TITLE = 'BATCH_EDIT_TITLE', // 批量修改标题
BATCH_EDIT_CATEGORY = 'BATCH_EDIT_CATEGORY', // 批量修改类目
BATCH_EDIT_PACKAGE_WEIGHT = 'BATCH_EDIT_PACKAGE_WEIGHT', // 批量修改包装重量
BATCH_EDIT_PACKAGE_SIZE = 'BATCH_EDIT_PACKAGE_SIZE', // 批量修改包装尺寸
BATCH_EDIT_COD = 'BATCH_EDIT_COD', // 批量修改到货付款
BATCH_EDIT_SELLER_SKU = 'BATCH_EDIT_SELLER_SKU', // 批量修改Seller SKU
BATCH_LISTING = 'BATCH_LISTING', // 批量上架
BATCH_DELIST = 'BATCH_DELIST', // 批量下架
// 广告批量操作
BATCH_AD_CREATE = 'BATCH_AD_CREATE', // 批量创建广告
BATCH_AD_RESUME = 'BATCH_AD_RESUME', // 批量启动广告
BATCH_AD_PAUSE = 'BATCH_AD_PAUSE', // 批量暂停广告
BATCH_AD_ADJUST_BUDGET = 'BATCH_AD_ADJUST_BUDGET', // 批量调整预算
BATCH_AD_CHANGE_CREATIVE = 'BATCH_AD_CHANGE_CREATIVE', // 批量更换素材
}
8.4 AI建议 → 人工确认流程
AI分析数据
↓
┌─────────────────────────────────────┐
│ 置信度 ≥ 阈值(按订阅等级)? │
├──────────────┬──────────────────────┤
│ 是 │ 否 │
↓ ↓
AI自动执行 推送给用户
(按订阅等级) 人工确认
↓
┌──────┴──────┐
✅ 确认 ❌ 拒绝
↓ ↓
执行 记录拒绝
9️⃣ 术语表
| 术语 | 说明 |
|---|---|
| ROAS | Return on Ad Spend,广告支出回报率 = 收入/支出 |
| ACoS | Advertising Cost of Sales,广告成本销售比 = 支出/收入 |
| CTR | Click Through Rate,点击率 = 点击/展示 |
| CVR | Conversion Rate,转化率 = 转化/点击 |
| CPA | Cost Per Acquisition,获客成本 = 支出/订单 |
| CPC | Cost Per Click,点击成本 = 支出/点击 |
| SKU | Stock Keeping Unit,库存单位 |
| Creative | 广告素材(图片/视频) |
| Campaign | 广告计划/广告系列 |
🔟 参考文档
| 文档 | 路径 |
|---|---|
| AI自动化域 | docs/loops/10_AI_Automation.md |
| 广告页面前端 | docs/archive/01_Architecture/frontend/03_Ad.md |
| 后端广告服务 | docs/archive/00_Business/tasks/backend/08_advertisement.md |
| 统一类型管理 | docs/archive/01_Architecture/16_Unified_Type_Management.md |
本文档为 v1.1 版本,包含AI批量操作接管逻辑