Files
genome2025/backend/check-data6.js

67 lines
2.0 KiB
JavaScript

const { Client } = require('pg');
async function main() {
const conn = new Client({
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'turbo123',
database: 'genome_db'
});
await conn.connect();
const cowId = 'KOR002191643715';
console.log('=======================================================');
console.log('리스트 vs 개체상세 선발지수 비교');
console.log('=======================================================\n');
// 해당 개체의 35개 형질 EBV 조회
const traitsResult = await conn.query(`
SELECT trait_name, trait_ebv
FROM tb_genome_trait_detail
WHERE cow_id = $1 AND del_dt IS NULL
ORDER BY trait_name
`, [cowId]);
const traits = traitsResult.rows;
console.log('형질 수:', traits.length);
// 1. 가중 합계 (weight = 1)
let weightedSum = 0;
let totalWeight = 0;
traits.forEach(t => {
const ebv = Number(t.trait_ebv);
const weight = 1;
weightedSum += ebv * weight;
totalWeight += weight;
});
console.log('\n=== 계산 비교 ===');
console.log('가중 합계 (weightedSum):', weightedSum.toFixed(2));
console.log('총 가중치 (totalWeight):', totalWeight);
console.log('');
console.log('리스트 (cow.service.ts) - 가중 합계:', weightedSum.toFixed(2));
console.log('개체상세 (genome.service.ts) - 가중 합계:', weightedSum.toFixed(2));
console.log('\n=== 프론트엔드 가중치 확인 ===');
console.log('프론트엔드에서 weight / 100 정규화 확인 필요');
console.log('예: weight 100 → 1, weight 50 → 0.5');
// 만약 프론트에서 weight/100을 적용한다면?
console.log('\n=== 만약 weight가 0.01로 적용된다면? ===');
let weightedSum2 = 0;
let totalWeight2 = 0;
traits.forEach(t => {
const ebv = Number(t.trait_ebv);
const weight = 0.01; // 1/100
weightedSum2 += ebv * weight;
totalWeight2 += weight;
});
console.log('가중 합계:', weightedSum2.toFixed(2));
await conn.end();
}
main().catch(console.error);