import assert from 'node:assert/strict'; import test from 'node:test'; import { buildHealthExtractionPrompt, normalizeExtractionPayload, parseHealthExtractionJson, } from './health-image-extract.mjs'; test('parseHealthExtractionJson accepts fenced JSON', () => { const parsed = parseHealthExtractionJson('```json\n{"metric_set":"blood_pressure","systolic":128,"diastolic":76}\n```'); assert.equal(parsed.metric_set, 'blood_pressure'); assert.equal(parsed.systolic, 128); }); test('buildHealthExtractionPrompt focuses on blood pressure when hinted', () => { const prompt = buildHealthExtractionPrompt('blood_pressure'); assert.match(prompt, /血压计/); assert.match(prompt, /blood_pressure/); }); test('normalizeExtractionPayload validates a usable blood pressure reading', () => { const result = normalizeExtractionPayload({ metric_set: 'blood_pressure', systolic: 128, diastolic: 76, confidence: { systolic: 0.98, diastolic: 0.97 }, }); assert.equal(result.ok, true); assert.equal(result.metricSet, 'blood_pressure'); assert.deepEqual(result.values, { systolic: 128, diastolic: 76 }); }); test('normalizeExtractionPayload rejects scene-only unknown devices', () => { const result = normalizeExtractionPayload({ metric_set: 'unknown' }); assert.equal(result.ok, false); assert.equal(result.error, 'unknown_device'); }); test('extractHealthImageFromVision uses structured vision output', async () => { const { extractHealthImageFromVision } = await import('./health-image-extract.mjs'); const result = await extractHealthImageFromVision({ buffer: Buffer.from('fake'), analyzeImagesWithVision: async () => JSON.stringify({ metric_set: 'blood_pressure', systolic: 121, diastolic: 79, confidence: { systolic: 0.96, diastolic: 0.95 }, }), }); assert.equal(result.ok, true); assert.equal(result.values.systolic, 121); });