no longer rely on json
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
// @vitest-environment node
|
||||
|
||||
import { describe, it, expect, beforeAll } from "vitest";
|
||||
import { getDiseaseById } from "@/lib/api/diseases";
|
||||
import { getDiseaseById } from "@/lib/api/diseases-db";
|
||||
|
||||
const BASE_URL = process.env.TEST_BASE_URL || "http://localhost:3000";
|
||||
|
||||
@@ -172,7 +172,7 @@ describe("POST /api/identify", () => {
|
||||
const { data } = await callIdentify(imageId);
|
||||
|
||||
for (const pred of data.predictions) {
|
||||
const disease = getDiseaseById(pred.diseaseId);
|
||||
const disease = await getDiseaseById(pred.diseaseId);
|
||||
expect(disease).toBeDefined();
|
||||
expect(disease!.id).toBe(pred.diseaseId);
|
||||
expect(disease!.name).toBe(pred.disease.name);
|
||||
@@ -184,7 +184,7 @@ describe("POST /api/identify", () => {
|
||||
|
||||
for (let i = 0; i < data.predictions.length - 1; i++) {
|
||||
expect(data.predictions[i].confidence.adjusted).toBeGreaterThanOrEqual(
|
||||
data.predictions[i + 1].confidence.adjusted
|
||||
data.predictions[i + 1].confidence.adjusted,
|
||||
);
|
||||
}
|
||||
}, 30000);
|
||||
@@ -194,7 +194,7 @@ describe("POST /api/identify", () => {
|
||||
|
||||
for (const pred of data.predictions) {
|
||||
for (const lookalikeId of pred.lookalikes) {
|
||||
const lookalike = getDiseaseById(lookalikeId);
|
||||
const lookalike = await getDiseaseById(lookalikeId);
|
||||
expect(lookalike).toBeDefined();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import { runInference } from "@/lib/ml/inference";
|
||||
import { calibrateConfidence } from "@/lib/ml/confidence";
|
||||
import { getDiseaseIdForIndex } from "@/lib/ml/labels";
|
||||
import { getModel } from "@/lib/ml/model-loader";
|
||||
import { getDiseaseById, getPlantById } from "@/lib/api/diseases-db";
|
||||
import { getDiseaseById, getPlantById, getLookalikeDiseases } from "@/lib/api/diseases-db";
|
||||
import type { IdentifyRequest, IdentifyResponse, PredictionResult } from "@/lib/types";
|
||||
|
||||
// ─── Constants ───────────────────────────────────────────────────────────────
|
||||
@@ -121,7 +121,7 @@ async function preprocessImageBuffer(buffer: Buffer): Promise<Float32Array> {
|
||||
* For each prediction:
|
||||
* - Look up disease by ID in knowledge base
|
||||
* - Calibrate confidence score
|
||||
* - Include lookalike disease cross-references
|
||||
* - Include lookalike disease cross-references (IDs and full objects)
|
||||
*
|
||||
* @param topPredictions - Top-K raw predictions from inference
|
||||
* @returns Enriched prediction results
|
||||
@@ -149,8 +149,10 @@ async function enrichPredictions(
|
||||
// Calibrate confidence
|
||||
const confidence = calibrateConfidence(pred.probability);
|
||||
|
||||
// Get lookalike diseases
|
||||
// Pre-resolve lookalike disease objects server-side so the client
|
||||
// doesn't need sync access to JSON files
|
||||
const lookalikes = disease.lookalikeDiseaseIds;
|
||||
const lookalikeDiseases = await getLookalikeDiseases(diseaseId);
|
||||
|
||||
// Look up the plant for client convenience
|
||||
const plant = await getPlantById(disease.plantId).catch(() => null);
|
||||
@@ -160,6 +162,7 @@ async function enrichPredictions(
|
||||
disease,
|
||||
confidence,
|
||||
lookalikes,
|
||||
lookalikeDiseases,
|
||||
plant: plant ?? null,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user