import json from dataclasses import asdict from typing import Any from models import FingerQualityResult def _round_value(value: Any) -> Any: if isinstance(value, float): return round(value, 2) if isinstance(value, dict): return {k: _round_value(v) for k, v in value.items()} if isinstance(value, (list, tuple)): return [_round_value(v) for v in value] return value def finger_quality_result_to_json(result: FingerQualityResult) -> str: data = asdict(result) # Make bbox frontend-friendly if data["bbox"] is not None: data["bbox"] = { "x": data["bbox"][0], "y": data["bbox"][1], "width": data["bbox"][2], "height": data["bbox"][3], } data = _round_value(data) return json.dumps(data, indent=2)