import { NextRequest, NextResponse } from 'next/server'
import { handleWebhook } from '@/lib/webhook/handler'

/**
 * Webhook 触发入口 — HTTP 解析 + 调 handler。
 * 业务逻辑（token 校验 / 幂等 / 并发控制 / 执行记录）在 @/lib/webhook/handler。
 */
export async function POST(
  req: NextRequest,
  { params }: { params: Promise<{ taskId: string }> },
) {
  const { taskId } = await params

  // 解析请求体（可空 / 非 JSON）
  let body: Record<string, unknown> = {}
  try {
    body = await req.json()
  } catch {
    /* body may be empty or non-JSON */
  }

  // 解析 token：header → query → body
  let token = req.headers.get('x-webhook-token') || ''
  if (!token) {
    const url = new URL(req.url)
    token = url.searchParams.get('token') || ''
  }
  if (!token) {
    token = (body.token as string) || ''
  }

  const requestId = req.headers.get('x-request-id')

  const { status, body: responseBody } = await handleWebhook(taskId, token, requestId, body)
  return NextResponse.json(responseBody, { status })
}
