from __future__ import annotations

import json
import logging
import re
from typing import Any

logger = logging.getLogger("dscons.takeoff.learning_parsers")


def parse_llm_json_response(raw_text: str) -> dict[str, Any]:
    json_match = re.search(r"```json\s*(\{.*?\})\s*```", raw_text, re.DOTALL)
    if json_match:
        try:
            return json.loads(json_match.group(1))
        except Exception as e:
            logger.warning("[AI-QUYNH-TRAIN] Lỗi parse JSON code block: %s", e)

    # Fallback to curly braces matching
    curly_match = re.search(r"(\{.*\})", raw_text, re.DOTALL)
    if curly_match:
        try:
            return json.loads(curly_match.group(1))
        except Exception as e:
            logger.warning("[AI-QUYNH-TRAIN] Lỗi parse JSON curly fallback: %s", e)

    return {}
