import 'package:equatable/equatable.dart'; class FinbertResultModel extends Equatable { final String label; final double score; final double positiveProbability; final double negativeProbability; final double neutralProbability; final String processingTimeMs; final String? summarySnippet; const FinbertResultModel({ required this.label, required this.score, required this.positiveProbability, required this.negativeProbability, required this.neutralProbability, required this.processingTimeMs, this.summarySnippet, }); factory FinbertResultModel.fromJson(Map json) { Map? probs = json['probabilities'] ?? json['Probabilities']; return FinbertResultModel( label: json['label'] ?? json['Label'] ?? 'NEUTRAL', score: (json['compound_score'] ?? json['compoundScore'] ?? json['score'] ?? json['Score'] ?? 0.0).toDouble(), positiveProbability: (probs != null ? (probs['positive'] ?? probs['Positive'] ?? 0.0) : (json['positiveProbability'] ?? json['PositiveProbability'] ?? 0.0)).toDouble(), negativeProbability: (probs != null ? (probs['negative'] ?? probs['Negative'] ?? 0.0) : (json['negativeProbability'] ?? json['NegativeProbability'] ?? 0.0)).toDouble(), neutralProbability: (probs != null ? (probs['neutral'] ?? probs['Neutral'] ?? 0.0) : (json['neutralProbability'] ?? json['NeutralProbability'] ?? 0.0)).toDouble(), processingTimeMs: json['processingTimeMs']?.toString() ?? json['ProcessingTimeMs']?.toString() ?? '0ms', summarySnippet: json['summary_snippet']?.toString() ?? json['summarySnippet']?.toString(), ); } Map toJson() { return { 'label': label, 'score': score, 'positiveProbability': positiveProbability, 'negativeProbability': negativeProbability, 'neutralProbability': neutralProbability, 'processingTimeMs': processingTimeMs, 'summarySnippet': summarySnippet, }; } @override List get props => [ label, score, positiveProbability, negativeProbability, neutralProbability, processingTimeMs, summarySnippet, ]; }