/**
 * Statistics Routes
 * 
 * Endpoints for viewing ML training progress and accuracy metrics
 */

import { Router, Request, Response } from 'express';
import { authenticateApiKey } from '../middleware/auth';
import { accuracyTracker } from '../services/AccuracyTracker';
import { logger } from '../utils/logger';

const router = Router();

/**
 * GET /v1/stats/accuracy?lang=es
 * 
 * Get accuracy statistics for ML training
 * 
 * Returns only languages with sample_count > 0
 */
router.get(
  '/accuracy',
  authenticateApiKey,
  async (req: Request, res: Response) => {
    try {
      const { lang } = req.query;
      
      const stats = await accuracyTracker.getAccuracyStats(lang as string | undefined);
      
      // Filter out languages with no samples (already done in service)
      const filteredStats = stats.filter(s => s.sample_count > 0);
      
      return res.status(200).json({
        success: true,
        stats: filteredStats,
        total_languages: filteredStats.length,
        timestamp: new Date().toISOString(),
      });
    } catch (error) {
      logger.error('Stats retrieval error', { error });
      
      return res.status(500).json({
        error: true,
        code: 'STATS_FAILED',
        message: 'Failed to retrieve accuracy statistics',
        timestamp: new Date().toISOString(),
      });
    }
  }
);

export default router;
