import { NextResponse } from 'next/server';
import { HTTPClient } from '@/http';
import { logger } from '@/utils/logger'

export const oapiClient = new HTTPClient({
  baseURL: process.env.NOVA_BASE_URL,
  headers: {
    'Content-Type': 'application/json',
    'Tenant-Id': process.env.NOVA_TENANT_ID,
    'Authorization': process.env.NOVA_ACCESS_KEY,
  }
}, {
  onRequest: async (config) => {
    logger.info('oapi request start', {
      method: config.method,
      url: config.url,
      body: config.body,
      query: config.query,
      headers: config.headers,
    })

    return config
  },
  onResponse: async (response, config) => {
    logger.info('oapi response received', {
      method: config.method,
      url: config.url,
    })
  },
  onError: (error, config) => {
    logger.error('oapi request error', {
      method: config.method,
      url: config.url,
      error
    })
  }
})

 
export const sendResponse = (res: any) => {
  // 兼容 HTTP 层 defaultGetResult 的解包结果：
  // 若上游返回 { success: true, data: ... }，此处可能拿到 data 本身（含 null）
  if (res == null || typeof res !== 'object' || !('success' in res)) {
    return NextResponse.json(
      {
        success: true,
        data: res,
      },
      { status: 200 }
    )
  }

  if (res.success === false) {
    logger.error('oapi request failed', {
      code: res.code,
      message: res.message,
      request_id: res.request_id,
    })

    return NextResponse.json(
      {
        code: res.code,
        message: res.message,
        request_id: res.request_id,
        success: false,
      },
      { status: 500 }
    )
  }

  logger.info('oapi request success', {
    code: res.code,
    request_id: res.request_id,
  })

  return NextResponse.json(
    {
      code: res.code,
      request_id: res.request_id,
      success: true,
      data: res,
    },
    { status: 200 }
  )
}