use axum::Json; use serde::Deserialize; use tracing; use erp_core::types::ApiResponse; #[derive(Debug, Deserialize)] pub struct AnalyticsEvent { pub event: String, pub properties: Option, pub timestamp: Option, pub page: Option, } #[derive(Debug, Deserialize)] pub struct BatchRequest { pub events: Vec, } /// 接收小程序批量埋点事件。 /// 当前为日志记录模式 — 后续可接入 ClickHouse/PostgreSQL 分析表。 pub async fn batch( Json(req): Json, ) -> Json> { for evt in &req.events { tracing::info!( event = %evt.event, page = ?evt.page, properties = ?evt.properties, "Analytics event received" ); } Json(ApiResponse::ok(())) }