import { NextRequest, NextResponse } from 'next/server'; import { trackEvent, EventType, ConversionType } from '@/lib/analytics'; export async function POST(request: NextRequest) { try { // 解析请求体 const body = await request.json(); // 验证必要字段 if (!body.linkId) { return NextResponse.json( { error: 'Missing required field: linkId' }, { status: 400 } ); } if (!body.eventType || !Object.values(EventType).includes(body.eventType)) { return NextResponse.json( { error: 'Invalid or missing eventType', validValues: Object.values(EventType) }, { status: 400 } ); } // 验证转化类型(如果提供) if ( body.conversionType && !Object.values(ConversionType).includes(body.conversionType) ) { return NextResponse.json( { error: 'Invalid conversionType', validValues: Object.values(ConversionType) }, { status: 400 } ); } // 添加客户端IP const clientIp = request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip') || '0.0.0.0'; // 添加用户代理 const userAgent = request.headers.get('user-agent') || ''; // 合并数据 const eventData = { ...body, ipAddress: body.ipAddress || clientIp, userAgent: body.userAgent || userAgent, }; // 追踪事件 const result = await trackEvent(eventData); // 返回结果 return NextResponse.json(result); } catch (error) { console.error('Error in track API:', error); return NextResponse.json( { error: 'Failed to track event' }, { status: 500 } ); } }