/// 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(),
    );
  }
}
