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
This commit is contained in:
yumoqing 2026-07-07 12:23:51 +08:00
parent 6759a84ea1
commit cf16d60893
4 changed files with 11 additions and 14 deletions

Binary file not shown.

View File

@ -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})

View File

@ -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'

View File

@ -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;