2baf29b3ae
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>
53 lines
1.9 KiB
JavaScript
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);
|
|
});
|