# 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_suggestion（AI建议记录表）

```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 批量操作统一入口

所有批量操作统一在 **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 批量操作类型定义

```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批量操作接管逻辑*
