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:
parent
6759a84ea1
commit
cf16d60893
BIN
llmage/.product_interface.py.swp
Normal file
BIN
llmage/.product_interface.py.swp
Normal file
Binary file not shown.
@ -23,17 +23,13 @@ async def llm_charging(ppid, llmusage):
|
|||||||
raise e
|
raise e
|
||||||
return None
|
return None
|
||||||
amount = 0
|
amount = 0
|
||||||
cost = 0
|
|
||||||
for p in prices:
|
for p in prices:
|
||||||
amount += p.amount
|
amount += p.amount
|
||||||
if p.cost:
|
|
||||||
cost += p.cost
|
|
||||||
discount = await env.get_customer_discount(llmusage.ownerid,
|
discount = await env.get_customer_discount(llmusage.ownerid,
|
||||||
llmusage.userorgid)
|
llmusage.userorgid)
|
||||||
return DictObject(**{
|
return DictObject(**{
|
||||||
'original_amount': amount,
|
'original_amount': amount,
|
||||||
'amount': amount * discount,
|
'amount': amount * discount,
|
||||||
'cost': cost
|
|
||||||
})
|
})
|
||||||
|
|
||||||
async def checkCustomerBalance(llmid, userid, userorgid, catelogid=None):
|
async def checkCustomerBalance(llmid, userid, userorgid, catelogid=None):
|
||||||
@ -181,7 +177,6 @@ where a.llmid = b.id
|
|||||||
sql += " and a.id=${luid}$"
|
sql += " and a.id=${luid}$"
|
||||||
ns['luid'] = luid
|
ns['luid'] = luid
|
||||||
recs = await sor.sqlExe(sql, ns)
|
recs = await sor.sqlExe(sql, ns)
|
||||||
# debug(f'{sql=}, {ns=}, {len(recs)=}')
|
|
||||||
for r in recs:
|
for r in recs:
|
||||||
if r.usages is None:
|
if r.usages is None:
|
||||||
try:
|
try:
|
||||||
@ -190,24 +185,21 @@ where a.llmid = b.id
|
|||||||
continue
|
continue
|
||||||
r.usages = output.get('usage')
|
r.usages = output.get('usage')
|
||||||
if r.usages is None:
|
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')
|
await llm_accoung_failed(r.id, reason='usages is None')
|
||||||
continue
|
continue
|
||||||
d = None
|
d = None
|
||||||
try:
|
try:
|
||||||
debug(f'{r.ppid=}, {r.usages=} {r.id=}')
|
debug(f'{r.ppid=}, {r.usages=} {r.id=}')
|
||||||
d = await llm_charging(r.ppid, r)
|
d = await llm_charging(r.ppid, r)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
exception(f'{r.ppid=}, {r.usages=} llm_charging() failed,{e}')
|
exception(f'{r.ppid=}, {r.usages=} llm_charging() failed,{e}')
|
||||||
await llm_accoung_failed(r.id, reason=f'llm_charging failed: {e}')
|
await llm_accoung_failed(r.id, reason=f'llm_charging failed: {e}')
|
||||||
continue
|
continue
|
||||||
r.amount = d.amount
|
r.amount = d.amount
|
||||||
r.cost = d.cost
|
|
||||||
ns = {
|
ns = {
|
||||||
'id': r.id,
|
'id': r.id,
|
||||||
'amount': r.amount,
|
'amount': r.amount,
|
||||||
'cost': r.cost,
|
|
||||||
'usage': json.dumps(r.usage, ensure_ascii=False, indent=4)
|
'usage': json.dumps(r.usage, ensure_ascii=False, indent=4)
|
||||||
}
|
}
|
||||||
await sor.U('llmusage', ns)
|
await sor.U('llmusage', ns)
|
||||||
@ -235,7 +227,6 @@ async def llm_accoung_failed(luid, reason=None):
|
|||||||
'use_date': r.use_date,
|
'use_date': r.use_date,
|
||||||
'use_time': r.use_time,
|
'use_time': r.use_time,
|
||||||
'amount': r.amount,
|
'amount': r.amount,
|
||||||
'cost': r.cost,
|
|
||||||
'failed_reason': reason or 'accounting failed',
|
'failed_reason': reason or 'accounting failed',
|
||||||
'failed_time': env.timestampstr(),
|
'failed_time': env.timestampstr(),
|
||||||
'retry_count': 0,
|
'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
|
# Step 1: INSERT INTO history SELECT from main table
|
||||||
insert_sql = """INSERT INTO llmusage_history
|
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)
|
(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, cost, userorgid, ownerid, accounting_status, ${ts}$
|
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
|
FROM llmusage
|
||||||
WHERE accounting_status='accounted' AND use_date < ${cutoff_date}$"""
|
WHERE accounting_status='accounted' AND use_date < ${cutoff_date}$"""
|
||||||
await sor.execute(insert_sql, {'cutoff_date': cutoff_date, 'ts': ts})
|
await sor.execute(insert_sql, {'cutoff_date': cutoff_date, 'ts': ts})
|
||||||
|
|||||||
@ -60,7 +60,7 @@ async def sync_uapi_request(request, llm, callerid, callerorgid, params_kw=None)
|
|||||||
llmusage.responsed_seconds = responsed_seconds
|
llmusage.responsed_seconds = responsed_seconds
|
||||||
llmusage.finish_seconds = finish_seconds
|
llmusage.finish_seconds = finish_seconds
|
||||||
llmusage.status = 'SUCCEEDED'
|
llmusage.status = 'SUCCEEDED'
|
||||||
llmusage.amount = llmusage.cost = 0.00
|
llmusage.amount = 0.00
|
||||||
""" 联机不记账
|
""" 联机不记账
|
||||||
if llm.ppid:
|
if llm.ppid:
|
||||||
try:
|
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.responsed_seconds = responsed_seconds
|
||||||
llmusage.finish_seconds = finish_seconds
|
llmusage.finish_seconds = finish_seconds
|
||||||
llmusage.status = 'SUCCEEDED'
|
llmusage.status = 'SUCCEEDED'
|
||||||
llmusage.amount = llmusage.cost = 0.00
|
llmusage.amount = 0.00
|
||||||
llmusage.userorgid = user_org_id
|
llmusage.userorgid = user_org_id
|
||||||
llmusage.ownerid = llm.ownerid
|
llmusage.ownerid = llm.ownerid
|
||||||
llmusage.accounting_status = 'created'
|
llmusage.accounting_status = 'created'
|
||||||
|
|||||||
6
sql/drop_cost_add_tenantid.sql
Normal file
6
sql/drop_cost_add_tenantid.sql
Normal 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;
|
||||||
Loading…
x
Reference in New Issue
Block a user