/**
 * config/aiLinking embeddingMatching.enabled 활성화 스크립트
 *
 * Firestore config/aiLinking 문서의 embeddingMatching.enabled를 true로 변경합니다.
 * 기존 설정은 merge:true로 유지합니다.
 *
 * 사용법:
 *   cd /home/jay/projects/insuwiki/.worktrees/task-832.1-dev1/nextapp
 *   npx ts-node ../scripts/enable-embedding-config.ts
 *
 * Phase 1-B: 임베딩 매칭 활성화
 * 생성일: 2026-03-23
 */

import * as admin from 'firebase-admin';
import * as path from 'path';
import * as fs from 'fs';

// ============================================================
// Firebase Admin 초기화
// ============================================================
if (!admin.apps.length) {
    const localKeyPath = path.resolve(__dirname, '../temp.j2h/insuwiki-j2h-902be7d0b6f5.json');
    if (fs.existsSync(localKeyPath)) {
        try {
            const serviceAccount = JSON.parse(fs.readFileSync(localKeyPath, 'utf8'));
            admin.initializeApp({
                credential: admin.credential.cert(serviceAccount),
                projectId: 'insuwiki-j2h',
            });
            console.log('Firebase Admin 초기화 완료 (서비스 계정 키 사용)');
        } catch {
            admin.initializeApp();
            console.warn('서비스 계정 키 파싱 실패 — 기본 인증 사용');
        }
    } else {
        admin.initializeApp();
        console.log('서비스 계정 키 없음 — 기본 인증 사용 (gcloud auth)');
    }
}

const db = admin.firestore();

// ============================================================
// 메인 로직
// ============================================================
async function enableEmbeddingConfig(): Promise<void> {
    console.log('\n' + '='.repeat(60));
    console.log('config/aiLinking embeddingMatching.enabled 활성화');
    console.log('='.repeat(60) + '\n');

    // 기존 설정 확인
    console.log('현재 config/aiLinking 문서 확인 중...');
    const docRef = db.collection('config').doc('aiLinking');
    const existingDoc = await docRef.get();

    if (existingDoc.exists) {
        console.log('기존 설정:');
        console.log(JSON.stringify(existingDoc.data(), null, 2));
    } else {
        console.log('기존 문서 없음 — 새로 생성됩니다.');
    }

    // embeddingMatching.enabled만 true로 변경 (기존 설정 유지)
    const updatePayload = {
        embeddingMatching: {
            enabled: true,
        },
    };

    console.log('\n변경할 내용:');
    console.log(JSON.stringify(updatePayload, null, 2));

    await docRef.set(updatePayload, { merge: true });

    console.log('\nconfigaiLinking.embeddingMatching.enabled = true 설정 완료');

    // 변경 후 확인
    const updatedDoc = await docRef.get();
    console.log('\n변경 후 전체 설정:');
    console.log(JSON.stringify(updatedDoc.data(), null, 2));

    console.log('\n' + '='.repeat(60) + '\n');
}

// ============================================================
// 실행
// ============================================================
enableEmbeddingConfig()
    .then(() => process.exit(0))
    .catch(err => {
        console.error('\n실패:', err);
        process.exit(1);
    });
