diff --git a/transaction_parser/transaction_parser/ai_integration/parser.py b/transaction_parser/transaction_parser/ai_integration/parser.py index 101aa55..91c7bb2 100644 --- a/transaction_parser/transaction_parser/ai_integration/parser.py +++ b/transaction_parser/transaction_parser/ai_integration/parser.py @@ -1,3 +1,4 @@ +import json import re from typing import Any @@ -97,7 +98,9 @@ def send_message(self, messages: tuple, file_doc_name: str | None = None) -> dic response = self._make_api_call(request_params) log.request_id = response.id - response_dict = response.to_dict() + response_dict = json.loads( + response.model_dump_json(), object_hook=frappe._dict + ) log.output = response_dict processed_response = self._process_response(response_dict) diff --git a/transaction_parser/transaction_parser/utils/response_merger.py b/transaction_parser/transaction_parser/utils/response_merger.py index 6cee765..3fe648c 100644 --- a/transaction_parser/transaction_parser/utils/response_merger.py +++ b/transaction_parser/transaction_parser/utils/response_merger.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from typing import Any -from frappe import _dict +import frappe @dataclass @@ -89,7 +89,9 @@ def __init__( schema: dict, match_keys: dict[str, list[str]] | None = None, ): - self.response = _dict(response) if isinstance(response, dict) else response + self.response = ( + frappe._dict(response) if isinstance(response, dict) else response + ) self.schema = schema self.match_keys = match_keys or {} @@ -168,7 +170,7 @@ def _merge_object( source_value: dict, ) -> None: if key not in target or target[key] is None: - target[key] = {} + target[key] = frappe._dict() self._merge_fields(field_type.children, target[key], source_value)