# 16 其他独立业务闭环

> 本文档包含其他独立的业务闭环：定价与利润决策、核心服务优先级、多店铺管理、商家选择发货、客户/商家押金

---

## 1️⃣5️⃣ 定价与利润决策闭环（Pricing & Profit Decision Loop）

- **目标**：基于成本、市场和业务目标，自动生成定价策略和利润优化建议。
- **流程**：
  - 成本数据收集 → 市场分析 → 定价策略生成 → 利润预测 → 决策执行
- **决策点**：
  - 利润率红线控制（B2C < 20% 预警，B2B < 15% 禁止）
  - 价格弹性分析
  - 竞争定价策略
- **输入**：商品成本、运费、平台费、广告预估、市场竞争数据
- **输出**：
  - 建议售价
  - 建议 ROI
  - 上架决策（开/关）
  - 广告投放 ROI 区间
  - 最大可承受 CPA

***

## 5️⃣0️⃣ 核心服务优先级闭环（Core Service Priority Loop）

- **目标**：确定核心业务服务的优先级顺序，确保资源合理分配。
- **流程**：
  1. **服务评估**：
     - 业务价值评估
     - 技术复杂度评估
     - 资源需求评估
     - 风险评估
  2. **优先级排序**：
     - 基于业务价值的排序
     - 基于依赖关系的排序
     - 基于时间窗口的排序
  3. **资源分配**：
     - 人力分配
     - 技术资源分配
     - 时间规划
  4. **执行监控**：
     - 进度跟踪
     - 资源使用监控
     - 风险预警
- **决策点**：
  - 优先级调整时机
  - 资源重新分配决策
  - 项目范围变更管理
- **输入**：服务需求、业务目标、资源状况
- **输出**：优先级排序结果、资源分配计划、执行进度报告
- **状态机**：`ASSESSMENT` → `PRIORITIZATION` → `RESOURCE_ALLOCATION` → `EXECUTION` → `MONITORING`

***

## 5️⃣7️⃣ 多店铺管理闭环（Multi-Shop Management Loop）

- **目标**：实现多店铺、多商户、多部门的统一管理与数据隔离，支持独立站/外部独立站/报表等一对多交互
- **层级架构**：
  ```
  商户(Merchant) → 部门(Department) → 店铺(Shop)
       ↓                ↓                ↓
    商户级数据        部门级数据        店铺级数据
  ```
- **流程**：
  1. **店铺注册与配置**：
     - 店铺类型划分（独立站/平台店/外部独立站）
     - 平台账号绑定
     - 店铺基础信息配置
     - 店铺状态管理
  2. **权限配置**：
     - 层级权限继承
     - 数据访问范围控制
     - 操作权限分配
     - 角色管理
  3. **数据隔离**：
     - 店铺级数据隔离
     - 部门级数据聚合
     - 商户级数据汇总
     - 跨店铺数据访问控制
  4. **业务操作**：
     - 商品管理（单店/批量）
     - 订单管理（单店/聚合）
     - 库存管理（单店/同步）
     - 价格管理（单店/批量）
  5. **报表聚合**：
     - 单店报表
     - 部门聚合报表
     - 商户汇总报表
     - 跨店对比分析
- **决策点**：
  - 店铺类型划分标准
  - 数据权限边界定义
  - 报表聚合规则
  - 跨店操作权限
- **输入**：店铺信息、商户信息、部门信息、用户角色
- **输出**：
  - 店铺管理界面
  - 跨店铺数据报表
  - 权限控制策略
  - 数据隔离配置
- **状态机**：`SHOP_REGISTERED` → `SHOP_CONFIGURED` → `SHOP_ACTIVE` → `SHOP_SUSPENDED` → `SHOP_CLOSED`

***

## 2️⃣0️⃣ 商家选择发货闭环（Merchant Selective Fulfillment Loop）

- **目标**：商家可选择自己有库存的订单发货，剩余由平台/公司发货。
- **流程**：
  1. **订单选择**
     - 商家登录落地页选择自己有货的订单发货
  2. **系统检查**
     - 押金或余额是否足够覆盖订单
     - 时效性（保证订单不过期）
  3. **订单状态更新**
     - 状态流转：`available → requested → shipped → completed`
     - 剩余无货订单由平台/公司自己发货
- **决策点**：
  - 订单分配规则
  - 库存检查策略
  - 时效保证机制
- **输入**：
  - 商家库存信息
  - 订单数据
  - 押金/余额状态
- **输出**：
  - 订单分配结果
  - 发货状态更新
  - 异常订单标记

***

## 1️⃣9️⃣ 客户/商家押金与账户管理闭环（Customer/Merchant Deposit & Account Management Loop）

- **目标**：管理客户预缴押金、账户余额，支持订单抵扣和提现。
- **流程**：
  1. **押金管理**
     - 客户预缴押金（例：100 元抵 2 单）
     - 押金余额、已抵扣订单数量记录
  2. **账户管理**
     - 客户可查看：可申请发货订单、历史回款、押金/余额状态
     - 自动扣减押金或余额完成发货操作
  3. **提现管理**
     - 检查账户余额 → 生成提现单 → 审核 → 打款
- **决策点**：
  - 押金抵扣规则
  - 提现审核流程
  - 余额管理策略
- **输入**：
  - 客户押金信息
  - 订单数据
  - 提现申请
- **输出**：
  - 押金/余额状态
  - 提现处理结果
  - 财务流水记录

***

## 相关KPI

### 定价与利润决策闭环

| KPI 指标  | 描述            | 适用业务类型    |
| ------- | ------------- | --------- |
| 定价准确率   | 建议售价与最优价格的偏差率 | TOC + TOB |
| 利润率达标率  | 达到目标利润率的商品比例  | TOC + TOB |
| 定价决策时效  | 从成本数据到定价决策的时间 | TOC + TOB |
| 价格竞争力   | 与市场平均价格的对比    | TOC + TOB |
| 利润预测准确率 | 预测利润与实际利润的偏差率 | TOC + TOB |

### 多店铺管理闭环

| KPI 指标 | 描述          | 适用业务类型    |
| ------ | ----------- | --------- |
| 店铺数量   | 管理的店铺总数     | TOC + TOB |
| 活跃店铺数  | 活跃店铺数量      | TOC + TOB |
| 跨店订单量  | 跨店铺订单数量     | TOC + TOB |
| 数据隔离有效性 | 数据隔离的成功率   | TOC + TOB |
| 报表生成效率 | 报表生成的平均时间   | TOC + TOB |

***

## 7️⃣7️⃣ Node Agent 任务执行闭环（Node Agent Task Execution Loop）

- **目标**：通过 Playwright 自动化代理执行无 API 平台的操作任务，实现采集、刊登、订单处理等自动化。
- **架构**：
  ```
  ┌─────────────┐      ┌─────────────┐      ┌─────────────┐
  │   Server    │◄────►│    Hub      │◄────►│ Node-Agent  │
  │  (主控端)    │      │ (任务调度)   │      │ (Playwright)│
  └─────────────┘      └─────────────┘      └─────────────┘
                                                │
                                         ┌──────▼──────┐
                                         │  Chromium   │
                                         │  (无API平台) │
                                         └─────────────┘
  ```
- **流程**：
  1. **节点注册**：
     - Node Agent 启动时向 Hub 注册
     - 上报节点 ID、版本、操作系统、主机名
     - 加载本地店铺配置
  2. **心跳维持**：
     - 定时向 Hub 发送心跳（默认 30 秒）
     - 维持节点在线状态
     - 检测连接异常并自动重连
  3. **任务轮询**：
     - 定时从 Hub 拉取任务（默认 10 秒）
     - 获取待执行的任务队列
     - 按优先级和店铺隔离规则执行
  4. **任务执行**：
     - 启动 Playwright 浏览器实例
     - 配置代理 IP 和浏览器指纹
     - 执行具体任务（采集/刊登/订单处理）
     - 收集执行结果和截图
  5. **结果上报**：
     - 向 Hub 上报任务执行结果
     - 包含状态、数据、错误信息
     - 支持重试机制
- **任务类型**：
  | 任务类型 | 说明 | 适用平台 |
  |---------|------|---------|
  | `COLLECT_PRODUCT` | 商品数据采集 | TikTok Shop, Temu, 1688 |
  | `COLLECT_ORDER` | 订单数据采集 | TikTok Shop, Temu |
  | `PUBLISH_PRODUCT` | 商品刊登 | TikTok Shop, Temu |
  | `PROCESS_ORDER` | 订单处理（发货、取消） | TikTok Shop, Temu |
  | `SYNC_INVENTORY` | 库存同步 | TikTok Shop, Temu |
  | `MANAGE_AD` | 广告管理 | TikTok Shop |
- **店铺隔离策略**：
  - **一店一上下文**：每个店铺独立的 profileDir、proxy、fingerprintPolicy
  - **同店任务串行**：同一店铺的任务严格串行执行
  - **跨店任务并行**：不同店铺的任务可并行执行
- **反检测策略**：
  | 策略 | 说明 |
  |------|------|
  | **指纹隔离** | 每个店铺独立浏览器指纹 |
  | **代理 IP** | 每个店铺独立代理 |
  | **行为模拟** | 随机延迟、鼠标轨迹 |
  | **User-Agent** | 随机 UA 轮换 |
- **决策点**：
  - 任务优先级排序
  - 浏览器实例数量控制
  - 失败重试策略
  - 异常处理机制
- **输入**：任务配置、店铺信息、代理配置、指纹策略
- **输出**：执行结果、采集数据、截图日志
- **状态机**：
  - 节点：`OFFLINE` → `REGISTERING` → `ONLINE` → `BUSY` → `OFFLINE`
  - 任务：`PENDING` → `PULLED` → `EXECUTING` → `SUCCESS` / `FAILED`

***

## 7️⃣8️⃣ 前端-后端-Node Agent 调用链路闭环（Frontend-Backend-NodeAgent Call Chain Loop）

- **目标**：定义从前端操作到 Node Agent 执行的完整调用链路，确保数据流和状态同步。
- **架构层次**：
  ```
  ┌─────────────────────────────────────────────────────────────┐
  │                     用户操作层                               │
  │  Dashboard (React) → 用户点击"采集商品"按钮                   │
  └──────────────────────────┬──────────────────────────────────┘
                             │ HTTP Request
                             ▼
  ┌─────────────────────────────────────────────────────────────┐
  │                     API 网关层                               │
  │  Server Controller → 权限校验 → 参数验证 → 调用 Service       │
  └──────────────────────────┬──────────────────────────────────┘
                             │ Service Call
                             ▼
  ┌─────────────────────────────────────────────────────────────┐
  │                     业务逻辑层                               │
  │  Service → 创建任务 → 存入数据库 → 推送到 Hub 队列            │
  └──────────────────────────┬──────────────────────────────────┘
                             │ Queue Push
                             ▼
  ┌─────────────────────────────────────────────────────────────┐
  │                     任务调度层                               │
  │  Hub → 任务队列 → 分配给 Node Agent → 监控执行状态            │
  └──────────────────────────┬──────────────────────────────────┘
                             │ Task Pull
                             ▼
  ┌─────────────────────────────────────────────────────────────┐
  │                     执行代理层                               │
  │  Node Agent → Playwright 执行 → 采集数据 → 上报结果          │
  └──────────────────────────┬──────────────────────────────────┘
                             │ Result Report
                             ▼
  ┌─────────────────────────────────────────────────────────────┐
  │                     数据回写层                               │
  │  Hub → 更新任务状态 → 通知 Server → WebSocket 推送前端        │
  └─────────────────────────────────────────────────────────────┘
  ```
- **调用链路示例**（商品采集）：
  1. **前端发起**：
     ```typescript
     // Dashboard: 用户点击采集按钮
     const handleCollect = async () => {
       const result = await collectProductDataSource.create({
         platform: 'TikTok',
         shopId: 'shop-123',
         productUrl: 'https://...'
       });
     };
     ```
  2. **后端处理**：
     ```typescript
     // Server: Controller → Service
     @router.post('/api/v1/collect/product')
     async collectProduct(req: Request, res: Response) {
       const task = await CrawlerService.createCollectTask(req.body);
       await HubQueueService.pushTask(task);
       res.json({ taskId: task.id, status: 'PENDING' });
     }
     ```
  3. **Hub 调度**：
     ```typescript
     // Hub: 任务队列管理
     async pushTask(task: Task) {
       await TaskQueue.add(task);
       await this.notifyNodeAgents();
     }
     ```
  4. **Node Agent 执行**：
     ```typescript
     // Node Agent: Playwright 执行
     async executeTask(task: NodeTask) {
       const browser = await chromium.launch({ proxy: task.proxy });
       const page = await browser.newPage();
       const data = await this.collectProduct(page, task.payload);
       await this.reportReceipt({ taskId: task.id, data });
     }
     ```
  5. **结果回写**：
     ```typescript
     // Server: 接收结果
     @router.post('/api/v1/publish/receipt')
     async handleReceipt(req: Request, res: Response) {
       await CrawlerService.saveCollectResult(req.body);
       await WebSocketService.notifyFrontend(req.body.taskId, 'SUCCESS');
     }
     ```
- **状态同步机制**：
  | 机制 | 说明 |
  |------|------|
  | **WebSocket 推送** | 实时推送任务状态到前端 |
  | **轮询查询** | 前端定时查询任务状态 |
  | **事件总线** | 内部服务间状态同步 |
- **决策点**：
  - 任务优先级设置
  - 超时处理策略
  - 失败重试机制
  - 并发控制策略
- **输入**：用户操作、任务配置、执行参数
- **输出**：任务状态、执行结果、通知消息
- **状态机**：`USER_ACTION` → `API_REQUEST` → `TASK_CREATED` → `TASK_QUEUED` → `TASK_EXECUTING` → `TASK_COMPLETED` → `RESULT_SAVED` → `FRONTEND_NOTIFIED`

***

## 相关KPI

### Node Agent 任务执行闭环

| KPI 指标 | 描述 | 适用业务类型 |
|---------|------|-------------|
| 任务成功率 | 成功执行的任务比例 | TOC + TOB |
| 平均执行时间 | 任务执行的平均耗时 | TOC + TOB |
| 节点在线率 | Node Agent 在线时间比例 | TOC + TOB |
| 采集数据准确率 | 采集数据的准确性 | TOC + TOB |
| 反检测成功率 | 未被平台检测的成功率 | TOC + TOB |

### 前端-后端-Node Agent 调用链路闭环

| KPI 指标 | 描述 | 适用业务类型 |
|---------|------|-------------|
| 端到端延迟 | 从用户操作到结果返回的时间 | TOC + TOB |
| 链路成功率 | 完整链路执行成功的比例 | TOC + TOB |
| 状态同步延迟 | 状态更新到前端显示的时间 | TOC + TOB |
| 错误恢复率 | 错误后自动恢复的比例 | TOC + TOB |
