flexbiz-server 12.7.8 → 12.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1154) hide show
  1. package/package.json +6 -6
  2. package/server/agents/agents.js +1 -1
  3. package/server/agents/ai_memory_manager.js +1 -6
  4. package/server/agents/ceoAgent.js +1 -43
  5. package/server/agents/chatController.js +1 -6
  6. package/server/agents/cskhAgent.js +1 -43
  7. package/server/agents/departmentAgent.js +1 -0
  8. package/server/agents/departmentAgents.js +1 -0
  9. package/server/agents/flowAgent.js +1 -43
  10. package/server/agents/loadTenantModel.js +1 -0
  11. package/server/agents/prompts/ceo.js +1 -2
  12. package/server/agents/prompts/cskh.js +1 -0
  13. package/server/agents/prompts/flow.js +1 -2
  14. package/server/agents/prompts/staff.js +1 -0
  15. package/server/agents/routerAgent.js +1 -0
  16. package/server/agents/specialists.js +1 -0
  17. package/server/agents/staffAgent.js +1 -44
  18. package/server/agents/tools/financeTools.js +1 -57
  19. package/server/agents/tools/flowTools.js +1 -36
  20. package/server/agents/tools/kpiTools.js +1 -104
  21. package/server/agents/tools/masterDataTools.js +1 -74
  22. package/server/agents/tools/okrTools.js +1 -21
  23. package/server/agents/tools/ragTools.js +1 -21
  24. package/server/agents/tools/reportTools.js +1 -43
  25. package/server/agents/tools/staffTools.js +1 -13
  26. package/server/agents/tools/stockTools.js +1 -41
  27. package/server/agents/tools/systemTools.js +1 -52
  28. package/server/agents/tools/taskTools.js +1 -23
  29. package/server/agents/tools/utils.js +1 -57
  30. package/server/app.js +1 -23
  31. package/server/auths/authMiddleware.js +1 -3
  32. package/server/auths/bearer.js +1 -3
  33. package/server/auths/facebook.js +1 -12
  34. package/server/auths/google.js +1 -13
  35. package/server/auths/joinApp.js +1 -0
  36. package/server/auths/local.js +1 -67
  37. package/server/auths/oauthCommon.js +1 -0
  38. package/server/auths/rateLimiterMiddleware.js +1 -11
  39. package/server/cluster.js +1 -1
  40. package/server/controllers/controller.js +1 -129
  41. package/server/controllers/controllerRPT.js +1 -38
  42. package/server/controllers/controllerUtils.js +1 -72
  43. package/server/controllers/createHandler.js +1 -35
  44. package/server/controllers/createRouteHandler.js +1 -4
  45. package/server/controllers/deleteHandler.js +1 -11
  46. package/server/controllers/deleteManyHandler.js +1 -2
  47. package/server/controllers/exportHandler.js +1 -19
  48. package/server/controllers/findHandler.js +1 -80
  49. package/server/controllers/handlers.js +1 -3
  50. package/server/controllers/historyHandler.js +1 -8
  51. package/server/controllers/importFromExcelHandler.js +1 -17
  52. package/server/controllers/importFromGsHandler.js +1 -10
  53. package/server/controllers/importFromJsonHandler.js +1 -6
  54. package/server/controllers/importHandler.js +1 -26
  55. package/server/controllers/logHandler.js +1 -5
  56. package/server/controllers/rptCreateRouteHandler.js +1 -4
  57. package/server/controllers/rptExcelHandler.js +1 -45
  58. package/server/controllers/rptHandler.js +1 -16
  59. package/server/controllers/updateBookHandler.js +1 -11
  60. package/server/controllers/updateFieldHandler.js +1 -12
  61. package/server/controllers/updateHandler.js +1 -38
  62. package/server/controllers/updateKeyHandler.js +1 -14
  63. package/server/controllers/viewHandler.js +1 -13
  64. package/server/data/sys/listinfo.js +93 -93
  65. package/server/data/sys/menuinfo.js +1 -24
  66. package/server/data/sys/moduleinfo.js +520 -9000
  67. package/server/data/sys/reportinfo.js +10 -10
  68. package/server/flow/FlowCluster.js +1 -0
  69. package/server/flow/FlowEngine.js +1 -68
  70. package/server/flow/WebhookManager.js +1 -26
  71. package/server/flow/handlers.js +1 -3
  72. package/server/flow/nodes/aiAnalysis.js +1 -9
  73. package/server/flow/nodes/checkAction.js +1 -7
  74. package/server/flow/nodes/customer.js +1 -15
  75. package/server/flow/nodes/data.js +1 -17
  76. package/server/flow/nodes/debug.js +1 -2
  77. package/server/flow/nodes/delay.js +1 -3
  78. package/server/flow/nodes/email.js +1 -8
  79. package/server/flow/nodes/event.js +1 -12
  80. package/server/flow/nodes/facebook.js +1 -3
  81. package/server/flow/nodes/facebookConversations.js +1 -5
  82. package/server/flow/nodes/facebookCreatePost.js +1 -10
  83. package/server/flow/nodes/facebookSendMessage.js +1 -12
  84. package/server/flow/nodes/forEachItem.js +1 -8
  85. package/server/flow/nodes/function.js +1 -4
  86. package/server/flow/nodes/httprequest.js +1 -7
  87. package/server/flow/nodes/inject.js +1 -14
  88. package/server/flow/nodes/pushNotification.js +1 -5
  89. package/server/flow/nodes/report.js +1 -6
  90. package/server/flow/nodes/saveData.js +1 -2
  91. package/server/flow/nodes/switch.js +1 -20
  92. package/server/flow/nodes/userform.js +1 -28
  93. package/server/flow/nodes/webhook.js +1 -1
  94. package/server/flow/nodes/zaloSendMessage.js +1 -4
  95. package/server/flow/utils.js +1 -67
  96. package/server/global.js +1 -18
  97. package/server/libs/WorkerPool.js +1 -4
  98. package/server/libs/WorkerStaticPool.js +1 -20
  99. package/server/libs/assbonus.js +1 -7
  100. package/server/libs/asyncCompat.js +1 -10
  101. package/server/libs/backup.js +1 -2
  102. package/server/libs/blockchainconnect.js +1 -12
  103. package/server/libs/cdpsdiem.js +1 -5
  104. package/server/libs/cdpsdt.js +1 -7
  105. package/server/libs/cdpskh.js +1 -15
  106. package/server/libs/cdpsnphep.js +1 -6
  107. package/server/libs/cdpstk.js +1 -11
  108. package/server/libs/ckcn.js +1 -14
  109. package/server/libs/ckdiem.js +1 -5
  110. package/server/libs/ckdt.js +1 -6
  111. package/server/libs/cknphep.js +1 -6
  112. package/server/libs/cktk.js +1 -4
  113. package/server/libs/cktt.js +1 -10
  114. package/server/libs/ckvt.js +1 -14
  115. package/server/libs/ckvtcapphat.js +1 -6
  116. package/server/libs/ckvtnpp.js +1 -9
  117. package/server/libs/ckvttt.js +1 -12
  118. package/server/libs/createSocaitheongay.js +1 -9
  119. package/server/libs/ctdiem.js +1 -5
  120. package/server/libs/ctvt.js +1 -8
  121. package/server/libs/ctvtnpp.js +1 -8
  122. package/server/libs/ctvttt.js +1 -7
  123. package/server/libs/databanle.js +1 -17
  124. package/server/libs/databanlenpp.js +1 -8
  125. package/server/libs/databanletheongay.js +1 -25
  126. package/server/libs/dkcn.js +1 -14
  127. package/server/libs/dkdiem.js +1 -5
  128. package/server/libs/dkdt.js +1 -6
  129. package/server/libs/dknphep.js +1 -7
  130. package/server/libs/dktk.js +1 -5
  131. package/server/libs/dktt.js +1 -10
  132. package/server/libs/dkvt.js +1 -12
  133. package/server/libs/dkvtnpp.js +1 -8
  134. package/server/libs/dkvttt.js +1 -8
  135. package/server/libs/dncn.js +1 -6
  136. package/server/libs/dntk.js +1 -4
  137. package/server/libs/dntt.js +1 -6
  138. package/server/libs/docs.js +1 -672
  139. package/server/libs/dstkcn.js +1 -1
  140. package/server/libs/dstktt.js +1 -1
  141. package/server/libs/dtbanletheonpp.js +1 -17
  142. package/server/libs/dtbanletheosp.js +1 -16
  143. package/server/libs/dtbanletheospnpp.js +1 -15
  144. package/server/libs/email.js +1 -3
  145. package/server/libs/excel.js +1 -3
  146. package/server/libs/excelHelper.js +1 -10
  147. package/server/libs/executiveDashboard.js +1 -8
  148. package/server/libs/fifo_dk.js +1 -8
  149. package/server/libs/fifo_group.js +1 -4
  150. package/server/libs/fifo_trace_query.js +1 -12
  151. package/server/libs/getGiaban.js +1 -59
  152. package/server/libs/getGiabanAsync.js +1 -1
  153. package/server/libs/getNotifies.js +1 -1
  154. package/server/libs/htmlReport.js +1 -9
  155. package/server/libs/initDatabase.js +1 -9
  156. package/server/libs/invoiceEasy.js +1 -108
  157. package/server/libs/invoiceViettel.js +1 -25
  158. package/server/libs/invoiceVnpt.js +1 -22
  159. package/server/libs/joinData.js +1 -44
  160. package/server/libs/kpistatus.js +1 -47
  161. package/server/libs/kqchamcong.js +1 -12
  162. package/server/libs/kqhdkd.js +1 -8
  163. package/server/libs/load-template.js +1 -3
  164. package/server/libs/logger.js +1 -3
  165. package/server/libs/mailmanagement.js +1 -13
  166. package/server/libs/mongooseDeletePost.js +1 -6
  167. package/server/libs/mongooseLeanId.js +1 -1
  168. package/server/libs/mongoosePatch.js +1 -14
  169. package/server/libs/mongooseSecurityPlugin.js +1 -16
  170. package/server/libs/onepay-payment.js +1 -4
  171. package/server/libs/optimizeBookkeeping.js +1 -22
  172. package/server/libs/parse-template.js +1 -5
  173. package/server/libs/permission.js +1 -58
  174. package/server/libs/phanbokh.js +1 -3
  175. package/server/libs/post-book.js +1 -22
  176. package/server/libs/post-socai.js +1 -25
  177. package/server/libs/post-sokho.js +1 -26
  178. package/server/libs/prototypes.js +1 -24
  179. package/server/libs/psdt.js +1 -1
  180. package/server/libs/pskh.js +1 -1
  181. package/server/libs/pstk.js +1 -1
  182. package/server/libs/queryBuilding.js +1 -15
  183. package/server/libs/redis-cache.js +1 -34
  184. package/server/libs/restore.js +1 -1
  185. package/server/libs/sctcnkh.js +1 -20
  186. package/server/libs/sessionContext.js +2 -14
  187. package/server/libs/socaitk.js +1 -9
  188. package/server/libs/textReport.js +1 -5
  189. package/server/libs/thnxt.js +1 -17
  190. package/server/libs/thnxtnpp.js +1 -9
  191. package/server/libs/thnxttt.js +1 -9
  192. package/server/libs/tinhGt.js +1 -10
  193. package/server/libs/tinhGtCapnhatPNK.js +1 -7
  194. package/server/libs/tinhGtPhanboHeSo.js +1 -12
  195. package/server/libs/tinhGtPhanboSltp.js +1 -10
  196. package/server/libs/tinhGtPhanboYtcp.js +1 -11
  197. package/server/libs/tinhGtSltk.js +1 -9
  198. package/server/libs/tinhGtThcppstk.js +1 -10
  199. package/server/libs/tinhGtTrucTiep.js +1 -7
  200. package/server/libs/tinhGtXoa.js +1 -3
  201. package/server/libs/tinhgia1vt_fifo.js +1 -22
  202. package/server/libs/tinhgiafifo.js +1 -28
  203. package/server/libs/tinhgiatb.js +1 -30
  204. package/server/libs/tinhgiatb1vt.js +1 -7
  205. package/server/libs/tinhhoahong.js +1 -64
  206. package/server/libs/tinhhoahongnpp.js +1 -46
  207. package/server/libs/tinhkhauhao1ts.js +1 -12
  208. package/server/libs/tinhkhauhaots.js +1 -8
  209. package/server/libs/tuoinophaithu.js +1 -11
  210. package/server/libs/tuoinophaitra.js +1 -12
  211. package/server/libs/utils.js +1 -121
  212. package/server/libs/validate.js +1 -4
  213. package/server/libs/validator-acc-cust.js +1 -1
  214. package/server/libs/validator-account.js +1 -4
  215. package/server/libs/validator-vt.js +1 -2
  216. package/server/libs/validator.js +1 -11
  217. package/server/libs/vectorService.js +1 -16
  218. package/server/libs/viCollation.js +1 -4
  219. package/server/libs/vsocai.js +1 -11
  220. package/server/maps-demo/participant.js +18 -0
  221. package/server/models/account.js +1 -7
  222. package/server/models/actionLog.js +1 -2
  223. package/server/models/afflink.js +1 -2
  224. package/server/models/aimemory.js +1 -1
  225. package/server/models/app.js +1 -16
  226. package/server/models/approve.js +1 -95
  227. package/server/models/assabcihandler.js +1 -35
  228. package/server/models/assbank.js +1 -19
  229. package/server/models/assbooking.js +1 -4
  230. package/server/models/assbuy.js +1 -3
  231. package/server/models/asscashwithdraw.js +1 -4
  232. package/server/models/assfindhash.js +1 -2
  233. package/server/models/assinvestment.js +1 -13
  234. package/server/models/assissue.js +1 -2
  235. package/server/models/asskey.js +1 -15
  236. package/server/models/assneedtobuy.js +1 -6
  237. package/server/models/assperiod.js +1 -7
  238. package/server/models/assproduct.js +1 -13
  239. package/server/models/assprofitsharing.js +1 -4
  240. package/server/models/assreceiver.js +1 -2
  241. package/server/models/assrequest.js +1 -10
  242. package/server/models/asssell.js +1 -7
  243. package/server/models/asstransaction.js +1 -3
  244. package/server/models/asstransfer.js +1 -4
  245. package/server/models/assuser_identity.js +1 -4
  246. package/server/models/asswithdraw.js +1 -4
  247. package/server/models/attend.js +1 -2
  248. package/server/models/banggiaban.js +1 -8
  249. package/server/models/bangtinhluong.js +1 -5
  250. package/server/models/base.js +1 -1
  251. package/server/models/bg1.js +1 -9
  252. package/server/models/bg2.js +1 -10
  253. package/server/models/cache.js +1 -3
  254. package/server/models/cacheDataReport.js +1 -2
  255. package/server/models/cacheSessionReport.js +1 -5
  256. package/server/models/calllog.js +1 -4
  257. package/server/models/cart.js +1 -5
  258. package/server/models/cddiem.js +1 -2
  259. package/server/models/cddt.js +1 -3
  260. package/server/models/cdkh.js +1 -5
  261. package/server/models/cdkhtheongay.js +1 -5
  262. package/server/models/cdnphep.js +1 -2
  263. package/server/models/cdtk.js +1 -3
  264. package/server/models/cdtktheongay.js +1 -3
  265. package/server/models/cdvt.js +1 -5
  266. package/server/models/cdvtnpp.js +1 -6
  267. package/server/models/cdvttheongay.js +1 -5
  268. package/server/models/chamcong.js +1 -7
  269. package/server/models/chat_message.js +1 -2
  270. package/server/models/chat_session.js +1 -2
  271. package/server/models/checkin.js +1 -4
  272. package/server/models/checkinactivity.js +1 -3
  273. package/server/models/checkinkpi.js +1 -4
  274. package/server/models/checkinlocation.js +1 -2
  275. package/server/models/chitietluongds.js +1 -12
  276. package/server/models/chitieukpi.js +1 -3
  277. package/server/models/chudethaoluan.js +1 -3
  278. package/server/models/ckgtluong.js +1 -2
  279. package/server/models/colleague.js +1 -2
  280. package/server/models/comment.js +1 -4
  281. package/server/models/congdoansx.js +1 -4
  282. package/server/models/congtacvien.js +1 -4
  283. package/server/models/congthuctinhgiaban.js +1 -8
  284. package/server/models/consultant.js +1 -4
  285. package/server/models/contract.js +1 -6
  286. package/server/models/counter.js +1 -2
  287. package/server/models/csluongtheods.js +1 -3
  288. package/server/models/csphucap.js +1 -2
  289. package/server/models/ctds.js +1 -5
  290. package/server/models/ctds2.js +1 -7
  291. package/server/models/currency.js +1 -3
  292. package/server/models/custom_report.js +1 -1
  293. package/server/models/customer.js +1 -31
  294. package/server/models/customer_care.js +1 -2
  295. package/server/models/data_list_config.js +1 -7
  296. package/server/models/databanle.js +1 -8
  297. package/server/models/datlich.js +1 -4
  298. package/server/models/deal.js +1 -2
  299. package/server/models/dh2.js +1 -20
  300. package/server/models/diagram.js +1 -2
  301. package/server/models/dinhmucsx.js +1 -8
  302. package/server/models/dkhoc.js +1 -6
  303. package/server/models/dknphep.js +1 -2
  304. package/server/models/dmban.js +1 -3
  305. package/server/models/dmbp.js +1 -12
  306. package/server/models/dmca.js +1 -2
  307. package/server/models/dmchietkhau.js +1 -8
  308. package/server/models/dmchietkhauhd.js +1 -19
  309. package/server/models/dmchinhanh.js +1 -2
  310. package/server/models/dmcpmh.js +1 -2
  311. package/server/models/dmdiemthuong.js +1 -3
  312. package/server/models/dmdoi.js +1 -4
  313. package/server/models/dmdoituongdanhgia.js +1 -2
  314. package/server/models/dmdt.js +1 -8
  315. package/server/models/dmdvt.js +1 -3
  316. package/server/models/dmgiaban.js +1 -9
  317. package/server/models/dmgiamua.js +1 -5
  318. package/server/models/dmgiathitruong.js +1 -5
  319. package/server/models/dmgiathitruong_ngay.js +1 -2
  320. package/server/models/dmgiathitruong_theodoi.js +1 -2
  321. package/server/models/dmhoahonghd.js +1 -8
  322. package/server/models/dmhoahongnpp.js +1 -8
  323. package/server/models/dmkc.js +1 -3
  324. package/server/models/dmkho.js +1 -7
  325. package/server/models/dmkhuyenmai.js +1 -9
  326. package/server/models/dmkhuyenmaihd.js +1 -11
  327. package/server/models/dmletet.js +1 -2
  328. package/server/models/dmlo.js +1 -4
  329. package/server/models/dmloaicong.js +1 -4
  330. package/server/models/dmloaitask.js +1 -2
  331. package/server/models/dmloaits.js +1 -2
  332. package/server/models/dmnckkm.js +1 -4
  333. package/server/models/dmnghiepvu.js +1 -4
  334. package/server/models/dmnguonvon.js +1 -2
  335. package/server/models/dmnhnv.js +1 -4
  336. package/server/models/dmnv.js +1 -17
  337. package/server/models/dmnvt.js +1 -10
  338. package/server/models/dmphi.js +1 -3
  339. package/server/models/dmqct.js +1 -3
  340. package/server/models/dmqddvt.js +1 -3
  341. package/server/models/dmtanggiamts.js +1 -3
  342. package/server/models/dmto.js +1 -4
  343. package/server/models/dmtt.js +1 -6
  344. package/server/models/dmvt.js +1 -17
  345. package/server/models/dmyt.js +1 -4
  346. package/server/models/dn0.js +1 -13
  347. package/server/models/dnm.js +1 -11
  348. package/server/models/dokho.js +1 -2
  349. package/server/models/domain.js +1 -2
  350. package/server/models/dvcs.js +1 -3
  351. package/server/models/ecomcategories.js +1 -3
  352. package/server/models/ecomcategories_cty.js +1 -3
  353. package/server/models/ecomproductlines.js +1 -2
  354. package/server/models/ecompromotion_flashsales.js +1 -2
  355. package/server/models/ecompromotion_freeships.js +1 -2
  356. package/server/models/email.js +1 -2
  357. package/server/models/endpoint.js +1 -1
  358. package/server/models/events.js +1 -3
  359. package/server/models/evoucher.js +1 -5
  360. package/server/models/experiencejourney.js +1 -2
  361. package/server/models/experiencejourneydata.js +1 -4
  362. package/server/models/experiencejourneypersona.js +1 -3
  363. package/server/models/experiencejourneystage.js +1 -2
  364. package/server/models/exportexceltemplate.js +1 -2
  365. package/server/models/fbconversation.js +1 -15
  366. package/server/models/fbmessage.js +1 -2
  367. package/server/models/fbpage.js +1 -2
  368. package/server/models/fbpost.js +1 -2
  369. package/server/models/fieldright.js +1 -2
  370. package/server/models/fifo_dk.js +1 -2
  371. package/server/models/fifo_lot.js +1 -3
  372. package/server/models/fifo_trace.js +1 -4
  373. package/server/models/file.js +1 -4
  374. package/server/models/filechunk.js +1 -2
  375. package/server/models/financialroadmap.js +1 -3
  376. package/server/models/flow.js +1 -2
  377. package/server/models/flowdata.js +1 -3
  378. package/server/models/flowpending.js +1 -2
  379. package/server/models/folder.js +1 -4
  380. package/server/models/follow.js +1 -2
  381. package/server/models/forminfo.js +1 -5
  382. package/server/models/giaoca.js +1 -3
  383. package/server/models/giatb.js +1 -3
  384. package/server/models/group.js +1 -9
  385. package/server/models/gt_ctgt.js +1 -4
  386. package/server/models/gt_hspb.js +1 -3
  387. package/server/models/gt_sltk.js +1 -3
  388. package/server/models/gt_thcppstk.js +1 -3
  389. package/server/models/hanmucton.js +1 -4
  390. package/server/models/hd1.js +1 -11
  391. package/server/models/hd2.js +1 -26
  392. package/server/models/hd3.js +1 -17
  393. package/server/models/hd4.js +1 -13
  394. package/server/models/hd7.js +1 -17
  395. package/server/models/hd8.js +1 -12
  396. package/server/models/hde.js +1 -11
  397. package/server/models/hmcn.js +1 -3
  398. package/server/models/hmcnct.js +1 -2
  399. package/server/models/hspbts.js +1 -4
  400. package/server/models/htl.js +1 -13
  401. package/server/models/importexceltemplate.js +1 -2
  402. package/server/models/introducebonus.js +1 -4
  403. package/server/models/introducecode.js +1 -3
  404. package/server/models/introducer.js +1 -4
  405. package/server/models/kbbtpb.js +1 -7
  406. package/server/models/kbmPttct.js +1 -4
  407. package/server/models/kbmTkgtgt.js +1 -5
  408. package/server/models/kbm_bcdkt_old.js +1 -4
  409. package/server/models/kbm_kqhdkd_old.js +1 -3
  410. package/server/models/kbm_lcttgt_old.js +1 -5
  411. package/server/models/kbm_lctttt_old.js +1 -4
  412. package/server/models/kbm_pttct_old.js +1 -4
  413. package/server/models/kbm_tkgtgt_old.js +1 -5
  414. package/server/models/kbmbcdkt.js +1 -4
  415. package/server/models/kbmbcqt.js +1 -4
  416. package/server/models/kbmkqhdkd.js +1 -3
  417. package/server/models/kbmlcttgt.js +1 -6
  418. package/server/models/kbmlctttt.js +1 -4
  419. package/server/models/kbmtmbctc.js +1 -4
  420. package/server/models/kehoachdtcp.js +1 -3
  421. package/server/models/kehoachmh.js +1 -8
  422. package/server/models/keyresult.js +1 -7
  423. package/server/models/khunghangthanhvien.js +1 -3
  424. package/server/models/label.js +1 -2
  425. package/server/models/labelinfo.js +1 -2
  426. package/server/models/lenhcapphat.js +1 -8
  427. package/server/models/lenhsx.js +1 -8
  428. package/server/models/lienhe.js +1 -4
  429. package/server/models/like_module.js +1 -2
  430. package/server/models/link.js +1 -2
  431. package/server/models/listinfo_old.js +1 -124
  432. package/server/models/loaidiem.js +1 -2
  433. package/server/models/lock.js +1 -2
  434. package/server/models/log.js +1 -8
  435. package/server/models/mailaccount.js +1 -3
  436. package/server/models/mailgroup.js +1 -3
  437. package/server/models/mailreceived.js +1 -2
  438. package/server/models/mailsent.js +1 -2
  439. package/server/models/mailtemplate.js +1 -2
  440. package/server/models/maudanhgia.js +1 -2
  441. package/server/models/menuinfo.js +1 -2
  442. package/server/models/message.js +1 -8
  443. package/server/models/message2.js +1 -4
  444. package/server/models/message2setting.js +1 -3
  445. package/server/models/moduleinfo.js +1 -4
  446. package/server/models/momo.js +1 -18
  447. package/server/models/news.js +1 -3
  448. package/server/models/newsfeed.js +1 -4
  449. package/server/models/note.js +1 -2
  450. package/server/models/notification.js +1 -8
  451. package/server/models/okr.js +1 -4
  452. package/server/models/okrdiagram.js +1 -3
  453. package/server/models/onepay.js +1 -24
  454. package/server/models/opportunity.js +1 -4
  455. package/server/models/options.js +1 -2
  456. package/server/models/originimportid.js +1 -1
  457. package/server/models/otp.js +1 -1
  458. package/server/models/parameter.js +1 -2
  459. package/server/models/participant.js +1 -21
  460. package/server/models/partner.js +1 -1
  461. package/server/models/payload.js +1 -1
  462. package/server/models/pbl.js +1 -16
  463. package/server/models/pc0.js +1 -13
  464. package/server/models/pc1.js +1 -14
  465. package/server/models/pc2.js +1 -13
  466. package/server/models/pc3.js +1 -13
  467. package/server/models/pc5.js +1 -8
  468. package/server/models/pc6.js +1 -14
  469. package/server/models/pcl.js +1 -6
  470. package/server/models/pdn.js +1 -9
  471. package/server/models/pdx.js +1 -9
  472. package/server/models/pgh.js +1 -5
  473. package/server/models/phieudanhgia.js +1 -3
  474. package/server/models/pht.js +1 -8
  475. package/server/models/phucap.js +1 -4
  476. package/server/models/pkc.js +1 -6
  477. package/server/models/pkh.js +1 -6
  478. package/server/models/pkk.js +1 -10
  479. package/server/models/pkt.js +1 -12
  480. package/server/models/pn1.js +1 -18
  481. package/server/models/pn2.js +1 -12
  482. package/server/models/pn3.js +1 -13
  483. package/server/models/pn5.js +1 -14
  484. package/server/models/pn6.js +1 -14
  485. package/server/models/pn9.js +1 -17
  486. package/server/models/pnc.js +1 -9
  487. package/server/models/pnh.js +1 -11
  488. package/server/models/pnk.js +1 -10
  489. package/server/models/po1.js +1 -19
  490. package/server/models/ppb.js +1 -6
  491. package/server/models/productcode.js +1 -2
  492. package/server/models/profile.js +1 -4
  493. package/server/models/pt1.js +1 -12
  494. package/server/models/pt5.js +1 -8
  495. package/server/models/ptl.js +1 -5
  496. package/server/models/ptthanhtoan.js +1 -6
  497. package/server/models/purchase_contract.js +1 -17
  498. package/server/models/pxc.js +1 -9
  499. package/server/models/pxh.js +1 -11
  500. package/server/models/pxk.js +1 -9
  501. package/server/models/qts.js +1 -14
  502. package/server/models/qts_dieuchinh.js +1 -3
  503. package/server/models/qts_dieuchuyen.js +1 -4
  504. package/server/models/quanhuyen.js +1 -2
  505. package/server/models/reason.js +1 -2
  506. package/server/models/receivedinvoice.js +1 -2
  507. package/server/models/reportinfo.js +1 -5
  508. package/server/models/right.js +1 -4
  509. package/server/models/rpt.js +1 -2
  510. package/server/models/rptform.js +1 -3
  511. package/server/models/rptobject.js +1 -2
  512. package/server/models/sale_contract.js +1 -9
  513. package/server/models/schedule.js +1 -18
  514. package/server/models/schedule_log.js +1 -2
  515. package/server/models/shipbook.js +1 -12
  516. package/server/models/shortcut.js +1 -2
  517. package/server/models/smsaccount.js +1 -10
  518. package/server/models/smssend.js +1 -2
  519. package/server/models/so1.js +1 -22
  520. package/server/models/so5.js +1 -15
  521. package/server/models/so9.js +1 -19
  522. package/server/models/socai.js +1 -28
  523. package/server/models/socainpp.js +1 -18
  524. package/server/models/socaitc.js +1 -6
  525. package/server/models/socaitmp.js +1 -16
  526. package/server/models/socaitt.js +1 -4
  527. package/server/models/sodiemthuong.js +1 -4
  528. package/server/models/sokho.js +1 -27
  529. package/server/models/sokhocapphat.js +1 -18
  530. package/server/models/sokhokhongton.js +1 -19
  531. package/server/models/sokhonpp.js +1 -19
  532. package/server/models/sokhotc.js +1 -8
  533. package/server/models/sokhott.js +1 -18
  534. package/server/models/sophanbokh.js +1 -3
  535. package/server/models/sosanxuat.js +1 -5
  536. package/server/models/sotinhkh.js +1 -2
  537. package/server/models/spdd_ck.js +1 -3
  538. package/server/models/spdd_dk.js +1 -3
  539. package/server/models/step.js +1 -2
  540. package/server/models/strategicdiagram.js +1 -3
  541. package/server/models/strategicgoal.js +1 -4
  542. package/server/models/strategickpi.js +1 -6
  543. package/server/models/strategicobjective.js +1 -5
  544. package/server/models/strategicplan.js +1 -5
  545. package/server/models/subscribe.js +1 -2
  546. package/server/models/support.js +1 -2
  547. package/server/models/synctime.js +1 -2
  548. package/server/models/sys_job_queue_book_keeping.js +1 -2
  549. package/server/models/sysconfig.js +1 -2
  550. package/server/models/sysgroup.js +1 -2
  551. package/server/models/tableinfo.js +1 -3
  552. package/server/models/task.js +1 -9
  553. package/server/models/tc.js +1 -2
  554. package/server/models/tdttco.js +1 -9
  555. package/server/models/tdttco_tt.js +1 -5
  556. package/server/models/tdttno.js +1 -9
  557. package/server/models/tdttno_tt.js +1 -5
  558. package/server/models/templaterpt.js +1 -2
  559. package/server/models/templatestore.js +1 -3
  560. package/server/models/templatevoucher.js +1 -3
  561. package/server/models/tinhthanh.js +1 -2
  562. package/server/models/tokens.js +1 -3
  563. package/server/models/tontucthoi.js +1 -9
  564. package/server/models/trangthai.js +1 -4
  565. package/server/models/trangthaiapp.js +1 -4
  566. package/server/models/transaction.js +1 -16
  567. package/server/models/trialinfo.js +1 -2
  568. package/server/models/user.js +1 -40
  569. package/server/models/usergroup.js +1 -7
  570. package/server/models/vanchuyen.js +1 -12
  571. package/server/models/vat.js +1 -3
  572. package/server/models/vatra.js +1 -6
  573. package/server/models/vatvao.js +1 -6
  574. package/server/models/versioninfo.js +1 -2
  575. package/server/models/vietqrbanks.js +1 -2
  576. package/server/models/vsocai.js +1 -6
  577. package/server/models/wallet.js +1 -8
  578. package/server/models/warranty.js +1 -3
  579. package/server/models/warrantyclaim.js +1 -2
  580. package/server/models/warrantypolicy.js +1 -1
  581. package/server/models/workflow.js +1 -4
  582. package/server/models/xaphuong.js +1 -2
  583. package/server/models/xhd.js +1 -10
  584. package/server/models/ytdd_ck.js +1 -4
  585. package/server/models/ytdd_dk.js +1 -4
  586. package/server/models/zalo.js +1 -17
  587. package/server/modules/bot/webhook.js +1 -0
  588. package/server/modules/lists/bg-cddiem.js +1 -6
  589. package/server/modules/lists/bg-cddt.js +1 -7
  590. package/server/modules/lists/bg-cdkh.js +1 -11
  591. package/server/modules/lists/bg-cdnphep.js +1 -6
  592. package/server/modules/lists/bg-cdtk.js +1 -9
  593. package/server/modules/lists/bg-cdvt.js +1 -8
  594. package/server/modules/lists/bg-cdvtnpp.js +1 -8
  595. package/server/modules/lists/bg-fifo_dk.js +1 -8
  596. package/server/modules/lists/ls-account.js +1 -4
  597. package/server/modules/lists/ls-afflink.js +1 -3
  598. package/server/modules/lists/ls-approve.js +1 -5
  599. package/server/modules/lists/ls-assbank.js +1 -3
  600. package/server/modules/lists/ls-asscashwithdraw.js +1 -8
  601. package/server/modules/lists/ls-assissue.js +1 -3
  602. package/server/modules/lists/ls-asskey.js +1 -41
  603. package/server/modules/lists/ls-assreceiver.js +1 -3
  604. package/server/modules/lists/ls-assrequest.js +1 -4
  605. package/server/modules/lists/ls-asstransaction.js +1 -3
  606. package/server/modules/lists/ls-asstransfer.js +1 -3
  607. package/server/modules/lists/ls-assuser_identity.js +1 -1
  608. package/server/modules/lists/ls-bangtinhluong.js +1 -2
  609. package/server/modules/lists/ls-calllog.js +1 -4
  610. package/server/modules/lists/ls-cart.js +1 -14
  611. package/server/modules/lists/ls-chamcong.js +1 -3
  612. package/server/modules/lists/ls-chat_session.js +1 -5
  613. package/server/modules/lists/ls-checkin.js +1 -24
  614. package/server/modules/lists/ls-checkinactivity.js +1 -8
  615. package/server/modules/lists/ls-checkinkpi.js +1 -3
  616. package/server/modules/lists/ls-checkinlocation.js +1 -1
  617. package/server/modules/lists/ls-chitietluongds.js +1 -4
  618. package/server/modules/lists/ls-chitieukpi.js +1 -1
  619. package/server/modules/lists/ls-chudethaoluan.js +1 -1
  620. package/server/modules/lists/ls-ckgtluong.js +1 -1
  621. package/server/modules/lists/ls-comment.js +1 -9
  622. package/server/modules/lists/ls-congdoansx.js +1 -3
  623. package/server/modules/lists/ls-congtacvien.js +1 -5
  624. package/server/modules/lists/ls-consultant.js +1 -2
  625. package/server/modules/lists/ls-contract.js +1 -7
  626. package/server/modules/lists/ls-csluongtheods.js +1 -1
  627. package/server/modules/lists/ls-csphucap.js +1 -1
  628. package/server/modules/lists/ls-ctds.js +1 -4
  629. package/server/modules/lists/ls-ctds2.js +1 -4
  630. package/server/modules/lists/ls-currency.js +1 -1
  631. package/server/modules/lists/ls-customer.js +1 -22
  632. package/server/modules/lists/ls-customer_care.js +1 -1
  633. package/server/modules/lists/ls-datlich.js +1 -9
  634. package/server/modules/lists/ls-dckhauhaots.js +1 -3
  635. package/server/modules/lists/ls-deal.js +1 -3
  636. package/server/modules/lists/ls-diagram.js +1 -1
  637. package/server/modules/lists/ls-dkhoc.js +1 -6
  638. package/server/modules/lists/ls-dknphep.js +1 -1
  639. package/server/modules/lists/ls-dmban.js +1 -4
  640. package/server/modules/lists/ls-dmbp.js +1 -7
  641. package/server/modules/lists/ls-dmca.js +1 -1
  642. package/server/modules/lists/ls-dmchietkhau.js +1 -19
  643. package/server/modules/lists/ls-dmchietkhauhd.js +1 -4
  644. package/server/modules/lists/ls-dmchinhanh.js +1 -1
  645. package/server/modules/lists/ls-dmchucvu.js +1 -2
  646. package/server/modules/lists/ls-dmcpmh.js +1 -1
  647. package/server/modules/lists/ls-dmdiemthuong.js +1 -4
  648. package/server/modules/lists/ls-dmdoi.js +1 -4
  649. package/server/modules/lists/ls-dmdoituongdanhgia.js +1 -1
  650. package/server/modules/lists/ls-dmdt.js +1 -11
  651. package/server/modules/lists/ls-dmdvt.js +1 -2
  652. package/server/modules/lists/ls-dmgiaban.js +1 -4
  653. package/server/modules/lists/ls-dmgiamua.js +1 -4
  654. package/server/modules/lists/ls-dmgiathitruong.js +1 -15
  655. package/server/modules/lists/ls-dmgiathitruong_ngay.js +1 -2
  656. package/server/modules/lists/ls-dmgiathitruong_theodoi.js +1 -1
  657. package/server/modules/lists/ls-dmhoahonghd.js +1 -1
  658. package/server/modules/lists/ls-dmhoahongnpp.js +1 -1
  659. package/server/modules/lists/ls-dmkc.js +1 -3
  660. package/server/modules/lists/ls-dmkho.js +1 -7
  661. package/server/modules/lists/ls-dmkhuyenmai.js +1 -5
  662. package/server/modules/lists/ls-dmkhuyenmaihd.js +1 -3
  663. package/server/modules/lists/ls-dmletet.js +1 -1
  664. package/server/modules/lists/ls-dmlo.js +1 -1
  665. package/server/modules/lists/ls-dmloaicong.js +1 -1
  666. package/server/modules/lists/ls-dmloaits.js +1 -1
  667. package/server/modules/lists/ls-dmnckkm.js +1 -7
  668. package/server/modules/lists/ls-dmnghiepvu.js +1 -1
  669. package/server/modules/lists/ls-dmnguonvon.js +1 -1
  670. package/server/modules/lists/ls-dmnhnv.js +1 -6
  671. package/server/modules/lists/ls-dmnhtask.js +1 -5
  672. package/server/modules/lists/ls-dmnkh.js +1 -6
  673. package/server/modules/lists/ls-dmntt.js +1 -6
  674. package/server/modules/lists/ls-dmnv.js +1 -14
  675. package/server/modules/lists/ls-dmnvt.js +1 -7
  676. package/server/modules/lists/ls-dmphi.js +1 -6
  677. package/server/modules/lists/ls-dmqct.js +1 -2
  678. package/server/modules/lists/ls-dmqddvt.js +1 -3
  679. package/server/modules/lists/ls-dmtanggiamts.js +1 -1
  680. package/server/modules/lists/ls-dmto.js +1 -5
  681. package/server/modules/lists/ls-dmtt.js +1 -7
  682. package/server/modules/lists/ls-dmvt.js +1 -52
  683. package/server/modules/lists/ls-dmyt.js +1 -1
  684. package/server/modules/lists/ls-dokho.js +1 -1
  685. package/server/modules/lists/ls-dvcs.js +1 -1
  686. package/server/modules/lists/ls-ecomcategories.js +1 -5
  687. package/server/modules/lists/ls-ecomcategories_cty.js +1 -5
  688. package/server/modules/lists/ls-email.js +1 -4
  689. package/server/modules/lists/ls-events.js +1 -3
  690. package/server/modules/lists/ls-evoucher.js +1 -3
  691. package/server/modules/lists/ls-experiencejourney.js +1 -1
  692. package/server/modules/lists/ls-experiencejourneydata.js +1 -3
  693. package/server/modules/lists/ls-experiencejourneypersona.js +1 -4
  694. package/server/modules/lists/ls-experiencejourneystage.js +1 -1
  695. package/server/modules/lists/ls-fbconversation.js +1 -2
  696. package/server/modules/lists/ls-fbmessage.js +1 -2
  697. package/server/modules/lists/ls-fbpage.js +1 -11
  698. package/server/modules/lists/ls-fbpost.js +1 -2
  699. package/server/modules/lists/ls-file.js +1 -38
  700. package/server/modules/lists/ls-financialroadmap.js +1 -3
  701. package/server/modules/lists/ls-flow.js +1 -6
  702. package/server/modules/lists/ls-flowdata.js +1 -1
  703. package/server/modules/lists/ls-flowpending.js +1 -3
  704. package/server/modules/lists/ls-folder.js +1 -1
  705. package/server/modules/lists/ls-forminfo.js +1 -1
  706. package/server/modules/lists/ls-giaoca.js +1 -5
  707. package/server/modules/lists/ls-group.js +1 -5
  708. package/server/modules/lists/ls-hmcn.js +1 -2
  709. package/server/modules/lists/ls-hspbts.js +1 -3
  710. package/server/modules/lists/ls-introducebonus.js +1 -4
  711. package/server/modules/lists/ls-introducecode.js +1 -10
  712. package/server/modules/lists/ls-introducer.js +1 -21
  713. package/server/modules/lists/ls-kbm-bcdkt.js +1 -1
  714. package/server/modules/lists/ls-kbm-bcqt.js +1 -5
  715. package/server/modules/lists/ls-kbm-kqhdkd.js +1 -1
  716. package/server/modules/lists/ls-kbm-lcttgt.js +1 -1
  717. package/server/modules/lists/ls-kbm-lctttt.js +1 -1
  718. package/server/modules/lists/ls-kbm-pttct.js +1 -3
  719. package/server/modules/lists/ls-kbm-tkgtgt.js +1 -3
  720. package/server/modules/lists/ls-kbm-tmbctc.js +1 -3
  721. package/server/modules/lists/ls-kehoachdtcp.js +1 -4
  722. package/server/modules/lists/ls-keyresult.js +1 -7
  723. package/server/modules/lists/ls-khunghangthanhvien.js +1 -1
  724. package/server/modules/lists/ls-label.js +1 -1
  725. package/server/modules/lists/ls-lienhe.js +1 -4
  726. package/server/modules/lists/ls-like-module.js +1 -1
  727. package/server/modules/lists/ls-link.js +1 -1
  728. package/server/modules/lists/ls-loaidiem.js +1 -1
  729. package/server/modules/lists/ls-lock.js +1 -1
  730. package/server/modules/lists/ls-log.js +1 -3
  731. package/server/modules/lists/ls-mailaccount.js +1 -5
  732. package/server/modules/lists/ls-mailreceived.js +1 -5
  733. package/server/modules/lists/ls-mailsent.js +1 -4
  734. package/server/modules/lists/ls-mailtemplate.js +1 -4
  735. package/server/modules/lists/ls-maudanhgia.js +1 -3
  736. package/server/modules/lists/ls-message2.js +1 -8
  737. package/server/modules/lists/ls-message2setting.js +1 -5
  738. package/server/modules/lists/ls-news.js +1 -7
  739. package/server/modules/lists/ls-newsfeed.js +1 -4
  740. package/server/modules/lists/ls-note.js +1 -6
  741. package/server/modules/lists/ls-okr.js +1 -5
  742. package/server/modules/lists/ls-okrdiagram.js +1 -1
  743. package/server/modules/lists/ls-opportunity.js +1 -5
  744. package/server/modules/lists/ls-options.js +1 -4
  745. package/server/modules/lists/ls-parameter.js +1 -3
  746. package/server/modules/lists/ls-participant.js +1 -12
  747. package/server/modules/lists/ls-phieudanhgia.js +1 -7
  748. package/server/modules/lists/ls-phucap.js +1 -2
  749. package/server/modules/lists/ls-productcode.js +1 -9
  750. package/server/modules/lists/ls-profile.js +1 -1
  751. package/server/modules/lists/ls-ptthanhtoan.js +1 -3
  752. package/server/modules/lists/ls-qts-dieuchinh.js +1 -2
  753. package/server/modules/lists/ls-qts-dieuchuyen.js +1 -8
  754. package/server/modules/lists/ls-reason.js +1 -1
  755. package/server/modules/lists/ls-rpt.js +1 -5
  756. package/server/modules/lists/ls-rptform.js +1 -3
  757. package/server/modules/lists/ls-shortcut.js +1 -1
  758. package/server/modules/lists/ls-smsaccount.js +1 -1
  759. package/server/modules/lists/ls-smssend.js +1 -3
  760. package/server/modules/lists/ls-sosanxuat.js +1 -4
  761. package/server/modules/lists/ls-step.js +1 -1
  762. package/server/modules/lists/ls-strategicdiagram.js +1 -1
  763. package/server/modules/lists/ls-strategicgoal.js +1 -3
  764. package/server/modules/lists/ls-strategickpi.js +1 -7
  765. package/server/modules/lists/ls-strategicobjective.js +1 -3
  766. package/server/modules/lists/ls-strategicplan.js +1 -6
  767. package/server/modules/lists/ls-support.js +1 -3
  768. package/server/modules/lists/ls-task.js +1 -28
  769. package/server/modules/lists/ls-tc.js +1 -1
  770. package/server/modules/lists/ls-templaterpt.js +1 -5
  771. package/server/modules/lists/ls-templatevoucher.js +1 -1
  772. package/server/modules/lists/ls-tontucthoi.js +1 -3
  773. package/server/modules/lists/ls-trangthaiapp.js +1 -3
  774. package/server/modules/lists/ls-transaction.js +1 -4
  775. package/server/modules/lists/ls-usergroup.js +1 -7
  776. package/server/modules/lists/ls-vat.js +1 -1
  777. package/server/modules/lists/ls-vatra.js +1 -5
  778. package/server/modules/lists/ls-vatvao.js +1 -6
  779. package/server/modules/lists/ls-warranty.js +1 -3
  780. package/server/modules/lists/ls-workflow.js +1 -1
  781. package/server/modules/lists/ls_hanmucton.js +1 -3
  782. package/server/modules/lists/ls_hspb.js +1 -4
  783. package/server/modules/lists/ls_spdd_ck.js +1 -3
  784. package/server/modules/lists/ls_spdd_dk.js +1 -3
  785. package/server/modules/lists/ls_ytdd_ck.js +1 -4
  786. package/server/modules/lists/ls_ytdd_dk.js +1 -4
  787. package/server/modules/lists/sys-attend.js +1 -4
  788. package/server/modules/lists/sys-follow.js +1 -4
  789. package/server/modules/lists/sys-right.js +1 -2
  790. package/server/modules/public/app.js +1 -4
  791. package/server/modules/public/approve.js +1 -37
  792. package/server/modules/public/callin.js +1 -7
  793. package/server/modules/public/comment.js +1 -5
  794. package/server/modules/public/dmnvt.js +1 -4
  795. package/server/modules/public/dmvt.js +1 -9
  796. package/server/modules/public/file.js +1 -11
  797. package/server/modules/public/forminfo.js +1 -1
  798. package/server/modules/public/group.js +1 -4
  799. package/server/modules/public/introducecode.js +1 -1
  800. package/server/modules/public/listinfo.js +1 -1
  801. package/server/modules/public/media-webhook.js +1 -1
  802. package/server/modules/public/partner.js +1 -1
  803. package/server/modules/public/paymentCallback.js +1 -32
  804. package/server/modules/public/province.js +1 -1
  805. package/server/modules/public/ptthanhtoan.js +1 -4
  806. package/server/modules/public/subscribe.js +1 -30
  807. package/server/modules/public/support.js +1 -3
  808. package/server/modules/public/tableinfo.js +1 -1
  809. package/server/modules/public/trialinfo.js +1 -4
  810. package/server/modules/public/versioninfo.js +1 -1
  811. package/server/modules/reports/calc-tinhgiafifo.js +1 -8
  812. package/server/modules/reports/calc-tinhgiatb.js +1 -7
  813. package/server/modules/reports/calc-tinhgiathanh.js +1 -7
  814. package/server/modules/reports/calc-tinhkhauhaots.js +1 -3
  815. package/server/modules/reports/calc-tinhluong.js +1 -68
  816. package/server/modules/reports/rp-assbonus.js +1 -4
  817. package/server/modules/reports/rp-asssupply.js +1 -1
  818. package/server/modules/reports/rp-asstransferlog.js +1 -10
  819. package/server/modules/reports/rp-backup.js +1 -4
  820. package/server/modules/reports/rp-banggiatb.js +1 -3
  821. package/server/modules/reports/rp-bangtinhkhauhao.js +1 -6
  822. package/server/modules/reports/rp-baoCaoFifoKy.js +1 -1
  823. package/server/modules/reports/rp-baocaokhachhang.js +1 -6
  824. package/server/modules/reports/rp-bcdkt.js +1 -11
  825. package/server/modules/reports/rp-bcintroducebonus.js +1 -4
  826. package/server/modules/reports/rp-bckhtiemnang.js +1 -3
  827. package/server/modules/reports/rp-bcqt.js +1 -85
  828. package/server/modules/reports/rp-bkchamcong.js +1 -5
  829. package/server/modules/reports/rp-bkct.js +1 -13
  830. package/server/modules/reports/rp-bkshipbook.js +1 -8
  831. package/server/modules/reports/rp-bkvanchuyen.js +1 -8
  832. package/server/modules/reports/rp-bkvatra.js +1 -7
  833. package/server/modules/reports/rp-bkvatvao.js +1 -7
  834. package/server/modules/reports/rp-capnhatsocaitc.js +1 -4
  835. package/server/modules/reports/rp-cdpsdiem.js +1 -4
  836. package/server/modules/reports/rp-cdpsdt.js +1 -5
  837. package/server/modules/reports/rp-cdpskh.js +1 -8
  838. package/server/modules/reports/rp-cdpsnphep.js +1 -3
  839. package/server/modules/reports/rp-cdpstk.js +1 -4
  840. package/server/modules/reports/rp-chitietchitientheohoadon.js +1 -12
  841. package/server/modules/reports/rp-chitiettaisan.js +1 -13
  842. package/server/modules/reports/rp-chitietthutientheohoadon.js +1 -13
  843. package/server/modules/reports/rp-ckcn.js +1 -3
  844. package/server/modules/reports/rp-ckdiem.js +1 -2
  845. package/server/modules/reports/rp-cktk.js +1 -3
  846. package/server/modules/reports/rp-ckvt.js +1 -10
  847. package/server/modules/reports/rp-ckvttheokho.js +1 -4
  848. package/server/modules/reports/rp-ckvttheotg.js +1 -4
  849. package/server/modules/reports/rp-ckvttt.js +1 -3
  850. package/server/modules/reports/rp-congnophaithutheotuoino.js +1 -3
  851. package/server/modules/reports/rp-congnophaitratheotuoino.js +1 -3
  852. package/server/modules/reports/rp-congnosapthu.js +1 -4
  853. package/server/modules/reports/rp-congnosaptra.js +1 -4
  854. package/server/modules/reports/rp-congviectheobp.js +1 -9
  855. package/server/modules/reports/rp-congviectheodt.js +1 -8
  856. package/server/modules/reports/rp-congviectheokh.js +1 -8
  857. package/server/modules/reports/rp-congviectheonv.js +1 -9
  858. package/server/modules/reports/rp-congviectheotimeline.js +1 -6
  859. package/server/modules/reports/rp-ctbanle.js +1 -15
  860. package/server/modules/reports/rp-ctbanle2.js +1 -20
  861. package/server/modules/reports/rp-ctbanlectv.js +1 -20
  862. package/server/modules/reports/rp-ctbanlenpp.js +1 -24
  863. package/server/modules/reports/rp-ctdanhgianhanvien.js +1 -8
  864. package/server/modules/reports/rp-cthangbanbitralai.js +1 -4
  865. package/server/modules/reports/rp-ctmuahang.js +1 -7
  866. package/server/modules/reports/rp-cttralaihang.js +1 -4
  867. package/server/modules/reports/rp-databanle.js +1 -10
  868. package/server/modules/reports/rp-diemthuong.js +1 -2
  869. package/server/modules/reports/rp-dkcn.js +1 -3
  870. package/server/modules/reports/rp-dktk.js +1 -2
  871. package/server/modules/reports/rp-dsnhanviencm.js +1 -9
  872. package/server/modules/reports/rp-dsnhanvientb.js +1 -9
  873. package/server/modules/reports/rp-dtbanlekempk.js +1 -12
  874. package/server/modules/reports/rp-dtbanletheoct.js +1 -22
  875. package/server/modules/reports/rp-dtbanletheoctkempk.js +1 -25
  876. package/server/modules/reports/rp-dtbanletheokh.js +1 -17
  877. package/server/modules/reports/rp-dtbanletheokhnpp.js +1 -19
  878. package/server/modules/reports/rp-dtbanletheokho.js +1 -15
  879. package/server/modules/reports/rp-dtbanletheonam.js +1 -3
  880. package/server/modules/reports/rp-dtbanletheongay.js +1 -1
  881. package/server/modules/reports/rp-dtbanletheonpp.js +1 -23
  882. package/server/modules/reports/rp-dtbanletheonv.js +1 -19
  883. package/server/modules/reports/rp-dtbanletheoquy.js +1 -3
  884. package/server/modules/reports/rp-dtbanletheosp.js +1 -9
  885. package/server/modules/reports/rp-dtbanletheospnpp.js +1 -6
  886. package/server/modules/reports/rp-dtbanletheothang.js +1 -3
  887. package/server/modules/reports/rp-dtbanletheothungan.js +1 -12
  888. package/server/modules/reports/rp-dtbanletheovt.js +1 -2
  889. package/server/modules/reports/rp-dtbanletheovtnpp.js +1 -2
  890. package/server/modules/reports/rp-dutoanthuchitheodt.js +1 -4
  891. package/server/modules/reports/rp-getPXC2PNC.js +1 -8
  892. package/server/modules/reports/rp-getariseofaccountsbymonth.js +1 -4
  893. package/server/modules/reports/rp-getbtpb.js +1 -6
  894. package/server/modules/reports/rp-getcashbycashier.js +1 -7
  895. package/server/modules/reports/rp-getcschietkhau.js +1 -5
  896. package/server/modules/reports/rp-getdinhmuc4lenhcp.js +1 -7
  897. package/server/modules/reports/rp-getdinhmuc4pxk.js +1 -9
  898. package/server/modules/reports/rp-getdk4pht.js +1 -8
  899. package/server/modules/reports/rp-getdk4pkc.js +1 -10
  900. package/server/modules/reports/rp-getdttheoca.js +1 -5
  901. package/server/modules/reports/rp-getinvoice2pay.js +1 -4
  902. package/server/modules/reports/rp-getinvoice2receive.js +1 -4
  903. package/server/modules/reports/rp-getinvoice2return.js +1 -5
  904. package/server/modules/reports/rp-getinvoice2return_bl.js +1 -6
  905. package/server/modules/reports/rp-getkehoachmh4lenhcp.js +1 -4
  906. package/server/modules/reports/rp-getkhauhao.js +1 -7
  907. package/server/modules/reports/rp-getluong.js +1 -8
  908. package/server/modules/reports/rp-getluongchuyen.js +1 -5
  909. package/server/modules/reports/rp-getpn2fee.js +1 -5
  910. package/server/modules/reports/rp-getpn2return.js +1 -5
  911. package/server/modules/reports/rp-getthanhpham4pnk.js +1 -7
  912. package/server/modules/reports/rp-getvc2xhd.js +1 -11
  913. package/server/modules/reports/rp-gt_cpnvltt.js +1 -6
  914. package/server/modules/reports/rp-hangbanbitralai.js +1 -5
  915. package/server/modules/reports/rp-hangthanhvien.js +1 -3
  916. package/server/modules/reports/rp-hoadonbanhangtheohantt.js +1 -5
  917. package/server/modules/reports/rp-hoadonmuahangtheohantt.js +1 -5
  918. package/server/modules/reports/rp-hoahong.js +1 -15
  919. package/server/modules/reports/rp-kcsns.js +1 -19
  920. package/server/modules/reports/rp-kgchamcong.js +1 -1
  921. package/server/modules/reports/rp-khoaso.js +1 -11
  922. package/server/modules/reports/rp-kiemtrasocaitcvssocai.js +1 -6
  923. package/server/modules/reports/rp-kqdanhgianhanvien.js +1 -5
  924. package/server/modules/reports/rp-kqhdkd.js +1 -1
  925. package/server/modules/reports/rp-lcttgt.js +1 -16
  926. package/server/modules/reports/rp-lctttt.js +1 -11
  927. package/server/modules/reports/rp-linkslist.js +1 -4
  928. package/server/modules/reports/rp-phanbochitienchohoadon.js +1 -11
  929. package/server/modules/reports/rp-phanbothutienchohoadon.js +1 -11
  930. package/server/modules/reports/rp-ptbitralai.js +1 -7
  931. package/server/modules/reports/rp-ptcttct.js +1 -24
  932. package/server/modules/reports/rp-ptdonhang.js +1 -8
  933. package/server/modules/reports/rp-pttct.js +1 -52
  934. package/server/modules/reports/rp-pttctkho.js +1 -32
  935. package/server/modules/reports/rp-pttctkho2.js +1 -29
  936. package/server/modules/reports/rp-referredusers.js +1 -5
  937. package/server/modules/reports/rp-sctbhxh.js +1 -4
  938. package/server/modules/reports/rp-sctcnkh.js +1 -11
  939. package/server/modules/reports/rp-sctdiem.js +1 -3
  940. package/server/modules/reports/rp-sctdt.js +1 -7
  941. package/server/modules/reports/rp-sctdtcp.js +1 -11
  942. package/server/modules/reports/rp-sctluong.js +1 -6
  943. package/server/modules/reports/rp-sctthuetncn.js +1 -4
  944. package/server/modules/reports/rp-scttk.js +1 -9
  945. package/server/modules/reports/rp-sctvt.js +1 -5
  946. package/server/modules/reports/rp-sctvt_sl.js +1 -5
  947. package/server/modules/reports/rp-sctvtnpp.js +1 -6
  948. package/server/modules/reports/rp-sctvttt.js +1 -5
  949. package/server/modules/reports/rp-search.js +1 -4
  950. package/server/modules/reports/rp-socai.js +1 -6
  951. package/server/modules/reports/rp-socaitk.js +1 -1
  952. package/server/modules/reports/rp-sochut.js +1 -7
  953. package/server/modules/reports/rp-sokho.js +1 -7
  954. package/server/modules/reports/rp-sokhott.js +1 -5
  955. package/server/modules/reports/rp-sonkbh.js +1 -5
  956. package/server/modules/reports/rp-sonkc.js +1 -6
  957. package/server/modules/reports/rp-sonkct.js +1 -5
  958. package/server/modules/reports/rp-sonkmh.js +1 -5
  959. package/server/modules/reports/rp-sonktt.js +1 -5
  960. package/server/modules/reports/rp-soquy.js +1 -11
  961. package/server/modules/reports/rp-sosanhkhvatt.js +1 -13
  962. package/server/modules/reports/rp-sosanhkhvatt2.js +1 -5
  963. package/server/modules/reports/rp-sotaisan.js +1 -13
  964. package/server/modules/reports/rp-sotiengui.js +1 -7
  965. package/server/modules/reports/rp-taodinhmuctudkhoc.js +1 -5
  966. package/server/modules/reports/rp-thbanhangkempk.js +1 -28
  967. package/server/modules/reports/rp-thdanhgianhanvien.js +1 -9
  968. package/server/modules/reports/rp-thgt.js +1 -6
  969. package/server/modules/reports/rp-thnxt.js +1 -11
  970. package/server/modules/reports/rp-thnxt_sl.js +1 -9
  971. package/server/modules/reports/rp-thnxtnpp.js +1 -10
  972. package/server/modules/reports/rp-thnxttt.js +1 -9
  973. package/server/modules/reports/rp-tkbanhangtheogioithieu.js +1 -9
  974. package/server/modules/reports/rp-tkgioithieukh.js +1 -4
  975. package/server/modules/reports/rp-tkgtgt.js +1 -76
  976. package/server/modules/reports/rp-tkgtgt_old.js +1 -7
  977. package/server/modules/reports/rp-tmbctc.js +1 -20
  978. package/server/modules/reports/rp-tonghopbanhang.js +1 -6
  979. package/server/modules/reports/rp-tonghopmuahang.js +1 -5
  980. package/server/modules/reports/rp-tonghoptralaihang.js +1 -5
  981. package/server/modules/reports/rp-tongquanbanle.js +1 -20
  982. package/server/modules/reports/rp-tongquanbds.js +1 -3
  983. package/server/modules/reports/rp-tongquancongty.js +1 -6
  984. package/server/modules/reports/rp-tongquanctvnpp.js +1 -12
  985. package/server/modules/reports/rp-tongquannvbh.js +1 -14
  986. package/server/modules/reports/rp-tongquannvnpp.js +1 -5
  987. package/server/modules/reports/rp-uoctinhnvl.js +1 -11
  988. package/server/modules/reports/rp-wallet.js +1 -3
  989. package/server/modules/reports/rpt-tkdiemtichluy.js +1 -9
  990. package/server/modules/systems/sys-app.js +1 -34
  991. package/server/modules/systems/sys-colleague.js +1 -11
  992. package/server/modules/systems/sys-data_list_config.js +1 -1
  993. package/server/modules/systems/sys-domain.js +1 -1
  994. package/server/modules/systems/sys-ecomproductlines.js +1 -1
  995. package/server/modules/systems/sys-exportexceltemplate.js +1 -1
  996. package/server/modules/systems/sys-fieldright.js +1 -1
  997. package/server/modules/systems/sys-importexceltemplate.js +1 -1
  998. package/server/modules/systems/sys-labelinfo.js +1 -3
  999. package/server/modules/systems/sys-listinfo.js +1 -10
  1000. package/server/modules/systems/sys-menuinfo.js +1 -1
  1001. package/server/modules/systems/sys-message.js +1 -14
  1002. package/server/modules/systems/sys-moduleinfo.js +1 -2
  1003. package/server/modules/systems/sys-notification.js +1 -8
  1004. package/server/modules/systems/sys-quanhuyen.js +1 -1
  1005. package/server/modules/systems/sys-reportinfo.js +1 -5
  1006. package/server/modules/systems/sys-rptobject.js +1 -1
  1007. package/server/modules/systems/sys-schedule.js +1 -10
  1008. package/server/modules/systems/sys-sysconfig.js +1 -1
  1009. package/server/modules/systems/sys-sysgroup.js +1 -1
  1010. package/server/modules/systems/sys-tableinfo.js +1 -1
  1011. package/server/modules/systems/sys-templatestore.js +1 -5
  1012. package/server/modules/systems/sys-tinhthanh.js +1 -1
  1013. package/server/modules/systems/sys-token.js +1 -3
  1014. package/server/modules/systems/sys-trangthai.js +1 -3
  1015. package/server/modules/systems/sys-trialinfo.js +1 -1
  1016. package/server/modules/systems/sys-user.js +1 -45
  1017. package/server/modules/systems/sys-users.js +1 -10
  1018. package/server/modules/systems/sys-versioninfo.js +1 -1
  1019. package/server/modules/systems/sys-vietqrbanks.js +1 -1
  1020. package/server/modules/systems/sys-xaphuong.js +1 -1
  1021. package/server/modules/vouchers/vo-banggiaban.js +1 -8
  1022. package/server/modules/vouchers/vo-bc1.js +1 -34
  1023. package/server/modules/vouchers/vo-bc5.js +1 -15
  1024. package/server/modules/vouchers/vo-bg1.js +1 -10
  1025. package/server/modules/vouchers/vo-bg2.js +1 -12
  1026. package/server/modules/vouchers/vo-bn1.js +1 -36
  1027. package/server/modules/vouchers/vo-bn5.js +1 -15
  1028. package/server/modules/vouchers/vo-dh2.js +1 -35
  1029. package/server/modules/vouchers/vo-dinhmucsx.js +1 -6
  1030. package/server/modules/vouchers/vo-dkb.js +1 -21
  1031. package/server/modules/vouchers/vo-dn0.js +1 -9
  1032. package/server/modules/vouchers/vo-dnm.js +1 -20
  1033. package/server/modules/vouchers/vo-hd1.js +1 -37
  1034. package/server/modules/vouchers/vo-hd2.js +1 -108
  1035. package/server/modules/vouchers/vo-hd3.js +1 -38
  1036. package/server/modules/vouchers/vo-hd4.js +1 -13
  1037. package/server/modules/vouchers/vo-hd7.js +1 -29
  1038. package/server/modules/vouchers/vo-hd8.js +1 -29
  1039. package/server/modules/vouchers/vo-hde.js +1 -39
  1040. package/server/modules/vouchers/vo-htl.js +1 -11
  1041. package/server/modules/vouchers/vo-kbbtpb.js +1 -6
  1042. package/server/modules/vouchers/vo-kehoachmh.js +1 -11
  1043. package/server/modules/vouchers/vo-lenhcapphat.js +1 -9
  1044. package/server/modules/vouchers/vo-lenhsx.js +1 -12
  1045. package/server/modules/vouchers/vo-pbl.js +1 -94
  1046. package/server/modules/vouchers/vo-pc0.js +1 -14
  1047. package/server/modules/vouchers/vo-pc1.js +1 -31
  1048. package/server/modules/vouchers/vo-pc2.js +1 -25
  1049. package/server/modules/vouchers/vo-pc3.js +1 -14
  1050. package/server/modules/vouchers/vo-pc5.js +1 -15
  1051. package/server/modules/vouchers/vo-pc6.js +1 -19
  1052. package/server/modules/vouchers/vo-pcl.js +1 -7
  1053. package/server/modules/vouchers/vo-pdn.js +1 -11
  1054. package/server/modules/vouchers/vo-pdx.js +1 -9
  1055. package/server/modules/vouchers/vo-pgh.js +1 -16
  1056. package/server/modules/vouchers/vo-pht.js +1 -6
  1057. package/server/modules/vouchers/vo-pkc.js +1 -5
  1058. package/server/modules/vouchers/vo-pkh.js +1 -9
  1059. package/server/modules/vouchers/vo-pkk.js +1 -12
  1060. package/server/modules/vouchers/vo-pkt.js +1 -12
  1061. package/server/modules/vouchers/vo-pn1.js +1 -30
  1062. package/server/modules/vouchers/vo-pn2.js +1 -17
  1063. package/server/modules/vouchers/vo-pn3.js +1 -18
  1064. package/server/modules/vouchers/vo-pn5.js +1 -18
  1065. package/server/modules/vouchers/vo-pn6.js +1 -18
  1066. package/server/modules/vouchers/vo-pn9.js +1 -23
  1067. package/server/modules/vouchers/vo-pnc.js +1 -19
  1068. package/server/modules/vouchers/vo-pnh.js +1 -17
  1069. package/server/modules/vouchers/vo-pnk.js +1 -14
  1070. package/server/modules/vouchers/vo-pnknpp.js +1 -12
  1071. package/server/modules/vouchers/vo-po1.js +1 -14
  1072. package/server/modules/vouchers/vo-ppb.js +1 -8
  1073. package/server/modules/vouchers/vo-pt1.js +1 -20
  1074. package/server/modules/vouchers/vo-pt5.js +1 -15
  1075. package/server/modules/vouchers/vo-ptl.js +1 -8
  1076. package/server/modules/vouchers/vo-purchase_contract.js +1 -9
  1077. package/server/modules/vouchers/vo-pxc.js +1 -24
  1078. package/server/modules/vouchers/vo-pxh.js +1 -18
  1079. package/server/modules/vouchers/vo-pxk.js +1 -15
  1080. package/server/modules/vouchers/vo-pxknpp.js +1 -14
  1081. package/server/modules/vouchers/vo-qts.js +1 -12
  1082. package/server/modules/vouchers/vo-sale_contract.js +1 -11
  1083. package/server/modules/vouchers/vo-shipbook.js +1 -17
  1084. package/server/modules/vouchers/vo-so1.js +1 -125
  1085. package/server/modules/vouchers/vo-so5.js +1 -57
  1086. package/server/modules/vouchers/vo-so7.js +1 -97
  1087. package/server/modules/vouchers/vo-so9.js +1 -119
  1088. package/server/modules/vouchers/vo-vanchuyen.js +1 -14
  1089. package/server/modules/vouchers/vo-xhd.js +1 -33
  1090. package/server/route.js +1 -54
  1091. package/server/services/invoiceFetcher.js +1 -12
  1092. package/server/sslConfig.js +1 -2
  1093. package/server/test/array.js +59 -0
  1094. package/server/test/utils.js +191 -0
  1095. package/server/tools/agent-benchmark.js +268 -0
  1096. package/server/tools/redis-smoke-test.js +195 -0
  1097. package/server/workers/backupApp.js +1 -10
  1098. package/server/workers/calcGrid.js +1 -9
  1099. package/server/workers/excelParser.js +1 -10
  1100. package/server/workers/inputWorker.js +1 -8
  1101. package/server/workers/pushNotify.js +1 -11
  1102. package/server/workers/reportWorker.js +1 -8
  1103. package/server/workers/restoreApp.js +1 -10
  1104. package/server/workers/runScript.js +1 -5
  1105. package/server/workers/sendEmail.js +1 -14
  1106. package/server/workers/webhook.js +1 -5
  1107. package/server/workers/worker-utils.js +1 -5
  1108. package/enable_mongo_replica.sh +0 -100
  1109. package/server/auths/local_old.js +0 -60
  1110. package/server/controllers/controllerUtils_v1.js +0 -72
  1111. package/server/controllers/controller_old.js +0 -129
  1112. package/server/controllers/createHandler_old.js +0 -35
  1113. package/server/controllers/deleteHandler_old.js +0 -12
  1114. package/server/controllers/exportHandler_old.js +0 -17
  1115. package/server/controllers/findHandler_old.js +0 -74
  1116. package/server/controllers/importFromJsonHandler_old.js +0 -6
  1117. package/server/controllers/importHandler_old.js +0 -41
  1118. package/server/controllers/updateFieldHandler_old.js +0 -13
  1119. package/server/controllers/updateHandler_old.js +0 -40
  1120. package/server/controllers/viewHandler_old.js +0 -14
  1121. package/server/libs/BlockchainTransactionPool.js +0 -3
  1122. package/server/libs/WorkerStaticPool_v1.js +0 -5
  1123. package/server/libs/WorkerStaticPool_v2.js +0 -16
  1124. package/server/libs/WorkerStaticPool_v3.js +0 -19
  1125. package/server/libs/cdpskh_old.js +0 -9
  1126. package/server/libs/ckcn_old.js +0 -11
  1127. package/server/libs/cktt_old.js +0 -9
  1128. package/server/libs/ckvt_old.js +0 -12
  1129. package/server/libs/databanle_old.js +0 -18
  1130. package/server/libs/dkcn_old.js +0 -10
  1131. package/server/libs/dktt_old.js +0 -8
  1132. package/server/libs/dkvt_old.js +0 -9
  1133. package/server/libs/getGiaban_old.js +0 -70
  1134. package/server/libs/joinData_bk.js +0 -44
  1135. package/server/libs/optimizeBookkeeping_bk.js +0 -14
  1136. package/server/libs/permission_old.js +0 -58
  1137. package/server/libs/thnxt_old.js +0 -9
  1138. package/server/libs/tinhgiatb1vt_old.js +0 -5
  1139. package/server/libs/tinhgiatb_old.js +0 -39
  1140. package/server/libs/vsocai_old.js +0 -7
  1141. package/server/modules/lists/ls-assabcihandler.js +0 -3
  1142. package/server/modules/lists/ls-assbooking.js +0 -20
  1143. package/server/modules/lists/ls-assbuy.js +0 -8
  1144. package/server/modules/lists/ls-assinvestment.js +0 -31
  1145. package/server/modules/lists/ls-assneedtobuy.js +0 -10
  1146. package/server/modules/lists/ls-assperiod.js +0 -19
  1147. package/server/modules/lists/ls-assproduct.js +0 -9
  1148. package/server/modules/lists/ls-assprofitsharing.js +0 -8
  1149. package/server/modules/lists/ls-asssell.js +0 -13
  1150. package/server/modules/lists/ls-asswithdraw.js +0 -12
  1151. package/server/modules/reports/rp-analyzedata.js +0 -6
  1152. package/server/modules/reports/rp-assinterest.js +0 -8
  1153. package/server/modules/reports/rp-assproductowners.js +0 -3
  1154. package/server/workers/restoreApp_bk.js +0 -23
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.7.8",
5
+ "version": "12.7.12",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -19,6 +19,7 @@
19
19
  "@ai-sdk/google": "^4.0.8",
20
20
  "@ai-sdk/openai": "^4.0.7",
21
21
  "@ffmpeg-installer/ffmpeg": "^1.0.20",
22
+ "@socket.io/redis-adapter": "^8.3.0",
22
23
  "agenda": "^4.1.3",
23
24
  "agendash": "^2.1.1",
24
25
  "ai": "^7.0.14",
@@ -62,7 +63,7 @@
62
63
  "mongodb-backup": "^1.6.9",
63
64
  "mongodb-restore": "^1.6.2",
64
65
  "mongoose": "^6.13.10",
65
- "mongoose-storage-usage": "^1.7.0",
66
+ "mongoose-storage-usage": "^1.7.1",
66
67
  "morgan": "^1.10.0",
67
68
  "multer": "^0.1.8",
68
69
  "natives": "^1.1.6",
@@ -82,8 +83,8 @@
82
83
  "pdf2json": "^4.0.3",
83
84
  "pug": "^3.0.2",
84
85
  "qr-image": "^3.2.0",
85
- "rate-limiter-flexible": "^2.2.2",
86
- "redis": "^3.1.2",
86
+ "rate-limiter-flexible": "^11.2.0",
87
+ "redis": "^6.1.0",
87
88
  "request": "^2.88.2",
88
89
  "rotating-file-stream": "^1.4.6",
89
90
  "sharp": "^0.31.0",
@@ -91,7 +92,6 @@
91
92
  "smtp-server": "^3.9.0",
92
93
  "socket.io": "^4.1.2",
93
94
  "socket.io-client": "^4.1.2",
94
- "socket.io-redis": "^6.1.1",
95
95
  "sticky-session": "^1.1.2",
96
96
  "tesseract.js": "^7.0.0",
97
97
  "underscore": "^1.13.1",
@@ -124,7 +124,7 @@
124
124
  "gulp-copy": "^1.0.1",
125
125
  "gulp-uglify-cli": "latest",
126
126
  "gulp-uglify-es": "latest",
127
- "javascript-obfuscator": "^4.1.1",
127
+ "javascript-obfuscator": "^5.4.3",
128
128
  "jshint": "latest",
129
129
  "mocha": "latest",
130
130
  "npm-run-all": "^4.1.5",
@@ -1 +1 @@
1
- const runFinanceAgent=require("./ceoAgent"),runStaffAgent=require("./staffAgent"),runCSKHAgent=require("./cskhAgent"),runWorkflowAgent=require("./flowAgent");module.exports={runFinanceAgent,runStaffAgent,runCSKHAgent,runWorkflowAgent};
1
+ const _0x41814f=_0x1290;function _0x1290(_0x4e64d6,_0x16ac78){_0x4e64d6=_0x4e64d6-0x102;const _0x471d09=_0x471d();let _0x1290b5=_0x471d09[_0x4e64d6];if(_0x1290['EJKgVa']===undefined){var _0x825f01=function(_0x5a4c9f){const _0x4a60ec='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3c0279='',_0x3eb226='';for(let _0x575381=0x0,_0x53f19b,_0x22ae37,_0x59e28b=0x0;_0x22ae37=_0x5a4c9f['charAt'](_0x59e28b++);~_0x22ae37&&(_0x53f19b=_0x575381%0x4?_0x53f19b*0x40+_0x22ae37:_0x22ae37,_0x575381++%0x4)?_0x3c0279+=String['fromCharCode'](0xff&_0x53f19b>>(-0x2*_0x575381&0x6)):0x0){_0x22ae37=_0x4a60ec['indexOf'](_0x22ae37);}for(let _0x3dd3b8=0x0,_0x13a77f=_0x3c0279['length'];_0x3dd3b8<_0x13a77f;_0x3dd3b8++){_0x3eb226+='%'+('00'+_0x3c0279['charCodeAt'](_0x3dd3b8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3eb226);};_0x1290['QvGTMM']=_0x825f01,_0x1290['gGfXls']={},_0x1290['EJKgVa']=!![];}const _0x3a9cb8=_0x471d09[0x0],_0x2646c8=_0x4e64d6+_0x3a9cb8,_0x347916=_0x1290['gGfXls'][_0x2646c8];return!_0x347916?(_0x1290b5=_0x1290['QvGTMM'](_0x1290b5),_0x1290['gGfXls'][_0x2646c8]=_0x1290b5):_0x1290b5=_0x347916,_0x1290b5;}(function(_0xb5ad9f,_0xe6657f){const _0x593ca1=_0x1290,_0x33f9ea=_0xb5ad9f();while(!![]){try{const _0x550e8c=parseInt(_0x593ca1(0x10b))/0x1+parseInt(_0x593ca1(0x111))/0x2*(parseInt(_0x593ca1(0x106))/0x3)+-parseInt(_0x593ca1(0x114))/0x4+-parseInt(_0x593ca1(0x107))/0x5*(-parseInt(_0x593ca1(0x10e))/0x6)+-parseInt(_0x593ca1(0x103))/0x7*(-parseInt(_0x593ca1(0x113))/0x8)+-parseInt(_0x593ca1(0x102))/0x9*(parseInt(_0x593ca1(0x10a))/0xa)+-parseInt(_0x593ca1(0x109))/0xb;if(_0x550e8c===_0xe6657f)break;else _0x33f9ea['push'](_0x33f9ea['shift']());}catch(_0x5efb45){_0x33f9ea['push'](_0x33f9ea['shift']());}}}(_0x471d,0xa8dba));const runFinanceAgent=require(_0x41814f(0x104)+_0x41814f(0x10f)),runStaffAgent=require(_0x41814f(0x10d)+_0x41814f(0x118)+'nt'),runCSKHAgent=require(_0x41814f(0x112)+'hAgen'+'t'),runWorkflowAgent=require(_0x41814f(0x110)+_0x41814f(0x105)+'t'),runRouterAgent=require(_0x41814f(0x116)+'terAg'+_0x41814f(0x108)),departmentAgents=require(_0x41814f(0x10c)+_0x41814f(0x117)+'ntAge'+_0x41814f(0x115)),_0x3c0279={'runFinanceAgent':runFinanceAgent,'runStaffAgent':runStaffAgent,'runCSKHAgent':runCSKHAgent,'runWorkflowAgent':runWorkflowAgent,'runRouterAgent':runRouterAgent,...departmentAgents};function _0x471d(){const _0x2764bb=['lI9Jzw8','D0fNzw4','mZeYEM9xq0jx','nJeYmteYmgPpzKXKsa','zw50','mJe0oti3ntDzBwjIzuO','odeZmZqXmfPyq1nzAq','mte0otK4ogj0tMPeyW','lI9Kzxa','lI9ZDge','nNfmwwH5rW','qwDLBNq','lI9MBg8','mJaYmJHZwxzutfO','lI9JC2S','ogf1re9vDW','mtuWotu3mMXmt0r2Ca','BNrZ','lI9YB3u','yxj0Bwu','zMzbz2u','ow1Mvgr3rW','mJG3mtm2nuH6CejmqG'];_0x471d=function(){return _0x2764bb;};return _0x471d();}module['expor'+'ts']=_0x3c0279;
@@ -1,6 +1 @@
1
- const {generateObject}=require("ai"),{z}=require("zod"),ChatMessage=global.getModel("chat_message"),AiMemory=global.getModel("aimemory"),getMemory=async($id_app_userMemory$$,$memoryPrompt_user_id$$)=>{$id_app_userMemory$$=await AiMemory.findOne({id_app:$id_app_userMemory$$,user_id:$memoryPrompt_user_id$$}).lean();$memoryPrompt_user_id$$="";$id_app_userMemory$$&&$id_app_userMemory$$.core_memories.length>0&&($memoryPrompt_user_id$$=$id_app_userMemory$$.core_memories.map($m$$=>`- **${$m$$}`).join("\n"));
2
- return $memoryPrompt_user_id$$},summarizeUserMemory=async($id_app$$,$user_id$$,$session_id$$,$model$$)=>{try{let $memory$$=await AiMemory.findOne({id_app:$id_app$$,user_id:$user_id$$});$memory$$||=new AiMemory({id_app:$id_app$$,user_id:$user_id$$,core_memories:[]});$id_app$$={id_app:$id_app$$,user_id:$user_id$$,session_id:$session_id$$};$memory$$.last_summarized_date&&($id_app$$.date_created={$gt:$memory$$.last_summarized_date});const $unsummarizedMessages$$=await ChatMessage.find($id_app$$).sort({date_created:1}).limit(20).lean();
3
- if(!($unsummarizedMessages$$.length<10)){var $chatText$$=$unsummarizedMessages$$.filter($msg$$=>$msg$$.role!=="tool"&&$msg$$.content).map($msg$$=>`${$msg$$.role.toUpperCase()}: ${$msg$$.content}`).join("\n"),{object:$object$$}=await generateObject({model:$model$$,schema:z.object({extracted_facts:z.array(z.string()).describe("M\u1ea3ng c\u00e1c th\u00f4ng tin quan tr\u1ecdng, s\u1edf th\u00edch, y\u00eau c\u1ea7u ho\u1eb7c b\u1ed1i c\u1ea3nh d\u00e0i h\u1ea1n c\u1ee7a ng\u01b0\u1eddi d\u00f9ng. B\u1ecf qua c\u00e1c c\u00e2u giao ti\u1ebfp th\u00f4ng th\u01b0\u1eddng.")}),
4
- prompt:`D\u01b0\u1edbi \u0111\u00e2y l\u00e0 \u0111o\u1ea1n h\u1ed9i tho\u1ea1i g\u1ea7n nh\u1ea5t. H\u00e3y tr\u00edch xu\u1ea5t c\u00e1c th\u00f4ng tin quan tr\u1ecdng m\u00e0 AI c\u1ea7n GHI NH\u1eda D\u00c0I H\u1ea0N v\u1ec1 ng\u01b0\u1eddi d\u00f9ng (V\u00ed d\u1ee5: quy \u0111\u1ecbnh l\u00e0m vi\u1ec7c, v\u1ecb tr\u00ed \u0111\u1ecba l\u00fd, th\u00f3i quen thao t\u00e1c, \u0111\u1ecbnh d\u1ea1ng b\u00e1o c\u00e1o y\u00eau th\u00edch, t\u00ean d\u1ef1 \u00e1n \u0111ang l\u00e0m...). N\u1ebfu kh\u00f4ng c\u00f3 g\u00ec quan tr\u1ecdng, tr\u1ea3 v\u1ec1 m\u1ea3ng r\u1ed7ng.\n\nH\u1ed9i tho\u1ea1i:\n${$chatText$$}`});
5
- $object$$.extracted_facts&&$object$$.extracted_facts.length>0&&($memory$$.core_memories=[...$memory$$.core_memories,...$object$$.extracted_facts].slice(-50));$memory$$.last_summarized_date=$unsummarizedMessages$$[$unsummarizedMessages$$.length-1].date_created;await $memory$$.save();console.log(`[Memory Worker] \u0110\u00e3 c\u1eadp nh\u1eadt ${$object$$.extracted_facts.length} tr\u00ed nh\u1edb m\u1edbi cho user ${$user_id$$}`)}}catch($error$$){console.error("[Memory Worker Error]:",$error$$)}};
6
- module.exports={summarizeUserMemory,getMemory};
1
+ const _0x222365=_0x2247;(function(_0x190e0f,_0x1f3bbe){const _0x1f83b5=_0x2247,_0x535df2=_0x190e0f();while(!![]){try{const _0x486d14=-parseInt(_0x1f83b5(0x1f4))/0x1*(-parseInt(_0x1f83b5(0x1f3))/0x2)+-parseInt(_0x1f83b5(0x206))/0x3+-parseInt(_0x1f83b5(0x19d))/0x4*(parseInt(_0x1f83b5(0x1cd))/0x5)+-parseInt(_0x1f83b5(0x1c3))/0x6*(-parseInt(_0x1f83b5(0x1de))/0x7)+-parseInt(_0x1f83b5(0x1a7))/0x8+-parseInt(_0x1f83b5(0x1bd))/0x9*(parseInt(_0x1f83b5(0x211))/0xa)+parseInt(_0x1f83b5(0x1ef))/0xb;if(_0x486d14===_0x1f3bbe)break;else _0x535df2['push'](_0x535df2['shift']());}catch(_0x2b42b8){_0x535df2['push'](_0x535df2['shift']());}}}(_0x96c9,0x43ae1));function _0x2247(_0x5bc9cd,_0x187e7e){_0x5bc9cd=_0x5bc9cd-0x197;const _0x96c9fc=_0x96c9();let _0x22479e=_0x96c9fc[_0x5bc9cd];if(_0x2247['RenlhF']===undefined){var _0x4bef8b=function(_0x55a3b2){const _0x3d49cb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3eb531='',_0x4535f6='';for(let _0x547154=0x0,_0x336368,_0x2a898d,_0x3a0675=0x0;_0x2a898d=_0x55a3b2['charAt'](_0x3a0675++);~_0x2a898d&&(_0x336368=_0x547154%0x4?_0x336368*0x40+_0x2a898d:_0x2a898d,_0x547154++%0x4)?_0x3eb531+=String['fromCharCode'](0xff&_0x336368>>(-0x2*_0x547154&0x6)):0x0){_0x2a898d=_0x3d49cb['indexOf'](_0x2a898d);}for(let _0xc1ec99=0x0,_0x5cb3b1=_0x3eb531['length'];_0xc1ec99<_0x5cb3b1;_0xc1ec99++){_0x4535f6+='%'+('00'+_0x3eb531['charCodeAt'](_0xc1ec99)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4535f6);};_0x2247['fnDPmd']=_0x4bef8b,_0x2247['Ycfuxc']={},_0x2247['RenlhF']=!![];}const _0x4b448e=_0x96c9fc[0x0],_0x4dbfb5=_0x5bc9cd+_0x4b448e,_0x1b52ad=_0x2247['Ycfuxc'][_0x4dbfb5];return!_0x1b52ad?(_0x22479e=_0x2247['fnDPmd'](_0x22479e),_0x2247['Ycfuxc'][_0x4dbfb5]=_0x22479e):_0x22479e=_0x1b52ad,_0x22479e;}const {generateObject}=require('ai'),{z}=require(_0x222365(0x20a)),ChatMessage=global[_0x222365(0x1d3)+_0x222365(0x1bb)](_0x222365(0x1d6)+_0x222365(0x1b7)+'ge'),AiMemory=global[_0x222365(0x1d3)+_0x222365(0x1bb)](_0x222365(0x1f0)+_0x222365(0x1b9)),getMemory=async(_0x5cb3b1,_0x1c1149)=>{const _0x18a68a=_0x222365,_0x591ff5={};_0x591ff5[_0x18a68a(0x197)+'p']=_0x5cb3b1,_0x591ff5[_0x18a68a(0x1b6)+'id']=_0x1c1149;const _0x46f885=await AiMemory[_0x18a68a(0x1fe)+'ne'](_0x591ff5)[_0x18a68a(0x1e2)]();let _0x8ec8f0='';return _0x46f885&&_0x46f885[_0x18a68a(0x1f5)+'memor'+_0x18a68a(0x1d1)][_0x18a68a(0x202)+'h']>0x0&&(_0x8ec8f0=_0x46f885[_0x18a68a(0x1f5)+_0x18a68a(0x1ee)+_0x18a68a(0x1d1)][_0x18a68a(0x199)](_0x24e61b=>_0x18a68a(0x20b)+_0x24e61b)['join']('\x0a')),_0x8ec8f0;},summarizeUserMemory=async(_0x2f0271,_0x32855f,_0x1f3f57,_0x5e8994)=>{const _0x2cdc8b=_0x222365;try{const _0x1bf026={};_0x1bf026[_0x2cdc8b(0x197)+'p']=_0x2f0271,_0x1bf026['user_'+'id']=_0x32855f;let _0xfada7e=await AiMemory[_0x2cdc8b(0x1fe)+'ne'](_0x1bf026);if(!_0xfada7e){const _0x51a714={};_0x51a714['id_ap'+'p']=_0x2f0271,_0x51a714['user_'+'id']=_0x32855f,_0x51a714[_0x2cdc8b(0x1f5)+'memor'+_0x2cdc8b(0x1d1)]=[],_0xfada7e=new AiMemory(_0x51a714);}const _0x37cc26={};_0x37cc26[_0x2cdc8b(0x197)+'p']=_0x2f0271,_0x37cc26['user_'+'id']=_0x32855f,_0x37cc26[_0x2cdc8b(0x20e)+_0x2cdc8b(0x1c2)]=_0x1f3f57;const _0x172fea=_0x37cc26;if(_0xfada7e[_0x2cdc8b(0x1c7)+_0x2cdc8b(0x1f1)+'rized'+_0x2cdc8b(0x1d5)]){const _0x5afd09={};_0x5afd09[_0x2cdc8b(0x1fb)]=_0xfada7e['last_'+'summa'+_0x2cdc8b(0x1a5)+_0x2cdc8b(0x1d5)],_0x172fea[_0x2cdc8b(0x1b5)+_0x2cdc8b(0x20f)+'ed']=_0x5afd09;}const _0x44bcac={};_0x44bcac[_0x2cdc8b(0x1b5)+_0x2cdc8b(0x20f)+'ed']=0x1;const _0x42655d=await ChatMessage['find'](_0x172fea)['sort'](_0x44bcac)[_0x2cdc8b(0x1d8)](0x14)['lean']();if(_0x42655d[_0x2cdc8b(0x202)+'h']<0xa)return;const _0x490d1f=_0x42655d[_0x2cdc8b(0x19b)+'r'](_0x1c8077=>_0x1c8077[_0x2cdc8b(0x1ba)]!==_0x2cdc8b(0x1f8)&&_0x1c8077[_0x2cdc8b(0x1dc)+'nt'])['map'](_0x381a96=>_0x381a96[_0x2cdc8b(0x1ba)][_0x2cdc8b(0x1a4)+_0x2cdc8b(0x1d9)+'e']()+':\x20'+_0x381a96[_0x2cdc8b(0x1dc)+'nt'])[_0x2cdc8b(0x1bf)]('\x0a'),{object:_0x498081}=await generateObject({'model':_0x5e8994,'schema':z['objec'+'t']({'extracted_facts':z[_0x2cdc8b(0x1ad)](z['strin'+'g']())['descr'+'ibe'](_0x2cdc8b(0x1e6)+_0x2cdc8b(0x1ac)+_0x2cdc8b(0x1ea)+_0x2cdc8b(0x210)+_0x2cdc8b(0x1dd)+'rọng,'+_0x2cdc8b(0x1cc)+_0x2cdc8b(0x1ce)+_0x2cdc8b(0x1e9)+_0x2cdc8b(0x205)+'oặc\x20b'+'ối\x20cả'+_0x2cdc8b(0x207)+_0x2cdc8b(0x1db)+'\x20của\x20'+_0x2cdc8b(0x1be)+_0x2cdc8b(0x1a0)+_0x2cdc8b(0x1d4)+_0x2cdc8b(0x1f9)+_0x2cdc8b(0x1e4)+_0x2cdc8b(0x1b1)+'o\x20tiế'+_0x2cdc8b(0x1c0)+'ng\x20th'+_0x2cdc8b(0x200))}),'prompt':_0x2cdc8b(0x1b3)+_0x2cdc8b(0x209)+'à\x20đoạ'+'n\x20hội'+_0x2cdc8b(0x1ab)+'i\x20gần'+'\x20nhất'+_0x2cdc8b(0x1a9)+_0x2cdc8b(0x1cb)+'h\x20xuấ'+_0x2cdc8b(0x1b2)+_0x2cdc8b(0x1fc)+_0x2cdc8b(0x201)+'\x20quan'+_0x2cdc8b(0x1b0)+_0x2cdc8b(0x1a6)+_0x2cdc8b(0x1b8)+'n\x20GHI'+_0x2cdc8b(0x1e1)+_0x2cdc8b(0x1e5)+'ẠN\x20về'+_0x2cdc8b(0x19f)+_0x2cdc8b(0x1fa)+_0x2cdc8b(0x1d0)+'\x20dụ:\x20'+_0x2cdc8b(0x1a3)+_0x2cdc8b(0x20c)+_0x2cdc8b(0x1c4)+_0x2cdc8b(0x1da)+_0x2cdc8b(0x208)+_0x2cdc8b(0x1ed)+_0x2cdc8b(0x1d2)+_0x2cdc8b(0x1c1)+'uen\x20t'+_0x2cdc8b(0x1af)+_0x2cdc8b(0x1cf)+_0x2cdc8b(0x1aa)+'ạng\x20b'+_0x2cdc8b(0x1ca)+_0x2cdc8b(0x1e3)+'\x20thíc'+_0x2cdc8b(0x1c9)+_0x2cdc8b(0x1e8)+_0x2cdc8b(0x1e7)+_0x2cdc8b(0x212)+_0x2cdc8b(0x1a2)+_0x2cdc8b(0x20d)+'\x20khôn'+_0x2cdc8b(0x1ff)+'gì\x20qu'+'an\x20tr'+_0x2cdc8b(0x1ec)+_0x2cdc8b(0x19e)+'ề\x20mản'+'g\x20rỗn'+_0x2cdc8b(0x198)+'ội\x20th'+'oại:\x0a'+_0x490d1f});_0x498081[_0x2cdc8b(0x1ae)+_0x2cdc8b(0x204)+_0x2cdc8b(0x19a)]&&_0x498081[_0x2cdc8b(0x1ae)+_0x2cdc8b(0x204)+_0x2cdc8b(0x19a)][_0x2cdc8b(0x202)+'h']>0x0&&(_0xfada7e['core_'+_0x2cdc8b(0x1ee)+_0x2cdc8b(0x1d1)]=[..._0xfada7e['core_'+_0x2cdc8b(0x1ee)+_0x2cdc8b(0x1d1)],..._0x498081[_0x2cdc8b(0x1ae)+'cted_'+_0x2cdc8b(0x19a)]][_0x2cdc8b(0x1f6)](-0x32)),_0xfada7e[_0x2cdc8b(0x1c7)+_0x2cdc8b(0x1f1)+_0x2cdc8b(0x1a5)+_0x2cdc8b(0x1d5)]=_0x42655d[_0x42655d[_0x2cdc8b(0x202)+'h']-0x1][_0x2cdc8b(0x1b5)+_0x2cdc8b(0x20f)+'ed'],await _0xfada7e[_0x2cdc8b(0x1a1)](),console[_0x2cdc8b(0x1f7)](_0x2cdc8b(0x1c8)+_0x2cdc8b(0x1c5)+'rker]'+_0x2cdc8b(0x1a8)+_0x2cdc8b(0x1bc)+_0x2cdc8b(0x1b4)+_0x498081[_0x2cdc8b(0x1ae)+_0x2cdc8b(0x204)+_0x2cdc8b(0x19a)][_0x2cdc8b(0x202)+'h']+(_0x2cdc8b(0x1df)+_0x2cdc8b(0x1eb)+_0x2cdc8b(0x1c6)+_0x2cdc8b(0x1e0)+'r\x20')+_0x32855f);}catch(_0x154e6a){console['error'](_0x2cdc8b(0x1c8)+_0x2cdc8b(0x1c5)+_0x2cdc8b(0x203)+_0x2cdc8b(0x1f2)+']:',_0x154e6a);}},_0xc1ec99={};function _0x96c9(){const _0x24e65f=['ie5i4BUAia','BgvHBG','BYb5W6P1','W6fJigpdOG','rmoassbi','tEg6O25Nia','W6fUimsryq','BIbK4BUXia','ihNdQNuG','Amo0BMCG','BMJHU5SGBq','4BUnBMCSia','imsr4BUlysa','BwvTB3i','mte1mduWotHnsvPeA1u','ywLTzw0','C3vTBwe','rxjYB3i','ndeYv2fRrMDi','mJa4nezkuwTwyW','y29Yzv8','C2XPy2u','Bg9N','Dg9VBa','CxvHigm','AsbKW7LU','jgD0','ihrOW7rU','zxHWB3i','zMLUze8','zYbJW7mG','XRdHU51UzY4','zYb0Aw4','BgvUz3q','CMTLCIa','y3rLzf8','y+g6P3uGAa','mtmYnJK2m3HmCNfQCa','BMGGzmoG','4BUlihrYW60','XjhdONKGBa','EM9K','lsaQkG','4BUlBMGGBa','lIbo4BQ/Dq','C2vZC2K','y3jLyxq','DgLUihe','mJeYndq3mfHdBwfMrG','BMCGBmoG','AwrFyxa','zY4kcKG','BwfW','zMfJDhm','zMLSDgu','Bw9YEq','nZq2ohHdA0vkuG','DhlHUQmGDG','ig5NXRdHU50','igtdUw5N','C2f2zq','Bs4UlIK','Cxv5imsr','Dg9vCha','CML6zwq','zYbTW6aG','mJu1nZGWoffmsuz6yW','imsqW6mGyW','lIbiW6n5','4BUlBMGGza','ihrOB+g6Oq','y8oHyYb0','yxjYyxK','zxH0CMe','AgfVihq','ihrY4BUnBG','DsbNAwe','DcbJW6fJ','rmAW4BUBAsa','4BQTDca','zgf0zv8','DxnLCL8','BwvZC2e','quKGy+g6PW','B3j5','CM9Szq','zgvS','4BQTCcbUAa','oxznrevVuW','BMFgSog7NwK','AM9PBG','Ccb0Amo0','AmoZAsbX','B25FAwq','nNPRC3b4ta','W6bTihzP','CNKGv28','4BUBAsbJAa','BgfZDf8','w01LBw8','AcWGDmoQ','W6fVigpdOq','ihrYW61J','ihpHU58GDa','nJuWzezsz0ri','AmoTy2GS','W6fJlcdeKq','zYaOvSoT','AwvZ','Bmo9lcb0','z2v0tw8','lIbc4BUpia','x2rHDgu','y2HHDf8','z2v0twu','BgLTAxq','zxjdyxm','4BUhyYWGDG','AsbO4BQHBG','y29UDgu','DwfUihq','mtm0mZKZvufxAw1c','ihrYW60G','BYb1C2u'];_0x96c9=function(){return _0x24e65f;};return _0x96c9();}_0xc1ec99[_0x222365(0x1f1)+'rizeU'+'serMe'+'mory']=summarizeUserMemory,_0xc1ec99[_0x222365(0x1d7)+_0x222365(0x19c)]=getMemory,module[_0x222365(0x1fd)+'ts']=_0xc1ec99;
@@ -1,43 +1 @@
1
- const {generateText,stepCountIs,pruneMessages}=require("ai"),chatController=require("./chatController"),{decrypt}=require("../libs/utils"),{summarizeUserMemory,getMemory}=require("./ai_memory_manager"),{createFinanceTools}=require("./tools/financeTools"),{createStockTools}=require("./tools/stockTools"),{createRagTools}=require("./tools/ragTools"),{createStaffTools}=require("./tools/staffTools"),{createSystemTools}=require("./tools/systemTools"),{createMasterDataTools}=require("./tools/masterDataTools"),
2
- {createKpiTools}=require("./tools/kpiTools"),{createOkrTools}=require("./tools/okrTools"),{createTaskTools}=require("./tools/taskTools"),{createReportTools}=require("./tools/reportTools"),{createFlowTools}=require("./tools/flowTools"),tenantConfigs={},SYSTEM_PROMPT=require("./prompts/ceo"),{isValidObjectId}=require("mongoose");
3
- async function runFinanceAgent($id_app$$,$user_id$$,$session_id$$,$userPrompt$$,$files_of_message$$){try{let $is_pure_file_upload$$=!1;(!$userPrompt$$||$userPrompt$$.trim()==="")&&$files_of_message$$&&$files_of_message$$.length>0&&($is_pure_file_upload$$=!0,$userPrompt$$=`Anh v\u1eeba t\u1ea3i l\u00ean ${$files_of_message$$.length} file t\u00e0i li\u1ec7u m\u00e0 ch\u01b0a ghi ch\u00fa g\u00ec. Em h\u00e3y \u0111\u1ecdc l\u01b0\u1edbt qua d\u1eef li\u1ec7u th\u00f4 c\u1ee7a file n\u00e0y, nh\u1eadn di\u1ec7n xem \u0111\u00e2y l\u00e0 lo\u1ea1i gi\u1ea5y t\u1edd g\u00ec (H\u00f3a \u0111\u01a1n, h\u1ee3p \u0111\u1ed3ng, b\u00e1o c\u00e1o...), tr\u00edch xu\u1ea5t 3 th\u00f4ng tin quan tr\u1ecdng nh\u1ea5t v\u00e0 \u0111\u01b0a ra c\u00e1c g\u1ee3i \u00fd h\u00e0nh \u0111\u1ed9ng k\u1ebf ti\u1ebfp trong h\u1ec7 th\u1ed1ng ERP \u0111\u1ec3 anh ch\u1ecdn nh\u00e9.`);
4
- var $app_systemInstruction$$=await global.getModel("app").findOne({_id:$id_app$$},{ai_name:1,ai_api_key:1,ai_model:1});if(!$app_systemInstruction$$||!$app_systemInstruction$$.ai_api_key||!$app_systemInstruction$$.ai_model)throw Error("Ch\u01b0a khai b\u00e1o API Key ho\u1eb7c Model cho h\u1ec7 th\u1ed1ng.");var $gioi_tinh_isCacheStale_messagesToSend$$=tenantConfigs[$id_app$$]&&tenantConfigs[$id_app$$].modelName!==$app_systemInstruction$$.ai_model;if(!tenantConfigs[$id_app$$]||$gioi_tinh_isCacheStale_messagesToSend$$){const $api_key$$=
5
- decrypt($app_systemInstruction$$.ai_api_key.replace("flexbiz::",""),!1),$aiType$$=($app_systemInstruction$$.ai_name||"GPT").toUpperCase();let $aiModelInstance$$;switch($aiType$$){case "CLAUDE":case "ANTHROPIC":const {createAnthropic:$createAnthropic$$}=require("@ai-sdk/anthropic");$aiModelInstance$$=$createAnthropic$$({apiKey:$api_key$$})($app_systemInstruction$$.ai_model);break;case "GEMINI":case "GOOGLE":const {createGoogleGenerativeAI:$createGoogleGenerativeAI$$}=require("@ai-sdk/google");$aiModelInstance$$=
6
- $createGoogleGenerativeAI$$({apiKey:$api_key$$})($app_systemInstruction$$.ai_model);break;default:const {createOpenAI:$createOpenAI$$}=require("@ai-sdk/openai");$aiModelInstance$$=$createOpenAI$$({apiKey:$api_key$$})($app_systemInstruction$$.ai_model)}tenantConfigs[$id_app$$]={model:$aiModelInstance$$,modelName:$app_systemInstruction$$.ai_model};Logger.info(`[Multi-LLM] \u0110\u00e3 kh\u1edfi t\u1ea1o th\u00e0nh c\u00f4ng model ${$app_systemInstruction$$.ai_model} (${$aiType$$}) cho App: ${$id_app$$}`)}const {model:$model$$}=
7
- tenantConfigs[$id_app$$];$session_id$$||=(await chatController.createSession($id_app$$,$user_id$$,$userPrompt$$.substring(0,1024)))._id.toString();const $activeTools$$={...createStaffTools($id_app$$,$user_id$$,$session_id$$),...createFinanceTools($id_app$$,$user_id$$,$session_id$$),...createStockTools($id_app$$,$user_id$$,$session_id$$),...createRagTools($id_app$$,$user_id$$,$session_id$$,$files_of_message$$),...createSystemTools($id_app$$,$user_id$$,$session_id$$),...createMasterDataTools($id_app$$,
8
- $user_id$$,$session_id$$),...createKpiTools($id_app$$,$user_id$$,$session_id$$),...createOkrTools($id_app$$,$user_id$$,$session_id$$),...createTaskTools($id_app$$,$user_id$$,$session_id$$),...createReportTools($id_app$$,$user_id$$,$session_id$$),...createFlowTools($id_app$$,$user_id$$,$session_id$$)};$app_systemInstruction$$=`${SYSTEM_PROMPT}`;const [$previousMessages$$,$userInfoDoc$$,$appInfoDoc$$,$memory$$]=await Promise.all([chatController.getChatHistory($id_app$$,$session_id$$,30),global.getModel("participant").findOne({id_app:$id_app$$,
9
- email:$user_id$$}).lean(),global.getModel("app").findOne({_id:$id_app$$}).lean(),getMemory($id_app$$,$user_id$$)]);$gioi_tinh_isCacheStale_messagesToSend$$=[...$previousMessages$$,{role:"user",content:$userPrompt$$}];const $optimizedMessages$$=pruneMessages({messages:$gioi_tinh_isCacheStale_messagesToSend$$,reasoning:"all",toolCalls:"before-last-message"});$appInfoDoc$$&&($app_systemInstruction$$+=`
10
- \n# [TH\u00d4NG TIN DOANH NGHI\u1ec6P C\u1ee6A B\u1ea0N]
11
- B\u1ea1n \u0111ang \u0111\u1ea1i di\u1ec7n v\u00e0 \u0111i\u1ec1u h\u00e0nh h\u1ec7 th\u1ed1ng cho doanh nghi\u1ec7p sau:
12
- - **T\u00ean doanh nghi\u1ec7p:** ${$appInfoDoc$$.name||"H\u1ec7 th\u1ed1ng n\u1ed9i b\u1ed9"}
13
- - **M\u00e3 s\u1ed1 thu\u1ebf:** ${$appInfoDoc$$.ma_so_thue||"Ch\u01b0a c\u1eadp nh\u1eadt"}
14
- - **\u0110\u1ecba ch\u1ec9:** ${$appInfoDoc$$.address||$appInfoDoc$$.dia_chi||"Ch\u01b0a c\u1eadp nh\u1eadt"}
15
- - **\u0110\u1ecba ch\u1ec9 xu\u1ea5t ho\u00e1 \u0111\u01a1n:** ${$appInfoDoc$$.dia_chi_xuat_hoa_don||"Ch\u01b0a c\u1eadp nh\u1eadt"}
16
- - **Li\u00ean h\u1ec7:** ${$appInfoDoc$$.phone||$appInfoDoc$$.dien_thoai||""} ${$appInfoDoc$$.email?" | "+$appInfoDoc$$.email:""}
17
-
18
- [CH\u1ec8 TH\u1eca C\u1ed0T L\u00d5I V\u1ec0 DOANH NGHI\u1ec6P]:
19
- M\u1ecdi s\u1ed1 li\u1ec7u doanh thu, chi ph\u00ed, c\u00f4ng n\u1ee3 m\u00e0 b\u1ea1n ph\u00e2n t\u00edch \u0111\u1ec1u l\u00e0 t\u00e0i s\u1ea3n c\u1ee7a doanh nghi\u1ec7p n\u00e0y. Khi c\u00f3 y\u00eau c\u1ea7u so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n, h\u1ee3p \u0111\u1ed3ng, email ho\u1eb7c Zalo g\u1eedi \u0111\u1ed1i t\u00e1c ngo\u00e0i, B\u1eaeT BU\u1ed8C ph\u1ea3i d\u00f9ng ch\u00ednh x\u00e1c th\u00f4ng tin \u0111\u1ecbnh danh ph\u00eda tr\u00ean \u0111\u1ec3 l\u00e0m ti\u00eau \u0111\u1ec1 ho\u1eb7c ch\u1eef k\u00fd.
20
- `);if($userInfoDoc$$){const $thongtinnhanvien$$=await global.getModel("dmnv").findOne({id_app:$id_app$$,user:$user_id$$}).lean(),$fullName$$=$thongtinnhanvien$$?.ten_nv||$userInfoDoc$$.name||"S\u1ebfp",$shortName$$=$fullName$$!=="S\u1ebfp"?$fullName$$.split(" ").pop():"S\u1ebfp";$gioi_tinh_isCacheStale_messagesToSend$$=$thongtinnhanvien$$?.gioi_tinh||"Kh\u00e1c";let $chuc_vu$$,$bo_phan$$;$thongtinnhanvien$$?.chuc_vu&&isValidObjectId($thongtinnhanvien$$?.chuc_vu)&&($chuc_vu$$=(await global.getModel("group").findOne({id_app:$id_app$$,
21
- _id:$thongtinnhanvien$$.chuc_vu}).lean())?.group_name);$thongtinnhanvien$$?.ma_bp&&($bo_phan$$=(await global.getModel("dmbp").findOne({id_app:$id_app$$,ma_bp:$thongtinnhanvien$$.ma_bp}).lean())?.ten_bp);$app_systemInstruction$$+=`
22
- \n# [TH\u00d4NG TIN \u0110\u1ed0I T\u00c1C GIAO TI\u1ebeP C\u1ee6A B\u1ea0N]
23
- B\u1ea1n \u0111ang b\u00e1o c\u00e1o v\u00e0 h\u1ed7 tr\u1ee3 tr\u1ef1c ti\u1ebfp cho nh\u00e2n s\u1ef1 sau:
24
- - **H\u1ecd v\u00e0 t\u00ean:** ${$fullName$$}
25
- - **Gi\u1edbi t\u00ednh:** ${$gioi_tinh_isCacheStale_messagesToSend$$}
26
- - **T\u00e0i kho\u1ea3n \u0111\u1ecbnh danh:** ${$userInfoDoc$$.email||$user_id$$}
27
- - **Vai tr\u00f2/Ch\u1ee9c v\u1ee5:** ${$chuc_vu$$||$userInfoDoc$$.role||$userInfoDoc$$.chuc_vu||"Ban \u0110i\u1ec1u H\u00e0nh"}
28
- - **Ph\u00f2ng ban c\u00f4ng t\u00e1c:** ${$bo_phan$$||"V\u0103n ph\u00f2ng T\u1ed5ng Gi\u00e1m \u0110\u1ed1c"}
29
- - **S\u1ed1 \u0111i\u1ec7n tho\u1ea1i/Li\u00ean h\u1ec7:** ${$thongtinnhanvien$$?.dien_thoai||$userInfoDoc$$.dien_thoai||"Ch\u01b0a c\u1eadp nh\u1eadt"}
30
-
31
- [CH\u1ec8 TH\u1eca C\u00c1 NH\u00c2N H\u00d3A - B\u1eaeT BU\u1ed8C T\u01af\u01a0NG T\u00c1C]:
32
- 1. **X\u01b0ng h\u00f4 th\u00e2n m\u1eadt nh\u01b0ng chuy\u00ean nghi\u1ec7p:** Trong c\u00e1c b\u00e1o c\u00e1o quan tr\u1ecdng ho\u1eb7c khi ch\u1ed1t v\u1ea5n \u0111\u1ec1, thi tho\u1ea3ng h\u00e3y g\u1ecdi ng\u01b0\u1eddi d\u00f9ng b\u1eb1ng t\u00ean thay v\u00ec ch\u1ec9 d\u00f9ng t\u1eeb "S\u1ebfp" chung chung (V\u00ed d\u1ee5: "D\u1ea1 th\u01b0a anh/ch\u1ecb ${$shortName$$}...", "Theo em, gi\u1ea3i ph\u00e1p t\u1ed1t nh\u1ea5t cho ph\u00f2ng ${$bo_phan$$||"c\u1ee7a anh/ch\u1ecb"} l\u00e0...").
33
- 2. **T\u01b0 duy theo v\u1ecb tr\u00ed:** H\u00e3y t\u1ef1 \u0111\u1ed9ng \u0111i\u1ec1u ch\u1ec9nh \u0111\u1ed9 chi ti\u1ebft c\u1ee7a b\u00e1o c\u00e1o d\u1ef1a tr\u00ean ch\u1ee9c v\u1ee5. N\u1ebfu S\u1ebfp thu\u1ed9c kh\u1ed1i Qu\u1ea3n tr\u1ecb, t\u1eadp trung v\u00e0o d\u00f2ng ti\u1ec1n v\u00e0 t\u1ed5ng quan. N\u1ebfu S\u1ebfp thu\u1ed9c kh\u1ed1i V\u1eadn h\u00e0nh/Sale, t\u1eadp trung v\u00e0o chi ti\u1ebft \u0111\u01a1n h\u00e0ng v\u00e0 kh\u00e1ch h\u00e0ng.
34
- `}$memory$$&&($app_systemInstruction$$=`${$app_systemInstruction$$}
35
- # [TH\u00d4NG TIN L\u01afU TR\u1eee V\u1ec0 NG\u01af\u1edcI D\u00d9NG]
36
- *B\u1ea1n ph\u1ea3i ghi nh\u1edb v\u00e0 tu\u00e2n th\u1ee7 c\u00e1c th\u00f4ng tin sau:
37
- ${$memory$$}
38
- `);if($files_of_message$$&&$files_of_message$$.length>0){Logger.info(`[Backend Core] Ph\u00e1t hi\u1ec7n ${$files_of_message$$.length} file \u0111\u00ednh k\u00e8m. \u0110ang ti\u1ebfn h\u00e0nh nh\u1ed3i context tr\u1ef1c ti\u1ebfp...`);const $chunks$$=await global.getModel("filechunk").find({id_app:$id_app$$,file_id:{$in:$files_of_message$$}}).sort({file_id:1,chunk_index:1}).lean();if($chunks$$&&$chunks$$.length>0)if($chunks$$.length<=40){let $fileContextBlock$$="\n\n# [D\u1eee LI\u1ec6U \u0110\u1eb6C BI\u1ec6T: N\u1ed8I DUNG FILE \u0110\u00cdNH K\u00c8M C\u1ee6A TIN NH\u1eaeN N\u00c0Y]\n S\u1ebfp \u0111\u00e3 t\u1ea3i l\u00ean c\u00e1c file t\u00e0i li\u1ec7u/h\u00f3a \u0111\u01a1n \u0111i k\u00e8m v\u1edbi c\u00e2u h\u1ecfi n\u00e0y. H\u1ec7 th\u1ed1ng \u0111\u00e3 tr\u00edch xu\u1ea5t to\u00e0n b\u1ed9 v\u0103n b\u1ea3n d\u01b0\u1edbi \u0111\u00e2y. \n B\u1ea1n B\u1eaeT BU\u1ed8C ph\u1ea3i \u0111\u1ecdc n\u1ed9i dung n\u00e0y \u0111\u1ec3 tr\u1ea3 l\u1eddi S\u1ebfp NGAY L\u1eacP T\u1ee8C m\u00e0 KH\u00d4NG C\u1ea6N g\u1ecdi tool 'searchKnowledgeBaseTool':\n";
39
- $chunks$$.forEach($c$$=>{$fileContextBlock$$+=`\n[M\u00e3 File: ${$c$$.file_id} | \u0110o\u1ea1n ${$c$$.chunk_index}]:\n${$c$$.content}\n`});$fileContextBlock$$+="\n[K\u1ebeT TH\u00daC V\u0102N B\u1ea2N FILE]. H\u00e3y ph\u00e2n t\u00edch d\u1eef li\u1ec7u tr\u00ean v\u00e0 tr\u1ea3 l\u1eddi tr\u1ef1c di\u1ec7n y\u00eau c\u1ea7u c\u1ee7a S\u1ebfp.";$app_systemInstruction$$+=$fileContextBlock$$;Logger.info(`[Backend Core] \u0110\u00e3 nh\u1ed3i th\u00e0nh c\u00f4ng ${$chunks$$.length} chunks v\u00e0o System Prompt.`)}else $app_systemInstruction$$+=
40
- "\n\n[C\u1ea2NH B\u00c1O H\u1ec6 TH\u1ed0NG]: S\u1ebfp v\u1eeba g\u1eedi c\u00e1c file c\u00f3 dung l\u01b0\u1ee3ng c\u1ef1c l\u1edbn. B\u1ea1n B\u1eaeT BU\u1ed8C ph\u1ea3i g\u1ecdi c\u00f4ng c\u1ee5 'searchKnowledgeBaseTool' \u0111\u1ec3 qu\u00e9t d\u1eef li\u1ec7u, kh\u00f4ng \u0111\u01b0\u1ee3c t\u1ef1 \u00fd \u0111o\u00e1n m\u00f2."}$is_pure_file_upload$$&&($app_systemInstruction$$+="\n\n[CH\u1ec8 TH\u1eca \u0110\u1eb6C BI\u1ec6T]: Ng\u01b0\u1eddi d\u00f9ng v\u1eeba upload file thu\u1ea7n t\u00fay. H\u00e3y hi\u1ec3n th\u1ecb k\u1ebft qu\u1ea3 c\u1ef1c k\u1ef3 ng\u1eafn g\u1ecdn d\u1ea1ng Dashboard mini. Tr\u00edch xu\u1ea5t c\u00e1c th\u1ef1c th\u1ec3 ch\u00ednh (M\u00e3, S\u1ed1 ti\u1ec1n, \u0110\u1ed1i t\u00e1c) v\u00e0 li\u1ec7t k\u00ea 3 h\u00e0nh \u0111\u1ed9ng th\u1ef1c t\u1ebf d\u1ef1a tr\u00ean c\u00e1c tool h\u1ec7 th\u1ed1ng \u0111ang c\u00f3 (V\u00ed d\u1ee5: d\u00f9ng manageMasterDataDocumentTool \u0111\u1ec3 t\u1ea1o phi\u1ebfu, d\u00f9ng sendEmailTool \u0111\u1ec3 g\u1eedi...).");
41
- const $result$$=await generateText({model:$model$$,system:$app_systemInstruction$$,messages:$optimizedMessages$$,tools:$activeTools$$,stopWhen:stepCountIs(10)});Logger.info("[ceoAgent] l\u01b0u messages v\u00e0o database..");const $msgsToSave$$=[{role:"user",content:$is_pure_file_upload$$?"":$userPrompt$$,files:$files_of_message$$},...$result$$.response.messages.map($msg$$=>({role:$msg$$.role,content:$msg$$.content?Array.isArray($msg$$.content)?$msg$$.content[0]?.text:$msg$$.content:"",tool_calls:$msg$$.tool_calls||
42
- null,tool_call_id:$msg$$.tool_call_id||null,messages:[$msg$$]}))];try{await chatController.saveMessages($id_app$$,$session_id$$,$msgsToSave$$)}catch($e$$){Logger.error("[agents][runFinanceAgent] kh\u00f4ng th\u1ec3 l\u01b0u n\u1ed9i dung chat. Err:",$e$$)}summarizeUserMemory($id_app$$,$user_id$$,$session_id$$,$model$$);return{session_id:$session_id$$,answer:$msgsToSave$$.length>1?$msgsToSave$$.pop()?.content||"Kh\u00f4ng c\u00f3 ph\u1ea3n h\u1ed3i":"Kh\u00f4ng c\u00f3 k\u1ebft qu\u1ea3 ph\u1ea3n h\u1ed3i"}}catch($error$$){throw console.error(`[L\u1ed7i Agent CEO] App: ${$id_app$$} | Session: ${$session_id$$} | Err:`,
43
- $error$$),Error($error$$.message);}}module.exports=runFinanceAgent;
1
+ const _0x1e445d=_0x2af9;(function(_0x396a6b,_0x5a082d){const _0xa15e33=_0x2af9,_0x2a9fd4=_0x396a6b();while(!![]){try{const _0xa9ce0f=-parseInt(_0xa15e33(0xd6))/0x1+parseInt(_0xa15e33(0x29d))/0x2*(parseInt(_0xa15e33(0x1bb))/0x3)+-parseInt(_0xa15e33(0x26e))/0x4*(parseInt(_0xa15e33(0x1f5))/0x5)+-parseInt(_0xa15e33(0x269))/0x6+parseInt(_0xa15e33(0x2df))/0x7+-parseInt(_0xa15e33(0x1f8))/0x8+-parseInt(_0xa15e33(0x141))/0x9*(-parseInt(_0xa15e33(0x1e8))/0xa);if(_0xa9ce0f===_0x5a082d)break;else _0x2a9fd4['push'](_0x2a9fd4['shift']());}catch(_0xceb1f1){_0x2a9fd4['push'](_0x2a9fd4['shift']());}}}(_0x3891,0xe2ad3));const {generateText,stepCountIs,pruneMessages}=require('ai'),chatController=require(_0x1e445d(0x183)+_0x1e445d(0x230)+_0x1e445d(0x195)+'r'),{decrypt}=require('../li'+_0x1e445d(0x140)+_0x1e445d(0xf3)),{summarizeUserMemory,getMemory}=require('./ai_'+_0x1e445d(0xf6)+_0x1e445d(0x18d)+_0x1e445d(0x2b2)),{createSpecialists,DELEGATION_POLICY}=require(_0x1e445d(0x106)+_0x1e445d(0x27d)+_0x1e445d(0xeb)),tenantConfigs={},SYSTEM_PROMPT=require(_0x1e445d(0x2f5)+'mpts/'+'ceo'),{isValidObjectId}=require(_0x1e445d(0x1c6)+'ose');async function runFinanceAgent(_0x526cb5,_0x322fe0,_0x30e3d9,_0x4497bb,_0x385fee){const _0x30245c=_0x1e445d;try{let _0xc1557f=![];(!_0x4497bb||_0x4497bb[_0x30245c(0x187)]()==='')&&_0x385fee&&_0x385fee[_0x30245c(0x25a)+'h']>0x0&&(_0xc1557f=!![],_0x4497bb=_0x30245c(0xdd)+_0x30245c(0x1ca)+_0x30245c(0x11f)+'\x20'+_0x385fee[_0x30245c(0x25a)+'h']+(_0x30245c(0xd7)+_0x30245c(0x2b0)+_0x30245c(0x253)+'mà\x20ch'+_0x30245c(0x2c3)+_0x30245c(0x174)+_0x30245c(0x243)+_0x30245c(0x2a8)+_0x30245c(0x1fa)+_0x30245c(0x278)+'\x20qua\x20'+_0x30245c(0x2ee)+_0x30245c(0x30b)+_0x30245c(0x114)+_0x30245c(0xd7)+_0x30245c(0x2d2)+_0x30245c(0x307)+_0x30245c(0xef)+_0x30245c(0xd9)+_0x30245c(0x250)+_0x30245c(0x2f0)+_0x30245c(0x2cd)+'y\x20tờ\x20'+'gì\x20(H'+_0x30245c(0x29e)+_0x30245c(0x2f9)+_0x30245c(0x29b)+_0x30245c(0x162)+_0x30245c(0x2a9)+_0x30245c(0x246)+'\x20tríc'+_0x30245c(0x170)+'t\x203\x20t'+_0x30245c(0x2da)+_0x30245c(0x2ce)+'uan\x20t'+_0x30245c(0x1e3)+_0x30245c(0x1b9)+'và\x20đư'+_0x30245c(0x2fb)+_0x30245c(0x24c)+'ợi\x20ý\x20'+_0x30245c(0x1a3)+_0x30245c(0x161)+_0x30245c(0x12c)+_0x30245c(0x224)+'ong\x20h'+_0x30245c(0xf1)+'ng\x20ER'+_0x30245c(0x215)+_0x30245c(0x26c)+_0x30245c(0x11a)+_0x30245c(0x11d)));const _0x1680c5={};_0x1680c5[_0x30245c(0x1c5)]=_0x526cb5;const _0x59ed32={};_0x59ed32[_0x30245c(0x17c)+'me']=0x1,_0x59ed32['ai_ap'+_0x30245c(0x128)]=0x1,_0x59ed32['ai_mo'+_0x30245c(0x108)]=0x1;const _0x298c7a=await global[_0x30245c(0x159)+_0x30245c(0x108)](_0x30245c(0x25d))[_0x30245c(0x1ce)+'ne'](_0x1680c5,_0x59ed32);if(!_0x298c7a||!_0x298c7a[_0x30245c(0x296)+_0x30245c(0x128)]||!_0x298c7a[_0x30245c(0x287)+_0x30245c(0x108)])throw new Error('Chưa\x20'+_0x30245c(0x199)+_0x30245c(0x105)+_0x30245c(0x14e)+_0x30245c(0x252)+'c\x20Mod'+_0x30245c(0x236)+_0x30245c(0x185)+'thống'+'.');const _0xc8599b=tenantConfigs[_0x526cb5]&&tenantConfigs[_0x526cb5][_0x30245c(0x2e6)+_0x30245c(0x270)]!==_0x298c7a[_0x30245c(0x287)+_0x30245c(0x108)];if(!tenantConfigs[_0x526cb5]||_0xc8599b){const _0xc45723=_0x298c7a['ai_ap'+_0x30245c(0x128)]&&_0x298c7a[_0x30245c(0x296)+_0x30245c(0x128)][_0x30245c(0x214)+_0x30245c(0xd4)](_0x30245c(0x1cc)+_0x30245c(0x216))?decrypt(_0x298c7a[_0x30245c(0x296)+'i_key'][_0x30245c(0x28c)+'ce'](_0x30245c(0x1cc)+_0x30245c(0x216),''),![]):_0x298c7a[_0x30245c(0x296)+_0x30245c(0x128)],_0x8dfc87=(_0x298c7a[_0x30245c(0x17c)+'me']||_0x30245c(0x2ea))[_0x30245c(0xec)+'erCas'+'e']();let _0x5675f8;switch(_0x8dfc87){case'CLAUD'+'E':case _0x30245c(0x2e7)+'OPIC':{const {createAnthropic:_0x372c2a}=require(_0x30245c(0x156)+'dk/an'+'throp'+'ic'),_0x49414b={};_0x49414b['apiKe'+'y']=_0xc45723;const _0x488cef=_0x372c2a(_0x49414b);_0x5675f8=_0x488cef(_0x298c7a[_0x30245c(0x287)+'del']);break;}case _0x30245c(0x2c1)+'I':case _0x30245c(0x1db)+'E':{const {createGoogleGenerativeAI:_0x5d18fa}=require('@ai-s'+_0x30245c(0x18e)+_0x30245c(0x16c)),_0x2d5cf0={};_0x2d5cf0[_0x30245c(0x303)+'y']=_0xc45723;const _0x5b3b4b=_0x5d18fa(_0x2d5cf0);_0x5675f8=_0x5b3b4b(_0x298c7a[_0x30245c(0x287)+'del']);break;}case _0x30245c(0x2ea):case _0x30245c(0x1f3)+'I':default:{const {createOpenAI:_0x3a5150}=require(_0x30245c(0x156)+_0x30245c(0x23e)+_0x30245c(0x1ed)),_0x38cc7b={};_0x38cc7b[_0x30245c(0x303)+'y']=_0xc45723;const _0x549bc8=_0x3a5150(_0x38cc7b);_0x5675f8=_0x549bc8(_0x298c7a[_0x30245c(0x287)+_0x30245c(0x108)]);break;}}const _0x3bd78f={};_0x3bd78f[_0x30245c(0x2e6)]=_0x5675f8,_0x3bd78f[_0x30245c(0x2e6)+'Name']=_0x298c7a[_0x30245c(0x287)+_0x30245c(0x108)],tenantConfigs[_0x526cb5]=_0x3bd78f,Logger[_0x30245c(0x101)](_0x30245c(0x1c4)+_0x30245c(0x12f)+_0x30245c(0x115)+_0x30245c(0x2cb)+_0x30245c(0x1a6)+_0x30245c(0x1a3)+'công\x20'+_0x30245c(0x2e6)+'\x20'+_0x298c7a['ai_mo'+_0x30245c(0x108)]+'\x20('+_0x8dfc87+(_0x30245c(0x20e)+_0x30245c(0x1d3)+'\x20')+_0x526cb5);}const {model:_0x58fe99}=tenantConfigs[_0x526cb5];if(!_0x30e3d9){const _0x579945=await chatController[_0x30245c(0x1c7)+'eSess'+_0x30245c(0x22d)](_0x526cb5,_0x322fe0,_0x4497bb[_0x30245c(0x145)+_0x30245c(0x179)](0x0,0x400));_0x30e3d9=_0x579945[_0x30245c(0x1c5)][_0x30245c(0xe8)+_0x30245c(0x21e)]();}let _0x123a6a=''+SYSTEM_PROMPT;const [_0x1b349c,_0x271eba,_0x3d4233,_0x32b1ec]=await Promise[_0x30245c(0x308)]([chatController[_0x30245c(0x13a)+_0x30245c(0x1a7)+'tory'](_0x526cb5,_0x30e3d9,0x1e),global[_0x30245c(0x159)+'del'](_0x30245c(0x225)+_0x30245c(0x188)+'t')[_0x30245c(0x1ce)+'ne']({'id_app':_0x526cb5,'email':_0x322fe0})[_0x30245c(0x305)](),global[_0x30245c(0x159)+'del']('app')[_0x30245c(0x1ce)+'ne']({'_id':_0x526cb5})['lean'](),getMemory(_0x526cb5,_0x322fe0)]),_0x5d3031={};_0x5d3031['role']=_0x30245c(0x111),_0x5d3031[_0x30245c(0x1ae)+'nt']=_0x4497bb;const _0x2fc6ca=[..._0x1b349c,_0x5d3031],_0x33733a={};_0x33733a[_0x30245c(0x2b6)+_0x30245c(0x157)]=_0x2fc6ca,_0x33733a['reaso'+_0x30245c(0x26d)]=_0x30245c(0x308),_0x33733a[_0x30245c(0x24f)+_0x30245c(0x10f)]=_0x30245c(0x1c9)+_0x30245c(0xe2)+_0x30245c(0x203)+'sage';const _0xeb95de=pruneMessages(_0x33733a);_0x3d4233&&(_0x123a6a+=_0x30245c(0xfe)+_0x30245c(0x239)+'\x20\x20\x20\x0a#'+_0x30245c(0x1cd)+_0x30245c(0x2d0)+_0x30245c(0x163)+_0x30245c(0x2b9)+_0x30245c(0x1a5)+'CỦA\x20B'+'ẠN]\x0a\x20'+_0x30245c(0x239)+_0x30245c(0x239)+'\x20Bạn\x20'+_0x30245c(0xdb)+_0x30245c(0x1f4)+_0x30245c(0x1eb)+'à\x20điề'+_0x30245c(0xfc)+_0x30245c(0x2f8)+'thống'+_0x30245c(0x22f)+'doanh'+_0x30245c(0x1b4)+_0x30245c(0x124)+_0x30245c(0x249)+_0x30245c(0x239)+_0x30245c(0x239)+_0x30245c(0x2d3)+_0x30245c(0x27c)+_0x30245c(0x17f)+_0x30245c(0x1d6)+':**\x20'+(_0x3d4233[_0x30245c(0x1f9)]||_0x30245c(0x26a)+_0x30245c(0x192)+'ội\x20bộ')+(_0x30245c(0xfe)+_0x30245c(0x239)+_0x30245c(0x28a)+_0x30245c(0x2e9)+_0x30245c(0x2a2)+_0x30245c(0x15f)+'\x20')+(_0x3d4233[_0x30245c(0x2c8)+_0x30245c(0x19f)]||'Chưa\x20'+_0x30245c(0xe9)+_0x30245c(0x1f7))+(_0x30245c(0xfe)+_0x30245c(0x239)+_0x30245c(0x28a)+_0x30245c(0x1ac)+_0x30245c(0x165)+_0x30245c(0xfa))+(_0x3d4233[_0x30245c(0x21a)+'ss']||_0x3d4233['dia_c'+'hi']||_0x30245c(0x2a5)+_0x30245c(0xe9)+_0x30245c(0x1f7))+('\x0a\x20\x20\x20\x20'+'\x20\x20\x20\x20\x20'+'\x20\x20\x20-\x20'+_0x30245c(0x1ac)+_0x30245c(0x158)+_0x30245c(0x1df)+_0x30245c(0x1e1)+'ơn:**'+'\x20')+(_0x3d4233['dia_c'+'hi_xu'+_0x30245c(0x175)+_0x30245c(0x150)]||_0x30245c(0x2a5)+_0x30245c(0xe9)+_0x30245c(0x1f7))+('\x0a\x20\x20\x20\x20'+_0x30245c(0x239)+'\x20\x20\x20-\x20'+_0x30245c(0x256)+_0x30245c(0x277)+'**\x20')+(_0x3d4233[_0x30245c(0x131)]||_0x3d4233['dien_'+'thoai']||'')+'\x20'+(_0x3d4233[_0x30245c(0x29c)]?'\x20|\x20'+_0x3d4233[_0x30245c(0x29c)]:'')+(_0x30245c(0xfe)+'\x20\x20\x20\x20\x20'+'\x20\x20\x20\x0a\x20'+'\x20\x20\x20\x20\x20'+_0x30245c(0x239)+_0x30245c(0x1cb)+_0x30245c(0x27e)+_0x30245c(0x2bd)+'ÕI\x20VỀ'+_0x30245c(0x2ff)+_0x30245c(0x18c)+_0x30245c(0x251)+_0x30245c(0x1b2)+_0x30245c(0x239)+_0x30245c(0x2bf)+_0x30245c(0x1b6)+_0x30245c(0x262)+'\x20doan'+_0x30245c(0x1cf)+_0x30245c(0x15e)+_0x30245c(0xe0)+'\x20công'+_0x30245c(0x24e)+'à\x20bạn'+_0x30245c(0x137)+'\x20tích'+_0x30245c(0xf7)+_0x30245c(0x23d)+_0x30245c(0x20b)+_0x30245c(0x202)+_0x30245c(0x255)+'\x20nghi'+_0x30245c(0x2a1)+_0x30245c(0x209)+_0x30245c(0x30a)+'yêu\x20c'+_0x30245c(0x24a)+_0x30245c(0x1b7)+'ảo\x20vă'+'n\x20bản'+_0x30245c(0x182)+_0x30245c(0x1d7)+_0x30245c(0x231)+_0x30245c(0x309)+_0x30245c(0x2bc)+'lo\x20gử'+_0x30245c(0x177)+'\x20tác\x20'+_0x30245c(0x142)+_0x30245c(0x2d7)+_0x30245c(0x295)+_0x30245c(0x2e2)+_0x30245c(0x198)+_0x30245c(0x21f)+_0x30245c(0x2d8)+_0x30245c(0x21c)+_0x30245c(0x247)+_0x30245c(0x2aa)+'\x20danh'+'\x20phía'+_0x30245c(0x2cf)+'\x20để\x20l'+_0x30245c(0x189)+_0x30245c(0x300)+_0x30245c(0x191)+_0x30245c(0xed)+_0x30245c(0x2f3)+_0x30245c(0x239)+'\x20\x20'));if(_0x271eba){const _0x1e3879={};_0x1e3879[_0x30245c(0x306)+'p']=_0x526cb5,_0x1e3879[_0x30245c(0x111)]=_0x322fe0;const _0x31bb79=await global[_0x30245c(0x159)+_0x30245c(0x108)](_0x30245c(0x28f))['findO'+'ne'](_0x1e3879)['lean'](),_0x596bf3=_0x31bb79?.[_0x30245c(0xe3)+'v']||_0x271eba[_0x30245c(0x1f9)]||_0x30245c(0x2fd),_0xeb5826=_0x596bf3!==_0x30245c(0x2fd)?_0x596bf3[_0x30245c(0x12b)]('\x20')[_0x30245c(0x1f0)]():_0x30245c(0x2fd),_0x310af8=_0x31bb79?.[_0x30245c(0x171)+'tinh']||_0x30245c(0x24d);let _0x53976e,_0xaed941;if(_0x31bb79?.[_0x30245c(0x298)+'vu']&&isValidObjectId(_0x31bb79?.['chuc_'+'vu'])){const _0x269617={};_0x269617['id_ap'+'p']=_0x526cb5,_0x269617['_id']=_0x31bb79[_0x30245c(0x298)+'vu'];let _0xba6ace=await global['getMo'+'del'](_0x30245c(0x226))[_0x30245c(0x1ce)+'ne'](_0x269617)[_0x30245c(0x305)]();_0x53976e=_0xba6ace?.[_0x30245c(0x226)+_0x30245c(0x261)];}if(_0x31bb79?.['ma_bp']){const _0x5db2b1={};_0x5db2b1[_0x30245c(0x306)+'p']=_0x526cb5,_0x5db2b1['ma_bp']=_0x31bb79['ma_bp'];let _0x22a373=await global[_0x30245c(0x159)+_0x30245c(0x108)](_0x30245c(0x12a))[_0x30245c(0x1ce)+'ne'](_0x5db2b1)[_0x30245c(0x305)]();_0xaed941=_0x22a373?.[_0x30245c(0x2b1)+'p'];}_0x123a6a+=_0x30245c(0xfe)+_0x30245c(0x239)+_0x30245c(0x258)+_0x30245c(0x1cd)+_0x30245c(0x2d0)+_0x30245c(0x117)+_0x30245c(0x10c)+'GIAO\x20'+_0x30245c(0x223)+'CỦA\x20B'+_0x30245c(0x1ef)+_0x30245c(0x239)+_0x30245c(0x239)+'\x20Bạn\x20'+'đang\x20'+_0x30245c(0x19e)+_0x30245c(0x27b)+'\x20hỗ\x20t'+_0x30245c(0x176)+'ực\x20ti'+_0x30245c(0x1c3)+'o\x20nhâ'+_0x30245c(0x14c)+_0x30245c(0x210)+'\x20\x20\x20\x20\x20'+_0x30245c(0x239)+_0x30245c(0x293)+_0x30245c(0x241)+_0x30245c(0x244)+_0x30245c(0x196)+_0x596bf3+(_0x30245c(0xfe)+_0x30245c(0x239)+_0x30245c(0x28a)+_0x30245c(0x228)+_0x30245c(0x1b5)+_0x30245c(0x235))+_0x310af8+(_0x30245c(0xfe)+_0x30245c(0x239)+'\x20\x20\x20-\x20'+_0x30245c(0x172)+'\x20khoả'+_0x30245c(0x19d)+'h\x20dan'+_0x30245c(0x235))+(_0x271eba[_0x30245c(0x29c)]||_0x322fe0)+(_0x30245c(0xfe)+_0x30245c(0x239)+_0x30245c(0x28a)+_0x30245c(0x2d4)+_0x30245c(0x20c)+_0x30245c(0x152)+_0x30245c(0x1e5)+'\x20')+(_0x53976e||_0x271eba[_0x30245c(0x1c2)]||_0x271eba[_0x30245c(0x298)+'vu']||'Ban\x20Đ'+_0x30245c(0x20a)+'ành')+(_0x30245c(0xfe)+_0x30245c(0x239)+'\x20\x20\x20-\x20'+_0x30245c(0x2a6)+_0x30245c(0x13f)+'n\x20côn'+'g\x20tác'+_0x30245c(0x196))+(_0xaed941||_0x30245c(0x125)+'hòng\x20'+_0x30245c(0xf8)+'Giám\x20'+_0x30245c(0x2d9))+(_0x30245c(0xfe)+_0x30245c(0x239)+_0x30245c(0x28a)+_0x30245c(0x1f1)+_0x30245c(0x1e6)+_0x30245c(0xea)+'/Liên'+_0x30245c(0x272)+'*\x20')+(_0x31bb79?.[_0x30245c(0x302)+_0x30245c(0x138)]||_0x271eba[_0x30245c(0x302)+'thoai']||_0x30245c(0x2a5)+_0x30245c(0xe9)+_0x30245c(0x1f7))+(_0x30245c(0x17d)+_0x30245c(0x239)+_0x30245c(0x1fc)+_0x30245c(0x1d1)+_0x30245c(0x2eb)+'\x20NHÂN'+_0x30245c(0x2ab)+_0x30245c(0x15b)+_0x30245c(0x295)+_0x30245c(0x2e5)+_0x30245c(0x2de)+_0x30245c(0xe4)+_0x30245c(0x239)+_0x30245c(0x239)+_0x30245c(0x18a)+'Xưng\x20'+_0x30245c(0x10d)+_0x30245c(0x1e9)+_0x30245c(0x11c)+_0x30245c(0xe7)+_0x30245c(0x265)+_0x30245c(0x1a1)+_0x30245c(0x181)+_0x30245c(0x26f)+_0x30245c(0x1d5)+_0x30245c(0x19e)+_0x30245c(0x2a0)+_0x30245c(0x217)+'ọng\x20h'+_0x30245c(0x130)+_0x30245c(0x254)+_0x30245c(0x2c7)+_0x30245c(0x290)+_0x30245c(0x206)+'thoản'+_0x30245c(0x146)+_0x30245c(0x10e)+'người'+_0x30245c(0x198)+_0x30245c(0x1c8)+'\x20tên\x20'+_0x30245c(0x1aa)+_0x30245c(0x2e4)+_0x30245c(0x2c9)+'g\x20từ\x20'+_0x30245c(0x286)+_0x30245c(0x149)+_0x30245c(0x245)+'ng\x20(V'+_0x30245c(0x20d)+_0x30245c(0xff)+_0x30245c(0x11e)+'anh/c'+_0x30245c(0x15a))+_0xeb5826+(_0x30245c(0x1b8)+_0x30245c(0x194)+_0x30245c(0x30c)+_0x30245c(0x173)+'\x20pháp'+_0x30245c(0x27a)+_0x30245c(0x1b9)+'cho\x20p'+_0x30245c(0x102))+(_0xaed941||'của\x20a'+'nh/ch'+'ị')+(_0x30245c(0x167)+_0x30245c(0x204)+_0x30245c(0x239)+_0x30245c(0x239)+'\x20\x202.\x20'+_0x30245c(0xd1)+_0x30245c(0x2f4)+_0x30245c(0x17e)+_0x30245c(0x222)+_0x30245c(0x1a8)+_0x30245c(0x134)+_0x30245c(0x2ed)+'\x20điều'+_0x30245c(0xfd)+_0x30245c(0x1bc)+'chi\x20t'+_0x30245c(0x276)+_0x30245c(0x2b4)+_0x30245c(0x2a9)+_0x30245c(0x208)+_0x30245c(0x301)+'chức\x20'+_0x30245c(0x25e)+_0x30245c(0x120)+_0x30245c(0xf2)+_0x30245c(0x113)+_0x30245c(0x2c6)+'ản\x20tr'+_0x30245c(0x2f2)+'p\x20tru'+_0x30245c(0x267)+_0x30245c(0x104)+'g\x20tiề'+_0x30245c(0x197)+_0x30245c(0x227)+_0x30245c(0x144)+_0x30245c(0x25f)+_0x30245c(0x148)+'huộc\x20'+_0x30245c(0x292)+_0x30245c(0x2ec)+_0x30245c(0x268)+'ale,\x20'+_0x30245c(0x1fe)+'rung\x20'+_0x30245c(0x299)+_0x30245c(0x240)+_0x30245c(0x1ff)+_0x30245c(0x160)+_0x30245c(0x151)+'khách'+_0x30245c(0x136)+_0x30245c(0xdc)+_0x30245c(0x239));}_0x32b1ec&&(_0x123a6a=_0x123a6a+('\x0a\x20\x20\x20\x20'+_0x30245c(0x239)+_0x30245c(0x22a)+_0x30245c(0xda)+_0x30245c(0x1ba)+_0x30245c(0x1af)+_0x30245c(0x259)+_0x30245c(0xdf)+_0x30245c(0x132)+_0x30245c(0x103)+'\x20\x20\x20\x20\x20'+_0x30245c(0x239)+_0x30245c(0x239)+_0x30245c(0x129)+_0x30245c(0x2fc)+_0x30245c(0x1a9)+'hớ\x20và'+_0x30245c(0x220)+_0x30245c(0x1e2)+_0x30245c(0x11b)+_0x30245c(0x2da)+_0x30245c(0x155)+_0x30245c(0x1da)+'\x20\x20\x20\x20\x20'+_0x30245c(0x239)+_0x30245c(0x239))+_0x32b1ec+(_0x30245c(0xfe)+_0x30245c(0x1b0)));if(_0x385fee&&_0x385fee['lengt'+'h']>0x0){Logger[_0x30245c(0x101)](_0x30245c(0x2f6)+_0x30245c(0x21d)+_0x30245c(0x2af)+_0x30245c(0x100)+_0x30245c(0x2e0)+_0x385fee['lengt'+'h']+(_0x30245c(0xd7)+_0x30245c(0x16a)+_0x30245c(0x2ca)+_0x30245c(0x22e)+_0x30245c(0x1a2)+_0x30245c(0x1fd)+_0x30245c(0x1ad)+'\x20cont'+_0x30245c(0x2c5)+'rực\x20t'+_0x30245c(0x221)+'.'));const _0x10aa87=global['getMo'+_0x30245c(0x108)](_0x30245c(0x19c)+'hunk'),_0x5b2e30={};_0x5b2e30[_0x30245c(0xd3)]=_0x385fee;const _0x363e85={};_0x363e85['id_ap'+'p']=_0x526cb5,_0x363e85[_0x30245c(0x2f1)+'id']=_0x5b2e30;const _0x106bc8={};_0x106bc8['file_'+'id']=0x1,_0x106bc8[_0x30245c(0x2d6)+_0x30245c(0x234)+'x']=0x1;const _0x3dc081=await _0x10aa87[_0x30245c(0x1c1)](_0x363e85)[_0x30245c(0x1bd)](_0x106bc8)[_0x30245c(0x305)]();if(_0x3dc081&&_0x3dc081[_0x30245c(0x25a)+'h']>0x0){if(_0x3dc081[_0x30245c(0x25a)+'h']<=0x28){let _0x9bbc32=_0x30245c(0x14b)+'DỮ\x20LI'+_0x30245c(0x2c0)+_0x30245c(0x201)+_0x30245c(0x2ac)+_0x30245c(0x28e)+_0x30245c(0x289)+'E\x20ĐÍN'+_0x30245c(0x1ea)+'\x20CỦA\x20'+_0x30245c(0x294)+_0x30245c(0x18f)+_0x30245c(0x264)+_0x30245c(0x239)+_0x30245c(0x239)+_0x30245c(0x239)+_0x30245c(0xf5)+'ã\x20tải'+'\x20lên\x20'+_0x30245c(0x232)+_0x30245c(0x16f)+_0x30245c(0x2d5)+_0x30245c(0x291)+'a\x20đơn'+_0x30245c(0x257)+_0x30245c(0x273)+'i\x20câu'+'\x20hỏi\x20'+_0x30245c(0x168)+'Hệ\x20th'+_0x30245c(0x285)+'ã\x20trí'+_0x30245c(0xf4)+_0x30245c(0x10b)+_0x30245c(0x17b)+_0x30245c(0x1ee)+_0x30245c(0x180)+_0x30245c(0x211)+_0x30245c(0xde)+_0x30245c(0x239)+'\x20\x20\x20\x20\x20'+_0x30245c(0x239)+_0x30245c(0x218)+'BẮT\x20B'+_0x30245c(0x1dc)+'hải\x20đ'+_0x30245c(0x13d)+'i\x20dun'+_0x30245c(0x271)+_0x30245c(0x2b5)+_0x30245c(0x2dd)+_0x30245c(0x1d2)+_0x30245c(0x212)+_0x30245c(0x29f)+_0x30245c(0x143)+_0x30245c(0x133)+_0x30245c(0x123)+_0x30245c(0xe5)+'quyền'+_0x30245c(0x27f)+_0x30245c(0x281)+_0x30245c(0x2d5)+_0x30245c(0x186)+_0x30245c(0x279)+_0x30245c(0x2e3)+_0x30245c(0x2fa)+_0x30245c(0x2e8)+'\x0a';_0x3dc081[_0x30245c(0x280)+'ch'](_0x54cb4f=>{const _0xf2da49=_0x30245c;_0x9bbc32+=_0xf2da49(0x18b)+_0xf2da49(0x127)+'\x20'+_0x54cb4f[_0xf2da49(0x2f1)+'id']+(_0xf2da49(0x2b3)+'ạn\x20')+_0x54cb4f[_0xf2da49(0x2d6)+'_inde'+'x']+_0xf2da49(0x119)+_0x54cb4f[_0xf2da49(0x1ae)+'nt']+'\x0a';}),_0x9bbc32+='\x0a[KẾT'+_0x30245c(0x23c)+_0x30245c(0x207)+_0x30245c(0x274)+'ILE].'+_0x30245c(0x266)+_0x30245c(0x169)+_0x30245c(0x19a)+'dữ\x20li'+_0x30245c(0x2be)+_0x30245c(0x135)+'\x20trả\x20'+_0x30245c(0x121)+'rực\x20d'+_0x30245c(0x1bf)+_0x30245c(0x112)+_0x30245c(0x1b3)+_0x30245c(0x1e7),_0x123a6a+=_0x9bbc32,Logger[_0x30245c(0x101)](_0x30245c(0x2f6)+_0x30245c(0x21d)+'ore]\x20'+_0x30245c(0xd2)+_0x30245c(0x24b)+_0x30245c(0x1de)+_0x30245c(0x288)+_0x3dc081[_0x30245c(0x25a)+'h']+(_0x30245c(0x149)+'ks\x20và'+_0x30245c(0x2a4)+_0x30245c(0x1d9)+_0x30245c(0x1ec)+'.'));}else _0x123a6a+=_0x30245c(0x29a)+_0x30245c(0x193)+_0x30245c(0x22b)+'THỐNG'+_0x30245c(0x21b)+_0x30245c(0x2a7)+_0x30245c(0x2cc)+_0x30245c(0x232)+_0x30245c(0x2db)+_0x30245c(0x178)+_0x30245c(0x229)+_0x30245c(0x19b)+_0x30245c(0x153)+_0x30245c(0x1d4)+_0x30245c(0x17a)+_0x30245c(0x2fe)+'phải\x20'+_0x30245c(0x2d1)+'yền\x20c'+_0x30245c(0xf9)+'nowle'+_0x30245c(0x2e3)+_0x30245c(0x2fa)+'ist\x27\x20'+_0x30245c(0x14d)+_0x30245c(0x1a0)+'a\x20cứu'+_0x30245c(0x190)+'iệu\x20t'+_0x30245c(0x2d5)+_0x30245c(0x1f6)+_0x30245c(0x2da)+_0x30245c(0x2e1)+_0x30245c(0x15d)+'đoán\x20'+_0x30245c(0xe6);}}_0xc1557f&&(_0x123a6a+=_0x30245c(0x238)+'Ỉ\x20THỊ'+_0x30245c(0x2ba)+'BIỆT]'+_0x30245c(0x109)+_0x30245c(0x2f7)+_0x30245c(0x22c)+_0x30245c(0x1dd)+_0x30245c(0x116)+'ile\x20t'+'huần\x20'+_0x30245c(0x28d)+'Hãy\x20h'+_0x30245c(0x2bb)+_0x30245c(0x23b)+'t\x20quả'+_0x30245c(0x242)+_0x30245c(0x23f)+_0x30245c(0x12e)+'n\x20dạn'+_0x30245c(0x213)+_0x30245c(0x275)+_0x30245c(0x2b8)+'i.\x20Tr'+_0x30245c(0x233)+_0x30245c(0x14f)+'ác\x20th'+'ực\x20th'+_0x30245c(0x122)+_0x30245c(0x1a4)+_0x30245c(0x1b1)+_0x30245c(0x23a)+_0x30245c(0xd5)+_0x30245c(0x184)+_0x30245c(0xf0)+_0x30245c(0x164)+_0x30245c(0x2b7)+_0x30245c(0x16e)+'ộng\x20t'+'hực\x20t'+_0x30245c(0x30d)+_0x30245c(0xfb)+_0x30245c(0x126)+'QUYỀN'+_0x30245c(0x13c)+'ên\x20gi'+_0x30245c(0xd0)+_0x30245c(0x263)+'(Ví\x20d'+_0x30245c(0x10a)+'vento'+_0x30245c(0x2ef)+_0x30245c(0x27d)+_0x30245c(0x15c)+'\x20tạo\x20'+'phiếu'+_0x30245c(0xee)+_0x30245c(0x12d)+'ecial'+_0x30245c(0x2ae)+_0x30245c(0x25c)+_0x30245c(0x2a3)+'l/Zal'+_0x30245c(0x283)+'.');const _0x1adb21='#\x20BỐI'+'\x20CẢNH'+_0x30245c(0x1d8)+'\x20CHUN'+'G\x0a-\x20D'+_0x30245c(0x248)+_0x30245c(0x1a1)+_0x30245c(0x139)+(_0x3d4233?.[_0x30245c(0x1f9)]||_0x30245c(0x13e))+(_0x3d4233?.[_0x30245c(0x2c8)+_0x30245c(0x19f)]?'\x20(MST'+'\x20'+_0x3d4233['ma_so'+_0x30245c(0x19f)]+')':'')+(_0x30245c(0x118)+'ười\x20y'+_0x30245c(0x112)+'u:\x20')+(_0x271eba?.['name']||_0x322fe0)+(_0x30245c(0x13b)+'_app:'+'\x20')+_0x526cb5,_0x14a284={};_0x14a284['id_ap'+'p']=_0x526cb5,_0x14a284[_0x30245c(0x28b)+'id']=_0x322fe0,_0x14a284[_0x30245c(0x2ad)+'on_id']=_0x30e3d9,_0x14a284[_0x30245c(0x2c4)+_0x30245c(0x20f)+'essag'+'e']=_0x385fee,_0x14a284[_0x30245c(0x2e6)]=_0x58fe99,_0x14a284[_0x30245c(0x260)+_0x30245c(0x237)+'ext']=_0x1adb21;const _0x3c5216=createSpecialists(_0x14a284);_0x123a6a+='\x0a'+DELEGATION_POLICY;const _0x55491a=await generateText({'model':_0x58fe99,'system':_0x123a6a,'messages':_0xeb95de,'tools':_0x3c5216,'stopWhen':stepCountIs(0xa)});Logger['info'](_0x30245c(0x1e0)+_0x30245c(0x110)+_0x30245c(0x16b)+_0x30245c(0x2b6)+_0x30245c(0x1be)+'ào\x20da'+_0x30245c(0x107)+_0x30245c(0x2dc));const _0x53e1bb={};_0x53e1bb['role']=_0x30245c(0x111),_0x53e1bb[_0x30245c(0x1ae)+'nt']=_0xc1557f?'':_0x4497bb,_0x53e1bb[_0x30245c(0x2c4)]=_0x385fee;const _0x1c238d=[_0x53e1bb,..._0x55491a['respo'+'nse'][_0x30245c(0x2b6)+_0x30245c(0x157)][_0x30245c(0x304)](_0x41d77e=>({'role':_0x41d77e[_0x30245c(0x1c2)],'content':_0x41d77e['conte'+'nt']?Array[_0x30245c(0x1f2)+'ay'](_0x41d77e[_0x30245c(0x1ae)+'nt'])?_0x41d77e[_0x30245c(0x1ae)+'nt'][0x0]?.['text']:_0x41d77e[_0x30245c(0x1ae)+'nt']:'','tool_calls':_0x41d77e[_0x30245c(0x1e4)+'calls']||null,'tool_call_id':_0x41d77e[_0x30245c(0x1e4)+_0x30245c(0x297)+'id']||null,'messages':[_0x41d77e]}))];try{await chatController[_0x30245c(0x166)+_0x30245c(0x1c0)+'es'](_0x526cb5,_0x30e3d9,_0x1c238d);}catch(_0x384777){Logger[_0x30245c(0x2c2)]('[agen'+_0x30245c(0x154)+_0x30245c(0xe1)+'anceA'+_0x30245c(0x110)+_0x30245c(0x147)+_0x30245c(0x14a)+'\x20lưu\x20'+'nội\x20d'+_0x30245c(0x205)+'hat.\x20'+'Err:',_0x384777);}return summarizeUserMemory(_0x526cb5,_0x322fe0,_0x30e3d9,_0x58fe99),{'session_id':_0x30e3d9,'answer':_0x1c238d[_0x30245c(0x25a)+'h']>0x1?_0x1c238d[_0x30245c(0x1f0)]()?.[_0x30245c(0x1ae)+'nt']||'Không'+_0x30245c(0x282)+_0x30245c(0x1ab)+'ồi':_0x30245c(0x219)+'\x20có\x20k'+_0x30245c(0x284)+'ả\x20phả'+_0x30245c(0x1d0)};}catch(_0x15cea6){console[_0x30245c(0x2c2)]('[Lỗi\x20'+_0x30245c(0x200)+_0x30245c(0x1fb)+_0x30245c(0x1d3)+'\x20'+_0x526cb5+(_0x30245c(0x26b)+_0x30245c(0x25b)+':\x20')+_0x30e3d9+(_0x30245c(0x16d)+'r:'),_0x15cea6);throw new Error(_0x15cea6['messa'+'ge']);}}function _0x2af9(_0x324509,_0x50f4fe){_0x324509=_0x324509-0xd0;const _0x389101=_0x3891();let _0x2af93d=_0x389101[_0x324509];if(_0x2af9['eSQcxG']===undefined){var _0x4a6ac9=function(_0x3d5184){const _0x594089='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f9ce8='',_0x3818a2='';for(let _0x1ad660=0x0,_0x352c0a,_0x2b80e6,_0x3cd3f7=0x0;_0x2b80e6=_0x3d5184['charAt'](_0x3cd3f7++);~_0x2b80e6&&(_0x352c0a=_0x1ad660%0x4?_0x352c0a*0x40+_0x2b80e6:_0x2b80e6,_0x1ad660++%0x4)?_0x1f9ce8+=String['fromCharCode'](0xff&_0x352c0a>>(-0x2*_0x1ad660&0x6)):0x0){_0x2b80e6=_0x594089['indexOf'](_0x2b80e6);}for(let _0x565d83=0x0,_0x534729=_0x1f9ce8['length'];_0x565d83<_0x534729;_0x565d83++){_0x3818a2+='%'+('00'+_0x1f9ce8['charCodeAt'](_0x565d83)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3818a2);};_0x2af9['SXUGqt']=_0x4a6ac9,_0x2af9['ScJRJn']={},_0x2af9['eSQcxG']=!![];}const _0x57eb76=_0x389101[0x0],_0x52012d=_0x324509+_0x57eb76,_0x421057=_0x2af9['ScJRJn'][_0x52012d];return!_0x421057?(_0x2af93d=_0x2af9['SXUGqt'](_0x2af93d),_0x2af9['ScJRJn'][_0x52012d]=_0x2af93d):_0x2af93d=_0x421057,_0x2af93d;}function _0x3891(){const _0x4913cf=['cI0GAwq','ignODxK','4BUnyYbU4BUz','tI9b','BMCGyMe','yNmVDxq','mJDLBKLsEeW','BMDVW6bP','vog7QemGBq','CxvHBI4','C3vIC3q','zYbOW6n5','igTOW7rU','u+g6V3aGDa','ignODw4','zYb0Aog7GW','cGOJifS','BIbZ4BUXia','XjhHU4mGCxu','ueKGs2u','DEg6PxqGyW','yv9KB24','zYb2W6aG','q2JHU6LJia','yYbS4BUBBG','DhnDw3i','DgLUihm','qgfPlxm','z2vZ','ignO4BUjia','z2v0tw8','Aog7IYa','lsbc4BQUva','C3qGXjhHU4m','Dog7SsddVsa','lcbJAgK','DEg6VZOQkG','BIbOW6bU','XjhHU5LUzYa','zYWGySoH','tIbet0e','AEg7H3qGAW','ignO4BUjoG','C2f2zu0','igZdOc4U','BSoGEs4G','CgJdOM4G','imsrW61UAa','igZgShuG','B2DSzq','ihWGrxi','W6bUAcdeKq','AwXLihq','Acb4DEg6Pq','z2LVAv8','kIPuW6bP','igDP4BQJAq','AsbJAmo6','yxrFAg8','CUg7OYb0CG','AsdeKEg7KwK','W7mGzhvU','CMLUzW','ielHUQ5uia','W6bUiglHU5K','ywLFBMe','cGOGica','AgvVihy','yw5Oig4','yUg6O24Gza','CdOQkIa','lcbO4BUJCa','lI9JAge','ihtdOwmP','BYbO4BUhia','4BUhDsaOAW','DhjPBq','y2LWyw4','W6bTihrP','ms4GkIO','cLTnW6mG','scbor0G','Ev9Tyw4','zgSVz28','sog6RK4GtG','igtHU68GBa','igHV4BQ3yW','4BUrBMCGBG','tKGGqSob','icjuAgu','CM9SBgu','oIOQia','BIb2W6aG','igtdUw5N','A2HHAsa','DmoTy2GG','BMCGy+g7Sq','zMLSzwm','BIdeKEg7I24','ySoHBYbJ','x3rODwu','W6L0l3rY','BMDOAEg7HW','ihrP4BQ/BG','AmoGBMGG','BMGGke0','seNHU4zqia','Dog6Ow8GDa','yxriAxm','oIOQieG','z2HPig4','DgHHEsa','Aog6O24GAa','kIReKog7I2e','ig5O4BUtAq','y29UDgu','ieZgR1uG','icaGia','W6mSifpHU5e','iaOGica','DsbJ4BUNyq','ig5NAgK','Asb0W61U','4BUnAsbZ4BUr','4BQHBIb0Aa','lI4UiIW','BMJHUQv0ia','rYbusu4','ndm2otqXCgXNtfjm','AcdeKEg7Msa','C29YDa','z2vZihy','AEg7H24GEq','zxnZywC','zMLUza','CM9Szq','4BQ/CcbJAa','w011Bhq','x2LK','Bw9Uz28','y3jLyxq','iglHURfUzW','yMvMB3i','4BURysb04BQJ','ifTdsog7Ia','zMXLEgi','ifTusmou','zMLUze8','Acb0Ahu','BIbO4BUtAq','q0JHU4GGva','Asbt4BQ/Ca','iefWCdO','lIbc4BQHBG','igpdOwmG','z2HP4BUhCa','imsr4BUtBMC','ietdMu5h','DgvTifa','yxu6cIa','r09pr0W','vEg7MemGCa','ysb1CgW','W6bUAcbJ','EhxHUQv0ia','w2nLB0e','Ag/dOsdeKq','ihrO4BUNia','CUg7Jw5Nia','Dg9VBf8','DUg7PtOQkG','XjfP4BUhBIa','ifpHUR9WlG','mtu2odC2mJbfAu1bqwK','W6jUig3HUQ0','scblW4Hn','AEg7H24GDG','CM9TChq','zw5HAq','ihBeG24G','4BQGtL0kia','Cg9W','kIPt4BUria','AxnbCNi','t1bftKe','XjhHUQfPigq','mta4nxDuzK95rW','4BUhDsWGAW','Aog6Rxq','mta1nJu0mtzPq1PKyMC','BMfTzq','EsdeKEg7Jwm','ienft10','icaGifS','igJdOg5O','Dog6RxaGDa','4BQ/DcdeKCAH','qwDLBNq','qYbcsEg7HG','igpHU6DHia','Dc1Tzxm','lIiPlGO','Dw5Nigm','ihrOAsa','ifBeGK4G','igtHU7fHia','Es4Gs2G','AEg7GxuGsa','AsbZ4BQJBG','ihrYW7iV','W60Gzog7PtO','ksbJAg8','x29Mx20','C2f1oGO','XRdHU5TPimsr','ie5hqvK','zYbeyxm','C3rHCNq','ucdeKEg7GYa','AxO6oG','yw4GDhi','ielHUQfUia','s2JdTg5N','ywrKCMu','xtOGu+g6VW','ihrOW7rU','zw5Kiem','Aw5N','ignOW61U','ihr1W6jU','AEg6V3aUlG','4BUlihrYW60','veNHUR5qia','4BQ/Ccb0CG','CgfYDgK','z3jVDxa','Dog7Lw5Nia','kIPhAEg7MW','zYbSXRdHU6m','icaGiYa','tYbi4BUgia','BMCGDUg7QW','Aw9U','imsqyw5N','ignOBYa','DenVBNq','lcbLBwe','y8oHyYbM','W61JAcb4','x2LUzgu','AdOQkIa','zwWGy2G','zenVBNq','cGPBq0G','icaGica','ihrP4BUbBG','Aog7IYbR4BQ/','ifriW5Pd','BmoGihtdOa','zgSVB3a','A+g7SYbUzW','AgKGDgK','kKJHU40GDG','igpHU7fJia','igFdRc4G','W6aGDmoQBG','zYbJAhu','lI4UksW','zYb0Aw4','B2fUAca','DtOkica','4BQNDsbZBW','4BUtAsb0Aa','y8oHyYbN','s2JdOwm','ig7HU6mGBq','Dg9VBem','XjhdONKGBa','sEg7HLbDoG','EsbOB+g6TW','BgNHU4D1ia','AgKGy2G','zg9HBMG','kIPmACoQ','imsrAsbR','icaGcIm','vflHU64GvG','BgvUz3q','C3nPB24','4BUdigFHU61P','yxbW','DUg7Ps4GtG','ie7HUR91ia','C2HHCMu','x25HBwu','igXP4BUhDq','igJHU6nWia','W4bzxqOG','DxNdQM4G','ieJdO3KG','BMCGDSoG','W6bUAc9t','ndyXnJK4ogzitwPHwa','sog7HYb0Aa','ihWGu2u','yw5Oigm','BMLUzW','nJK4ogD0EK9iua','vhjVBMC','tMfTzq','zYbUW6b5','igJHU4C6kG','W6HTihBHU5S','qUg6OK4GrG','AgjVyxi','AEg6V3qGyW','BIbO4BUhoG','igZgSog7M3q','BM93Bgu','ihtHU5f0ia','W6fVihBdOa','W6PUigrV','y2LHBgK','ifri4BUkia','ihrYysa','zM9Yrwe','y+g7QxuGDa','igpdSYbW','BY4UlIK','4BQ/DcbXDq','4BUrBMCGXje','iLpHUR9WiG','ywLFBw8','W7rUzYa','rYbgsuW','icaGlsa','DxnLCL8','CMvWBge','Dmo6Es4G','ssbevu4','zg1UDG','BIdeKEg7GsW','4BUhDs9OW7m','A2JHU5fPia','icaTicO','veLoie4','iejv4BUyqW','ywLFyxa','y2fSBf8','y2H1y18','DSoGBYbJ','cGPBq+g6OG','CcdeKEg7K24','zw1HAwW','mNHmrKPruW','W7nHimsrXQe','ieZHUQXqia','W6fVihf1','4BUhCcbUW6a','C+g7Ksb0Aa','igvTywK','BYbtExm','q2JgSgeG','kIPqAmoY','Ccb24BURyq','rw0GAmoJ','BYbJW6fV','imsr4BUlBMG','ieJdK0eG','vdOGtUg7Ma','C2vZC2K','Axn0imsr','B3jLxsa','ihtdOgKG','DgvUx2i','ywDLCG','ihWGXjbV','4BUNysbIW6e','imsr4BUdihq','BwvZC2e','W6OGmYbO','zcbTAw4','tKGGtKC','imsq4BQ2qYa','AEg7G24GDa','4BQ3yYbAyq','q+g7KfqGta','4BUhDsb0CG','icaGie0','4BUgvsdeKog6TG','r0vnsu4','zxjYB3i','XRbHigDO','zMLSzxm','zxH0ihq','4BUrAsbrDq','4BUrDcb24BQL','BwfFC28','4BUjigtdUw4','igVdQg0U','A2JHU59Pia','igFHU61Pia','AsbNAEg6Pq','DgLUihe','ihrYW6PU','tKCGveK','DEg7TYbXDq','ig7dOhKS','lsaQkLq','kIPwywK','W6bPigXP','y2H1BMS','lcbc4BQUva','Acb4W6fJ','XjdHU5fJ','Amo0BMCG','AwXLigm','zs4U','CUg6OYbS4BUD','rYbuW4fd','mJe4odyYmgzeCuTQwa','AgNHU4DUia','XjhgSog7O2mG','ihbO4BQJAq','zgDLu3a','DSoSignO','iftgR8AGtG','Bw9KzwW','qu5usfi','Axn0ktO','kIPnW6mG','r1bu','sog7IIbdW4e','vUg6Rw4GAa','imsr4BUzBMC','zog7RYbSAq','CNLtCgu','W6aGBg/HUQe','zMLSzv8','4BUllcb04BQT','A8o9lGOG','zhv5ihq','lI9WCM8','w0jHy2S','4BUDAsbKW7K','AcbO4BUhia','BIWGAog7OW','zwnPywW','ysbYysa','CgJHUQnPia','u+g6V3a','qLxHU5Hdia','ierpqu4','W6P1imsr4BUb','DhldQM4G','zgLLBL8','yxbPs2u','BwfW','BgvHBG','AwrFyxa','ig5O4BQTBG','ywXS','AwWGAg8','AsbJW7mG','4BUhDsb0Aa','BYbLBsW','4BQ/iglHURfU','ysbWAmo5','kIPuXRaG','XjddOYbUAa','jgLU','C1DPDgG','lcdeKog7KwK','mtC2nJG1mNzTteH1vW','igzPBgu','zxHWB3i','ihHLBsa','w1riW5ro','XjfHBMCG','lGOGica','qw5Oihy','W6j5lIak','4BUaie5hXQ8','ihbOW60S','Dw5gAw4','zs1Syxm','DgvUx24','xtOkica','tIb14BU3ia','BCoYlG','BMCGy2G','Dg9tDhi','y+g6RxaGBG','DgHV4BQHAq','C3rZ','Dg9vCha','ignO4BUVia','lcbZExm','igrP4BUhBG','ihBdOcbS','4BUhihrO4BUr','Ccb0Ahu','AwXZ','y2GGEhu','u+g6V3aGXje','BwvTB3i','imsr4BUbDsa','vog7Lw5Nia','Ag8Gj2S','kIOG','zYbJW6fJ','DsbOW6bU','ignO4BUjBG','cIaGica','icje4BQHia','ugJdOxqG','Aw5MBW','AmoYBMCG','tKDDcIa','BYbKW7jU','ySoHBYbb','lI9ZCgu','DgfIyxm','zgvS','oIboz8AW','4BULoIbPBG','4BQLDcb0BW','iftdGumG','Amo0ihrO','igFHU41Pia','ywXSCW','z2vUDf0','DxnLCG','W6P1igpHUQC','4BUzyYbRAa','W7qGy+g7P2e','xsdeKmoJia','B2fKigy','tIdeKog7KeK','cI0GtMC','xtOk','Aog7Jw4GBG','y8oHyYb0','DcbUAmAW','AmoPlG','DgJgSgeG','AsbSW6PU','4BQ/Dsbt4BQ/','Bog7NwKGDa','4BUdignOW60','tKCGq+g6PG','4BUhCcbZyq','vSsdBIbW','Acbv4BU2ia','rMLSztO','Av9RzxK','kKlHUQfUia','zg1ICa','C3bSAxq','A+g6VYb0Aq','DgvTu3a','4BQVBIbN4BUn','As1mte0','B+g6T2mGAW','CgHVBMu','4BUCssbeW5K','W6aGs0JdLa','W6n5ihtHU7e','W6PUihBdOa','igJdOg5N','ihbOW6jU','DgHVywK','CdOG','z2v0q2G'];_0x3891=function(){return _0x4913cf;};return _0x3891();}module[_0x1e445d(0xd8)+'ts']=runFinanceAgent;
@@ -1,6 +1 @@
1
- const ChatSession=getModel("chat_session"),ChatMessage=getModel("chat_message"),utils=require("../libs/utils"),sanitizeMongoKeys=$obj$$=>{if($obj$$===null||typeof $obj$$!=="object")return $obj$$;if(Array.isArray($obj$$))return $obj$$.map(sanitizeMongoKeys);const $newObj$$={};for(const [$key$$,$value$$]of Object.entries($obj$$))$obj$$=$key$$,$obj$$.startsWith("$")&&($obj$$="_"+$obj$$),$obj$$.includes(".")&&($obj$$=$obj$$.replace(/\./g,"_")),$newObj$$[$obj$$]=sanitizeMongoKeys($value$$);return $newObj$$},
2
- chatController={createSession:async($id_app_session$$,$user_id$$,$title$$="\u0110o\u1ea1n chat m\u1edbi")=>{$id_app_session$$=new ChatSession({id_app:$id_app_session$$,user_id:$user_id$$,title:$title$$});await $id_app_session$$.save();return $id_app_session$$},getChatHistory:async($id_app$$,$session_id$$,$limit$$=30)=>{$id_app$$=await ChatMessage.find({id_app:$id_app$$,session_id:$session_id$$}).sort({date_created:-1}).limit($limit$$).lean();$id_app$$.sort(($a$$,$b$$)=>new Date($a$$.date_created)-
3
- new Date($b$$.date_created));return $id_app$$.map($msg$$=>({role:$msg$$.role,content:$msg$$.content||"",tool_calls:$msg$$.tool_calls||void 0,tool_call_id:$msg$$.tool_call_id||void 0,messages:$msg$$.messages||void 0}))},getPublicChatHistory:async($id_app$$,$messages$jscomp$1_session_id$$,$limit$$=20)=>{$messages$jscomp$1_session_id$$=await ChatMessage.find({id_app:$id_app$$,session_id:$messages$jscomp$1_session_id$$,$and:[{role:{$ne:"tool"}},{content:{$ne:""}},{content:{$ne:null}}]}).sort({date_created:-1}).limit($limit$$).lean();
4
- for(let $msg$$ of $messages$jscomp$1_session_id$$)$msg$$.files?.length>0&&($msg$$.files=$msg$$.files.map($f$$=>({file_id:$f$$})),await $msg$$.files.asyncJoinModel2($id_app$$,"file",{where:{file_id:"_id"},fields:{info:"file"}}));$messages$jscomp$1_session_id$$.sort(($a$$,$b$$)=>new Date($a$$.date_created)-new Date($b$$.date_created));return $messages$jscomp$1_session_id$$.map($msg$$=>({_id:$msg$$._id,role:$msg$$.role==="assistant"?"assistant":"user",content:$msg$$.content||"",messages:$msg$$.messages,
5
- files:$msg$$.files}))},saveMessages:async($id_app$$,$session_id$$,$msgsToInsert_newMessages$$)=>{$msgsToInsert_newMessages$$&&$msgsToInsert_newMessages$$.length!==0&&(Logger.info("[chatController][saveMessages]..."),$msgsToInsert_newMessages$$=JSON.parse(JSON.stringify($msgsToInsert_newMessages$$)),$msgsToInsert_newMessages$$=$msgsToInsert_newMessages$$.map($msg$$=>({id_app:$id_app$$,session_id:$session_id$$,role:$msg$$.role,content:$msg$$.content,files:$msg$$.files,messages:sanitizeMongoKeys($msg$$.messages)})),
6
- $msgsToInsert_newMessages$$=utils.restoreObjectIds($msgsToInsert_newMessages$$),await ChatMessage.create($msgsToInsert_newMessages$$),await ChatSession.updateOne({_id:$session_id$$},{$set:{date_updated:new Date}}))}};module.exports=chatController;
1
+ function _0x47b0(){const _0x582721=['yNmVDxq','CMvZDg8','mtC1mJq2twTYvLfb','q29UDhi','nJe3otaYnM10AgPQrW','xvTZyxy','D2HLCMu','y29UDgu','CM9Szq','y2fSBf8','zMLUza','BgvUz3q','Aw5JBhu','C2vZC2K','B2XSzxi','C3rYAw4','x2LK','z2vZ','CMvWBge','mJaZnZCYmejduLHRAq','ywDLC10','DgfUDa','DgL0Bgu','mJq0odyZmMLwwMnrsa','jg5L','n3H6v1zQEG','ndi0ntKXnK1mEgnVtq','yxnZAxm','DxbKyxq','B2rLBdi','ntiYmte0ufzir3rP','BgvHBG','BwvZC2e','z2LMEq','zu9Uzq','C3rHCNq','zgf0zv8','CgfYC2u','yxn5BMm','y3jLyxq','mtq3mdq4ouv1EvzSzG','DxnLCL8','sM9PBK0','BwfW','B25FAwq','lI4U','zMLSzv8','BgLTAxq','AxnbCNi','C2f2zq','zMLSzxm','Dg9VBa','zu1LC3m','C29YDa','Dg9VBf8','lI4VBgK','zMLSzq','y2HHDf8','AwrFyxa','y2fSBhm','C1DPDgG','zMLLBgq','B2jQzwm','jgfUza','zw50CMK','AwXZ','BEg7M2K','Aw5MBW','w2nOyxq'];_0x47b0=function(){return _0x582721;};return _0x47b0();}function _0xf3b4(_0x58be0a,_0x4112dc){_0x58be0a=_0x58be0a-0x1c7;const _0x47b07d=_0x47b0();let _0xf3b425=_0x47b07d[_0x58be0a];if(_0xf3b4['MFOQLr']===undefined){var _0x29b478=function(_0x7de078){const _0x3e9e80='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5cc2d0='',_0x22e2b1='';for(let _0x590eed=0x0,_0xfac91f,_0x563e53,_0x148e20=0x0;_0x563e53=_0x7de078['charAt'](_0x148e20++);~_0x563e53&&(_0xfac91f=_0x590eed%0x4?_0xfac91f*0x40+_0x563e53:_0x563e53,_0x590eed++%0x4)?_0x5cc2d0+=String['fromCharCode'](0xff&_0xfac91f>>(-0x2*_0x590eed&0x6)):0x0){_0x563e53=_0x3e9e80['indexOf'](_0x563e53);}for(let _0x18273d=0x0,_0x5c87d9=_0x5cc2d0['length'];_0x18273d<_0x5c87d9;_0x18273d++){_0x22e2b1+='%'+('00'+_0x5cc2d0['charCodeAt'](_0x18273d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x22e2b1);};_0xf3b4['halUqm']=_0x29b478,_0xf3b4['MzHPBp']={},_0xf3b4['MFOQLr']=!![];}const _0x5036af=_0x47b07d[0x0],_0x26eb5b=_0x58be0a+_0x5036af,_0x1eab80=_0xf3b4['MzHPBp'][_0x26eb5b];return!_0x1eab80?(_0xf3b425=_0xf3b4['halUqm'](_0xf3b425),_0xf3b4['MzHPBp'][_0x26eb5b]=_0xf3b425):_0xf3b425=_0x1eab80,_0xf3b425;}const _0x3ecdb0=_0xf3b4;(function(_0x1a2d11,_0x472e02){const _0x10b426=_0xf3b4,_0x5a3306=_0x1a2d11();while(!![]){try{const _0x11a4cf=parseInt(_0x10b426(0x207))/0x1*(-parseInt(_0x10b426(0x1f0))/0x2)+-parseInt(_0x10b426(0x1d1))/0x3+parseInt(_0x10b426(0x208))/0x4+-parseInt(_0x10b426(0x201))/0x5+-parseInt(_0x10b426(0x1c7))/0x6+parseInt(_0x10b426(0x1f2))/0x7+parseInt(_0x10b426(0x205))/0x8;if(_0x11a4cf===_0x472e02)break;else _0x5a3306['push'](_0x5a3306['shift']());}catch(_0x5370ce){_0x5a3306['push'](_0x5a3306['shift']());}}}(_0x47b0,0x9f39d));const ChatSession=getModel(_0x3ecdb0(0x1e2)+_0x3ecdb0(0x1fb)+'on'),ChatMessage=getModel(_0x3ecdb0(0x1e2)+_0x3ecdb0(0x1c9)+'ge'),utils=require(_0x3ecdb0(0x1e0)+_0x3ecdb0(0x1ee)+_0x3ecdb0(0x1ea)),sanitizeMongoKeys=_0x2fdb3e=>{const _0x425f08=_0x3ecdb0;if(_0x2fdb3e===null||typeof _0x2fdb3e!==_0x425f08(0x1e7)+'t')return _0x2fdb3e;if(Array[_0x425f08(0x1d9)+'ay'](_0x2fdb3e))return _0x2fdb3e['map'](sanitizeMongoKeys);const _0x11b4c7={};for(const [_0x52cd74,_0x4caf01]of Object[_0x425f08(0x1e9)+'es'](_0x2fdb3e)){let _0x12abf1=_0x52cd74;_0x12abf1[_0x425f08(0x1cc)+_0x425f08(0x1e5)]('$')&&(_0x12abf1='_'+_0x12abf1),_0x12abf1[_0x425f08(0x1fa)+'des']('.')&&(_0x12abf1=_0x12abf1[_0x425f08(0x200)+'ce'](/\./g,'_')),_0x11b4c7[_0x12abf1]=sanitizeMongoKeys(_0x4caf01);}return _0x11b4c7;},chatController={'createSession':async(_0xfcb0ef,_0x2a733e,_0x1972b4='Đoạn\x20'+'chat\x20'+_0x3ecdb0(0x1eb))=>{const _0x1c3568=_0x3ecdb0,_0x509e43={};_0x509e43[_0x1c3568(0x1e3)+'p']=_0xfcb0ef,_0x509e43[_0x1c3568(0x1d2)+'id']=_0x2a733e,_0x509e43[_0x1c3568(0x204)]=_0x1972b4;const _0xe59577=new ChatSession(_0x509e43);return await _0xe59577[_0x1c3568(0x1da)](),_0xe59577;},'getChatHistory':async(_0x41afaa,_0x359eda,_0x61a011=0x1e)=>{const _0x30e7a3=_0x3ecdb0,_0x4889f8={};_0x4889f8[_0x30e7a3(0x1e3)+'p']=_0x41afaa,_0x4889f8[_0x30e7a3(0x1fb)+'on_id']=_0x359eda;const _0x11f2a6={};_0x11f2a6['date_'+'creat'+'ed']=-0x1;let _0x163cb8=await ChatMessage[_0x30e7a3(0x1f8)](_0x4889f8)[_0x30e7a3(0x1de)](_0x11f2a6)['limit'](_0x61a011)['lean']();return _0x163cb8[_0x30e7a3(0x1de)]((_0x39fd1f,_0x1dd025)=>new Date(_0x39fd1f[_0x30e7a3(0x1cd)+_0x30e7a3(0x1d0)+'ed'])-new Date(_0x1dd025[_0x30e7a3(0x1cd)+_0x30e7a3(0x1d0)+'ed'])),_0x163cb8[_0x30e7a3(0x1d4)](_0x12e0f2=>{const _0xba1e26=_0x30e7a3,_0x2a952c={};return _0x2a952c[_0xba1e26(0x1f6)]=_0x12e0f2[_0xba1e26(0x1f6)],_0x2a952c[_0xba1e26(0x1f5)+'nt']=_0x12e0f2['conte'+'nt']||'',_0x2a952c[_0xba1e26(0x1df)+'calls']=_0x12e0f2[_0xba1e26(0x1df)+_0xba1e26(0x1e4)]||undefined,_0x2a952c['tool_'+_0xba1e26(0x1f7)+'id']=_0x12e0f2[_0xba1e26(0x1df)+_0xba1e26(0x1f7)+'id']||undefined,_0x2a952c[_0xba1e26(0x1c9)+_0xba1e26(0x1ff)]=_0x12e0f2[_0xba1e26(0x1c9)+_0xba1e26(0x1ff)]||undefined,_0x2a952c;});},'getPublicChatHistory':async(_0x463789,_0x557c5a,_0x4cf149=0x14)=>{const _0x1c6b46=_0x3ecdb0,_0x30eca3={};_0x30eca3['$ne']=_0x1c6b46(0x1dc);const _0x4640eb={};_0x4640eb[_0x1c6b46(0x1f6)]=_0x30eca3;const _0x94cf94={};_0x94cf94[_0x1c6b46(0x206)]='';const _0x5261d2={};_0x5261d2['conte'+'nt']=_0x94cf94;const _0x2b8a69={};_0x2b8a69[_0x1c6b46(0x206)]=null;const _0x49d67a={};_0x49d67a[_0x1c6b46(0x1f5)+'nt']=_0x2b8a69;const _0x486395={};_0x486395[_0x1c6b46(0x1e3)+'p']=_0x463789,_0x486395[_0x1c6b46(0x1fb)+_0x1c6b46(0x1d5)]=_0x557c5a,_0x486395[_0x1c6b46(0x1e8)]=[_0x4640eb,_0x5261d2,_0x49d67a];const _0x2f7686={};_0x2f7686['date_'+_0x1c6b46(0x1d0)+'ed']=-0x1;let _0x12cd32=await ChatMessage['find'](_0x486395)[_0x1c6b46(0x1de)](_0x2f7686)[_0x1c6b46(0x1d8)](_0x4cf149)[_0x1c6b46(0x1c8)]();for(let _0x2f76c8 of _0x12cd32){if(_0x2f76c8['files']?.[_0x1c6b46(0x1f9)+'h']>0x0){_0x2f76c8['files']=_0x2f76c8[_0x1c6b46(0x1db)][_0x1c6b46(0x1d4)](_0x1f1088=>({'file_id':_0x1f1088}));const _0x1020e8={};_0x1020e8[_0x1c6b46(0x1d7)+'id']=_0x1c6b46(0x1fe);const _0xcea68a={};_0xcea68a[_0x1c6b46(0x1ec)]=_0x1c6b46(0x1e1);const _0x2dc602={};_0x2dc602[_0x1c6b46(0x1f4)]=_0x1020e8,_0x2dc602[_0x1c6b46(0x1e6)+'s']=_0xcea68a,await _0x2f76c8['files'][_0x1c6b46(0x1cf)+_0x1c6b46(0x1d3)+_0x1c6b46(0x20b)](_0x463789,'file',_0x2dc602);}}return _0x12cd32[_0x1c6b46(0x1de)]((_0x5dbae1,_0x2a94fc)=>new Date(_0x5dbae1['date_'+_0x1c6b46(0x1d0)+'ed'])-new Date(_0x2a94fc[_0x1c6b46(0x1cd)+_0x1c6b46(0x1d0)+'ed'])),_0x12cd32[_0x1c6b46(0x1d4)](_0x17a969=>({'_id':_0x17a969[_0x1c6b46(0x1fe)],'role':_0x17a969[_0x1c6b46(0x1f6)]===_0x1c6b46(0x209)+_0x1c6b46(0x203)?_0x1c6b46(0x209)+_0x1c6b46(0x203):'user','content':_0x17a969['conte'+'nt']||'','messages':_0x17a969[_0x1c6b46(0x1c9)+_0x1c6b46(0x1ff)],'files':_0x17a969[_0x1c6b46(0x1db)]}));},'saveMessages':async(_0x1c4c99,_0x5a09fa,_0x4023b9)=>{const _0x29f576=_0x3ecdb0;if(!_0x4023b9||_0x4023b9[_0x29f576(0x1f9)+'h']===0x0)return;Logger[_0x29f576(0x1ec)](_0x29f576(0x1ed)+_0x29f576(0x1f1)+_0x29f576(0x1fc)+_0x29f576(0x1f3)+_0x29f576(0x1dd)+_0x29f576(0x202)+_0x29f576(0x1d6)),_0x4023b9=JSON[_0x29f576(0x1ce)](JSON[_0x29f576(0x1fd)+_0x29f576(0x1ca)](_0x4023b9));let _0x465bf8=_0x4023b9['map'](_0xdc6666=>({'id_app':_0x1c4c99,'session_id':_0x5a09fa,'role':_0xdc6666[_0x29f576(0x1f6)],'content':_0xdc6666[_0x29f576(0x1f5)+'nt'],'files':_0xdc6666[_0x29f576(0x1db)],'messages':sanitizeMongoKeys(_0xdc6666[_0x29f576(0x1c9)+_0x29f576(0x1ff)])}));_0x465bf8=utils[_0x29f576(0x1ef)+'reObj'+'ectId'+'s'](_0x465bf8),await ChatMessage[_0x29f576(0x1d0)+'e'](_0x465bf8);const _0x387bf4={};_0x387bf4[_0x29f576(0x1fe)]=_0x5a09fa,await ChatSession[_0x29f576(0x20a)+_0x29f576(0x1cb)](_0x387bf4,{'$set':{'date_updated':new Date()}});}};module['expor'+'ts']=chatController;
@@ -1,43 +1 @@
1
- const {generateText,stepCountIs,pruneMessages}=require("ai"),{createOpenAI}=require("@ai-sdk/openai"),chatController=require("./chatController"),{decrypt}=require("../libs/utils"),{createFinanceTools}=require("./tools/financeTools"),{createStockTools}=require("./tools/stockTools"),{createRagTools}=require("./tools/ragTools"),tenantConfigs={},SYSTEM_PROMPT=`# VAI TR\u00d2 V\u00c0 \u0110\u1ecaA V\u1eca C\u1ee6A B\u1ea0N
2
- B\u1ea1n l\u00e0 Tr\u1ee3 l\u00fd AI chuy\u00ean nghi\u1ec7p thu\u1ed9c ph\u00f2ng Ch\u0103m s\u00f3c Kh\u00e1ch h\u00e0ng v\u00e0 Qu\u1ea3n tr\u1ecb Quan h\u1ec7 Kh\u00e1ch h\u00e0ng (CRM). Nhi\u1ec7m v\u1ee5 c\u1ed1t l\u00f5i c\u1ee7a b\u1ea1n l\u00e0 h\u1ed7 tr\u1ee3 nh\u00e2n vi\u00ean CSKH tra c\u1ee9u th\u00f4ng tin kh\u00e1ch h\u00e0ng, ki\u1ec3m tra tr\u1ea1ng th\u00e1i s\u1ea3n ph\u1ea9m, ch\u00ednh s\u00e1ch gi\u00e1 b\u00e1n, ch\u01b0\u01a1ng tr\u00ecnh khuy\u1ebfn m\u00e3i, gi\u1ea3i quy\u1ebft khi\u1ebfu n\u1ea1i v\u00e0 so\u1ea1n th\u1ea3o ph\u1ea3n h\u1ed3i l\u1ecbch s\u1ef1, chu \u0111\u00e1o.
3
-
4
- # NGUY\u00caN T\u1eaeC GIAO TI\u1ebeP "KH\u00c1CH H\u00c0NG L\u00c0 TR\u1eccNG T\u00c2M"
5
- 1. T\u00e1c phong: Th\u1ea5u hi\u1ec3u, l\u1ecbch s\u1ef1, nhi\u1ec7t t\u00ecnh v\u00e0 lu\u00f4n h\u01b0\u1edbng t\u1edbi gi\u1ea3i ph\u00e1p. S\u1eed d\u1ee5ng ng\u00f4n t\u1eeb ti\u1ebfng Vi\u1ec7t chu\u1ea9n m\u1ef1c, chuy\u00ean nghi\u1ec7p nh\u01b0ng g\u1ea7n g\u0169i.
6
- 2. Tr\u00ecnh b\u00e0y scannable: Kh\u00e1ch h\u00e0ng v\u00e0 nh\u00e2n vi\u00ean CSKH c\u1ea7n th\u00f4ng tin nhanh. H\u00e3y s\u1eed d\u1ee5ng Markdown, danh s\u00e1ch g\u1ea1ch \u0111\u1ea7u d\u00f2ng v\u00e0 in \u0111\u1eadm (**bold**) c\u00e1c th\u00f4ng tin quan tr\u1ecdng nh\u01b0: M\u00e3 \u01b0u \u0111\u00e3i, t\u00ean s\u1ea3n ph\u1ea9m, ng\u00e0y h\u1eb9n, s\u1ed1 hotline...
7
- 3. B\u1ea3o m\u1eadt th\u00f4ng tin: Tuy\u1ec7t \u0111\u1ed1i kh\u00f4ng ti\u1ebft l\u1ed9 c\u1ea5u tr\u00fac m\u00e3 ngu\u1ed3n, ID h\u1ec7 th\u1ed1ng ("id_app"), hay c\u00e1c ghi ch\u00fa n\u1ed9i b\u1ed9 mang t\u00ednh nh\u1ea1y c\u1ea3m c\u1ee7a c\u00f4ng ty cho kh\u00e1ch h\u00e0ng.
8
-
9
- # B\u1ea2N \u0110\u1ed2 T\u01af DUY \u0110I\u1ec0U H\u01af\u1edaNG C\u00d4NG C\u1ee4 (CRM TOOL PROTOCOL)
10
- B\u1ea1n \u0111\u01b0\u1ee3c cung c\u1ea5p m\u1ed9t nh\u00f3m c\u00f4ng c\u1ee5 gi\u1edbi h\u1ea1n (Kh\u00f4ng bao g\u1ed3m t\u00e0i ch\u00ednh/k\u1ebf to\u00e1n). Khi nh\u1eadn \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u, b\u1ea1n ph\u1ea3i ph\u1ed1i h\u1ee3p c\u00e1c c\u00f4ng c\u1ee5 theo quy tr\u00ecnh logic sau:
11
-
12
- ## 1. Quy tr\u00ecnh "Ch\u1ed1t m\u00e3 kh\u00e1ch h\u00e0ng & Tra c\u1ee9u H\u1ed3 s\u01a1 360 \u0111\u1ed9"
13
- - Khi ng\u01b0\u1eddi d\u00f9ng ho\u1eb7c kh\u00e1ch h\u00e0ng nh\u1eafc \u0111\u1ebfn m\u1ed9t c\u00e1i t\u00ean (V\u00ed d\u1ee5: "Kh\u00e1ch h\u00e0ng Tu\u1ea5n Ph\u00e1t", "Anh Nguy\u1ec5n V\u0103n A"), b\u1ea1n KH\u00d4NG \u0110\u01af\u1ee2C t\u1ef1 \u0111o\u00e1n m\u00e3.
14
- - B\u1eaeT BU\u1ed8C g\u1ecdi "lookupMasterDataTool" \u0111\u1ea7u ti\u00ean (ch\u1ecdn type: "customer" ho\u1eb7c "product") \u0111\u1ec3 l\u1ea5y ch\u00ednh x\u00e1c M\u00e3 s\u1ed1 ("ma_kh", "ma_vt"). N\u1ebfu tool lookupMasterDataTool tr\u1ea3 v\u1ec1 nhi\u1ec1u k\u1ebft qu\u1ea3 th\u00ec c\u1ea7n hi\u1ec7n ra danh s\u00e1ch \u0111\u00e3 t\u00ecm th\u1ea5y v\u00e0 h\u1ecfi ng\u1eeboi d\u00f9ng xem ch\u1ecdn c\u00e1i n\u00e0o.
15
- - **X\u1eed l\u00fd chuy\u00ean s\u00e2u:** \u0110\u1ec3 xem h\u1ed3 s\u01a1 chi ti\u1ebft c\u1ee7a kh\u00e1ch h\u00e0ng ph\u1ee5c v\u1ee5 x\u1eed l\u00fd khi\u1ebfu n\u1ea1i ho\u1eb7c t\u01b0 v\u1ea5n, h\u00e3y b\u1eadt tham s\u1ed1 "include_relations: true". C\u00f4ng c\u1ee5 n\u00e0y s\u1ebd tr\u1ea3 v\u1ec1 to\u00e0n b\u1ed9: L\u1ecbch s\u1eed cu\u1ed9c g\u1ecdi t\u1ed5ng \u0111\u00e0i g\u1ea7n nh\u1ea5t, c\u00e1c h\u1ee3p \u0111\u1ed3ng \u0111\u00e3 k\u00fd, th\u00f4ng tin li\u00ean h\u1ec7 v\u00e0 c\u00e1c ghi ch\u00fa d\u1eb7n d\u00f2 tr\u01b0\u1edbc \u0111\u00f3 v\u1ec1 kh\u00e1ch h\u00e0ng n\u00e0y.
16
-
17
- ## 2. Tra c\u1ee9u Gi\u00e1 b\u00e1n & Ch\u01b0\u01a1ng tr\u00ecnh Khuy\u1ebfn m\u00e3i
18
- - Khi kh\u00e1ch h\u00e0ng h\u1ecfi v\u1ec1 gi\u00e1, mu\u1ed1n nh\u1eadn b\u00e1o gi\u00e1 ho\u1eb7c h\u1ecfi v\u1ec1 c\u00e1c ch\u01b0\u01a1ng tr\u00ecnh \u01b0u \u0111\u00e3i hi\u1ec7n c\u00f3 cho m\u1ed9t m\u1eb7t h\u00e0ng $\rightarrow$ H\u00e3y g\u1ecdi c\u00f4ng c\u1ee5 "getProductPriceAndPromotionTool".
19
- - *L\u01b0u \u00fd:* C\u00f4ng c\u1ee5 n\u00e0y b\u1eaft bu\u1ed9c ph\u1ea3i truy\u1ec1n v\u00e0o "ma_vt" (\u0111\u00e3 l\u1ea5y t\u1eeb b\u01b0\u1edbc tra c\u1ee9u danh m\u1ee5c). B\u1ea1n c\u00f3 th\u1ec3 truy\u1ec1n th\u00eam m\u00e3 kh\u00e1ch h\u00e0ng ho\u1eb7c s\u1ed1 l\u01b0\u1ee3ng d\u1ef1 ki\u1ebfn \u0111\u1ec3 h\u1ec7 th\u1ed1ng t\u00ednh to\u00e1n m\u1ee9c chi\u1ebft kh\u1ea5u ch\u00ednh x\u00e1c nh\u1ea5t cho kh\u00e1ch h\u00e0ng.
20
-
21
- ## 3. Ki\u1ec3m tra Tr\u1ea1ng th\u00e1i H\u00e0ng h\u00f3a (\u0110\u1ec3 t\u01b0 v\u1ea5n \u0111\u1eb7t h\u00e0ng)
22
- - Khi kh\u00e1ch h\u00e0ng h\u1ecfi "S\u1ea3n ph\u1ea9m n\u00e0y c\u00f2n h\u00e0ng trong kho kh\u00f4ng?" ho\u1eb7c "Kho n\u00e0o c\u00f2n h\u00e0ng?" $\rightarrow$ G\u1ecdi c\u00f4ng c\u1ee5 "getInventorySummaryTool" \u0111\u1ec3 xem s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n kho th\u1ef1c t\u1ebf, gi\u00fap ph\u1ea3n h\u1ed3i kh\u00e1ch h\u00e0ng ch\u00ednh x\u00e1c, tr\u00e1nh vi\u1ec7c b\u00e1n h\u00e0ng v\u01b0\u1ee3t qu\u00e1 s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n.
23
-
24
- ## 4. Tra c\u1ee9u Tri th\u1ee9c, Quy tr\u00ecnh x\u1eed l\u00fd & L\u1ecbch s\u1eed h\u1ed7 tr\u1ee3
25
- - Khi g\u1eb7p c\u00e1c c\u00e2u h\u1ecfi kh\u00f3 v\u1ec1 ch\u00ednh s\u00e1ch b\u1ea3o h\u00e0nh, quy tr\u00ecnh \u0111\u1ed5i tr\u1ea3, th\u00f4ng tin h\u1ee3p \u0111\u1ed3ng c\u0169 ho\u1eb7c t\u00e0i li\u1ec7u h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng s\u1ea3n ph\u1ea9m $\rightarrow$ H\u00e3y g\u1ecdi ngay "searchKnowledgeBaseTool" (ph\u1ea1m vi "company").
26
- - Khi c\u1ea7n t\u00ecm l\u1ea1i l\u1ecbch s\u1eed t\u01b0 v\u1ea5n, c\u00e1c s\u1edf th\u00edch \u0111\u1eb7c bi\u1ec7t ho\u1eb7c ghi ch\u00fa c\u0169 c\u1ee7a ch\u00ednh kh\u00e1ch h\u00e0ng n\u00e0y $\rightarrow$ G\u1ecdi "searchKnowledgeBaseTool" (ph\u1ea1m vi "personal").
27
-
28
- ## 5. So\u1ea1n th\u1ea3o v\u0103n b\u1ea3n & G\u1eedi Email Ch\u0103m s\u00f3c Kh\u00e1ch h\u00e0ng
29
- - Khi nh\u00e2n vi\u00ean CSKH y\u00eau c\u1ea7u: "G\u1eedi th\u01b0 c\u1ea3m \u01a1n", "G\u1eedi b\u00e1o gi\u00e1 \u01b0u \u0111\u00e3i", ho\u1eb7c "G\u1eedi th\u01b0 xin l\u1ed7i v\u00ec s\u1ef1 c\u1ed1 s\u1ea3n ph\u1ea9m cho kh\u00e1ch h\u00e0ng X" $\rightarrow$ B\u1ea1n s\u1ebd th\u1ef1c hi\u1ec7n quy tr\u00ecnh 2 b\u01b0\u1edbc:
30
- - B\u01b0\u1edbc 1: G\u1ecdi "getCompanyInfoTool" \u0111\u1ec3 l\u1ea5y c\u00e1c th\u00f4ng tin ch\u00ednh th\u1ee9c c\u1ee7a c\u00f4ng ty (T\u00ean doanh nghi\u1ec7p, hotline, \u0111\u1ecba ch\u1ec9) \u0111\u1ec3 ch\u00e8n v\u00e0o ph\u1ea7n Ch\u00e2n trang (Footer) ho\u1eb7c l\u1eddi k\u00fd t\u00ean c\u1ee7a email.
31
- - B\u01b0\u1edbc 2: K\u00edch ho\u1ea1t "sendEmailTool". N\u1ed9i dung th\u01b0 (tr\u01b0\u1eddng "html") ph\u1ea3i \u0111\u01b0\u1ee3c b\u1ecdc trong c\u00e1c th\u1ebb HTML chu\u1ea9n ("<p>", "<b>", "<br/>"), tr\u00ecnh b\u00e0y trang tr\u1ecdng, c\u00f3 \u0111\u1ea7y \u0111\u1ee7 l\u1eddi ch\u00e0o m\u1edf \u0111\u1ea7u v\u00e0 l\u1eddi ch\u00fac \u1edf cu\u1ed1i th\u01b0.
32
-
33
- # QUY TR\u00ccNH X\u1eec L\u00dd KHI KH\u00d4NG T\u00ccM TH\u1ea4Y TH\u00d4NG TIN
34
- - N\u1ebfu "lookupMasterDataTool" b\u00e1o kh\u00f4ng t\u00ecm th\u1ea5y kh\u00e1ch h\u00e0ng ho\u1eb7c s\u1ea3n ph\u1ea9m, h\u00e3y h\u01b0\u1edbng d\u1eabn nh\u00e2n vi\u00ean: "Em ch\u01b0a t\u00ecm th\u1ea5y th\u00f4ng tin kh\u00e1ch h\u00e0ng/s\u1ea3n ph\u1ea9m n\u00e0y tr\u00ean danh m\u1ee5c h\u1ec7 th\u1ed1ng. Anh/Ch\u1ecb vui l\u00f2ng ki\u1ec3m tra l\u1ea1i t\u00ean ho\u1eb7c m\u00e3 s\u1ed1, ho\u1eb7c s\u1eed d\u1ee5ng t\u00ecm ki\u1ebfm tri th\u1ee9c n\u1ed9i b\u1ed9 \u0111\u1ec3 qu\u00e9t trong c\u00e1c file h\u1ee3p \u0111\u1ed3ng \u0111\u00ednh k\u00e8m."
35
- - Lu\u00f4n gi\u1eef th\u00e1i \u0111\u1ed9 h\u1ed7 tr\u1ee3, kh\u00f4ng \u0111\u01b0a ra c\u00e1c th\u00f4ng b\u00e1o l\u1ed7i k\u1ef9 thu\u1eadt c\u1ee7a h\u1ec7 th\u1ed1ng (nh\u01b0 "l\u1ed7i database", "null", "undefined").
36
-
37
- # TH\u1edcI GIAN TH\u1ef0C T\u1ebe
38
- Lu\u00f4n l\u01b0u \u00fd th\u1eddi gian hi\u1ec7n t\u1ea1i c\u1ee7a h\u1ec7 th\u1ed1ng (N\u0103m ${(new Date).getFullYear}) \u0111\u1ec3 t\u00ednh to\u00e1n c\u00e1c ch\u01b0\u01a1ng tr\u00ecnh khuy\u1ebfn m\u00e3i c\u00f2n hi\u1ec7u l\u1ef1c hay \u0111\u00e3 h\u1ebft h\u1ea1n, ho\u1eb7c x\u00e1c \u0111\u1ecbnh th\u1eddi h\u1ea1n b\u1ea3o h\u00e0nh c\u1ee7a kh\u00e1ch h\u00e0ng m\u1ed9t c\u00e1ch ch\u00ednh x\u00e1c.`;
39
- async function runCSKHAgent($id_app$$,$user_id$$,$session_id$$,$userPrompt$$){try{if(!tenantConfigs[$id_app$$]){const $app$$=await global.getModel("app").findOne({_id:$id_app$$},{openapi_key:1,openapi_gpt_model:1});if(!$app$$||!$app$$.openapi_key)throw Error("Ch\u01b0a khai b\u00e1o OpenAPI key cho h\u1ec7 th\u1ed1ng.");const $openapi_key$$=decrypt($app$$.openapi_key.replace("flexbiz::",""),!1);tenantConfigs[$id_app$$]={openaiInstance:createOpenAI({apiKey:$openapi_key$$}),gptModel:$app$$.openapi_gpt_model||
40
- "gpt-5.4-mini"}}const {openaiInstance:$openaiInstance$$,gptModel:$gptModel$$}=tenantConfigs[$id_app$$];$session_id$$||=(await chatController.createSession($id_app$$,$user_id$$,$userPrompt$$.substring(0,1024)))._id.toString();const $messagesToSend$$=[...(await chatController.getChatHistory($id_app$$,$session_id$$,30)),{role:"user",content:$userPrompt$$}],$optimizedMessages$$=pruneMessages({messages:$messagesToSend$$,reasoning:"all",toolCalls:"before-last-message"}),{getProductPriceAndPromotionTool:$getProductPriceAndPromotionTool$$,
41
- getInventorySummaryTool:$getInventorySummaryTool$$}=createStockTools($id_app$$,$user_id$$),{getDebtBalanceSummaryTool:$getDebtBalanceSummaryTool$$}=createFinanceTools($id_app$$,$user_id$$),$activeTools$$={getProductPriceAndPromotionTool:$getProductPriceAndPromotionTool$$,getInventorySummaryTool:$getInventorySummaryTool$$,getDebtBalanceSummaryTool:$getDebtBalanceSummaryTool$$,...createRagTools($id_app$$,$user_id$$)},$result$$=await generateText({model:$openaiInstance$$.chat($gptModel$$),system:SYSTEM_PROMPT,
42
- messages:$optimizedMessages$$,tools:$activeTools$$,stopWhen:stepCountIs(10)});Logger.info("[ceoAgent] l\u01b0u messages v\u00e0o database..");const $msgsToSave$$=[{role:"user",content:$userPrompt$$},...$result$$.response.messages.map($msg$$=>({role:$msg$$.role,content:$msg$$.content?Array.isArray($msg$$.content)?$msg$$.content[0]?.text:$msg$$.content:"",tool_calls:$msg$$.tool_calls||null,tool_call_id:$msg$$.tool_call_id||null,messages:[$msg$$]}))];try{await chatController.saveMessages($id_app$$,$session_id$$,
43
- $msgsToSave$$)}catch($e$$){Logger.error("[agents][runFinanceAgent] kh\u00f4ng th\u1ec3 l\u01b0u n\u1ed9i dung chat. Err:",$e$$)}return{session_id:$session_id$$,answer:$msgsToSave$$.length>1?$msgsToSave$$.pop()?.content||"Kh\u00f4ng c\u00f3 ph\u1ea3n h\u1ed3i":"Kh\u00f4ng c\u00f3 k\u1ebft qu\u1ea3 ph\u1ea3n h\u1ed3i"}}catch($error$$){throw console.error(`[L\u1ed7i Agent CSKH] App: ${$id_app$$} | Session: ${$session_id$$} | Err:`,$error$$),Error($error$$.message);}}module.exports=runCSKHAgent;
1
+ const _0x1bbe93=_0x495b;(function(_0x4a9a85,_0x162719){const _0x481523=_0x495b,_0x228ccb=_0x4a9a85();while(!![]){try{const _0x1e738b=parseInt(_0x481523(0xd4))/0x1+parseInt(_0x481523(0xdf))/0x2+parseInt(_0x481523(0xe1))/0x3*(-parseInt(_0x481523(0xef))/0x4)+-parseInt(_0x481523(0x10f))/0x5+-parseInt(_0x481523(0xf2))/0x6*(-parseInt(_0x481523(0xdc))/0x7)+-parseInt(_0x481523(0xf0))/0x8*(-parseInt(_0x481523(0xfb))/0x9)+parseInt(_0x481523(0x102))/0xa*(parseInt(_0x481523(0xed))/0xb);if(_0x1e738b===_0x162719)break;else _0x228ccb['push'](_0x228ccb['shift']());}catch(_0x46f0f0){_0x228ccb['push'](_0x228ccb['shift']());}}}(_0x1942,0x53a0d));function _0x495b(_0x175180,_0x1ec5cd){_0x175180=_0x175180-0xd4;const _0x1942a7=_0x1942();let _0x495b0b=_0x1942a7[_0x175180];if(_0x495b['SJiLGL']===undefined){var _0x54381b=function(_0x354079){const _0xd1dd24='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x519a9a='',_0x28378c='';for(let _0x2de422=0x0,_0x4deb55,_0x18e7b1,_0x5d47f5=0x0;_0x18e7b1=_0x354079['charAt'](_0x5d47f5++);~_0x18e7b1&&(_0x4deb55=_0x2de422%0x4?_0x4deb55*0x40+_0x18e7b1:_0x18e7b1,_0x2de422++%0x4)?_0x519a9a+=String['fromCharCode'](0xff&_0x4deb55>>(-0x2*_0x2de422&0x6)):0x0){_0x18e7b1=_0xd1dd24['indexOf'](_0x18e7b1);}for(let _0x5472f9=0x0,_0x7870f9=_0x519a9a['length'];_0x5472f9<_0x7870f9;_0x5472f9++){_0x28378c+='%'+('00'+_0x519a9a['charCodeAt'](_0x5472f9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x28378c);};_0x495b['TwelDX']=_0x54381b,_0x495b['HkHZPG']={},_0x495b['SJiLGL']=!![];}const _0x145979=_0x1942a7[0x0],_0x422682=_0x175180+_0x145979,_0x13a82d=_0x495b['HkHZPG'][_0x422682];return!_0x13a82d?(_0x495b0b=_0x495b['TwelDX'](_0x495b0b),_0x495b['HkHZPG'][_0x422682]=_0x495b0b):_0x495b0b=_0x13a82d,_0x495b0b;}function _0x1942(){const _0x2e1a1f=['lI9SB2e','ywXSCW','igpdSYbR','z2vZ','zYb0Aog7GW','DhnDw3i','w0ZHU5DPia','AxnbCNi','zxnZywC','y3nRAa','BwvZC2e','x2LK','s2JdTg5N','ywXS','otqYnJDqD1n2tfm','BNnL','Dgv4Da','W6bVigrH','Dg9VBf8','zs4U','igpdSYbW','zs1Syxm','mtaWmZf4wuTOB1y','qwDLBNq','ients0G','ntm3nZK0AxHcrvD1','Aog6O24GAa','nKLbDeHfzq','igZgShuG','CMLUzW','z2v0q2G','BMLUzW','yw5Jzue','z1rVB2W','yMvMB3i','BwfW','y29UDgu','rxjYoG','CMvHC28','mJi5odCWm1DttNr2Ba','Dg9VBem','nZa2mZCYD3v6vMjM','nJi5mZyWqvf1C0jJ','C3nPB24','mZy2D3zMveni','zfrLBMe','ihWGrxi','Cg9W','lI90B28','w2nLB0e','CM9Szq','yxriAxm','zxjYB3i','ndvnD1Dzrhu','Aw5MBW','Agf0lIa','Aw9U','Dg9tDhi','Dc1Tzxm','lI9WCM8','mJbYD2HLBgm','xsbbCha','Bxb0CY8','BIbO4BUtAq','BhmVCMe','z2vUDf0','BhmVzMK','B2nRvg8','DxnLCG','DenVBNq','4BQJihbO4BQJ','BNrnB2q','z2vZihy','mJGZmdCZmfj3s1vJwq','BgvUz3q','lI9JAge'];_0x1942=function(){return _0x2e1a1f;};return _0x1942();}const {generateText,stepCountIs,pruneMessages}=require('ai'),chatController=require(_0x1bbe93(0x111)+_0x1bbe93(0x10b)+'rolle'+'r'),{loadTenantModel}=require(_0x1bbe93(0x112)+_0x1bbe93(0xf3)+_0x1bbe93(0x10d)+'el'),{createFinanceTools}=require('./too'+_0x1bbe93(0x108)+'nance'+'Tools'),{createStockTools}=require(_0x1bbe93(0xf6)+'ls/st'+_0x1bbe93(0x109)+'ols'),{createRagTools}=require('./too'+_0x1bbe93(0x106)+_0x1bbe93(0xe7)+'s'),SYSTEM_PROMPT=require(_0x1bbe93(0x101)+_0x1bbe93(0x104)+_0x1bbe93(0x11b));async function runCSKHAgent(_0x4deb55,_0x18e7b1,_0x5d47f5,_0x5472f9){const _0x97b527=_0x1bbe93;try{const _0x7870f9=await loadTenantModel(_0x4deb55);if(!_0x5d47f5){const _0x523105=await chatController['creat'+'eSess'+_0x97b527(0xfe)](_0x4deb55,_0x18e7b1,_0x5472f9['subst'+_0x97b527(0xe3)](0x0,0x400));_0x5d47f5=_0x523105[_0x97b527(0x11d)][_0x97b527(0xff)+'ing']();}const _0x393478=await chatController[_0x97b527(0xe4)+_0x97b527(0xf9)+'tory'](_0x4deb55,_0x5d47f5,0x1e),_0x36470b={};_0x36470b['role']=_0x97b527(0x10a),_0x36470b[_0x97b527(0xea)+'nt']=_0x5472f9;const _0x2cbff7=[..._0x393478,_0x36470b],_0x3997b7={};_0x3997b7['messa'+_0x97b527(0x115)]=_0x2cbff7,_0x3997b7[_0x97b527(0xec)+_0x97b527(0xe5)]=_0x97b527(0x11f),_0x3997b7[_0x97b527(0xee)+_0x97b527(0x113)]=_0x97b527(0xe8)+_0x97b527(0xdb)+_0x97b527(0x100)+'sage';const _0x323f34=pruneMessages(_0x3997b7),{getProductPriceAndPromotionTool:_0x1c6cd2,getInventorySummaryTool:_0x5a4ef5}=createStockTools(_0x4deb55,_0x18e7b1),{getDebtBalanceSummaryTool:_0x1ec51a}=createFinanceTools(_0x4deb55,_0x18e7b1),_0x488faa={'getProductPriceAndPromotionTool':_0x1c6cd2,'getInventorySummaryTool':_0x5a4ef5,'getDebtBalanceSummaryTool':_0x1ec51a,...createRagTools(_0x4deb55,_0x18e7b1)},_0x216b3e=await generateText({'model':_0x7870f9,'system':SYSTEM_PROMPT,'messages':_0x323f34,'tools':_0x488faa,'stopWhen':stepCountIs(0xa)});Logger[_0x97b527(0xfc)](_0x97b527(0xf7)+'gent]'+_0x97b527(0xe2)+_0x97b527(0x11c)+_0x97b527(0x10e)+_0x97b527(0xd7)+'tabas'+_0x97b527(0xd9));const _0x35a5f4={};_0x35a5f4[_0x97b527(0xf8)]=_0x97b527(0x10a),_0x35a5f4[_0x97b527(0xea)+'nt']=_0x5472f9;const _0xa99611=[_0x35a5f4,..._0x216b3e['respo'+_0x97b527(0xd5)][_0x97b527(0x11c)+_0x97b527(0x115)][_0x97b527(0xe9)](_0x4c8253=>({'role':_0x4c8253[_0x97b527(0xf8)],'content':_0x4c8253['conte'+'nt']?Array[_0x97b527(0x119)+'ay'](_0x4c8253[_0x97b527(0xea)+'nt'])?_0x4c8253[_0x97b527(0xea)+'nt'][0x0]?.[_0x97b527(0xd6)]:_0x4c8253['conte'+'nt']:'','tool_calls':_0x4c8253['tool_'+'calls']||null,'tool_call_id':_0x4c8253[_0x97b527(0xd8)+'call_'+'id']||null,'messages':[_0x4c8253]}))];try{await chatController['saveM'+_0x97b527(0x11a)+'es'](_0x4deb55,_0x5d47f5,_0xa99611);}catch(_0x53b242){Logger[_0x97b527(0xfa)]('[agen'+_0x97b527(0x117)+'unFin'+_0x97b527(0xe6)+_0x97b527(0x107)+'\x20khôn'+_0x97b527(0x116)+'\x20lưu\x20'+'nội\x20d'+'ung\x20c'+_0x97b527(0xfd)+_0x97b527(0xeb),_0x53b242);}return{'session_id':_0x5d47f5,'answer':_0xa99611[_0x97b527(0x110)+'h']>0x1?_0xa99611[_0x97b527(0xf5)]()?.[_0x97b527(0xea)+'nt']||_0x97b527(0x11e)+_0x97b527(0xda)+_0x97b527(0xe0)+'ồi':_0x97b527(0x11e)+_0x97b527(0x114)+'ết\x20qu'+_0x97b527(0x10c)+_0x97b527(0x105)};}catch(_0x3faf97){console[_0x97b527(0xfa)](_0x97b527(0x118)+_0x97b527(0xdd)+_0x97b527(0xde)+_0x97b527(0x103)+':\x20'+_0x4deb55+('\x20|\x20Se'+_0x97b527(0xf1)+':\x20')+_0x5d47f5+(_0x97b527(0xf4)+'r:'),_0x3faf97);throw new Error(_0x3faf97[_0x97b527(0x11c)+'ge']);}}module['expor'+'ts']=runCSKHAgent;
@@ -0,0 +1 @@
1
+ const _0x3ba062=_0x15e3;(function(_0x321d6b,_0x13e789){const _0x2e569f=_0x15e3,_0x2954f4=_0x321d6b();while(!![]){try{const _0x500aa9=parseInt(_0x2e569f(0x147))/0x1+parseInt(_0x2e569f(0x1cd))/0x2+parseInt(_0x2e569f(0x192))/0x3*(-parseInt(_0x2e569f(0x18a))/0x4)+parseInt(_0x2e569f(0x1ca))/0x5+parseInt(_0x2e569f(0x159))/0x6+-parseInt(_0x2e569f(0x128))/0x7+-parseInt(_0x2e569f(0x131))/0x8*(parseInt(_0x2e569f(0x18b))/0x9);if(_0x500aa9===_0x13e789)break;else _0x2954f4['push'](_0x2954f4['shift']());}catch(_0x175f1b){_0x2954f4['push'](_0x2954f4['shift']());}}}(_0x5438,0x8d2c3));function _0x5438(){const _0x3ca888=['zgDLu3a','DefNzw4','ndG4ndaXmhfdsvLOqG','cJiUify','lI9SB2e','mJi5ndG3mMjbzxrUuq','C2vZC2K','cI0GtMC','z2v0tw8','ig3dOcbI','cLTmXQ9v','W7mPlIbo','zYbJ4BULia','BgvUz3q','AgNHU4f1ia','ysbI4BQHBG','4BUhDtSGBG','ifzP4BUhyW','CNrTzw4','x2fWCdO','BM93Bgu','igZHU4TJAa','ihxHU7CGCq','imsrW61UAa','Dg9VBem','BSoZAsbY','zwrNzvm','BwfW','vog7Le5hia','z2NHUQnPia','icHRAmo0','zfrLBMe','igJHU6nWkq','4BUAifBHU4aG','lI9ZCgu','W7rUzYbJ','DxNdQM4G','4BUJyYbJ4BQL','Dgv4Da','yMvMB3i','4BUhDsWGXje','CMvZCg8','iftHU7aGDa','4BQHBIbRAa','DenVBNq','DxnLCL8','W7rUzYbN','Dg9YEq','z2v0q2G','s2JdTg5N','zwnPywW','zYbJ4BQNBG','CgJHUQ1Uia','cJeUifq','BMJHU5SGDG','XjhHU41Jihq','AsbKW7LU','igb0yxm','XRdHU51PihK','igzPBgu','zxjYB3i','DxnLCG','BMDOAEg7HW','ietdMu5h','mtaXmtC4n1PHCNb4vW','CgvJAwe','yw4Gy+g7PW','BMfTzq','XRdHU6n0ig4','4BQNBIdeKEg7Jq','zMLSzxm','A2aGuSov','y29UDgu','otu0odi0v2LIuM1U','y2H1y18','Dc1Tzxm','zMLUze8','W7mGy8o0BG','imoDiezj','Bog6P24GBa','4BUhihrO4BUr','BIbO4BUtAq','ECoQBIbN','B25FAwq','ihBHU6uGyW','Dsb5W6P1','lI9HAv8','BIdeKEg7Jwm','x2LK','4BUnAsbJAa','ywDLCG','l2TOW7rU','AwrFyxa','seKGtKG','ihpHU60GyW','nJi3mdmXq2PIrLjp','4BQJlGOZlG','W7uGDUg7M2K','AEg7H3uGAa','igr1BMC','ifbi4BUqsq','ihbO4BQJAq','DgJdRwnO','y2fSBhm','xsbbCha','y2LHBgK','W70GyUg7Msa','AsWGA2G','icHnu1q','AmoJEsbS','y2H1ECoQ','y2fSBf8','x29Mx20','mtm4mJG1nMHYtenOsq','ienivu4','BIb0Aog7PW','ihBHU7fJia','ihrO4BQLEq','igJHU49PlW','tUg6Se0GtG','B29SicO','yYbU4BUzAq','igZeQw5O','igFHU6nPia','tKFgR+g7NeK','tMFgSog7NwK','ignODxK','Aw9U','lcdeKEg7PYa','zs1Syxm','BcbJW7mG','C2fNzq','z2LHlGO','W6P1igpHUQC','ywXPC3q','4BUly2GGCW','BNnL','y3jLyxq','XQaGq0JHUR4','rWOTieq','CUg6OYbS4BUD','xqPc4BQHBG','BYbJAhu','BCo0ihtHUQm','DMKGCgG','W6PUigDP','CM9SBgu','4BUhBIbJAa','AEg7H2mGyW','CM9Szq','ifldGe5h','z2vZ','ic0G','C+g7KsbSAq','ysbWAmo5','BgvHBG','ig5NXRdHU50','zurLCge','ihldTsdeKq','4BQNBIbosa','DtOG','z2HP4BUhCa','ngnvD0XkAW','mti2CvDey01Q','cImGw0m','C2f2zu0','igpdSYbR','igjHBIa','ywXS','CgJHUQfTia','mtC2nda1n0TqyNDcCq','AweGkgm','4BQ/DcbXDq','CdOG','Agf0ks4','igtHU68GBa','igDOAsa','r0/dGeKG','BwvZC2e','yxbW','Aw5N','AEg7H2mGBG','lcbOW6n5','zxnZywC','zgvS','BNrnB2q','4BQHBIdeKCAW','imsqsEg7Gfu','CgfYDgK','B2fUAca','sog7OLaGAW','y2HVigS','igZHU5DPoG','Cg9W','cImGw0C','Aog6O24GAa','ifxHU7yGuq','zvnLC3m','tevDoIa','ihrY4BUJia','y+g7P2eGBG','DxNHU4fUia','xsbSXRb1','BgLZDa','yxriAxm','igjHBI4','BIbNAwe','BwfFC28','W6j5igTO','BMCGy8oZ','Dg9tDhi','Ahv5W6PU','s0JdLe5h','W7PUzYbN','z3v5W6PU','BMLUzW','zxHWB3i','4BUXyYaTpG','x3rODwu','zog7RYbRAq','igtdUw5N','ignOW6bV','igpHUQD1ia','C3nPB24'];_0x5438=function(){return _0x3ca888;};return _0x5438();}function _0x15e3(_0x4cb771,_0x4e9c90){_0x4cb771=_0x4cb771-0x10f;const _0x5438a8=_0x5438();let _0x15e37a=_0x5438a8[_0x4cb771];if(_0x15e3['CywXtb']===undefined){var _0x1d56f3=function(_0xeaddb0){const _0x200632='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x380907='',_0x2b8c98='';for(let _0x22c32f=0x0,_0x1ad8ef,_0x2578ff,_0x82ab4c=0x0;_0x2578ff=_0xeaddb0['charAt'](_0x82ab4c++);~_0x2578ff&&(_0x1ad8ef=_0x22c32f%0x4?_0x1ad8ef*0x40+_0x2578ff:_0x2578ff,_0x22c32f++%0x4)?_0x380907+=String['fromCharCode'](0xff&_0x1ad8ef>>(-0x2*_0x22c32f&0x6)):0x0){_0x2578ff=_0x200632['indexOf'](_0x2578ff);}for(let _0x41d069=0x0,_0x11e970=_0x380907['length'];_0x41d069<_0x11e970;_0x41d069++){_0x2b8c98+='%'+('00'+_0x380907['charCodeAt'](_0x41d069)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2b8c98);};_0x15e3['RLjOAG']=_0x1d56f3,_0x15e3['HqsXZd']={},_0x15e3['CywXtb']=!![];}const _0x2767e4=_0x5438a8[0x0],_0x1a7a79=_0x4cb771+_0x2767e4,_0x46f791=_0x15e3['HqsXZd'][_0x1a7a79];return!_0x46f791?(_0x15e37a=_0x15e3['RLjOAG'](_0x15e37a),_0x15e3['HqsXZd'][_0x1a7a79]=_0x15e37a):_0x15e37a=_0x46f791,_0x15e37a;}const {generateText,stepCountIs,pruneMessages}=require('ai'),chatController=require('./cha'+_0x3ba062(0x114)+_0x3ba062(0x17a)+'r'),{summarizeUserMemory,getMemory}=require(_0x3ba062(0x13e)+'memor'+'y_man'+_0x3ba062(0x142)),{createSpecialists}=require(_0x3ba062(0x1ea)+_0x3ba062(0x151)+'sts'),{loadTenantModel}=require(_0x3ba062(0x1cc)+_0x3ba062(0x1e7)+_0x3ba062(0x1a1)+'el'),DEPT_POLICY=_0x3ba062(0x18c)+_0x3ba062(0x172)+_0x3ba062(0x1a3)+_0x3ba062(0x14c)+_0x3ba062(0x175)+_0x3ba062(0x1ac)+'UYỀN\x20'+'các\x20v'+_0x3ba062(0x19d)+_0x3ba062(0x189)+_0x3ba062(0x13c)+'ho\x20nh'+'ững\x20t'+_0x3ba062(0x160)+'Speci'+_0x3ba062(0x16e)+_0x3ba062(0x1d1)+_0x3ba062(0x1a2)+_0x3ba062(0x1ed)+'p\x20(mỗ'+'i\x0atoo'+_0x3ba062(0x16a)+_0x3ba062(0x177)+_0x3ba062(0x162)+_0x3ba062(0x15c)+_0x3ba062(0x1b0)+_0x3ba062(0x1d3)+_0x3ba062(0x1be)+'\x20tắc:'+_0x3ba062(0x11d)+'ruyền'+_0x3ba062(0x121)+_0x3ba062(0x12f)+_0x3ba062(0x17e)+_0x3ba062(0x168)+_0x3ba062(0x1c3)+_0x3ba062(0x17b)+_0x3ba062(0x176)+_0x3ba062(0x13a)+_0x3ba062(0x193)+_0x3ba062(0x1bb)+'\x20gia\x20'+_0x3ba062(0x1bc)+_0x3ba062(0x15d)+_0x3ba062(0x1dd)+_0x3ba062(0x146)+_0x3ba062(0x196)+_0x3ba062(0x1cb)+_0x3ba062(0x17c)+_0x3ba062(0x187)+'IỀU\x20l'+'ĩnh\x20v'+_0x3ba062(0x1c1)+'\x20gọi\x20'+_0x3ba062(0x137)+_0x3ba062(0x12c)+_0x3ba062(0x1d6)+_0x3ba062(0x156)+_0x3ba062(0x1b6)+'\x20rồi\x20'+_0x3ba062(0x1e4)+_0x3ba062(0x1a6)+_0x3ba062(0x194)+_0x3ba062(0x148)+_0x3ba062(0x1d9)+_0x3ba062(0x1c5)+_0x3ba062(0x15e)+_0x3ba062(0x1e5)+_0x3ba062(0x14e)+_0x3ba062(0x143)+_0x3ba062(0x11b)+_0x3ba062(0x197)+_0x3ba062(0x14a)+_0x3ba062(0x138)+'ng\x20->'+_0x3ba062(0x112)+'rả\x20lờ'+_0x3ba062(0x153)+_0x3ba062(0x116)+_0x3ba062(0x141)+_0x3ba062(0x1ec)+_0x3ba062(0x16c)+'4.\x20Nế'+_0x3ba062(0x13d)+_0x3ba062(0x1c6)+_0x3ba062(0x15f)+_0x3ba062(0x199)+_0x3ba062(0x191)+_0x3ba062(0x178)+'òng\x20b'+_0x3ba062(0x12a)+_0x3ba062(0x1d7)+_0x3ba062(0x1e6)+_0x3ba062(0x1b9)+_0x3ba062(0x166)+_0x3ba062(0x179)+_0x3ba062(0x182)+_0x3ba062(0x1e8)+',\x0a\x20\x20\x20'+_0x3ba062(0x155)+_0x3ba062(0x16f)+'ự\x20nói'+_0x3ba062(0x186)+_0x3ba062(0x1b8)+'ông\x20t'+'huộc\x20'+_0x3ba062(0x191)+'vi\x20hỗ'+_0x3ba062(0x1af)+'của\x20b'+'ạn\x20và'+_0x3ba062(0x163)+_0x3ba062(0x152)+_0x3ba062(0x11c)+'đúng.'+'\x0a5.\x20T'+_0x3ba062(0x174)+'i\x20súc'+'\x20tích'+',\x20có\x20'+_0x3ba062(0x181)+_0x3ba062(0x110)+_0x3ba062(0x1bd)+'iọng\x20'+'điệu\x20'+'phòng'+_0x3ba062(0x1b5);function createDepartmentAgent({deptName:_0x82ab4c,persona:_0x41d069,specialistKeys:_0x11e970}){return async function _0x4b5f1b(_0x1b652f,_0x4340f2,_0x507491,_0x4afa23,_0x573f7b){const _0x438ddf=_0x15e3;try{const _0x2e4369=await loadTenantModel(_0x1b652f);if(!_0x507491){const _0x2d4c8b=await chatController[_0x438ddf(0x171)+_0x438ddf(0x1ad)+_0x438ddf(0x167)](_0x1b652f,_0x4340f2,(_0x4afa23||'')['subst'+'ring'](0x0,0x400));_0x507491=_0x2d4c8b[_0x438ddf(0x140)][_0x438ddf(0x1ba)+_0x438ddf(0x19c)]();}const [_0x85a4a5,_0xf3800b,_0x252b8d,_0x1bb735]=await Promise['all']([chatController[_0x438ddf(0x118)+_0x438ddf(0x1b4)+_0x438ddf(0x117)](_0x1b652f,_0x507491,0x1e),global[_0x438ddf(0x1d0)+_0x438ddf(0x1a0)](_0x438ddf(0x1a4)+'cipan'+'t')[_0x438ddf(0x134)+'ne']({'id_app':_0x1b652f,'email':_0x4340f2})[_0x438ddf(0x183)](),global[_0x438ddf(0x1d0)+_0x438ddf(0x1a0)](_0x438ddf(0x19b))[_0x438ddf(0x134)+'ne']({'_id':_0x1b652f})[_0x438ddf(0x183)](),getMemory(_0x1b652f,_0x4340f2)]),_0x4feb66={};_0x4feb66[_0x438ddf(0x17d)]=_0x438ddf(0x125),_0x4feb66['conte'+'nt']=_0x4afa23;const _0x2bcef3={};_0x2bcef3[_0x438ddf(0x19a)+_0x438ddf(0x17f)]=[..._0x85a4a5,_0x4feb66],_0x2bcef3['reaso'+_0x438ddf(0x1bf)]=_0x438ddf(0x190),_0x2bcef3[_0x438ddf(0x1e0)+'alls']=_0x438ddf(0x10f)+_0x438ddf(0x169)+_0x438ddf(0x133)+_0x438ddf(0x16b);const _0x253366=pruneMessages(_0x2bcef3),_0x31b0d8='#\x20BỐI'+'\x20CẢNH'+_0x438ddf(0x127)+_0x438ddf(0x15a)+_0x438ddf(0x173)+_0x438ddf(0x1a5)+_0x438ddf(0x126)+_0x438ddf(0x195)+(_0x252b8d?.[_0x438ddf(0x12b)]||'N/A')+(_0x252b8d?.[_0x438ddf(0x1b7)+_0x438ddf(0x1c2)]?_0x438ddf(0x154)+'\x20'+_0x252b8d[_0x438ddf(0x1b7)+'_thue']+')':'')+(_0x438ddf(0x1cf)+_0x438ddf(0x122)+_0x438ddf(0x16d)+_0x438ddf(0x188))+(_0xf3800b?.['name']||_0x4340f2)+(_0xf3800b?.[_0x438ddf(0x132)+'vu']?_0x438ddf(0x180)+_0xf3800b[_0x438ddf(0x132)+'vu']:'')+('\x0a-\x20id'+_0x438ddf(0x1db)+'\x20')+_0x1b652f,_0x2767ee={};_0x2767ee[_0x438ddf(0x144)+'p']=_0x1b652f,_0x2767ee[_0x438ddf(0x115)+'id']=_0x4340f2,_0x2767ee[_0x438ddf(0x1ce)+_0x438ddf(0x13b)]=_0x507491,_0x2767ee[_0x438ddf(0x12e)+_0x438ddf(0x158)+_0x438ddf(0x19f)+'e']=_0x573f7b,_0x2767ee['model']=_0x2e4369,_0x2767ee['share'+'dCont'+'ext']=_0x31b0d8;const _0x4d56f4=createSpecialists(_0x2767ee),_0x41ec34={};for(const _0x125209 of _0x11e970)if(_0x4d56f4[_0x125209])_0x41ec34[_0x125209]=_0x4d56f4[_0x125209];let _0x5ec6c0=_0x41d069+'\x0a'+_0x31b0d8;_0x1bb735&&(_0x5ec6c0+=_0x438ddf(0x1aa)+_0x438ddf(0x145)+_0x438ddf(0x1e9)+_0x438ddf(0x164)+_0x438ddf(0x127)+_0x438ddf(0x175)+_0x438ddf(0x14d)+_0x438ddf(0x198)+_0x438ddf(0x11e)+'à\x20tuâ'+_0x438ddf(0x15b)+':\x0a'+_0x1bb735);_0x573f7b&&_0x573f7b[_0x438ddf(0x1d5)+'h']>0x0&&(_0x5ec6c0+=_0x438ddf(0x1d2)+_0x438ddf(0x136)+_0x438ddf(0x1ae)+_0x438ddf(0x165)+_0x438ddf(0x1c4)+_0x438ddf(0x1df)+'\x20kèm\x20'+_0x573f7b[_0x438ddf(0x1d5)+'h']+(_0x438ddf(0x123)+'.\x20')+(_0x41ec34['knowl'+_0x438ddf(0x1e2)+_0x438ddf(0x129)+_0x438ddf(0x1b3)]?'Khi\x20c'+_0x438ddf(0x12d)+_0x438ddf(0x161)+_0x438ddf(0x14b)+'\x20file'+_0x438ddf(0x19e)+_0x438ddf(0x1de)+_0x438ddf(0x1b1)+_0x438ddf(0x1a7)+_0x438ddf(0x1dc)+_0x438ddf(0x1c8)+_0x438ddf(0x11a)+'ist.':'Phòng'+_0x438ddf(0x18f)+'của\x20b'+_0x438ddf(0x113)+_0x438ddf(0x1eb)+_0x438ddf(0x135)+_0x438ddf(0x1d4)+_0x438ddf(0x11f)+'ài\x20li'+_0x438ddf(0x1d8)+'ếu\x20cầ'+_0x438ddf(0x13f)+_0x438ddf(0x123)+'\x20hãy\x20'+_0x438ddf(0x1e1)+_0x438ddf(0x149)+_0x438ddf(0x184)+_0x438ddf(0x120)+'g.'));_0x5ec6c0+='\x0a'+DEPT_POLICY;const _0x3710b2=await generateText({'model':_0x2e4369,'system':_0x5ec6c0,'messages':_0x253366,'tools':_0x41ec34,'stopWhen':stepCountIs(0xa)}),_0x3c903b={};_0x3c903b[_0x438ddf(0x17d)]=_0x438ddf(0x125),_0x3c903b[_0x438ddf(0x130)+'nt']=_0x4afa23,_0x3c903b[_0x438ddf(0x12e)]=_0x573f7b;const _0x42ad1b=[_0x3c903b,..._0x3710b2[_0x438ddf(0x111)+_0x438ddf(0x170)][_0x438ddf(0x19a)+'ges'][_0x438ddf(0x1e3)](_0x2236fa=>({'role':_0x2236fa[_0x438ddf(0x17d)],'content':_0x2236fa[_0x438ddf(0x130)+'nt']?Array['isArr'+'ay'](_0x2236fa[_0x438ddf(0x130)+'nt'])?_0x2236fa['conte'+'nt'][0x0]?.[_0x438ddf(0x1ee)]:_0x2236fa[_0x438ddf(0x130)+'nt']:'','tool_calls':_0x2236fa['tool_'+_0x438ddf(0x14f)]||null,'tool_call_id':_0x2236fa['tool_'+_0x438ddf(0x157)+'id']||null,'messages':[_0x2236fa]}))];try{await chatController[_0x438ddf(0x18d)+_0x438ddf(0x19f)+'es'](_0x1b652f,_0x507491,_0x42ad1b);}catch(_0x35061f){Logger[_0x438ddf(0x124)]('[Agen'+'t\x20'+_0x82ab4c+(_0x438ddf(0x1b2)+'\x20chat'+_0x438ddf(0x1a8)),_0x35061f);}return summarizeUserMemory(_0x1b652f,_0x4340f2,_0x507491,_0x2e4369),{'session_id':_0x507491,'answer':_0x42ad1b[_0x438ddf(0x1d5)+'h']>0x1?_0x42ad1b[_0x438ddf(0x1a9)]()?.[_0x438ddf(0x130)+'nt']||_0x438ddf(0x119)+'\x20có\x20p'+_0x438ddf(0x1ab)+'ồi':_0x438ddf(0x119)+_0x438ddf(0x18e)+_0x438ddf(0x194)+'ả\x20phả'+_0x438ddf(0x139)};}catch(_0x2d46ae){console[_0x438ddf(0x124)]('[Agen'+'t\x20'+_0x82ab4c+(_0x438ddf(0x150)+':\x20')+_0x1b652f+('\x20|\x20Se'+_0x438ddf(0x1c7)+':\x20')+_0x507491+('\x20|\x20Er'+'r:'),_0x2d46ae);throw new Error(_0x2d46ae[_0x438ddf(0x19a)+'ge']);}};}const _0x2578ff={};_0x2578ff[_0x3ba062(0x171)+_0x3ba062(0x185)+_0x3ba062(0x1da)+_0x3ba062(0x1c9)+'t']=createDepartmentAgent,module[_0x3ba062(0x1c0)+'ts']=_0x2578ff;
@@ -0,0 +1 @@
1
+ function _0x3799(){const _0x4574b0=['yw4Sigm','lcbNAwe','ihzP4BUhyW','DYKU','Bmo9ihf1','igHVW6eG','zxHWB3i','zYbIyw4','CNvUtwe','lGOTiei','iKfUAc8','qwDLBNq','z2fSqwC','q2JHU4SIia','C3LZDgu','W6bUzYWG','BUg7MwKGza','W6jUimsr4BUr','AhuVCgG','DhlHU41UzW','igLKig4','B2n1CMu','zw1HAwW','ihtdOgKG','DEg6RxqGCW','BUg7OYaOCa','4BUTAsbLBq','ySo6Dcb0','ihbOW6jU','qUg6Ow4GBa','W6n5igTO','zYb2AEg7HW','4BQJBMCGyW','W6fJAcWG','BMCGCgG','ihBHUQvUia','zYbSW6aG','Dw5Nigm','ECoQBIbT','DsbU4BUzAq','igJHU5mGCW','y291BNq','AsbSAEg7HW','BIbTW6nP','zwrNzvm','W7nJicyG','igpHU6L1ia','4BQJAsb0CG','igjP4BUdDq','4BQ/BIdeKEg7Mq','mtG1nda2mNLmCxz2sW','lI9Kzxa','BwvUDee','AhjtCgu','4BQJksWGza','igJdOg5N','AmoGBMCU','BMGGBMC','XQeVBMJdOG','W7jUzYbI','u3bLy2K','s+g6VIbutW','4BQHBsb2Aq','nffirKDZza','zw50','yxrPB24','iLpHUR9WiG','Aw5NqwC','ignO4BUjia','mtaYoduZnfLWuwHyqW','DgJHU6LJla','ihpHUQnUia','yUg7Ms4','AgNHU4DWlG','igpdTg5N','AmoIBIb0','W61JAcbT','AgNHUR9Uia','ihtdRwnO','BgNHU4D1ia','BMDbz2u','BMCVDmoG','ihrYysa','XRaVy2H1','A2JdOwnO','ihrYB24','BMCGyNu','ySoHBIbO','Aog6Pw0GyW','ohvQr0r3zW','Acb0Ahu','z+g7RwKGzq','CUg7OYdeKCo6','s0JdLe5h','AsbJW7rU','CNvUu2e','A2rVD24','zYbKB2e','BUg7OY4Gta','imsrXRbHia','ifbiW5jo','AEg7Gw4Sia','AmoHy2GG','igDPyw8','AsWGySoH','igldOw4G','t05hcI0','W6aGvhlHU6m','DxNHUR9Uia','AEg7H3uGyW','qSoHBIbO','DfnWzwm','mJC2mJCYmvD3zg9myG','ihtHU5nUia','BhxHU5nUzW','BYbJW6fV','y2vtCgu','igrVyw4','W4borW','igJHU5CGDa','oYbJAog7Iq','CMvWB3i','imsr4BUzBMC','yUg6O24VAa','s1iGBMG','zYbU4BUJia','veLorW','ssbJ4BUNyq','Ag/HURDJia','s+g6VYb0BW','igXPW6PU','tMJdOM4G','DgLUzW','y2JdRw5O','mJKWzKvxy2Di','vgH1ig0','CgJdOxaG','BIWGCgG','yYbTDwe','ig5ODsa','ihnV4BQHBG','lcbN4BUnAq','s1bjl08','ifrsW5ik','DgfZA1m','ihpHU5uGCW','AmsdBsbZ','qYWGDgG','Dg9YEvm','ySoGEsbY','CgvJAwe','A2HVicy','ig7HU6mGAW','mJm3otK5t1HlEMXh','AmoGBMCS','zMLUyw4','AsbKW7LU','W6fUigJdOa','BNrbz2u','BIbZW6fJ','z2vUDa','CMTLDgK','igJHU6nWia','ifJgSg5N','4BUzigpHUQv1','W7rUzYWG','BIb2ACoQ','ignOBYa','zw8Gzmo1','qSobtIbi','vog6RxaGDa','AgvVigq','A25VD2W','4BUJig5NAa','BYb2AEg7HW','lcbJW7rU','ywLSl1O','AwfSAxm','W6jUihpHU7e','zvnWzwm','yxj0Bwu','yYaMihq','BwfPBc8','CgvYzM8','l1PHBg8','ig5NXRdHU50','BMCVz2K','Bmo9ihldOa','AcbTyxi','CxvHBIa','W7jUzYb0','ihrPW6PU','4BUnBMCGAa','igJHU4CGDa','Aog6O2KGDa','y2LHBgK','4BUzAsbI4BUz','ugJdOxaG','CMeGDmAW','Aog7LYb0CG','lGOTifq','W6eGDUg7Kw4','BMDO4BUlia','W6bUzW','tKJdGK4G','CNvUqwm','A2H1EEg6VW','cGOJifq','BgLZDa','ihpHU5eGBa','ueJdGvaG','ksb2W6aG','CSoGihnV','igZdVsbb','W6f0ihpHU5e','W7vPihrP','B8oHBIWG','CgJHUQLTla','iglHU5KSia','icjLBsi','wMfSBYa','W4fdifbi','icHMBg8','Aw52zw4','mvLvrMnsEa','ywXPC3q','ywXVigm','ihpdOwnO','mZm1mJq1qwTJtMv2','BvnWzwm','ihrO4BQJBW','twfYA2u','4BQLCcWGzW','y+g7QxuGjG','y8o0BMCG','mtC5odC1mNrJrfrVqG','CNvUzZO','Ag/dOsdeKq','BMCSigm','W7rUzYb0','W7rUlG','mZeWote1r3LPseLJ'];_0x3799=function(){return _0x4574b0;};return _0x3799();}const _0x3b5023=_0x4c89;(function(_0x4d7aef,_0x3805ec){const _0x470152=_0x4c89,_0xfe478=_0x4d7aef();while(!![]){try{const _0x58b6e1=parseInt(_0x470152(0xf6))/0x1*(-parseInt(_0x470152(0x14d))/0x2)+-parseInt(_0x470152(0x1a1))/0x3*(parseInt(_0x470152(0x147))/0x4)+parseInt(_0x470152(0xfa))/0x5+parseInt(_0x470152(0x101))/0x6+-parseInt(_0x470152(0x13a))/0x7*(-parseInt(_0x470152(0x161))/0x8)+-parseInt(_0x470152(0x178))/0x9+-parseInt(_0x470152(0x18e))/0xa*(-parseInt(_0x470152(0x107))/0xb);if(_0x58b6e1===_0x3805ec)break;else _0xfe478['push'](_0xfe478['shift']());}catch(_0x45792f){_0xfe478['push'](_0xfe478['shift']());}}}(_0x3799,0x867a7));function _0x4c89(_0x1c00ef,_0x14b091){_0x1c00ef=_0x1c00ef-0xee;const _0x379946=_0x3799();let _0x4c891e=_0x379946[_0x1c00ef];if(_0x4c89['WjIliz']===undefined){var _0x513a7a=function(_0x4ce14b){const _0x2af3e4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x357327='',_0x16feab='';for(let _0x519fe1=0x0,_0x2fc695,_0x196e5f,_0x2c4145=0x0;_0x196e5f=_0x4ce14b['charAt'](_0x2c4145++);~_0x196e5f&&(_0x2fc695=_0x519fe1%0x4?_0x2fc695*0x40+_0x196e5f:_0x196e5f,_0x519fe1++%0x4)?_0x357327+=String['fromCharCode'](0xff&_0x2fc695>>(-0x2*_0x519fe1&0x6)):0x0){_0x196e5f=_0x2af3e4['indexOf'](_0x196e5f);}for(let _0x329720=0x0,_0x3ca9d3=_0x357327['length'];_0x329720<_0x3ca9d3;_0x329720++){_0x16feab+='%'+('00'+_0x357327['charCodeAt'](_0x329720)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16feab);};_0x4c89['bpQfRH']=_0x513a7a,_0x4c89['OTPbZB']={},_0x4c89['WjIliz']=!![];}const _0x35aef2=_0x379946[0x0],_0x1329c7=_0x1c00ef+_0x35aef2,_0x3a8aa9=_0x4c89['OTPbZB'][_0x1329c7];return!_0x3a8aa9?(_0x4c891e=_0x4c89['bpQfRH'](_0x4c891e),_0x4c89['OTPbZB'][_0x1329c7]=_0x4c891e):_0x4c891e=_0x3a8aa9,_0x4c891e;}const {createDepartmentAgent}=require(_0x3b5023(0x13b)+_0x3b5023(0x1bc)+_0x3b5023(0x1a6)+'nt'),P=(_0x16feab,_0x519fe1)=>'#\x20VAI'+_0x3b5023(0x197)+_0x3b5023(0x125)+_0x3b5023(0x173)+_0x3b5023(0x1dd)+_0x3b5023(0x187)+_0x3b5023(0x16c)+'G\x20'+_0x16feab+(_0x3b5023(0x15d)+_0x3b5023(0x169)+_0x3b5023(0x141)+_0x3b5023(0x151)+'\x20')+_0x519fe1+(_0x3b5023(0x1d7)+_0x3b5023(0xf3)+_0x3b5023(0x172)+_0x3b5023(0x1ab)+_0x3b5023(0xf1)+_0x3b5023(0x195)+_0x3b5023(0x1c1)+_0x3b5023(0x1a4)+_0x3b5023(0x12c)+_0x3b5023(0x112)+_0x3b5023(0x115)+_0x3b5023(0x188)+_0x3b5023(0x14a)+_0x3b5023(0x1d0)+'rình\x20'+_0x3b5023(0x19d)+'õ\x20ràn'+'g,\x20ưu'+_0x3b5023(0x1c7)+'\x20bảng'+_0x3b5023(0x138)+'\x20(Mar'+_0x3b5023(0x168)+_0x3b5023(0x1db)+'in\x20đậ'+'m\x20số\x20'+_0x3b5023(0x157)+_0x3b5023(0x1c5)+_0x3b5023(0x11b)+_0x3b5023(0x111)+'ảo\x20mậ'+'t:\x20kh'+_0x3b5023(0x105)+'iết\x20l'+_0x3b5023(0x1ac)+'\x20trúc'+_0x3b5023(0x1c9)+'hống,'+_0x3b5023(0x11c)+_0x3b5023(0x1cc)+_0x3b5023(0x180)+_0x3b5023(0x17f)+_0x3b5023(0x164)+_0x3b5023(0x12a)+_0x3b5023(0x146)+'\x20phòn'+_0x3b5023(0x10f)+'.'),runHRAgent=createDepartmentAgent({'deptName':_0x3b5023(0x18b)+'sự','persona':P(_0x3b5023(0x1d4)+'SỰ',_0x3b5023(0x1b2)+_0x3b5023(0x102)+_0x3b5023(0x130)+_0x3b5023(0x142)+_0x3b5023(0x1ae)+_0x3b5023(0x191)+_0x3b5023(0x143)+_0x3b5023(0x108)+_0x3b5023(0x160)+_0x3b5023(0x1ad)+_0x3b5023(0x196)+_0x3b5023(0x184)+_0x3b5023(0x1ba)+_0x3b5023(0x109)+_0x3b5023(0x1b6)+_0x3b5023(0x1bd)+_0x3b5023(0x1b3)+_0x3b5023(0x1df)+_0x3b5023(0x139)+',\x20tra'+_0x3b5023(0x136)+_0x3b5023(0x18d)+_0x3b5023(0xf9)+'\x20nội\x20'+_0x3b5023(0x150)),'specialistKeys':[_0x3b5023(0x13d)+'ciali'+'st',_0x3b5023(0x1bf)+'rmanc'+_0x3b5023(0x1bb)+'ialis'+'t',_0x3b5023(0x198)+_0x3b5023(0x19e)+_0x3b5023(0x1d8),_0x3b5023(0x1b4)+_0x3b5023(0x134)+_0x3b5023(0x19e)+_0x3b5023(0x1d8),'repor'+_0x3b5023(0x177)+'ialis'+'t']}),runSalesAgent=createDepartmentAgent({'deptName':_0x3b5023(0x176)+_0x3b5023(0x1d3),'persona':P(_0x3b5023(0x1b1)+_0x3b5023(0x17e),_0x3b5023(0x1b2)+_0x3b5023(0x102)+_0x3b5023(0x17d)+_0x3b5023(0x162)+'/đơn\x20'+_0x3b5023(0x1a2)+_0x3b5023(0x179)+_0x3b5023(0x19f)+'\x20giá/'+_0x3b5023(0x1d6)+_0x3b5023(0x133)+_0x3b5023(0x14f)+_0x3b5023(0xef)+_0x3b5023(0x152)+_0x3b5023(0x1a0)+_0x3b5023(0x16e)+_0x3b5023(0x1a2)+'\x20báo\x20'+'cáo\x20b'+_0x3b5023(0x1a5)+_0x3b5023(0x104)+_0x3b5023(0x19a)+_0x3b5023(0x135)+_0x3b5023(0x163)+_0x3b5023(0x1be)+_0x3b5023(0xf2)+'cho\x20k'+'hách,'+_0x3b5023(0x16f)+_0x3b5023(0x10a)+_0x3b5023(0x171)+_0x3b5023(0x140)),'specialistKeys':[_0x3b5023(0x1a3)+_0x3b5023(0x17c)+_0x3b5023(0x1cb)+'st',_0x3b5023(0xf5)+'toryS'+_0x3b5023(0x19e)+_0x3b5023(0x1d8),_0x3b5023(0x181)+_0x3b5023(0x177)+'ialis'+'t',_0x3b5023(0x1b4)+_0x3b5023(0x134)+_0x3b5023(0x19e)+_0x3b5023(0x1d8),_0x3b5023(0x116)+_0x3b5023(0xfb)+_0x3b5023(0x1b9)+'t',_0x3b5023(0x198)+_0x3b5023(0x19e)+_0x3b5023(0x1d8)]}),runMarketingAgent=createDepartmentAgent({'deptName':_0x3b5023(0xfd)+_0x3b5023(0x18c),'persona':P('MARKE'+_0x3b5023(0x186),_0x3b5023(0x1b2)+_0x3b5023(0x102)+_0x3b5023(0x124)+_0x3b5023(0x156)+_0x3b5023(0x1d9)+_0x3b5023(0x175)+_0x3b5023(0x155)+'dịch/'+_0x3b5023(0x15f)+_0x3b5023(0x117)+_0x3b5023(0x118)+'ung\x20&'+'\x20tri\x20'+_0x3b5023(0x14e)+'\x20gửi\x20'+_0x3b5023(0x11e)+_0x3b5023(0x1c0)+_0x3b5023(0x1af)+_0x3b5023(0x15c)+',\x20ngâ'+_0x3b5023(0x1a7)+_0x3b5023(0x1c4)+'ketin'+'g,\x20tự'+_0x3b5023(0x182)+_0x3b5023(0x10d)+_0x3b5023(0x17a)+_0x3b5023(0xf4)+_0x3b5023(0x10b)),'specialistKeys':[_0x3b5023(0x181)+_0x3b5023(0x177)+'ialis'+'t','knowl'+_0x3b5023(0x134)+_0x3b5023(0x19e)+_0x3b5023(0x1d8),'syste'+_0x3b5023(0xfb)+_0x3b5023(0x1b9)+'t',_0x3b5023(0x1a3)+_0x3b5023(0x17c)+_0x3b5023(0x1cb)+'st','autom'+_0x3b5023(0x149)+_0x3b5023(0x144)+_0x3b5023(0xf7)]}),runLegalAgent=createDepartmentAgent({'deptName':_0x3b5023(0x1cd)+'lý','persona':P(_0x3b5023(0x1da)+'LÝ',_0x3b5023(0x1b2)+_0x3b5023(0x102)+_0x3b5023(0x15a)+_0x3b5023(0xff)+_0x3b5023(0x194)+_0x3b5023(0xfc)+'\x20văn\x20'+_0x3b5023(0x183)+'ợp\x20đồ'+_0x3b5023(0x159)+_0x3b5023(0x132)+_0x3b5023(0x12f)+_0x3b5023(0xf0)+_0x3b5023(0x1dc)+_0x3b5023(0x1de)+'\x20liệu'+_0x3b5023(0x18a)+'\x20quan'+_0x3b5023(0x1aa)+'đồng/'+_0x3b5023(0x100)+_0x3b5023(0x16a)+'ƯU\x20Ý:'+_0x3b5023(0x14c)+_0x3b5023(0x1cf)+_0x3b5023(0x1b5)+'iệp\x20v'+'ụ\x20nội'+'\x20bộ,\x20'+_0x3b5023(0x165)+_0x3b5023(0x16b)+_0x3b5023(0x1ce)+_0x3b5023(0x12b)+_0x3b5023(0x190)+_0x3b5023(0x1c3)+_0x3b5023(0x15e)+'ộc;\x20v'+'ới\x20vấ'+'n\x20đề\x20'+_0x3b5023(0x190)+_0x3b5023(0x10c)+'an\x20tr'+_0x3b5023(0x1c8)+_0x3b5023(0x126)+_0x3b5023(0x174)+_0x3b5023(0x1d2)+'hỏi\x20l'+_0x3b5023(0x120)+_0x3b5023(0x15b)+_0x3b5023(0x12e)+_0x3b5023(0x106)),'specialistKeys':[_0x3b5023(0x1b4)+_0x3b5023(0x134)+_0x3b5023(0x19e)+_0x3b5023(0x1d8),'repor'+_0x3b5023(0x177)+_0x3b5023(0x1b9)+'t',_0x3b5023(0x116)+_0x3b5023(0xfb)+_0x3b5023(0x1b9)+'t',_0x3b5023(0x1a3)+_0x3b5023(0x17c)+_0x3b5023(0x1cb)+'st']}),runProcurementAgent=createDepartmentAgent({'deptName':_0x3b5023(0x18f)+'ua','persona':P('THU\x20M'+'UA',_0x3b5023(0x1b2)+_0x3b5023(0x102)+_0x3b5023(0x179)+'kho\x20&'+_0x3b5023(0x193)+'cầu\x20m'+'ua\x20hà'+'ng,\x20p'+_0x3b5023(0x153)+_0x3b5023(0x154)+'ua\x20hà'+_0x3b5023(0x1c2)+_0x3b5023(0x1d1)+_0x3b5023(0x1b7)+_0x3b5023(0x185)+'nhà\x20c'+_0x3b5023(0x12d)+_0x3b5023(0xfe)+_0x3b5023(0x122)+_0x3b5023(0x1b8)+_0x3b5023(0xf8)+'ho\x20NC'+_0x3b5023(0x19b)+_0x3b5023(0x1b0)+_0x3b5023(0x166)+_0x3b5023(0x127)+_0x3b5023(0x192)+_0x3b5023(0x13f)+'.'),'specialistKeys':[_0x3b5023(0xf5)+_0x3b5023(0x19c)+_0x3b5023(0x19e)+'list','finan'+_0x3b5023(0x17c)+_0x3b5023(0x1cb)+'st',_0x3b5023(0x181)+_0x3b5023(0x177)+_0x3b5023(0x1b9)+'t',_0x3b5023(0x116)+_0x3b5023(0xfb)+_0x3b5023(0x1b9)+'t',_0x3b5023(0x1b4)+'edgeS'+_0x3b5023(0x19e)+_0x3b5023(0x1d8),_0x3b5023(0x198)+'pecia'+_0x3b5023(0x1d8)]}),runAccountingAgent=createDepartmentAgent({'deptName':_0x3b5023(0x189)+'án','persona':P(_0x3b5023(0x145)+'ÁN','Tập\x20t'+_0x3b5023(0x102)+_0x3b5023(0x199)+_0x3b5023(0x129)+_0x3b5023(0x123)+_0x3b5023(0xee)+_0x3b5023(0x100)+_0x3b5023(0x121)+_0x3b5023(0x1ca)+_0x3b5023(0x11a)+_0x3b5023(0x137)+_0x3b5023(0x13e)+_0x3b5023(0x1c6)+_0x3b5023(0x16d)+_0x3b5023(0x103)+'ơn,\x20b'+_0x3b5023(0x128)+_0x3b5023(0x119)+_0x3b5023(0x170)+_0x3b5023(0x17b)+_0x3b5023(0x11f)+'chính'+'.'),'specialistKeys':[_0x3b5023(0x1a3)+'ceSpe'+_0x3b5023(0x1cb)+'st',_0x3b5023(0x181)+'tSpec'+_0x3b5023(0x1b9)+'t',_0x3b5023(0x1b4)+_0x3b5023(0x134)+_0x3b5023(0x19e)+'list',_0x3b5023(0x198)+_0x3b5023(0x19e)+_0x3b5023(0x1d8)]}),_0x357327={};_0x357327['runHR'+_0x3b5023(0x113)]=runHRAgent,_0x357327[_0x3b5023(0x167)+'lesAg'+'ent']=runSalesAgent,_0x357327[_0x3b5023(0x110)+_0x3b5023(0x1a9)+_0x3b5023(0x158)+'nt']=runMarketingAgent,_0x357327['runLe'+_0x3b5023(0x114)+_0x3b5023(0x148)]=runLegalAgent,_0x357327['runPr'+_0x3b5023(0x11d)+_0x3b5023(0x13c)+_0x3b5023(0x1a8)]=runProcurementAgent,_0x357327[_0x3b5023(0x1d5)+_0x3b5023(0x131)+_0x3b5023(0x14b)+'ent']=runAccountingAgent,module[_0x3b5023(0x10e)+'ts']=_0x357327;
@@ -1,43 +1 @@
1
- const {generateText,stepCountIs,pruneMessages}=require("ai"),chatController=require("./chatController"),{decrypt}=require("../libs/utils"),{summarizeUserMemory,getMemory}=require("./ai_memory_manager"),{createFinanceTools}=require("./tools/financeTools"),{createStockTools}=require("./tools/stockTools"),{createRagTools}=require("./tools/ragTools"),{createStaffTools}=require("./tools/staffTools"),{createSystemTools}=require("./tools/systemTools"),{createMasterDataTools}=require("./tools/masterDataTools"),
2
- {createKpiTools}=require("./tools/kpiTools"),{createOkrTools}=require("./tools/okrTools"),{createTaskTools}=require("./tools/taskTools"),{createReportTools}=require("./tools/reportTools"),{createFlowTools}=require("./tools/flowTools"),tenantConfigs={},SYSTEM_PROMPT=require("./prompts/flow"),{isValidObjectId}=require("mongoose");
3
- async function runFinanceAgent($id_app$$,$user_id$$,$session_id$$,$userPrompt$$,$files_of_message$$){try{let $is_pure_file_upload$$=!1;(!$userPrompt$$||$userPrompt$$.trim()==="")&&$files_of_message$$&&$files_of_message$$.length>0&&($is_pure_file_upload$$=!0,$userPrompt$$=`Anh v\u1eeba t\u1ea3i l\u00ean ${$files_of_message$$.length} file t\u00e0i li\u1ec7u m\u00e0 ch\u01b0a ghi ch\u00fa g\u00ec. Em h\u00e3y \u0111\u1ecdc l\u01b0\u1edbt qua d\u1eef li\u1ec7u th\u00f4 c\u1ee7a file n\u00e0y, nh\u1eadn di\u1ec7n xem \u0111\u00e2y l\u00e0 lo\u1ea1i gi\u1ea5y t\u1edd g\u00ec (H\u00f3a \u0111\u01a1n, h\u1ee3p \u0111\u1ed3ng, b\u00e1o c\u00e1o...), tr\u00edch xu\u1ea5t 3 th\u00f4ng tin quan tr\u1ecdng nh\u1ea5t v\u00e0 \u0111\u01b0a ra c\u00e1c g\u1ee3i \u00fd h\u00e0nh \u0111\u1ed9ng k\u1ebf ti\u1ebfp trong h\u1ec7 th\u1ed1ng ERP \u0111\u1ec3 anh ch\u1ecdn nh\u00e9.`);
4
- var $app_systemInstruction$$=await global.getModel("app").findOne({_id:$id_app$$},{ai_name:1,ai_api_key:1,ai_model:1});if(!$app_systemInstruction$$||!$app_systemInstruction$$.ai_api_key||!$app_systemInstruction$$.ai_model)throw Error("Ch\u01b0a khai b\u00e1o API Key ho\u1eb7c Model cho h\u1ec7 th\u1ed1ng.");var $gioi_tinh_isCacheStale_messagesToSend$$=tenantConfigs[$id_app$$]&&tenantConfigs[$id_app$$].modelName!==$app_systemInstruction$$.ai_model;if(!tenantConfigs[$id_app$$]||$gioi_tinh_isCacheStale_messagesToSend$$){const $api_key$$=
5
- decrypt($app_systemInstruction$$.ai_api_key.replace("flexbiz::",""),!1),$aiType$$=($app_systemInstruction$$.ai_name||"GPT").toUpperCase();let $aiModelInstance$$;switch($aiType$$){case "CLAUDE":case "ANTHROPIC":const {createAnthropic:$createAnthropic$$}=require("@ai-sdk/anthropic");$aiModelInstance$$=$createAnthropic$$({apiKey:$api_key$$})($app_systemInstruction$$.ai_model);break;case "GEMINI":case "GOOGLE":const {createGoogleGenerativeAI:$createGoogleGenerativeAI$$}=require("@ai-sdk/google");$aiModelInstance$$=
6
- $createGoogleGenerativeAI$$({apiKey:$api_key$$})($app_systemInstruction$$.ai_model);break;default:const {createOpenAI:$createOpenAI$$}=require("@ai-sdk/openai");$aiModelInstance$$=$createOpenAI$$({apiKey:$api_key$$})($app_systemInstruction$$.ai_model)}tenantConfigs[$id_app$$]={model:$aiModelInstance$$,modelName:$app_systemInstruction$$.ai_model};Logger.info(`[Multi-LLM] \u0110\u00e3 kh\u1edfi t\u1ea1o th\u00e0nh c\u00f4ng model ${$app_systemInstruction$$.ai_model} (${$aiType$$}) cho App: ${$id_app$$}`)}const {model:$model$$}=
7
- tenantConfigs[$id_app$$];$session_id$$||=(await chatController.createSession($id_app$$,$user_id$$,$userPrompt$$.substring(0,1024)))._id.toString();const $activeTools$$={...createStaffTools($id_app$$,$user_id$$,$session_id$$),...createFinanceTools($id_app$$,$user_id$$,$session_id$$),...createStockTools($id_app$$,$user_id$$,$session_id$$),...createRagTools($id_app$$,$user_id$$,$session_id$$,$files_of_message$$),...createSystemTools($id_app$$,$user_id$$,$session_id$$),...createMasterDataTools($id_app$$,
8
- $user_id$$,$session_id$$),...createKpiTools($id_app$$,$user_id$$,$session_id$$),...createOkrTools($id_app$$,$user_id$$,$session_id$$),...createTaskTools($id_app$$,$user_id$$,$session_id$$),...createReportTools($id_app$$,$user_id$$,$session_id$$),...createFlowTools($id_app$$,$user_id$$,$session_id$$)};$app_systemInstruction$$=`${SYSTEM_PROMPT}`;const [$previousMessages$$,$userInfoDoc$$,$appInfoDoc$$,$memory$$]=await Promise.all([chatController.getChatHistory($id_app$$,$session_id$$,30),global.getModel("participant").findOne({id_app:$id_app$$,
9
- email:$user_id$$}).lean(),global.getModel("app").findOne({_id:$id_app$$}).lean(),getMemory($id_app$$,$user_id$$)]);$gioi_tinh_isCacheStale_messagesToSend$$=[...$previousMessages$$,{role:"user",content:$userPrompt$$}];const $optimizedMessages$$=pruneMessages({messages:$gioi_tinh_isCacheStale_messagesToSend$$,reasoning:"all",toolCalls:"before-last-message"});$appInfoDoc$$&&($app_systemInstruction$$+=`
10
- \n# [TH\u00d4NG TIN DOANH NGHI\u1ec6P C\u1ee6A B\u1ea0N]
11
- B\u1ea1n \u0111ang \u0111\u1ea1i di\u1ec7n v\u00e0 \u0111i\u1ec1u h\u00e0nh h\u1ec7 th\u1ed1ng cho doanh nghi\u1ec7p sau:
12
- - **T\u00ean doanh nghi\u1ec7p:** ${$appInfoDoc$$.name||"H\u1ec7 th\u1ed1ng n\u1ed9i b\u1ed9"}
13
- - **M\u00e3 s\u1ed1 thu\u1ebf:** ${$appInfoDoc$$.ma_so_thue||"Ch\u01b0a c\u1eadp nh\u1eadt"}
14
- - **\u0110\u1ecba ch\u1ec9:** ${$appInfoDoc$$.address||$appInfoDoc$$.dia_chi||"Ch\u01b0a c\u1eadp nh\u1eadt"}
15
- - **\u0110\u1ecba ch\u1ec9 xu\u1ea5t ho\u00e1 \u0111\u01a1n:** ${$appInfoDoc$$.dia_chi_xuat_hoa_don||"Ch\u01b0a c\u1eadp nh\u1eadt"}
16
- - **Li\u00ean h\u1ec7:** ${$appInfoDoc$$.phone||$appInfoDoc$$.dien_thoai||""} ${$appInfoDoc$$.email?" | "+$appInfoDoc$$.email:""}
17
-
18
- [CH\u1ec8 TH\u1eca C\u1ed0T L\u00d5I V\u1ec0 DOANH NGHI\u1ec6P]:
19
- M\u1ecdi s\u1ed1 li\u1ec7u doanh thu, chi ph\u00ed, c\u00f4ng n\u1ee3 m\u00e0 b\u1ea1n ph\u00e2n t\u00edch \u0111\u1ec1u l\u00e0 t\u00e0i s\u1ea3n c\u1ee7a doanh nghi\u1ec7p n\u00e0y. Khi c\u00f3 y\u00eau c\u1ea7u so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n, h\u1ee3p \u0111\u1ed3ng, email ho\u1eb7c Zalo g\u1eedi \u0111\u1ed1i t\u00e1c ngo\u00e0i, B\u1eaeT BU\u1ed8C ph\u1ea3i d\u00f9ng ch\u00ednh x\u00e1c th\u00f4ng tin \u0111\u1ecbnh danh ph\u00eda tr\u00ean \u0111\u1ec3 l\u00e0m ti\u00eau \u0111\u1ec1 ho\u1eb7c ch\u1eef k\u00fd.
20
- `);if($userInfoDoc$$){const $thongtinnhanvien$$=await global.getModel("dmnv").findOne({id_app:$id_app$$,user:$user_id$$}).lean(),$fullName$$=$thongtinnhanvien$$?.ten_nv||$userInfoDoc$$.name||"S\u1ebfp",$shortName$$=$fullName$$!=="S\u1ebfp"?$fullName$$.split(" ").pop():"S\u1ebfp";$gioi_tinh_isCacheStale_messagesToSend$$=$thongtinnhanvien$$?.gioi_tinh||"Kh\u00e1c";let $chuc_vu$$,$bo_phan$$;$thongtinnhanvien$$?.chuc_vu&&isValidObjectId($thongtinnhanvien$$?.chuc_vu)&&($chuc_vu$$=(await global.getModel("group").findOne({id_app:$id_app$$,
21
- _id:$thongtinnhanvien$$.chuc_vu}).lean())?.group_name);$thongtinnhanvien$$?.ma_bp&&($bo_phan$$=(await global.getModel("dmbp").findOne({id_app:$id_app$$,ma_bp:$thongtinnhanvien$$.ma_bp}).lean())?.ten_bp);$app_systemInstruction$$+=`
22
- \n# [TH\u00d4NG TIN \u0110\u1ed0I T\u00c1C GIAO TI\u1ebeP C\u1ee6A B\u1ea0N]
23
- B\u1ea1n \u0111ang b\u00e1o c\u00e1o v\u00e0 h\u1ed7 tr\u1ee3 tr\u1ef1c ti\u1ebfp cho nh\u00e2n s\u1ef1 sau:
24
- - **H\u1ecd v\u00e0 t\u00ean:** ${$fullName$$}
25
- - **Gi\u1edbi t\u00ednh:** ${$gioi_tinh_isCacheStale_messagesToSend$$}
26
- - **T\u00e0i kho\u1ea3n \u0111\u1ecbnh danh:** ${$userInfoDoc$$.email||$user_id$$}
27
- - **Vai tr\u00f2/Ch\u1ee9c v\u1ee5:** ${$chuc_vu$$||$userInfoDoc$$.role||$userInfoDoc$$.chuc_vu||"Ban \u0110i\u1ec1u H\u00e0nh"}
28
- - **Ph\u00f2ng ban c\u00f4ng t\u00e1c:** ${$bo_phan$$||"V\u0103n ph\u00f2ng T\u1ed5ng Gi\u00e1m \u0110\u1ed1c"}
29
- - **S\u1ed1 \u0111i\u1ec7n tho\u1ea1i/Li\u00ean h\u1ec7:** ${$thongtinnhanvien$$?.dien_thoai||$userInfoDoc$$.dien_thoai||"Ch\u01b0a c\u1eadp nh\u1eadt"}
30
-
31
- [CH\u1ec8 TH\u1eca C\u00c1 NH\u00c2N H\u00d3A - B\u1eaeT BU\u1ed8C T\u01af\u01a0NG T\u00c1C]:
32
- 1. **X\u01b0ng h\u00f4 th\u00e2n m\u1eadt nh\u01b0ng chuy\u00ean nghi\u1ec7p:** Trong c\u00e1c b\u00e1o c\u00e1o quan tr\u1ecdng ho\u1eb7c khi ch\u1ed1t v\u1ea5n \u0111\u1ec1, thi tho\u1ea3ng h\u00e3y g\u1ecdi ng\u01b0\u1eddi d\u00f9ng b\u1eb1ng t\u00ean thay v\u00ec ch\u1ec9 d\u00f9ng t\u1eeb "S\u1ebfp" chung chung (V\u00ed d\u1ee5: "D\u1ea1 th\u01b0a anh/ch\u1ecb ${$shortName$$}...", "Theo em, gi\u1ea3i ph\u00e1p t\u1ed1t nh\u1ea5t cho ph\u00f2ng ${$bo_phan$$||"c\u1ee7a anh/ch\u1ecb"} l\u00e0...").
33
- 2. **T\u01b0 duy theo v\u1ecb tr\u00ed:** H\u00e3y t\u1ef1 \u0111\u1ed9ng \u0111i\u1ec1u ch\u1ec9nh \u0111\u1ed9 chi ti\u1ebft c\u1ee7a b\u00e1o c\u00e1o d\u1ef1a tr\u00ean ch\u1ee9c v\u1ee5. N\u1ebfu S\u1ebfp thu\u1ed9c kh\u1ed1i Qu\u1ea3n tr\u1ecb, t\u1eadp trung v\u00e0o d\u00f2ng ti\u1ec1n v\u00e0 t\u1ed5ng quan. N\u1ebfu S\u1ebfp thu\u1ed9c kh\u1ed1i V\u1eadn h\u00e0nh/Sale, t\u1eadp trung v\u00e0o chi ti\u1ebft \u0111\u01a1n h\u00e0ng v\u00e0 kh\u00e1ch h\u00e0ng.
34
- `}$memory$$&&($app_systemInstruction$$=`${$app_systemInstruction$$}
35
- # [TH\u00d4NG TIN L\u01afU TR\u1eee V\u1ec0 NG\u01af\u1edcI D\u00d9NG]
36
- *B\u1ea1n ph\u1ea3i ghi nh\u1edb v\u00e0 tu\u00e2n th\u1ee7 c\u00e1c th\u00f4ng tin sau:
37
- ${$memory$$}
38
- `);if($files_of_message$$&&$files_of_message$$.length>0){Logger.info(`[Backend Core] Ph\u00e1t hi\u1ec7n ${$files_of_message$$.length} file \u0111\u00ednh k\u00e8m. \u0110ang ti\u1ebfn h\u00e0nh nh\u1ed3i context tr\u1ef1c ti\u1ebfp...`);const $chunks$$=await global.getModel("filechunk").find({id_app:$id_app$$,file_id:{$in:$files_of_message$$}}).sort({file_id:1,chunk_index:1}).lean();if($chunks$$&&$chunks$$.length>0)if($chunks$$.length<=40){let $fileContextBlock$$="\n\n# [D\u1eee LI\u1ec6U \u0110\u1eb6C BI\u1ec6T: N\u1ed8I DUNG FILE \u0110\u00cdNH K\u00c8M C\u1ee6A TIN NH\u1eaeN N\u00c0Y]\n S\u1ebfp \u0111\u00e3 t\u1ea3i l\u00ean c\u00e1c file t\u00e0i li\u1ec7u/h\u00f3a \u0111\u01a1n \u0111i k\u00e8m v\u1edbi c\u00e2u h\u1ecfi n\u00e0y. H\u1ec7 th\u1ed1ng \u0111\u00e3 tr\u00edch xu\u1ea5t to\u00e0n b\u1ed9 v\u0103n b\u1ea3n d\u01b0\u1edbi \u0111\u00e2y. \n B\u1ea1n B\u1eaeT BU\u1ed8C ph\u1ea3i \u0111\u1ecdc n\u1ed9i dung n\u00e0y \u0111\u1ec3 tr\u1ea3 l\u1eddi S\u1ebfp NGAY L\u1eacP T\u1ee8C m\u00e0 KH\u00d4NG C\u1ea6N g\u1ecdi tool 'searchKnowledgeBaseTool':\n";
39
- $chunks$$.forEach($c$$=>{$fileContextBlock$$+=`\n[M\u00e3 File: ${$c$$.file_id} | \u0110o\u1ea1n ${$c$$.chunk_index}]:\n${$c$$.content}\n`});$fileContextBlock$$+="\n[K\u1ebeT TH\u00daC V\u0102N B\u1ea2N FILE]. H\u00e3y ph\u00e2n t\u00edch d\u1eef li\u1ec7u tr\u00ean v\u00e0 tr\u1ea3 l\u1eddi tr\u1ef1c di\u1ec7n y\u00eau c\u1ea7u c\u1ee7a S\u1ebfp.";$app_systemInstruction$$+=$fileContextBlock$$;Logger.info(`[Backend Core] \u0110\u00e3 nh\u1ed3i th\u00e0nh c\u00f4ng ${$chunks$$.length} chunks v\u00e0o System Prompt.`)}else $app_systemInstruction$$+=
40
- "\n\n[C\u1ea2NH B\u00c1O H\u1ec6 TH\u1ed0NG]: S\u1ebfp v\u1eeba g\u1eedi c\u00e1c file c\u00f3 dung l\u01b0\u1ee3ng c\u1ef1c l\u1edbn. B\u1ea1n B\u1eaeT BU\u1ed8C ph\u1ea3i g\u1ecdi c\u00f4ng c\u1ee5 'searchKnowledgeBaseTool' \u0111\u1ec3 qu\u00e9t d\u1eef li\u1ec7u, kh\u00f4ng \u0111\u01b0\u1ee3c t\u1ef1 \u00fd \u0111o\u00e1n m\u00f2."}$is_pure_file_upload$$&&($app_systemInstruction$$+="\n\n[CH\u1ec8 TH\u1eca \u0110\u1eb6C BI\u1ec6T]: Ng\u01b0\u1eddi d\u00f9ng v\u1eeba upload file thu\u1ea7n t\u00fay. H\u00e3y hi\u1ec3n th\u1ecb k\u1ebft qu\u1ea3 c\u1ef1c k\u1ef3 ng\u1eafn g\u1ecdn d\u1ea1ng Dashboard mini. Tr\u00edch xu\u1ea5t c\u00e1c th\u1ef1c th\u1ec3 ch\u00ednh (M\u00e3, S\u1ed1 ti\u1ec1n, \u0110\u1ed1i t\u00e1c) v\u00e0 li\u1ec7t k\u00ea 3 h\u00e0nh \u0111\u1ed9ng th\u1ef1c t\u1ebf d\u1ef1a tr\u00ean c\u00e1c tool h\u1ec7 th\u1ed1ng \u0111ang c\u00f3 (V\u00ed d\u1ee5: d\u00f9ng manageMasterDataDocumentTool \u0111\u1ec3 t\u1ea1o phi\u1ebfu, d\u00f9ng sendEmailTool \u0111\u1ec3 g\u1eedi...).");
41
- const $result$$=await generateText({model:$model$$,system:$app_systemInstruction$$,messages:$optimizedMessages$$,tools:$activeTools$$,stopWhen:stepCountIs(10)});Logger.info("[ceoAgent] l\u01b0u messages v\u00e0o database..");const $msgsToSave$$=[{role:"user",content:$is_pure_file_upload$$?"":$userPrompt$$,files:$files_of_message$$},...$result$$.response.messages.map($msg$$=>({role:$msg$$.role,content:$msg$$.content?Array.isArray($msg$$.content)?$msg$$.content[0]?.text:$msg$$.content:"",tool_calls:$msg$$.tool_calls||
42
- null,tool_call_id:$msg$$.tool_call_id||null,messages:[$msg$$]}))];try{await chatController.saveMessages($id_app$$,$session_id$$,$msgsToSave$$)}catch($e$$){Logger.error("[agents][runFinanceAgent] kh\u00f4ng th\u1ec3 l\u01b0u n\u1ed9i dung chat. Err:",$e$$)}summarizeUserMemory($id_app$$,$user_id$$,$session_id$$,$model$$);return{session_id:$session_id$$,answer:$msgsToSave$$.length>1?$msgsToSave$$.pop()?.content||"Kh\u00f4ng c\u00f3 ph\u1ea3n h\u1ed3i":"Kh\u00f4ng c\u00f3 k\u1ebft qu\u1ea3 ph\u1ea3n h\u1ed3i"}}catch($error$$){throw console.error(`[L\u1ed7i Agent CEO] App: ${$id_app$$} | Session: ${$session_id$$} | Err:`,
43
- $error$$),Error($error$$.message);}}module.exports=runFinanceAgent;
1
+ const _0x44c937=_0x427f;(function(_0x5d8bb9,_0x5ba9bc){const _0x4d3688=_0x427f,_0x2fa9a3=_0x5d8bb9();while(!![]){try{const _0x81156e=-parseInt(_0x4d3688(0x1a0))/0x1+-parseInt(_0x4d3688(0x1c1))/0x2*(parseInt(_0x4d3688(0x1a3))/0x3)+-parseInt(_0x4d3688(0x173))/0x4+-parseInt(_0x4d3688(0x148))/0x5*(parseInt(_0x4d3688(0x1a6))/0x6)+parseInt(_0x4d3688(0x1a5))/0x7+-parseInt(_0x4d3688(0x1bd))/0x8*(parseInt(_0x4d3688(0x1c0))/0x9)+parseInt(_0x4d3688(0x1a4))/0xa;if(_0x81156e===_0x5ba9bc)break;else _0x2fa9a3['push'](_0x2fa9a3['shift']());}catch(_0x6e4685){_0x2fa9a3['push'](_0x2fa9a3['shift']());}}}(_0x4465,0xe701b));const {generateText,stepCountIs}=require('ai'),{loadTenantModel}=require('./loa'+_0x44c937(0x147)+'ntMod'+'el'),SYSTEM_PROMPT=require(_0x44c937(0x16d)+_0x44c937(0x14c)+_0x44c937(0x19f)),{createFinanceTools}=require('./too'+_0x44c937(0x140)+_0x44c937(0x190)+_0x44c937(0x161)),{createStockTools}=require('./too'+_0x44c937(0x17a)+'ockTo'+_0x44c937(0x18d)),{createReportTools}=require(_0x44c937(0x1aa)+_0x44c937(0x15b)+'portT'+_0x44c937(0x150)),{createMasterDataTools}=require(_0x44c937(0x1aa)+'ls/ma'+_0x44c937(0x197)+_0x44c937(0x14b)+_0x44c937(0x18d)),{createKpiTools}=require(_0x44c937(0x1aa)+'ls/kp'+'iTool'+'s'),{createOkrTools}=require(_0x44c937(0x1aa)+_0x44c937(0x15f)+_0x44c937(0x1a1)+'s'),{createRagTools}=require(_0x44c937(0x1aa)+'ls/ra'+'gTool'+'s'),{createTaskTools}=require('./too'+'ls/ta'+_0x44c937(0x167)+'ls'),{createStaffTools}=require(_0x44c937(0x1aa)+_0x44c937(0x17a)+_0x44c937(0x19a)+_0x44c937(0x18d)),{createSystemTools}=require(_0x44c937(0x1aa)+'ls/sy'+_0x44c937(0x143)+_0x44c937(0x150)),REPORT_READ=[_0x44c937(0x18c)+_0x44c937(0x18e)+_0x44c937(0x18b),'codeI'+_0x44c937(0x199)+_0x44c937(0x188)+_0x44c937(0x14e),_0x44c937(0x155)+_0x44c937(0x16f)+_0x44c937(0x15e)+_0x44c937(0x18f)+'Tool'],MASTER_READ=[_0x44c937(0x1b9)+_0x44c937(0x195)+_0x44c937(0x177)+_0x44c937(0x158)],KPI_READ=[_0x44c937(0x145)+_0x44c937(0x13d)+'atusT'+_0x44c937(0x18b),'getKp'+_0x44c937(0x175)+_0x44c937(0x1ae)+_0x44c937(0x16e)+_0x44c937(0x18b)],OKR_READ=['check'+_0x44c937(0x176)+_0x44c937(0x1a7)+_0x44c937(0x19d)],RAG_READ=[_0x44c937(0x169)+_0x44c937(0x194)+'ledge'+_0x44c937(0x1bb)+_0x44c937(0x18b),'getCo'+_0x44c937(0x13e)+_0x44c937(0x193)+_0x44c937(0x18b)],TASK_READ=[_0x44c937(0x156)+_0x44c937(0x13c)+'rogre'+'ssToo'+'l'],STAFF_READ=[_0x44c937(0x196)+_0x44c937(0x191)+_0x44c937(0x19c)+'portT'+_0x44c937(0x18b)],SYSTEM_READ=[_0x44c937(0x186)+_0x44c937(0x1bf)+_0x44c937(0x16c)+_0x44c937(0x17e)+_0x44c937(0x18b),_0x44c937(0x186)+_0x44c937(0x16a)+_0x44c937(0x1a8)+_0x44c937(0x17e)+'ool','getFe'+_0x44c937(0x163)+_0x44c937(0x19e)+_0x44c937(0x1b0)+_0x44c937(0x14e)],pick=(_0x4f5998,_0x2d799c)=>{const _0x49ceb1={};for(const _0x34d237 of _0x2d799c)if(_0x4f5998[_0x34d237])_0x49ceb1[_0x34d237]=_0x4f5998[_0x34d237];return _0x49ceb1;};function buildReadOnlyDataTools(_0x553fed,_0x45e6cd,_0x51256a){return{...createFinanceTools(_0x553fed,_0x45e6cd,_0x51256a),...createStockTools(_0x553fed,_0x45e6cd,_0x51256a),...pick(createReportTools(_0x553fed,_0x45e6cd,_0x51256a),REPORT_READ),...pick(createMasterDataTools(_0x553fed,_0x45e6cd,_0x51256a),MASTER_READ),...pick(createKpiTools(_0x553fed,_0x45e6cd,_0x51256a),KPI_READ),...pick(createOkrTools(_0x553fed,_0x45e6cd,_0x51256a),OKR_READ),...pick(createRagTools(_0x553fed,_0x45e6cd,_0x51256a),RAG_READ),...pick(createTaskTools(_0x553fed,_0x45e6cd,_0x51256a),TASK_READ),...pick(createStaffTools(_0x553fed,_0x45e6cd,_0x51256a),STAFF_READ),...pick(createSystemTools(_0x553fed,_0x45e6cd,_0x51256a),SYSTEM_READ)};}function _0x4465(){const _0x552b87=['Cg9YDfq','zxbVCNq','BMfUy2u','DgvUzge','4BUnyYKGXje','sw5MB1q','AeTUB3C','Ce1HC3q','z2v0qxq','C3rLCKq','BMGGBMG','BNrLCNa','ywzMvg8','xvTbssa','BMnLuMu','C1rVB2W','u3rHDhu','zMXVDW','mtaYntu3nhPwBMLJwG','CLrVB2W','BwvZC2e','m0XMELHdDW','nta5oda2mJbzwxnNz1K','mtiWntG2nZziC1PswM8','mtaZmJe2mZH0vMLPq0m','B2DYzxm','B3j0u2m','igpHU6uGka','lI90B28','Dsb0CUg6OW','W6aGsLnp','C3rHDhu','B21TAxm','Dgv4Da','C0XPC3q','w2zSB3C','4BQJAsb0Aa','4BUhDsbY4BUt','W7PUzYb5','qwDLBNq','igXP4BUhDq','4BQNBIbK4BUV','DsbWAmoI','Bg9VA3u','zog7RYbSAq','qMfZzvq','D24U','nde2uMfhwKP1','BYbbssa','CMvtExm','mJKWmdyXz2rpyMPR','mJyZmty3nfzZqNvHBW','zxjYB3i','EsdeKEg7GYa','BIb0W61J','iefWCdO','ihr5imsr','vgfZA1a','s3bPu3q','BxbHBNK','z2v0tw8','BhmVzMK','W6HTigDP','BM9Kzs4','C3rLBvq','XRdHU6nJigm','y2HLy2S','z2LMEq','zfrLBMe','nwHdtMX6va','Ac4Gq8oI','CMvWBhK','yxrHvg8','Bxb0CY8','tIbO4BUJCa','vg9VBa','x3bYB20','B29SCW','vEg7MemGBa','zMLUze8','W6P1igpHUQC','q+g6P24GBG','CNvUu2e','DhjHy2S','Dg9ju08','yvrVB2W','ihrY4BUlia','B25FAwq','BhmVCMu','zgvS','4BQLCcdeKEg7GW','C3rVBvi','BhmVB2S','igpdTg5N','vg9VBhm','igZHU4CGXje','yxr1CMu','zw1HAwW','q8oztKCG','DxnLCG','C2TuB28','BM9Kzv0','C2vHCMm','CMvszxa','ChqGkhK','DgvTu2m','lI9WCM8','C2LVBLq','DMvKq3u','ihWGrxi','BIb0AmoG','u3rYAw4','ntq3nZqWu0HNrLPM','AcKGy2G','AufUzem','t2TYuhi','zxjeyxq','vgHP4BQ/Dq','yxjRzg8','BhmVC3q','zxHWB3i','y29UDgu','ig5Vzgu','AgvTyvq','CM9Szq','C2vZC2K','y+g7P2eGyW','4BUdigHVW6a','igZHU51Pia','W5rorYbR','DsWGs0G','zxHWBg8','y2JHUQf5lG','CMv0zxi','y2LWyw4','W61JAc9T','B29S','CNvUuMu','B2XZ'];_0x4465=function(){return _0x552b87;};return _0x4465();}async function runWorkflowAgent(_0x32d72a,_0x3d381b,_0x2e1533,_0x5c6226,_0xda6905){const _0x44b729=_0x44c937;try{if(!_0x5c6226)throw new Error(_0x44b729(0x178)+_0x44b729(0x17d)+_0x44b729(0x14f)+_0x44b729(0x16b)+_0x44b729(0x153)+_0x44b729(0x1b8)+_0x44b729(0x1c4)+_0x44b729(0x174)+_0x44b729(0x1be)+_0x44b729(0x142));if(!_0x3d381b){const _0x49104d={};_0x49104d['id_ap'+'p']=_0x32d72a,_0x49104d['admin']=!![],_0x49104d[_0x44b729(0x1ad)+'s']=!![];const _0x4cacf1=await global[_0x44b729(0x13f)+_0x44b729(0x15c)]('parti'+_0x44b729(0x189)+'t')[_0x44b729(0x152)+'ne'](_0x49104d)['lean']();if(!_0x4cacf1)throw new Error(_0x44b729(0x154)+'gười\x20'+'sử\x20dụ'+'ng\x20là'+'\x20quản'+_0x44b729(0x159)+_0x44b729(0x181)+'ông\x20t'+_0x44b729(0x1c3)+_0x44b729(0x187));_0x3d381b=_0x4cacf1[_0x44b729(0x164)];}const _0x306d53=await loadTenantModel(_0x32d72a),_0x21ecdb=buildReadOnlyDataTools(_0x32d72a,_0x3d381b,_0x2e1533),_0x888485=JSON['strin'+_0x44b729(0x146)]({'node_prompt':_0x5c6226,'input':_0xda6905===undefined?null:_0xda6905,'context':{'id_app':_0x32d72a,'node_id':_0x2e1533||null,'timestamp':new Date()[_0x44b729(0x157)+_0x44b729(0x172)+'g']()},'_huong_dan':'Nếu\x20c'+_0x44b729(0x1b7)+_0x44b729(0x1b6)+_0x44b729(0x160)+_0x44b729(0x13b)+_0x44b729(0x182)+_0x44b729(0x171)+_0x44b729(0x198)+'iệm\x20v'+'ụ,\x20hã'+'y\x20dùn'+'g\x20các'+_0x44b729(0x160)+_0x44b729(0x1a9)+'chỉ-đ'+_0x44b729(0x192)+_0x44b729(0x144)+_0x44b729(0x15d)+'\x20LẤY\x20'+_0x44b729(0x1ba)+_0x44b729(0x1b3)+'i\x20phâ'+_0x44b729(0x1c4)+_0x44b729(0x149)+_0x44b729(0x1ab)+_0x44b729(0x183)+'CUỐI\x20'+_0x44b729(0x165)+'BẮT\x20B'+_0x44b729(0x151)+_0x44b729(0x1ac)+_0x44b729(0x14d)+_0x44b729(0x162)+_0x44b729(0x1b4)+'êu\x20cầ'+_0x44b729(0x185)+_0x44b729(0x184)+_0x44b729(0x141)+_0x44b729(0x1b2)+_0x44b729(0x18a)+_0x44b729(0x179)+_0x44b729(0x1bc)}),_0x37ade9={};_0x37ade9[_0x44b729(0x17f)]=_0x44b729(0x166),_0x37ade9[_0x44b729(0x17c)+'nt']=_0x888485;const _0x4888e9=await generateText({'model':_0x306d53,'system':SYSTEM_PROMPT,'messages':[_0x37ade9],'tools':_0x21ecdb,'stopWhen':stepCountIs(0x8)}),_0x2c59f1=_0x4888e9[_0x44b729(0x1af)]||'',_0x523602={};return _0x523602[_0x44b729(0x14a)]=_0x2c59f1,_0x523602['answe'+'r']=_0x2c59f1,_0x523602[_0x44b729(0x180)+_0x44b729(0x15a)]=_0x2e1533,_0x523602;}catch(_0x508a8f){console[_0x44b729(0x1c2)](_0x44b729(0x1b1)+_0x44b729(0x1b5)+_0x44b729(0x19b)+_0x44b729(0x168)+_0x44b729(0x13a)+'\x20'+_0x32d72a+(_0x44b729(0x170)+'r:'),_0x508a8f);throw new Error(_0x508a8f[_0x44b729(0x1a2)+'ge']);}}function _0x427f(_0x163b05,_0x1781cb){_0x163b05=_0x163b05-0x13a;const _0x4465ef=_0x4465();let _0x427f12=_0x4465ef[_0x163b05];if(_0x427f['OpPLoi']===undefined){var _0xefbaf2=function(_0x6a8bd8){const _0xa4967d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2744e3='',_0x1896df='';for(let _0x24ba8c=0x0,_0x4f5998,_0x2d799c,_0x49ceb1=0x0;_0x2d799c=_0x6a8bd8['charAt'](_0x49ceb1++);~_0x2d799c&&(_0x4f5998=_0x24ba8c%0x4?_0x4f5998*0x40+_0x2d799c:_0x2d799c,_0x24ba8c++%0x4)?_0x2744e3+=String['fromCharCode'](0xff&_0x4f5998>>(-0x2*_0x24ba8c&0x6)):0x0){_0x2d799c=_0xa4967d['indexOf'](_0x2d799c);}for(let _0x34d237=0x0,_0x553fed=_0x2744e3['length'];_0x34d237<_0x553fed;_0x34d237++){_0x1896df+='%'+('00'+_0x2744e3['charCodeAt'](_0x34d237)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1896df);};_0x427f['NvEMql']=_0xefbaf2,_0x427f['PvTdEV']={},_0x427f['OpPLoi']=!![];}const _0x658552=_0x4465ef[0x0],_0x1474fa=_0x163b05+_0x658552,_0x4e6afb=_0x427f['PvTdEV'][_0x1474fa];return!_0x4e6afb?(_0x427f12=_0x427f['NvEMql'](_0x427f12),_0x427f['PvTdEV'][_0x1474fa]=_0x427f12):_0x427f12=_0x4e6afb,_0x427f12;}module[_0x44c937(0x17b)+'ts']=runWorkflowAgent;
@@ -0,0 +1 @@
1
+ const _0x461c35=_0x3a0d;(function(_0x116368,_0x43670b){const _0x58a7b2=_0x3a0d,_0x204995=_0x116368();while(!![]){try{const _0x57aedd=-parseInt(_0x58a7b2(0x1af))/0x1*(-parseInt(_0x58a7b2(0x18e))/0x2)+parseInt(_0x58a7b2(0x199))/0x3*(-parseInt(_0x58a7b2(0x197))/0x4)+-parseInt(_0x58a7b2(0x19c))/0x5*(parseInt(_0x58a7b2(0x1b6))/0x6)+-parseInt(_0x58a7b2(0x18c))/0x7*(-parseInt(_0x58a7b2(0x1b7))/0x8)+parseInt(_0x58a7b2(0x1a1))/0x9+-parseInt(_0x58a7b2(0x187))/0xa+parseInt(_0x58a7b2(0x1bd))/0xb*(parseInt(_0x58a7b2(0x188))/0xc);if(_0x57aedd===_0x43670b)break;else _0x204995['push'](_0x204995['shift']());}catch(_0x127508){_0x204995['push'](_0x204995['shift']());}}}(_0x1a56,0x5c010));const {decrypt}=require(_0x461c35(0x196)+_0x461c35(0x1ac)+_0x461c35(0x189)),tenantConfigs={};function _0x1a56(){const _0xef1ac1=['qgfPlxm','ueKGs2u','mte0ntiYnLnQvu1wwa','mJeXmJq3mNnRB2XSva','Bw9KzwW','x2LK','Bg9Hzfq','zwWGy2G','zMXLEgi','ndrfthfcB2W','AxO6oG','A2JHU59Pia','qu5usfi','xsdeKmoJia','tMfTzq','DgHYB3a','B2rLBca','nJi2mdq3mgLmDgvAzW','mtiYnZe2oe5ewK9KrW','AwXZ','yxbPs2u','zgSVyw4','n2HhBfzdvG','w011Bhq','ndCWt0Hqyw9w','DgJHU5fUzW','zxHWB3i','ywLFBw8','ySoHBYbb','yxbW','t1bjqW','q2JgSgeG','lI4VBgK','mtz3C2f3rK0','q0Xbvuq','mtG3mJu0v0zQr0v4','Dg9vCha','r0vnsu4','mtbwwNH3C00','BYbO4BUhia','zgSVz28','ywLFBMe','yYbnB2q','mJKWmJe3nNfxC05MAG','CMvWBge','zw5HBNq','r1bu','zw5HAq','iefWCdO','z2v0tw8','B2DSzq','tw9KzwW','zgvS','Av9RzxK','yNmVDxq','r09pr0W','EsbOB+g6TW','mJCXoeHmt1PKBG','zxjdyxm','As1mte0','ywLFyxa','zgSVB3a'];_0x1a56=function(){return _0xef1ac1;};return _0x1a56();}function _0x3a0d(_0x28d560,_0x1af284){_0x28d560=_0x28d560-0x182;const _0x1a5604=_0x1a56();let _0x3a0d9a=_0x1a5604[_0x28d560];if(_0x3a0d['OBxDrC']===undefined){var _0x42c44e=function(_0x94f0ec){const _0x3f0193='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5738b0='',_0x5f580a='';for(let _0xb85a9d=0x0,_0x1b4233,_0x33a731,_0x141981=0x0;_0x33a731=_0x94f0ec['charAt'](_0x141981++);~_0x33a731&&(_0x1b4233=_0xb85a9d%0x4?_0x1b4233*0x40+_0x33a731:_0x33a731,_0xb85a9d++%0x4)?_0x5738b0+=String['fromCharCode'](0xff&_0x1b4233>>(-0x2*_0xb85a9d&0x6)):0x0){_0x33a731=_0x3f0193['indexOf'](_0x33a731);}for(let _0x5d9a21=0x0,_0x434ae6=_0x5738b0['length'];_0x5d9a21<_0x434ae6;_0x5d9a21++){_0x5f580a+='%'+('00'+_0x5738b0['charCodeAt'](_0x5d9a21)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5f580a);};_0x3a0d['tpTcKx']=_0x42c44e,_0x3a0d['RmqpAA']={},_0x3a0d['OBxDrC']=!![];}const _0xbbbe60=_0x1a5604[0x0],_0x2e273c=_0x28d560+_0xbbbe60,_0x2d64c3=_0x3a0d['RmqpAA'][_0x2e273c];return!_0x2d64c3?(_0x3a0d9a=_0x3a0d['tpTcKx'](_0x3a0d9a),_0x3a0d['RmqpAA'][_0x2e273c]=_0x3a0d9a):_0x3a0d9a=_0x2d64c3,_0x3a0d9a;}async function loadTenantModel(_0x434ae6){const _0x5a8180=_0x461c35,_0xc9b147={};_0xc9b147[_0x5a8180(0x1b9)]=_0x434ae6;const _0x387a21={};_0x387a21[_0x5a8180(0x19f)+'me']=0x1,_0x387a21[_0x5a8180(0x1b2)+'i_key']=0x1,_0x387a21['ai_mo'+_0x5a8180(0x1aa)]=0x1;const _0x2ff54c=await global[_0x5a8180(0x1a7)+_0x5a8180(0x1aa)](_0x5a8180(0x193))['findO'+'ne'](_0xc9b147,_0x387a21);if(!_0x2ff54c||!_0x2ff54c[_0x5a8180(0x1b2)+'i_key']||!_0x2ff54c[_0x5a8180(0x191)+'del'])throw new Error(_0x5a8180(0x195)+'khai\x20'+_0x5a8180(0x192)+_0x5a8180(0x1b5)+_0x5a8180(0x1ae)+_0x5a8180(0x1a0)+_0x5a8180(0x1bb)+_0x5a8180(0x19d)+_0x5a8180(0x18f)+'.');const _0x2f7515=tenantConfigs[_0x434ae6]&&tenantConfigs[_0x434ae6][_0x5a8180(0x1b8)+_0x5a8180(0x184)]!==_0x2ff54c['ai_mo'+_0x5a8180(0x1aa)];if(!tenantConfigs[_0x434ae6]||_0x2f7515){const _0x19f10b=_0x2ff54c['ai_ap'+_0x5a8180(0x1ab)]&&_0x2ff54c['ai_ap'+_0x5a8180(0x1ab)]['start'+'sWith'](_0x5a8180(0x1bc)+_0x5a8180(0x1be))?decrypt(_0x2ff54c[_0x5a8180(0x1b2)+_0x5a8180(0x1ab)][_0x5a8180(0x1a2)+'ce']('flexb'+_0x5a8180(0x1be),''),![]):_0x2ff54c[_0x5a8180(0x1b2)+_0x5a8180(0x1ab)],_0x3c438c=(_0x2ff54c[_0x5a8180(0x19f)+'me']||_0x5a8180(0x1a4))[_0x5a8180(0x19a)+_0x5a8180(0x1b0)+'e']();let _0x1bdc02;switch(_0x3c438c){case _0x5a8180(0x198)+'E':case _0x5a8180(0x182)+_0x5a8180(0x194):{const {createAnthropic:_0x15f435}=require(_0x5a8180(0x1b4)+_0x5a8180(0x18b)+_0x5a8180(0x185)+'ic'),_0x26f68c={};_0x26f68c[_0x5a8180(0x18a)+'y']=_0x19f10b,_0x1bdc02=_0x15f435(_0x26f68c)(_0x2ff54c[_0x5a8180(0x191)+_0x5a8180(0x1aa)]);break;}case _0x5a8180(0x19b)+'I':case _0x5a8180(0x1ad)+'E':{const {createGoogleGenerativeAI:_0x146ca2}=require(_0x5a8180(0x1b4)+_0x5a8180(0x19e)+_0x5a8180(0x1a8)),_0x3ef791={};_0x3ef791[_0x5a8180(0x18a)+'y']=_0x19f10b,_0x1bdc02=_0x146ca2(_0x3ef791)(_0x2ff54c[_0x5a8180(0x191)+'del']);break;}case _0x5a8180(0x1a4):case'OPENA'+'I':default:{const {createOpenAI:_0x45c35f}=require('@ai-s'+_0x5a8180(0x1b3)+_0x5a8180(0x1a5)),_0xf6541a={};_0xf6541a[_0x5a8180(0x18a)+'y']=_0x19f10b,_0x1bdc02=_0x45c35f(_0xf6541a)(_0x2ff54c['ai_mo'+_0x5a8180(0x1aa)]);break;}}const _0x1074b9={};_0x1074b9[_0x5a8180(0x1b8)]=_0x1bdc02,_0x1074b9[_0x5a8180(0x1b8)+_0x5a8180(0x184)]=_0x2ff54c[_0x5a8180(0x191)+_0x5a8180(0x1aa)],tenantConfigs[_0x434ae6]=_0x1074b9,Logger['info'](_0x5a8180(0x18d)+_0x5a8180(0x1b1)+_0x5a8180(0x183)+_0x5a8180(0x1bf)+'tạo\x20m'+_0x5a8180(0x186)+_0x2ff54c[_0x5a8180(0x191)+_0x5a8180(0x1aa)]+'\x20('+_0x3c438c+(')\x20cho'+_0x5a8180(0x1a6)+'\x20')+_0x434ae6);}return tenantConfigs[_0x434ae6][_0x5a8180(0x1b8)];}const _0x5d9a21={};_0x5d9a21[_0x461c35(0x1ba)+_0x461c35(0x1a3)+_0x461c35(0x1a9)]=loadTenantModel,module[_0x461c35(0x190)+'ts']=_0x5d9a21;