import fs from "fs";
import { generateObject } from "ai";
import { createOpenAI } from "@ai-sdk/openai";
import { ReceiptExtractionSchema } from "../src/lib/schema/receipt.ts";

const envContent = fs.readFileSync(".env.local", "utf-8");
const apiKeyMatch = envContent.match(/OPENROUTER_API_KEY=([^\r\n]+)/);
const apiKey = apiKeyMatch ? apiKeyMatch[1].trim() : "";

const demoImgPath = "public/demo/01_aral_tankbeleg_muenchen.jpg";
const imgBase64 = fs.readFileSync(demoImgPath).toString("base64");
const dataUrl = `data:image/jpeg;base64,${imgBase64}`;

async function testStructuredExtraction() {
  console.log("Testing structured object extraction with OpenRouter openai/gpt-4o-mini...");

  const openrouter = createOpenAI({
    apiKey,
    baseURL: "https://openrouter.ai/api/v1",
    headers: {
      "HTTP-Referer": "http://localhost:3000",
      "X-Title": "Receipt Scanner to Excel",
    },
  });

  const { object } = await generateObject({
    model: openrouter("openai/gpt-4o-mini"),
    schema: ReceiptExtractionSchema,
    messages: [
      {
        role: "system",
        content: "Du bist ein präziser Belegscanner. Extrahiere alle Daten im vorgegebenen Schema.",
      },
      {
        role: "user",
        content: [
          { type: "text", text: "Extrahiere diesen Beleg vollständig:" },
          { type: "image", image: dataUrl },
        ],
      },
    ],
  });

  console.log("Extracted Object:", JSON.stringify(object, null, 2));
}

testStructuredExtraction().catch(console.error);
