70 lines
2.4 KiB
TypeScript
70 lines
2.4 KiB
TypeScript
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',
|
|
},
|
|
];
|
|
}
|
|
}
|