67 lines
2.0 KiB
JavaScript
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);
|