# 🌐 Runtime_Architecture.md（运行态架构 · 可落地版）

---

# 🎯 一、设计目标

> 将系统从“接口驱动”升级为“事件驱动 + 自动运行系统”，实现业务闭环自动推进、可计费、可监控。

---

# 🧠 二、核心设计原则

### 1️⃣ 事件驱动（Event Driven）

所有业务流转必须通过事件触发，而不是手动串流程

---

### 2️⃣ 状态驱动（State Driven）

所有实体必须由 STATE_MACHINE 控制流转

---

### 3️⃣ 服务编排（Service Orchestration）

所有业务逻辑必须在 Service 层执行

---

### 4️⃣ 自动化优先（Automation First）

能自动执行的流程，禁止依赖用户点击

---

### 5️⃣ 可计费（Billable by Design）

所有关键行为必须具备计费能力

---

# 🧩 三、Runtime 四大核心模块

---

## 1️⃣ Event System（事件系统）

### 🎯 作用

解耦模块，实现系统自动联动

---

### 📌 事件结构

```typescript
interface DomainEvent {
  id: string
  type: string
  payload: any
  timestamp: number
  source: string
  merchantId?: string
}
```

---

### 📌 核心事件定义

```typescript
// 商品
PRODUCT_CREATED
PRODUCT_UPDATED

// 订单
ORDER_CREATED
ORDER_PAID
ORDER_COMPLETED

// 库存
INVENTORY_LOW
INVENTORY_UPDATED

// 功能
FEATURE_ENABLED
FEATURE_DISABLED

// AI
AI_TASK_CREATED
AI_TASK_COMPLETED

// 广告
AD_STARTED
AD_PERFORMANCE_UPDATED

// 任务
JOB_CREATED
JOB_UPDATED
JOB_COMPLETED

// 计费
BILLING_GENERATED
```

---

### 📌 事件流

```typescript
Controller → Service → Emit Event → EventBus → Listener → Service
```

---

### 📌 示例

```typescript
await productService.createProduct(data)

eventBus.emit({
  type: 'PRODUCT_CREATED',
  payload: { productId },
  source: 'ProductService',
  merchantId: data.merchantId
})
```

---

## 2️⃣ Job / Worker System（任务系统）

### 🎯 作用

执行异步任务 & 自动推进系统

---

### 📌 任务模型

```typescript
interface Job {
  id: string
  type: string
  status: 'pending' | 'running' | 'success' | 'failed'
  payload: any
  result?: any
  retryCount: number
  merchantId?: string
  priority?: number
}
```

---

### 📌 核心任务类型

```typescript
AI_OPTIMIZE_PRODUCT
SYNC_INVENTORY
RUN_ADS
CALCULATE_PROFIT
GENERATE_BILL
UPDATE_AD_BUDGET
STOP_AD
```

---

### 📌 执行流程

```typescript
Event → 创建 Job → Worker 消费 → 调用 Service → 更新状态 → 触发新 Event
```

---

### 📌 示例

```typescript
eventBus.on('PRODUCT_CREATED', async (event) => {
  await jobService.create({
    type: 'AI_OPTIMIZE_PRODUCT',
    payload: { productId: event.payload.productId },
    merchantId: event.merchantId
  })
})
```

---

## 3️⃣ Scheduler（调度系统）

### 🎯 作用

周期性驱动系统（无人值守）

---

### 📌 示例调度

```typescript
// 每5分钟
syncInventory()

// 每1小时
calculateROI()

// 每天
runSettlement()
```

---

### 📌 实现方式

```typescript
node-cron / bullmq / agenda
```

---

### 📌 调度 → Job

```typescript
cron.schedule('*/5 * * * *', async () => {
  await jobService.create({ type: 'SYNC_INVENTORY' })
})
```

---

## 4️⃣ State Engine（状态推进器）

### 🎯 作用

统一控制所有状态流转

---

### 📌 原则

❌ Service 随意改状态
✅ 必须通过 State Machine

---

### 📌 示例

```typescript
orderStateMachine.transition(order, 'PAY')
```

---

### 📌 自动推进

```typescript
Worker → 调用 Service → 推动状态
```

---

# 💰 四、计费系统（Billing Runtime）

---

## 📊 1️⃣ 计费模型

```typescript
FeatureBilling
UsageBilling
ResultBilling
SubscriptionBilling
```

---

## 📌 2️⃣ 使用量计费

```typescript
UsageService.track({
  feature: 'AI_OPTIMIZE',
  usage: 1,
  merchantId,
  source: 'AI'
})
```

---

## 📌 3️⃣ 账单生成

```typescript
BillingService.generateBill(merchantId)
```

---

## 📌 4️⃣ 收费触发点

| 行为 | 是否计费 |
| --- | --- |
| AI优化 | ✅ |
| 广告投放 | ✅ |
| 自动补货 | ✅ |
| API调用 | ✅ |

---

# 🔄 五、完整运行链路（核心）

---

## 🎯 示例：商品自动赚钱闭环

```typescript
用户创建商品
→ PRODUCT_CREATED

→ 创建 Job（AI优化）
→ AI_TASK_COMPLETED

→ 自动上架
→ AD_STARTED

→ 产生订单
→ ORDER_PAID

→ CALCULATE_PROFIT

→ GENERATE_BILL
```

---

# 🎯 六、前端 Runtime 对应设计（关键）

---

## 1️⃣ Task Center（必须做）

### 字段

```typescript
任务名称
状态（运行中/完成/失败）
进度
结果
触发来源
```

---

## 2️⃣ Event Log

```typescript
时间
事件类型
来源
结果
```

---

## 3️⃣ Billing Timeline

```typescript
时间
费用类型
金额
来源功能
```

---

## 4️⃣ ROI Dashboard（核心）

```typescript
商品ID
ROI
点击数
订单数
成本
收入
```

---

# 🧱 七、Service 分层强化（必须执行）

---

## ❗ 强制规则

```typescript
Controller ❌ 不允许写逻辑
Service ✅ 唯一逻辑入口
Worker ✅ 调用 Service
```

---

# 🔐 八、运行安全设计

---

## 必须补

### 1️⃣ 幂等性

```typescript
jobId: productId + type
```

---

### 2️⃣ 重试机制

```typescript
失败 → retry 3 次
```

---

### 3️⃣ 日志系统

```typescript
Event Log + Job Log + Error Log
```

---

# 🚀 九、实施步骤

---

## 1️⃣ 新建模块

```bash
/src/runtime
  ├── eventBus.ts
  ├── jobQueue.ts
  ├── worker.ts
  ├── scheduler.ts
  ├── jobProcessor.ts
```

---

## 2️⃣ 实现 BullMQ 分布式队列

```bash
/src/runtime/queue
  ├── index.ts
  ├── worker.ts
  ├── processor.ts
  ├── priority.ts
```

---

## 3️⃣ 实现 WebSocket 实时推送

```bash
/src/runtime/ws
  ├── server.ts
  ├── client.ts
  ├── broadcast.ts
```

---

## 4️⃣ 实现计费系统

```bash
/src/services
  ├── UsageService.ts
  ├── BillingService.ts
```

---

## 5️⃣ 实现 AI 策略系统

```bash
/src/runtime/strategy
  ├── engine.ts
  ├── roi.ts
  ├── ad.ts
```

---

## 6️⃣ 前端实现

```bash
/pages/TaskCenter/index.tsx
/pages/EventLog/index.tsx
/pages/Billing/index.tsx
/pages/ROIDashboard/index.tsx
```

---

# 🧠 最终结论

你现在系统的阶段是：

> ✅ 架构完成
> ❗ Runtime 未建立

---

# 🔥 一句话

> **没有 Runtime，你的系统只是“能用”；
> 有 Runtime，才是“能赚钱 + 能自动跑”的系统。**
