# 输出方式架构

## 核心选择（每个端/平台）

| 输出方式 | 说明 | 参数 | 产物 |
|---|---|---|---|
| **insert**（插入） | 直接 Edit 写入用户项目 | 需指定项目路径（绝对路径） | 代码写入指定目录 |
| **snippet**（片段） | markdown 打印 + 生成代码文件 | 无需路径 | `.ae-tracking/output/<platform>-sdk.<ext>` |

---

## 服务端默认附加

服务端无论选择 `insert` 还是 `snippet`，都额外生成：

| 产物 | 说明 |
|---|---|
| LoggerConsumer 代码 | 服务端 SDK 写本地日志文件 |
| `.ae-tracking/output/daemon.json` | LogBus2 配置（读取日志上传到 TE） |

**注意：LogBus v1 已过时，统一使用 LogBus2。**

官方文档：
- 使用指南：https://docs-v2.thinkingdata.cn/?version=latest&code=logbus2_installation
- 下载地址在官方文档「二、下载 LogBus2」章节中

**架构原理**：
```
服务端代码 → LoggerConsumer → 本地日志文件
                                    ↓
                              LogBus2 进程 → AE 后台
```

优势：
- 数据可靠（本地日志持久化）
- 异步上报（不阻塞业务逻辑）
- 批量上传（网络效率高）

---

## 独立选项（保留）

| 选项 | 说明 | 产物 |
|---|---|---|
| `datax` | 数据库批量导入 | `.ae-tracking/output/datax-job.json` + README |
| `restful` | RESTful API 直接上报（HTTP POST） | `.ae-tracking/output/restful-client.<ext>` |
| `debug` | 校验脚本 | `.ae-tracking/output/te-debug.<ext>` |

---

## SDK 集成模式 → 端/平台列表

| SDK 集成模式 | 端/平台列表 |
|---|---|
| `client_only` | 客户端：[client_sdk_type]（如 `['android']`） |
| `server_only` | 服务端：[server_language]（如 `['java']`） |
| `both` | 客户端：[client_sdk_type]，服务端：[server_language] |

---

## 快捷选择

| 快捷选项 | 说明 |
|---|---|
| **全都生成片段** | 所有端/平台都选择 `snippet`，一次性输出所有代码文件 |

适用场景：
- 不在项目目录下
- 只想参考代码结构
- 多端多平台一次性输出

---

## 约束

- 任何 `insert` 执行前必须检查 `git status`，有未提交改动时拒绝
- 客户端代码只生成 `platform === "client"` 或 `platform === "both"` 的事件
- 服务端代码只生成 `platform === "server"` 或 `platform === "both"` 的事件
- 服务端默认 LoggerConsumer + LogBus2，不默认 RESTful
- **只用 LogBus2，不再使用 LogBus v1**（已过时）
- 生成 LogBus2 配置时，必须同步提供官方文档链接（使用指南 + 下载地址）