Files
recipe-app/flutter/lib/features/import/domain/parsed_receipt_item.dart
T

55 lines
1.9 KiB
Dart

/// Model for a parsed receipt item from the receipt import API.
class ParsedReceiptItem {
final String rawName;
final double? quantity;
final String? unit;
final double? price;
final String? brand;
final String? origin;
// alias-match (säker, ingen bekräftelse behövs)
final int? matchedProductId;
final String? matchedProductName;
// ordbaserad match (kräver bekräftelse)
final int? suggestedProductId;
final String? suggestedProductName;
// AI-kategorisuggestion (premium)
final String? categorySuggestionName;
final String? categorySuggestionPath;
final int? categorySuggestionId;
ParsedReceiptItem({
required this.rawName,
this.quantity,
this.unit,
this.price,
this.brand,
this.origin,
this.matchedProductId,
this.matchedProductName,
this.suggestedProductId,
this.suggestedProductName,
this.categorySuggestionName,
this.categorySuggestionPath,
this.categorySuggestionId,
});
factory ParsedReceiptItem.fromJson(Map<String, dynamic> json) {
final cat = json['categorySuggestion'] as Map<String, dynamic>?;
return ParsedReceiptItem(
rawName: json['rawName'] as String? ?? '',
quantity: (json['quantity'] as num?)?.toDouble(),
unit: json['unit'] as String?,
price: (json['price'] as num?)?.toDouble(),
brand: json['brand'] as String?,
origin: json['origin'] as String?,
matchedProductId: (json['matchedProductId'] as num?)?.toInt(),
matchedProductName: json['matchedProductName'] as String?,
suggestedProductId: (json['suggestedProductId'] as num?)?.toInt(),
suggestedProductName: json['suggestedProductName'] as String?,
categorySuggestionName: cat?['categoryName'] as String?,
categorySuggestionPath: cat?['path'] as String?,
categorySuggestionId: (cat?['categoryId'] as num?)?.toInt(),
);
}
}