/** * 마이그레이션 검증 스크립트 */ const { Pool } = require('pg'); const databaseUrl = process.env.DATABASE_URL || 'postgresql://postgres:ph0909!!@39.117.244.52:11132/plm'; const pool = new Pool({ connectionString: databaseUrl, }); async function verifyMigration() { const client = await pool.connect(); try { console.log('🔍 마이그레이션 결과 검증 중...\n'); // 전체 요소 수 const total = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements `); // 새로운 subtype별 개수 const mapV2 = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'map-summary-v2' `); const chart = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'chart' `); const listV2 = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'list-v2' `); const metricV2 = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'custom-metric-v2' `); const alertV2 = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'risk-alert-v2' `); // 테스트 subtype 남아있는지 확인 const remaining = await client.query(` SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype LIKE '%-test%' `); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log('📊 마이그레이션 결과 요약'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log(`전체 요소 수: ${total.rows[0].count}`); console.log(`map-summary-v2: ${mapV2.rows[0].count}`); console.log(`chart: ${chart.rows[0].count}`); console.log(`list-v2: ${listV2.rows[0].count}`); console.log(`custom-metric-v2: ${metricV2.rows[0].count}`); console.log(`risk-alert-v2: ${alertV2.rows[0].count}`); console.log(''); if (parseInt(remaining.rows[0].count) > 0) { console.log(`⚠️ 테스트 subtype이 ${remaining.rows[0].count}개 남아있습니다!`); } else { console.log('✅ 모든 테스트 subtype이 정상적으로 변경되었습니다!'); } console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log(''); console.log('🎉 마이그레이션이 성공적으로 완료되었습니다!'); console.log(''); console.log('다음 단계:'); console.log('1. 프론트엔드 애플리케이션을 새로고침하세요'); console.log('2. 대시보드를 열어 위젯이 정상적으로 작동하는지 확인하세요'); console.log('3. 문제가 발생하면 백업에서 복원하세요'); console.log(''); } catch (error) { console.error('❌ 오류 발생:', error.message); } finally { client.release(); await pool.end(); } } verifyMigration();