import { Controller, Get } from '@nestjs/common'; import { Public } from '../auth/decorators/public.decorator'; import { AI_CATEGORIZATION_MODEL } from './ai.service'; import { RECEIPT_IMPORT_MODEL } from '../receipt-import/receipt-import.service'; 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', }, ]; } }