import { Controller, Get } from '@nestjs/common';
import { Public } from '../auth/decorators/public.decorator';
import { AI_CATEGORIZATION_MODEL } from './ai.service';

const RECEIPT_IMPORT_MODEL = 'mistral-small-2603';

export interface AiModelInfo {
  id: string;
  name: string;
  description: string;
  model: string;
  path: string;
  trigger: string;
  access: string;
}

@Controller('ai')
export class AiController {
  @Get('models')
  @Public()
  getModels(): AiModelInfo[] {
    return [
      {
        id: 'receipt-pdf',
        name: 'Kvittoimport — PDF-tolkning',
        description: 'Extraherar varunamn, mängd och pris ur PDF-kvitton via textanalys.',
        model: RECEIPT_IMPORT_MODEL,
        path: '/import',
        trigger: 'Vid uppladdning av PDF-kvitto',
        access: 'Alla inloggade',
      },
      {
        id: 'receipt-image',
        name: 'Kvittoimport — Bildtolkning',
        description: 'Extraherar varunamn, mängd och pris ur kvittofoton via bildanalys.',
        model: RECEIPT_IMPORT_MODEL,
        path: '/import',
        trigger: 'Vid uppladdning av kvittobild (JPEG, PNG, WebP, HEIC)',
        access: 'Alla inloggade',
      },
      {
        id: 'receipt-category',
        name: 'Kvittoimport — Kategorisuggestion',
        description: 'För varor som inte matchas mot befintliga produkter visas ett AI-förslag på kategori som ledtråd.',
        model: AI_CATEGORIZATION_MODEL,
        path: '/import',
        trigger: 'Automatiskt efter kvittotolkning (om inga träffar hittas)',
        access: 'Premium-användare + Admin',
      },
      {
        id: 'product-suggest',
        name: 'AI-kategorisering per produkt',
        description: 'Ger ett AI-förslag på kategori för en enskild produkt med säkerhetsindikation (hög/medel/låg).',
        model: AI_CATEGORIZATION_MODEL,
        path: '/admin/products',
        trigger: 'Manuell — klick på "✨ Fråga AI" i produktlistan',
        access: 'Admin',
      },
      {
        id: 'product-bulk',
        name: 'AI-bulk-kategorisering',
        description: 'Analyserar alla okategoriserade produkter och presenterar förslag i ett bekräftelsemodal.',
        model: AI_CATEGORIZATION_MODEL,
        path: '/admin/products',
        trigger: 'Manuell — knappen "✨ AI-kategorisera okategoriserade"',
        access: 'Admin',
      },
    ];
  }
}
