"Fix_COI_and_routes"
This commit is contained in:
@@ -144,16 +144,16 @@ export const formatCOI = (coi) => {
|
||||
}
|
||||
}
|
||||
|
||||
const value = coi.toFixed(2)
|
||||
const value = (coi * 100).toFixed(2)
|
||||
|
||||
if (coi <= 5) {
|
||||
if (coi <= 0.05) {
|
||||
return {
|
||||
value: `${value}%`,
|
||||
level: 'low',
|
||||
color: '#10b981',
|
||||
description: 'Low inbreeding - Excellent genetic diversity'
|
||||
}
|
||||
} else if (coi <= 10) {
|
||||
} else if (coi <= 0.10) {
|
||||
return {
|
||||
value: `${value}%`,
|
||||
level: 'medium',
|
||||
|
||||
@@ -124,8 +124,8 @@ function calculateCOI(db, sireId, damId) {
|
||||
// 'trial-pairing' as dog IDs and return 404/wrong data.
|
||||
// =====================================================================
|
||||
|
||||
// POST /api/pedigree/trial-pairing
|
||||
router.post('/trial-pairing', (req, res) => {
|
||||
// POST /api/pedigree/trial-pairing (alias for /coi)
|
||||
router.post(['/trial-pairing', '/coi'], (req, res) => {
|
||||
try {
|
||||
const { sire_id, dam_id } = req.body;
|
||||
if (!sire_id || !dam_id) {
|
||||
@@ -149,8 +149,8 @@ router.post('/trial-pairing', (req, res) => {
|
||||
coi: result.coefficient,
|
||||
commonAncestors: result.commonAncestors,
|
||||
directRelation: relation.related ? relation.relationship : null,
|
||||
recommendation: result.coefficient < 5 ? 'Low risk'
|
||||
: result.coefficient < 10 ? 'Moderate risk'
|
||||
recommendation: result.coefficient < 0.05 ? 'Low risk'
|
||||
: result.coefficient < 0.10 ? 'Moderate risk'
|
||||
: 'High risk'
|
||||
});
|
||||
} catch (error) {
|
||||
@@ -158,6 +158,28 @@ router.post('/trial-pairing', (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// GET /api/pedigree/:id/coi
|
||||
router.get('/:id/coi', (req, res) => {
|
||||
try {
|
||||
const db = getDatabase();
|
||||
const parents = db.prepare('SELECT parent_type, parent_id FROM parents WHERE dog_id = ?').all(req.params.id);
|
||||
const sire = parents.find(p => p.parent_type === 'sire');
|
||||
const dam = parents.find(p => p.parent_type === 'dam');
|
||||
|
||||
if (!sire || !dam) {
|
||||
return res.json({ coi: 0, commonAncestors: [], message: 'Incomplete parent data' });
|
||||
}
|
||||
|
||||
const result = calculateCOI(db, sire.parent_id, dam.parent_id);
|
||||
res.json({
|
||||
coi: result.coefficient,
|
||||
commonAncestors: result.commonAncestors
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// GET /api/pedigree/relations/:sireId/:damId
|
||||
router.get('/relations/:sireId/:damId', (req, res) => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user