#!/usr/bin/env node
/**
 * Fix Category Mismatches Between Dev and Prod
 *
 * Harmonizes document categories to canonical values based on document content and purpose
 */

require('dotenv').config();
const { getDb } = require('../src/utils/db.util');

// Canonical category assignments (based on content analysis)
const categoryFixes = {
  'architectural-overview-and-research-status': 'research-theory',
  'comparison-matrix-claude-code-claudemd-and-tractatus-framework': 'technical-reference',
  'executive-brief-tractatus-based-llm-architecture-for-ai-safety': 'research-theory',
  'pluralistic-values-research-foundations': 'advanced-topics'
};

async function fixCategoryMismatches() {
  console.log('🔧 Fixing category mismatches...\n');

  const db = await getDb();
  const collection = db.collection('documents');

  let fixedCount = 0;
  let notFoundCount = 0;

  for (const [slug, correctCategory] of Object.entries(categoryFixes)) {
    try {
      const doc = await collection.findOne({ slug });

      if (!doc) {
        console.log(`⚠️  Not found: ${slug}`);
        notFoundCount++;
        continue;
      }

      if (doc.category === correctCategory) {
        console.log(`✓ Already correct: ${slug} (${correctCategory})`);
        continue;
      }

      // Update category
      await collection.updateOne(
        { slug },
        {
          $set: {
            category: correctCategory,
            'metadata.date_updated': new Date()
          }
        }
      );

      console.log(`✅ Fixed: ${slug}`);
      console.log(`   ${doc.category || 'none'} → ${correctCategory}\n`);
      fixedCount++;

    } catch (error) {
      console.error(`❌ Error fixing ${slug}:`, error.message);
    }
  }

  console.log('='.repeat(60));
  console.log('📊 Summary:');
  console.log('='.repeat(60));
  console.log(`Total documents to fix: ${Object.keys(categoryFixes).length}`);
  console.log(`✅ Fixed: ${fixedCount}`);
  console.log(`⚠️  Not found: ${notFoundCount}`);
  console.log(`✓ Already correct: ${Object.keys(categoryFixes).length - fixedCount - notFoundCount}`);
  console.log('='.repeat(60));

  process.exit(0);
}

// Run fix
fixCategoryMismatches().catch(error => {
  console.error('❌ Fix failed:', error);
  process.exit(1);
});
