Files
memind/health-image-extract.test.mjs
T
john 2baf29b3ae feat(health): complete P0 health channel — baseline engine, page-data, MindSpace UI
Deliver encrypted health zone, observation API, baseline maturity pipeline,
page-data bindings, and H5/WeChat channel integration for health P0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 18:04:57 +08:00

53 lines
1.9 KiB
JavaScript

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);
});