recordCategorizationUsage method

Future<void> recordCategorizationUsage({
  1. required int totalPackages,
  2. required int categorizedPackages,
  3. required int cacheHits,
  4. required int firestoreHits,
  5. required int fallbackHits,
  6. required int heuristicHits,
  7. required int overrideCount,
})

Record categorization usage

Implementation

Future<void> recordCategorizationUsage({
  required int totalPackages,
  required int categorizedPackages,
  required int cacheHits,
  required int firestoreHits,
  required int fallbackHits,
  required int heuristicHits,
  required int overrideCount,
}) async {
  if (!enabled) return;

  try {
    final payload = {
      'event': 'categorization_usage',
      'timestamp': DateTime.now().toIso8601String(),
      'data': {
        'total_packages': totalPackages,
        'categorized_packages': categorizedPackages,
        'cache_hits': cacheHits,
        'firestore_hits': firestoreHits,
        'fallback_hits': fallbackHits,
        'heuristic_hits': heuristicHits,
        'override_count': overrideCount,
      },
      'version': '1.0.1',
    };

    await http
        .post(
          Uri.parse('$apiEndpoint/events'),
          headers: {
            'Content-Type': 'application/json',
            'User-Agent':
                'SmartPub/1.0 (+https://github.com/VatsalJaganwala/smartpub)',
          },
          body: jsonEncode(payload),
        )
        .timeout(const Duration(seconds: 5));
  } catch (e) {
    // Silently fail - telemetry should never interfere with functionality
  }
}