From e70427400fde6fc81e95fe5674a25014df75c1b8 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Fri, 12 Jun 2026 12:07:46 +0300 Subject: [PATCH] feat: add test_field to metaschema and remove unused commits in various API files --- .../api/v2/assets/metaschema_clean_v2.json | 1 + changai/changai/api/v2/auto_gen_api.py | 8 -------- changai/changai/api/v2/create_qr.py | 1 - changai/changai/api/v2/format_output.py | 10 ---------- .../fvs_stores/erpnext/report_fvs/index.faiss | Bin 718838 -> 718838 bytes .../fvs_stores/erpnext/table_fvs/index.faiss | Bin 2293386 -> 2293386 bytes changai/changai/api/v2/gdoc_ai.py | 0 .../changai/api/v2/text2sql_pipeline_v2.py | 1 - changai/hooks.py | 1 + 9 files changed, 2 insertions(+), 20 deletions(-) delete mode 100644 changai/changai/api/v2/gdoc_ai.py diff --git a/changai/changai/api/v2/assets/metaschema_clean_v2.json b/changai/changai/api/v2/assets/metaschema_clean_v2.json index 53d2f7c..6ae2285 100644 --- a/changai/changai/api/v2/assets/metaschema_clean_v2.json +++ b/changai/changai/api/v2/assets/metaschema_clean_v2.json @@ -2975,6 +2975,7 @@ "language": "TEXT", "customer_details": "TEXT", "customer_home_address_test": "TEXT", + "test_field": "TEXT", "customer_primary_address": "TEXT", "primary_address": "TEXT", "customer_primary_contact": "TEXT", diff --git a/changai/changai/api/v2/auto_gen_api.py b/changai/changai/api/v2/auto_gen_api.py index 5767a25..d4df8ca 100644 --- a/changai/changai/api/v2/auto_gen_api.py +++ b/changai/changai/api/v2/auto_gen_api.py @@ -587,10 +587,6 @@ def fill_missing_field_descriptions( meta["last_desc_sync"] = str(now_datetime()) _save_schema_checkpoint(meta, tables_blocks) - # Commit checkpoint immediately so schema sync metadata is persisted - # even if later background processing fails. - frappe.db.commit() # nosemgrep: frappe-semgrep-rules.rules.frappe-manual-commit - return { "ok": True, "tables_updated": updated_tables, @@ -658,8 +654,6 @@ def sync_tables_and_schema_smart() -> Dict[str, Any]: except Exception as e: return {"ok": False, "error": str(e)} - frappe.db.commit() # nosemgrep: frappe-manual-commit - return { "ok": True, "changed_tables": len(changed_tables), @@ -853,8 +847,6 @@ def _process_pending_field_batches( field["description"] = desc_map[field_name].strip() updated_fields += 1 updated_in_table += 1 - # Required checkpoint commit: this long-running schema enrichment job calls external APIs and must persist partial progress to avoid losing completed batch updates on failure/retry. - frappe.db.commit() # nosemgrep return { "updated_in_table": updated_in_table, "updated_fields": updated_fields, diff --git a/changai/changai/api/v2/create_qr.py b/changai/changai/api/v2/create_qr.py index 5b08ddd..1639c28 100644 --- a/changai/changai/api/v2/create_qr.py +++ b/changai/changai/api/v2/create_qr.py @@ -11,7 +11,6 @@ from base64 import b64encode import io import os -@frappe.whitelist() def create_qr_code(doc,method): """Create QR Code after inserting Employee""" if not hasattr(doc, 'custom_qr_code'): diff --git a/changai/changai/api/v2/format_output.py b/changai/changai/api/v2/format_output.py index c0f2562..90f485e 100644 --- a/changai/changai/api/v2/format_output.py +++ b/changai/changai/api/v2/format_output.py @@ -591,16 +591,6 @@ def local_format(sql: str, sample_rows: List[Dict[str, Any]]): result = format_sql_response(sql, row_count, sample_rows) return result -def format_data_conversationally(user_data: Any) -> str: - # Safe: CONVERSATION_TEMPLATE is a hardcoded internal template string. - # User SQL result is passed only as data context, not as template source. - # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti - return render_template( - CONVERSATION_TEMPLATE, # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti - - {"data": user_data} - ) - def format_data(qstn: str, sql_data: Any) -> Dict[str, str]: if isinstance(sql_data, (dict, list)): db_result_json = json.dumps(sql_data, ensure_ascii=False, default=str) diff --git a/changai/changai/api/v2/fvs_stores/erpnext/report_fvs/index.faiss b/changai/changai/api/v2/fvs_stores/erpnext/report_fvs/index.faiss index 1135cf5808f987950fbec84b13b05e9cb370d10c..8645b4650d181c4e4041c3dea4c56c999aeea8e7 100644 GIT binary patch delta 9067 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 N(danK?82yf`m%zTd^_>^*bLe8ztz&+~tNx97=P z;h+EL_RoKGJ9)NYTBBOEYIQ?9)J8$9Z1=s`e>JR|`7N)W!8SxN2tVQn>_Zxwpf7gd zC)A4ltzl`PCyP96Kr#Hz%2-*`#J(ARCwcBt)*dww4eUa5P5Nk7200mi*U*w%8RAn|i^nj4R4X#xXJwIJ z$6VCGE#zZ4`eP(4&UaXyC{Pzx>u??JTMv`qpZXRk^ckzC;Sna~5p(bhiaa8{Hml7r zGvmyLS3d_!_%)1m0K95NB!!g&;?*67<8W{uL01GZz&ZrpWAzfu$}Eih4Btr%MJSb5 z<8cIkg6G|VRk4oM(e`L)tn7@o!S4%vlbSfntVNK`aD7b%zOM zBMv)Wh&M3;7tsk%VTRKkHT*KPgyFh_N89;xcoO9p>op=qVI}?UTW~Lrj>G-EFPg{7 zZd8Ugvl<2aI|G(`Ae`Mg&Pk@lZVcnL`xf3J)x!k1_aR)sbFemTW5b7)HaN&Cf@fmq z9{-=vFRa|dDe)>D;ITHBhb|AWX{_eqbF77tW}^X`V=PBiJ?-SVk2^c1J>i*7-Z5Oo z&v5?_VGYgDKd}Y5S3?Gn4U2RI1~3rU;8VJ)!Dpc1IySb~ws@wAwt^3jj(82pGgsOSa~h4w5qX zv&+RaN5IH$VJ;>bF?~wS$mUfs3h)8!v13>V?wjZ_f4kpm-2d77G^>0RqBk6K`|p)& zv3GT33=18y#U9& zGC#~}DZElMcy(iQZ?oBkIQGJ8S=pA@2(P;fU9bU8?-n>sMqmcsDxd`i42!WICcO}Aa2=M*CzeC+12~H5n1$^agv+oLeQ*VJ@etbK zyu)qN)=Y z6hYiTeK@71%vMR*P)x(ndY}cSpdY-4KJuzL7G@E?g>jmYcZD-;ME3V6e#TEYf{&1e znONl<$4(De5pnho!Sp917cU@!CGhAcors`$n74a+7kh+vcVe>A53?$UQCWKXYa~W- z8}2zAi3qrQMcAuOgUvIK+Hk)Pcm(~;G}N1w_nEDBACGo_+cuITs>3$yQ&@vH(E#?y zYJGtN?h|p=oO0*ZIdn$f!`qmFGf2E)%$&!{DKuZFat+MH`^CF`3ar5bSci#NLPn*5 zhOGLc3uePC{&?U0Z*T5K@SSWlLJB%!4~)Gn{GnSBwEp`ae02kVH^n40A)|W%D{&rs z{R+&vaqRlTe~*r1Wsb(-q}T&1(;2BS;=kZ4u5vfz-RRMF&#Kfxdw9n_YK22~$IN{W zn6-Nu*H^H*)#+ud3gP+oG1;|~tf#>$J6%uV6LU+i$7(&?+lsHl`{;odm;$?Mg?&p| z5%LLR7tPL_KiP|^tUor2{^pwpGrA6E((4$3M-M>`UV|O{9M)na{K;7y?#{}i-Nm!5 z-VVHgVeoBwRmiVyg|RP%oj3^l6^czBbC;h5jboW(SETIYE0Nf_vHu%2uT9tvuV5^F z@FLvVJU@m%VeSUYSQ)u7cx{iKiSu0lUf8NSnTuf_?rX#zxg1L##E=^FNWbF|$-BmB znEBv{=2=$MdYO3~$tT=SlI_V<~`!fdgZ3D;xU-nE!2Z|f>r8-CU_eI;qD*6n)O2} ztimHWg|!Hw=HLG?j|JT~@^!E21e%-sJAtoZII`f3oki@o?|;p(WsPBTZE_sm`XgYv z26P0?;Ys`eD=JNVzUacMHaHB^eidO@O2_Xuk_{Ybfx=Jo6`MaBUbh$~>)Dq31n=mp zq87aoY(gBn&=D75B&HvPpX2XFN3%KvWA;pcKsY*?I0Iw$mb?FnwTzWu_>rk3 zVl5kEJFK5|ErfYm{UUr~6j6I>Z(G0#G$Zc_tMdVzK=(b*zISu|&ITCWI*djI%+jcG zF&B2{AdbMSN5KhLjgQ&sd}7-3cr_Ip;SSyl9pIbL>Wm00BQUckPzI~(o}Xg|g7^ZZ z@CSc+)akLqM&sO?lXGGYv+*)+zz=M9W2fJ5-oPqe$LrQUJcyP3eg%baf)-;BoVA%8 zRh4i4$6;rzSRGiGEx3u6*bD1pozh|a-@=M7MKOk=5$r$#?Aa#R^)^@oAF9^Eo*HM^ zr6qF|cA+WQgp@@^ubZwMomq> zni{jYh2(|2z#_bjy4ZL(EkPFEq3$Iab|n+$e-$3#Wex2hF2V2((M$ToEf09~ zBe)1FZiQ#qHGTlq4b0}1dley>;?d-H)2zJJG)`k#AN$*%eIwO6;yEdZ!|UyX=R5ho z;4BjNO2jC=FN|&*#^Ezq^dDdZtGHri)~l?XXus15?l}T+6v7OgrVAK}6F39j_7s(5 z+9apShR#QCc%SsZd&or#7|RrR-D^~+G&Gl$XE}pb$f&HJcR*Jnt4<%!%GlH4wA#ag zaIZNqs-JKQevGRK-eBd-I$|BL0Z$^`+Gec}o%eV%QH178BIwgqx_T{gkd={Q$DVD>e{@9*Csv;IF51Zh&n^Ax!a9c0&rOiqF z%6=WMEX7vzgacWI-FOK;aNdCLmn&kYx2yy8GP1Ro4{kP$0;xGLX~T#TV; zgD$v^_3-T0@P>C3&Bc-}g~>WfW??xk!Y&kJBU-_D9b-#wL(I;)L=Xo}&rkeJUdRid zJodpJH-m{gGjyPe#$*f}V$QNL|ui-h~ zJl@N+Kz7Gi4#V7y?I=3JGhW1SoInv)6JKeTvtizry8xG9$(@@{aN@3F4$LeAtKo0= zN`l_ngJA4u;8BJ6j$eS^%Xi)y!`Wdz{`i5ik+t_g7-JBJGv(|q#OrWQonhm!ZpP_V zTER-2zq9CE?}9V$Ja>WlkV}4IxNWGV$wwVH?3-{5Ww89mu?Ws!Q)D9#&Y>gp|IMOl zU&g=A;y_+I0zaXqrgKeAE{oAHO8a7Ty)Xf9;3@d2tTJO3t2oTvZhD6Iq-X7iBfbMa zV_69*GDW?k-YQo>-iaQ1?ljCrKX~qP*tffhk3S}7HJvIe=i_=Sx?>MK zx(El5_~aS3U-rrJ&4Dr5SEp+U9(GbQhp@7^wUL5b@EX%$c1Gy+4&rN!gm3UlyRT#A zna+Wcc$T&B%rS8OteR29e*5j$puKDc2W%3o`wZM5km}GNR_kGh;#dPOF%>6cWnWf@ z-OPkM!ciW9Dex9~41V&did3*lg=O?8o7Nmt@Hvhk@o*1YbZ6yl6rv+8;CrmaS@%n~ ze9PeYwnQ74$x_sXXPM17)Tb~NIcDNfw#*W4#4gyrZtzyW2(SAdY~LN&r0?Ln(~CLg zZBrV<>$}sRP!FELpm2XZh~E=ulRk|1KQLD`<7+#BQZ7WTm|ZA5c0 zD>teFR^m9;!x|h#j(Pj2Pml1*xZKB>7Qt9^kc#1$iFe?Sri!*7vU(9#?J$bqQSK7E zb@TU-7Yf72&ULt*Wu1Ygfnw~1T`xc#Y{3RB zLR0iaHuB&-;VgOIMKK-QF$>-|rrjA9#`H_@HNHYkO`Dn;OKI_E!vnpgC!&+Bk2(}y z#;wY*8`h)+#=+(c#|;NC&=mC-K=44WMe2ysS^&tv-`rcp2anI zb_n0#QTXxkeAviRU^R)#7QjrGAo0t}&^T7f`Se;3VGEoxC#pK?eqG=m?zI5};gMGG6uM%fcSL>} zD|^%o|N5M<=IdZCVR%iu>`cUAl^4OB7osu7z&Z{_6fN-#oC%*TR;?$NVLj#PhcJH#4gPC3cJ#pCqYls|3_>2Pki%nt8{#&0Ad7LW$Z{`-dIIdGBWNvl z!df_1AL1IakhpR9+uv4{EcIw2MAVy>&;`?J!>R95c45QTUXBX9w0(Hy)Fy-^u(W}Kfx@bchr^^uAOXHHi)%xU?5`v;a@ diff --git a/changai/changai/api/v2/fvs_stores/erpnext/table_fvs/index.faiss b/changai/changai/api/v2/fvs_stores/erpnext/table_fvs/index.faiss index 34b68eceb8938c1aab7b1ea8410198243497ec51..8734fe8452c5956bd62c7a4a646451d37aecb28f 100644 GIT binary patch delta 30235 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 delta 31576 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

T~1tmdi;t1$mUw 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 HzTW=;E4$L$ diff --git a/changai/changai/api/v2/gdoc_ai.py b/changai/changai/api/v2/gdoc_ai.py deleted file mode 100644 index e69de29..0000000 diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index d366ddb..6496110 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -51,7 +51,6 @@ _error_response ) from changai.changai.api.v2.format_output import ( - format_data_conversationally, format_data ) diff --git a/changai/hooks.py b/changai/hooks.py index b178468..4d30b11 100644 --- a/changai/hooks.py +++ b/changai/hooks.py @@ -175,6 +175,7 @@ "on_update": "changai.changai.api.v2.create_qr.create_qr_code", } + # "File":{"after_insert":"changai.changai.api.v2.gdoc_ai.on_file_upload"} # # "*": { # # "on_update": "method", # # "on_cancel": "method",