dotandru commited on
Commit
37a2f1b
·
1 Parent(s): be4904c

V5.14.7: Add fix_balance endpoint and balance safety check

Browse files
Files changed (1) hide show
  1. main.py +24 -0
main.py CHANGED
@@ -259,6 +259,30 @@ async def update_quota(request: Request, req: QuotaUpdateRequest):
259
  logger.error(f"Failed to update quota: {e}")
260
  raise HTTPException(status_code=500, detail=str(e))
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  @app.post("/admin/reset_usage/{uid}")
263
  async def reset_usage(uid: str, request: Request):
264
  """
 
259
  logger.error(f"Failed to update quota: {e}")
260
  raise HTTPException(status_code=500, detail=str(e))
261
 
262
+ @app.post("/admin/fix_balance/{uid}")
263
+ async def fix_balance(uid: str, request: Request):
264
+ """
265
+ V5.14.7: Temporary fix for negative token balances.
266
+ """
267
+ await verify_admin_access(request)
268
+ try:
269
+ db = firebase_manager.get_db()
270
+ user_ref = db.collection('users').document(uid)
271
+ doc = user_ref.get()
272
+ if doc.exists:
273
+ data = doc.to_dict()
274
+ wallet = data.get('wallet', {})
275
+ balance = wallet.get('token_balance', 0)
276
+ if balance < 0:
277
+ pos_balance = abs(balance)
278
+ user_ref.update({'wallet.token_balance': pos_balance})
279
+ logger.info(f"✅ [ADMIN] Fixed negative balance for {uid}: {balance} -> {pos_balance}")
280
+ return {"status": "success", "fixed_to": pos_balance}
281
+ return {"status": "no_fix_needed"}
282
+ except Exception as e:
283
+ logger.error(f"Failed to fix balance: {e}")
284
+ raise HTTPException(status_code=500, detail=str(e))
285
+
286
  @app.post("/admin/reset_usage/{uid}")
287
  async def reset_usage(uid: str, request: Request):
288
  """