diff --git a/changai/changai/api/v2/auto_gen_api.py b/changai/changai/api/v2/auto_gen_api.py index e5bc946..69238a4 100644 --- a/changai/changai/api/v2/auto_gen_api.py +++ b/changai/changai/api/v2/auto_gen_api.py @@ -197,11 +197,11 @@ def _extract_existing_keys(data: List[Any]) -> Set[tuple]: return keys -def _build_master_data_row(entity_type: str, entity_id: str) -> Dict[str, Any]: +def _build_master_data_row(entity_type: str, entity_id: str,title_field:str) -> Dict[str, Any]: return { "entity_type": entity_type, "entity_id": entity_id, - "filters": {"field": "name", "value": entity_id}, + "filters": {"field": title_field if title_field else "name", "value": entity_id}, } @@ -211,30 +211,6 @@ def _get_master_data_filters(last_sync: Optional[str]) -> Dict[str, Any]: return {"creation": [">", last_sync]} -def _sync_module_master_data( - mod: str, - data: List[Dict[str, Any]], - existing_keys: Set[tuple], - base_filters: Dict[str, Any], -) -> tuple[int, int]: - entity_type = f"tab{mod}" - records = frappe.get_all(mod, filters=base_filters, fields=["name"]) - - added_count = 0 - fetched_count = len(records) - - for rec in records: - key = (entity_type, rec.name) - if key in existing_keys: - continue - - data.append(_build_master_data_row(entity_type, rec.name)) - existing_keys.add(key) - added_count += 1 - - return fetched_count, added_count - - @frappe.whitelist(allow_guest=False) def update_masterdata(): frappe.enqueue( @@ -252,7 +228,7 @@ def update_masterdata(): "message":"Master Data update running in RQ Job" } - +@frappe.whitelist(allow_guest=False) def sync_master_data_smart() -> Dict[str, Any]: file_name = "master_data.yaml" payload = _read_filedoctype(file_name, RAG_FOLDER) @@ -279,9 +255,13 @@ def sync_master_data_smart() -> Dict[str, Any]: for row in existing_rows if row.get("entity_id") } - - live_records = frappe.get_all(mod, fields=["name"]) - live_ids = {rec.name for rec in live_records if rec.get("name")} + meta_doc = frappe.get_meta(mod) + title_field = meta_doc.title_field or "name" + fields =["name"] + if title_field !="name": + fields.append(title_field) + live_records = frappe.get_all(mod, fields=fields,limit_page_length=0) + live_ids = {rec.get("name") for rec in live_records if rec.get("name")} fetched_by_module[mod] = len(live_ids) @@ -294,8 +274,10 @@ def sync_master_data_smart() -> Dict[str, Any]: added_total += len(added_ids) removed_total += len(removed_ids) - for entity_id in sorted(live_ids): - rebuilt_rows.append(_build_master_data_row(entity_type, entity_id)) + for rec in live_records: + entity_id = rec.get(title_field) if title_field in rec else rec.get("name") + rebuilt_rows.append(_build_master_data_row(entity_type, entity_id,title_field)) + return rebuilt_rows final_data = rebuilt_rows diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index 7be4302..d9e6ef9 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -9,6 +9,9 @@ import yaml import re import os +import pickle +import numpy as np +import os import time import base64 import sqlglot @@ -324,9 +327,6 @@ def download_model_from_ui(): frappe.log_error(frappe.get_traceback(), "Embedding Model Download Failed") frappe.throw(_("Model download failed: {0}\n Check Quick Start Guide Here 👇:\n{1}").format(str(e),CHANGAI_GUIDE_LINK)) -import os -import pickle -import numpy as np _FIELD_DOCS_CACHE = None _FIELD_EMBS_CACHE = None @@ -2621,3 +2621,12 @@ def _word_is_erp(word: str) -> tuple[bool, str]: return False, "" +@frappe.whitelist(allow_guest=False) +def test(): + test_docs=["Customer","Employee","Item","Sales Order"] + result = [] + for doc in test_docs: + meta = frappe.get_meta(doc) + title_field = meta.title_field + result.append((doc, title_field)) + return result