# Analytics Events And Dashboard Protocol 本文档定义 analytics 采集与查询协议,覆盖移动端/前端事件上报、Dashboard 登录与按日数据读取。 ## 1. Scope - 事件写入接口:`POST /api/v1/analytics/events` - Dashboard 登录接口:`POST /api/v1/analytics/login` - 按日数据读取接口:`GET /api/v1/analytics/data/{YYYY-MM-DD}` - 存储介质:服务端 JSONL 文件(由 `SOCIAL_ANALYTICS__DATA_PATH` 指定) ## 2. Event Ingestion ### Endpoint - Method: `POST` - Path: `/api/v1/analytics/events` ### Request Body ```json { "client_time": "2026-04-02T10:00:00Z", "sdk_version": "1.0.0", "events": [ { "event_id": "evt-1", "event_type": "page_view", "timestamp": "2026-04-02T10:00:00Z", "user_id": "user-1", "device_id": "device-1", "session_id": "session-1", "platform": "android", "app_version": "0.1.2", "app_build": "5", "env": "prod", "page_name": "home", "trace_id": "trace-1", "request_id": "request-1", "attributes": { "from": "banner" }, "metrics": { "latency_ms": 123 }, "context": { "network_type": "wifi", "os_version": "Android 14", "device_model": "Pixel", "locale": "zh-CN", "timezone": "Asia/Shanghai" } } ] } ``` ### Response Body ```json { "received": 1, "queued": true } ``` 语义说明: - `received` 表示本次接收的事件条数。 - `queued=true` 表示事件已被服务端接收并触发写入流程;该字段不承诺具体调度方式(请求内写入或队列写入)。 ## 3. Dashboard Login ### Endpoint - Method: `POST` - Path: `/api/v1/analytics/login` ### Request Body ```json { "password": "" } ``` ### Response Body ```json { "success": true, "data_base_url": "/api/v1/analytics/data", "token": "" } ``` 语义说明: - `token` 为短时效 Bearer Token。 - `data_base_url` 为前端读取按日数据的基路径。 ## 4. Read Daily Data ### Endpoint - Method: `GET` - Path: `/api/v1/analytics/data/{date}` - Header: `Authorization: Bearer ` - `date` 格式要求:`YYYY-MM-DD` ### Success Response - Status: `200` - Content-Type: `application/x-ndjson` - Body: 当日 JSONL 文本(每行一个事件 JSON) ## 5. Error Contract 错误响应必须遵循 RFC7807 + 稳定错误码规范,错误码注册表见: - `docs/protocols/common/http-error-codes.md` analytics 相关错误码包括: - `ANALYTICS_LOGIN_PASSWORD_INVALID` - `ANALYTICS_AUTH_HEADER_MISSING` - `ANALYTICS_AUTH_SCHEME_INVALID` - `ANALYTICS_AUTH_TOKEN_MISSING` - `ANALYTICS_TOKEN_MALFORMED` - `ANALYTICS_TOKEN_SIGNATURE_INVALID` - `ANALYTICS_TOKEN_PAYLOAD_INVALID` - `ANALYTICS_TOKEN_EXPIRED` - `ANALYTICS_DATE_FORMAT_INVALID` - `ANALYTICS_FILE_NOT_FOUND` ## 6. Storage Contract - 后端写入路径由 `SOCIAL_ANALYTICS__DATA_PATH` 控制,默认:`backend/data/analytics`。 - 按日存储文件名:`{YYYY-MM-DD}.jsonl`。 - 生产部署推荐将宿主机目录挂载到容器内该路径,避免容器重建导致数据丢失。 ## 7. Compatibility Strategy - 策略:**backward-compatible additive change**。 - 允许在事件对象中新增可选字段(`attributes` / `metrics` / `context` 内部字段)。 - 不允许移除现有必填字段或修改既有字段语义;若必须变更,需新增版本化协议文档并提供迁移说明。