From cf16d60893c739173489de9865604486ef294733 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 7 Jul 2026 12:23:51 +0800 Subject: [PATCH] refactor: drop cost from llmusage, add tenantid, clean references - Remove cost field from llm_charging, get_accounting_llmusages, backup, syncinference - Add tenantid column migration SQL --- llmage/.product_interface.py.swp | Bin 0 -> 16384 bytes llmage/accounting.py | 15 +++------------ llmage/syncinference.py | 4 ++-- sql/drop_cost_add_tenantid.sql | 6 ++++++ 4 files changed, 11 insertions(+), 14 deletions(-) create mode 100644 llmage/.product_interface.py.swp create mode 100644 sql/drop_cost_add_tenantid.sql diff --git a/llmage/.product_interface.py.swp b/llmage/.product_interface.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..f3544fa751460866dea03dae75e8ea3bf990d25a GIT binary patch literal 16384 zcmeI2ZHygN8OKMlzN3f+h@TF-#JP*x+igh<-DJ_i7F-Fn>5E^gUe294vpenFJJXrD zyIs}-tu1}Qwj|OQYbi98wm`cDg|uujO$>ff2+_pE7)4_D-rdF+l!z&bZ~y0-xuF)B_oUU?Y>3<{0-u_zxxx7)ky=(DwiD2zXd13cJOV`0WMr=7_Wi}a0L7SJOBbv0(XJ| za0BQB9pLRx8pe;ocCZmF1Gj>=K4BQIgFk@Rz&O|pHi3J<@{t@T_>;rqjCcwd0K{vSY zVZ-*%_;DI$@Ik*M<6@B>^@CrBu#=!>Q0P5#!!E6^xE?bmqg9XR5hJ>}I zq(9W)!`$_F+4bCbw3h{eYxj-ela31{EgOSt5wpV)^I# zRmLMGdSw(v^AYaGOjL)9gCZ_bL8wg@QqU!sdzAB-*=n6$#3#)9*OxofJvzOh@y-0L3GZZ}Xs|YX~dmpQh@1Hz# zsSKrM2Oq4T`qAX+ z2d5^^Hmjqm@WoABi`eyj%nWK}&y9wJZMN2}lFU-=im=w&;ASMnWukSx%Z2C6r6e}1__pwR8TUr`Xv9(-&mzqX{fjV6wTydJ5!&C)@Pyu1 zqox#!$oGat2{8q_uZ5OCpaap>sOaeEkex*x*4pJ|-}kaT9>qzG%j5uwdYd9=Tg;{& zKGxWJYU<3UsWV#!`rmkQ>-3hV8V9yDRHtp;(Rlp+H(uP9R@x?2FPnaTQ)A*GO8&^+ z`U9KKfA^RyrBABawRPS_;h+`)Z9t)oN1vFSI9mVyhQ_{=^@onscb$YJs6IPNRTN3H zdn*b$cmGC%N267X*}`F$p2_X1>(2IZ-x9wnx}Xi&B-JUTO;fCkLyk|k93S(g`Ouv< z-Av|j$rdrp22!;KTqI?Tax&@YF_S8)S(b<*B#@(5R-~u%4Dpf?i^Mc-lBY~z7LSGJ z4a9U@NK&14H@1Vz%NM-f#@+0+b}JbS3I;bdd~#>vw=)Z|db zsXPo*KrLu;l~D^!$#$c_^8Ok({gl;U`S)*aC zOnVyU`YM1l5(nHWmAOaXO*cd34uhhaL1;qDL!!s-M5-HKS5t< zzDCR(iFz|9m%&)p=~j3+%CHZ>NOD~CkugvSJW;_jRZenXugx)Fb&XoU^y7H7J|&;b zS9ld8g0dHJ5R}u5ElpZ>mulI7{;Hm(RmoLeYJ$%HKf@XKNt}V{{IB1?zl8JtF!&1i zGFSlqj5GdG@F?)W-Jl5Og6qJ`IM4qAJP(co7c2n<@EXqazXv}DFM!9u2Cy333BCpj z;4|QDoav{*ad0nK4OW5`;5P6D@D|SUKLrQDcfe9`JD@ZFjo?kRhuU2)JBc%7di>DT_}=>AXQ!WgLb))Sj=OZHOx}I&Sv3#4 z_|(I1`4PPFVF=&N>^^)Wk&QJ=r;zkqjji@z$Sd&1;v9`ls(eqNPBl6w`8(wKN}jaU zZCeTw39%tgVRnHYy4ja9UO8DKuh1DSO{E^$jX1m~Mb6CPhb|6q+$&u)??vip^C=j* z3A$%4;=JQglqRF(O82eq8(j?PN4qJr4%nveO{dh2N{`w&>B+YzRt=|_3cU9^MZwT{ z=s)%O&;yR{S--YHVRY%ND13gg$B<$8>12z7z#C<{iZtEKR?8vuMfkjmbeEPuC6V_^ zhPJ98=`NW^-KV*vPfi`kTsVK5`D879tSMnq2nD6NsZM>FO`lWiG?_m8aQ%k|@n%Q9 z0r_O}bPe&ejI`Gp= zEY<&M-~F%tw##|5mA3Da8ekdiz84-n_~n%qa6F%ri%t(yOnDuoy?HHGCw;9$T{M>I zxx_D+PJUg=OtYY3qz;z7%XdR~MKd|Ev$1_&W835U%?=6D>|Nzw?55XB=eO)??0%-P qW1JPxgh~Ksk-tV%qi$y5$rI#pNP^hZiET~0pgji3o3D5Dj_E(kjCLyk literal 0 HcmV?d00001 diff --git a/llmage/accounting.py b/llmage/accounting.py index 823bb97..7e41211 100644 --- a/llmage/accounting.py +++ b/llmage/accounting.py @@ -23,17 +23,13 @@ async def llm_charging(ppid, llmusage): raise e return None amount = 0 - cost = 0 for p in prices: amount += p.amount - if p.cost: - cost += p.cost discount = await env.get_customer_discount(llmusage.ownerid, llmusage.userorgid) return DictObject(**{ 'original_amount': amount, 'amount': amount * discount, - 'cost': cost }) async def checkCustomerBalance(llmid, userid, userorgid, catelogid=None): @@ -181,7 +177,6 @@ where a.llmid = b.id sql += " and a.id=${luid}$" ns['luid'] = luid recs = await sor.sqlExe(sql, ns) - # debug(f'{sql=}, {ns=}, {len(recs)=}') for r in recs: if r.usages is None: try: @@ -190,24 +185,21 @@ where a.llmid = b.id continue r.usages = output.get('usage') if r.usages is None: - debug(f'{r.usages=} is None, accoiunting failed') + debug(f'{r.usages=} is None, accounting failed') await llm_accoung_failed(r.id, reason='usages is None') continue d = None try: debug(f'{r.ppid=}, {r.usages=} {r.id=}') d = await llm_charging(r.ppid, r) - except Exception as e: exception(f'{r.ppid=}, {r.usages=} llm_charging() failed,{e}') await llm_accoung_failed(r.id, reason=f'llm_charging failed: {e}') continue r.amount = d.amount - r.cost = d.cost ns = { 'id': r.id, 'amount': r.amount, - 'cost': r.cost, 'usage': json.dumps(r.usage, ensure_ascii=False, indent=4) } await sor.U('llmusage', ns) @@ -235,7 +227,6 @@ async def llm_accoung_failed(luid, reason=None): 'use_date': r.use_date, 'use_time': r.use_time, 'amount': r.amount, - 'cost': r.cost, 'failed_reason': reason or 'accounting failed', 'failed_time': env.timestampstr(), 'retry_count': 0, @@ -261,8 +252,8 @@ WHERE accounting_status='accounted' AND use_date < ${cutoff_date}$""" # Step 1: INSERT INTO history SELECT from main table insert_sql = """INSERT INTO llmusage_history -(id, llmid, use_date, use_time, userid, usages, ioinfo, transno, responsed_seconds, finish_seconds, status, taskid, amount, cost, userorgid, ownerid, accounting_status, backup_time) -SELECT id, llmid, use_date, use_time, userid, usages, ioinfo, transno, responsed_seconds, finish_seconds, status, taskid, amount, cost, userorgid, ownerid, accounting_status, ${ts}$ +(id, llmid, use_date, use_time, userid, usages, ioinfo, transno, responsed_seconds, finish_seconds, status, taskid, amount, userorgid, ownerid, accounting_status, tenantid, backup_time) +SELECT id, llmid, use_date, use_time, userid, usages, ioinfo, transno, responsed_seconds, finish_seconds, status, taskid, amount, userorgid, ownerid, accounting_status, tenantid, ${ts}$ FROM llmusage WHERE accounting_status='accounted' AND use_date < ${cutoff_date}$""" await sor.execute(insert_sql, {'cutoff_date': cutoff_date, 'ts': ts}) diff --git a/llmage/syncinference.py b/llmage/syncinference.py index de946a2..8d365ab 100644 --- a/llmage/syncinference.py +++ b/llmage/syncinference.py @@ -60,7 +60,7 @@ async def sync_uapi_request(request, llm, callerid, callerorgid, params_kw=None) llmusage.responsed_seconds = responsed_seconds llmusage.finish_seconds = finish_seconds llmusage.status = 'SUCCEEDED' - llmusage.amount = llmusage.cost = 0.00 + llmusage.amount = 0.00 """ 联机不记账 if llm.ppid: try: @@ -132,7 +132,7 @@ async def sync_uapi_request_product(llm, api_userid, user_id, user_org_id, param llmusage.responsed_seconds = responsed_seconds llmusage.finish_seconds = finish_seconds llmusage.status = 'SUCCEEDED' - llmusage.amount = llmusage.cost = 0.00 + llmusage.amount = 0.00 llmusage.userorgid = user_org_id llmusage.ownerid = llm.ownerid llmusage.accounting_status = 'created' diff --git a/sql/drop_cost_add_tenantid.sql b/sql/drop_cost_add_tenantid.sql new file mode 100644 index 0000000..bbcfcb4 --- /dev/null +++ b/sql/drop_cost_add_tenantid.sql @@ -0,0 +1,6 @@ +-- DROP cost column, ADD tenantid column to llmusage +ALTER TABLE llmusage DROP COLUMN IF EXISTS cost; +ALTER TABLE llmusage ADD COLUMN IF NOT EXISTS tenantid VARCHAR(32) DEFAULT NULL COMMENT '租户orgid,标识客户在哪个分销商入口消费'; +-- Also update llmusage_history if exists +ALTER TABLE llmusage_history DROP COLUMN IF EXISTS cost; +ALTER TABLE llmusage_history ADD COLUMN IF NOT EXISTS tenantid VARCHAR(32) DEFAULT NULL;