Files
makemd/docs/LOOPS/19_Ad_System.md
wurenzhi 22308fe042 refactor: 重构项目结构并优化代码
- 删除无用的文件和错误日志
- 创建统一的 imports 模块集中管理依赖
- 重构组件使用新的 imports 方式
- 修复文档路径大小写问题
- 优化类型定义和接口导出
- 更新依赖版本
- 改进错误处理和API配置
- 统一组件导出方式
2026-03-27 16:56:06 +08:00

839 lines
38 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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广告计划表
```sql
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广告商品表
```sql
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广告素材表
```sql
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人工操作记录表
```sql
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_suggestionAI建议记录表
```sql
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接口定义
```typescript
// 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抽象层
```typescript
// 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 阈值配置示例
```typescript
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 批量操作统一入口
所有批量操作统一在 **OperationAgentAI运营中心** 执行:
```
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 批量操作类型定义
```typescript
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批量操作接管逻辑*