#!/usr/bin/env tsx

/**
 * Script pour identifier les champs personnalisés disponibles dans Jira
 * Usage: npm run test:jira-fields
 */

import { JiraService } from '../src/services/integrations/jira/jira';
import { userPreferencesService } from '../src/services/core/user-preferences';

async function testJiraFields() {
  console.log('🔍 Identification des champs personnalisés Jira\n');

  try {
    // Récupérer la config Jira pour l'utilisateur spécifié ou 'default'
    const userId = process.argv[2] || 'default';
    const jiraConfig = await userPreferencesService.getJiraConfig(userId);

    if (
      !jiraConfig.enabled ||
      !jiraConfig.baseUrl ||
      !jiraConfig.email ||
      !jiraConfig.apiToken
    ) {
      console.log('❌ Configuration Jira manquante');
      return;
    }

    if (!jiraConfig.projectKey) {
      console.log('❌ Aucun projet configuré');
      return;
    }

    console.log(`📋 Analyse du projet: ${jiraConfig.projectKey}`);

    // Créer le service Jira
    const jiraService = new JiraService(jiraConfig);

    // Récupérer un seul ticket pour analyser tous ses champs
    const jql = `project = "${jiraConfig.projectKey}" ORDER BY updated DESC`;
    const issues = await jiraService.searchIssues(jql);

    if (issues.length === 0) {
      console.log('❌ Aucun ticket trouvé');
      return;
    }

    const firstIssue = issues[0];
    console.log(`\n📄 Analyse du ticket: ${firstIssue.key}`);
    console.log(`Titre: ${firstIssue.summary}`);
    console.log(`Type: ${firstIssue.issuetype.name}`);

    // Afficher les story points actuels
    console.log(
      `\n🎯 Story Points actuels: ${firstIssue.storyPoints || 'Non défini'}`
    );

    console.log('\n💡 Pour identifier le bon champ story points:');
    console.log('1. Connectez-vous à votre instance Jira');
    console.log('2. Allez dans Administration > Projets > [Votre projet]');
    console.log('3. Regardez dans "Champs" ou "Story Points"');
    console.log(
      '4. Notez le nom du champ personnalisé (ex: customfield_10003)'
    );
    console.log(
      '5. Modifiez le code dans src/services/integrations/jira/jira.ts ligne 167'
    );

    console.log('\n🔧 Champs couramment utilisés pour les story points:');
    console.log('• customfield_10002 (par défaut)');
    console.log('• customfield_10003');
    console.log('• customfield_10004');
    console.log('• customfield_10005');
    console.log('• customfield_10006');
    console.log('• customfield_10007');
    console.log('• customfield_10008');
    console.log('• customfield_10009');
    console.log('• customfield_10010');

    console.log('\n📝 Alternative: Utiliser les estimations par type');
    console.log('Le système utilise déjà des estimations intelligentes:');
    console.log('• Epic: 13 points');
    console.log('• Story: 5 points');
    console.log('• Task: 3 points');
    console.log('• Bug: 2 points');
    console.log('• Subtask: 1 point');
  } catch (error) {
    console.error('❌ Erreur lors du test:', error);
  }
}

// Exécution du script
testJiraFields().catch(console.error);
