yym68686 commited on
Commit
3035b10
·
1 Parent(s): a6c11f1

🪞 Frontend: Fixed the bug where the chart size was displayed incorrectly when there was no data.

Browse files

🐛 Bug: Fix the bug where the model cannot be retrieved in weight polling after renaming the provider model.

Files changed (2) hide show
  1. main.py +51 -20
  2. utils.py +12 -3
main.py CHANGED
@@ -1253,10 +1253,6 @@ from fastapi.security import APIKeyHeader
1253
  from typing import Optional, List
1254
 
1255
  from xue import HTML, Head, Body, Div, xue_initialize, Script, Ul, Li
1256
- from xue.components.menubar import (
1257
- Menubar, MenubarMenu, MenubarTrigger, MenubarContent,
1258
- MenubarItem, MenubarSeparator
1259
- )
1260
  from xue.components import input, dropdown, sheet, form, button, checkbox, sidebar, chart
1261
  from xue.components.model_config_row import model_config_row
1262
  # import sys
@@ -1423,7 +1419,7 @@ async def root(x_api_key: str = Depends(get_api_key)):
1423
  ),
1424
  Div(id="sheet-container"), # sheet加载位置
1425
  id="main-content",
1426
- class_="ml-[240px] p-6 transition-[margin] duration-200 ease-in-out"
1427
  ),
1428
  class_="flex"
1429
  ),
@@ -1444,6 +1440,33 @@ async def toggle_sidebar(is_collapsed: bool = False):
1444
  active_item="dashboard"
1445
  ).render()
1446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1447
  @frontend_router.get("/data", response_class=HTMLResponse, dependencies=[Depends(frontend_rate_limit_dependency)])
1448
  async def data_page(x_api_key: str = Depends(get_api_key)):
1449
  if not x_api_key:
@@ -1500,22 +1523,30 @@ async def data_page(x_api_key: str = Depends(get_api_key)):
1500
  "legend": True,
1501
  "tooltip": True
1502
  }
 
 
 
 
 
 
 
 
 
 
1503
 
1504
- result = HTML(
1505
- Head(title="数据统计"),
1506
- Body(
1507
- Div(
1508
- Div(
1509
- "模型使用统计 (24小时)",
1510
- class_="text-2xl font-bold mb-4"
1511
- ),
1512
- Div(
1513
- chart.bar_chart("model-usage-chart", chart_data, "model", series, chart_config),
1514
- class_="h-[600px]" # 设置图表高度
1515
- ),
1516
- class_="container mx-auto p-4"
1517
- )
1518
- )
1519
  ).render()
1520
 
1521
  return result
 
1253
  from typing import Optional, List
1254
 
1255
  from xue import HTML, Head, Body, Div, xue_initialize, Script, Ul, Li
 
 
 
 
1256
  from xue.components import input, dropdown, sheet, form, button, checkbox, sidebar, chart
1257
  from xue.components.model_config_row import model_config_row
1258
  # import sys
 
1419
  ),
1420
  Div(id="sheet-container"), # sheet加载位置
1421
  id="main-content",
1422
+ class_="ml-[200px] p-6 transition-[margin] duration-200 ease-in-out"
1423
  ),
1424
  class_="flex"
1425
  ),
 
1440
  active_item="dashboard"
1441
  ).render()
1442
 
1443
+ @app.get("/sidebar/update/{active_item}", response_class=HTMLResponse)
1444
+ async def update_sidebar(active_item: str):
1445
+ return sidebar.Sidebar(
1446
+ "zap",
1447
+ "uni-api",
1448
+ sidebar_items,
1449
+ is_collapsed=False,
1450
+ active_item=active_item
1451
+ ).render()
1452
+
1453
+ @frontend_router.get("/dashboard", response_class=HTMLResponse, dependencies=[Depends(frontend_rate_limit_dependency)])
1454
+ async def data_page(x_api_key: str = Depends(get_api_key)):
1455
+ if not x_api_key:
1456
+ return RedirectResponse(url="/login", status_code=303)
1457
+
1458
+ result = Div(
1459
+ Div(
1460
+ data_table(data_table_columns, app.state.config["providers"], "users-table"),
1461
+ class_="p-4"
1462
+ ),
1463
+ Div(id="sheet-container"), # sheet加载位置
1464
+ id="main-content",
1465
+ class_="ml-[200px] p-6 transition-[margin] duration-200 ease-in-out"
1466
+ ).render()
1467
+
1468
+ return result
1469
+
1470
  @frontend_router.get("/data", response_class=HTMLResponse, dependencies=[Depends(frontend_rate_limit_dependency)])
1471
  async def data_page(x_api_key: str = Depends(get_api_key)):
1472
  if not x_api_key:
 
1523
  "legend": True,
1524
  "tooltip": True
1525
  }
1526
+ chart_config = {
1527
+ "stacked": False,
1528
+ "horizontal": False,
1529
+ "colors": ["#2563eb", "#60a5fa"],
1530
+ "grid": True, # 隐藏网格
1531
+ "legend": True, # 显示图例
1532
+ "tooltip": True # 启用工具提示
1533
+ }
1534
+ print(chart_data)
1535
+ print(series)
1536
 
1537
+ result = Div(
1538
+ Div(
1539
+ "模型使用统计 (24小时)",
1540
+ class_="text-2xl font-bold mb-4"
1541
+ ),
1542
+ Div(
1543
+ chart.bar_chart("basic-chart", chart_data, "month", series, chart_config),
1544
+ # chart.bar_chart("model-usage-chart", chart_data, "model", series, chart_config),
1545
+ class_="mb-8" # 设置图表高度
1546
+ ),
1547
+ id="main-content",
1548
+ class_="container ml-[200px] mx-auto p-4"
1549
+ # class_="container ml-[200px] mx-auto p-4"
 
 
1550
  ).render()
1551
 
1552
  return result
utils.py CHANGED
@@ -109,9 +109,18 @@ def update_config(config_data, use_config_url=False):
109
  for model in api_key.get('model'):
110
  if isinstance(model, dict):
111
  key, value = list(model.items())[0]
112
- # provider_name = key.split("/")[0]
113
- if "/" in key:
114
- weights_dict.update({key: int(value)})
 
 
 
 
 
 
 
 
 
115
  models.append(key)
116
  if isinstance(model, str):
117
  models.append(model)
 
109
  for model in api_key.get('model'):
110
  if isinstance(model, dict):
111
  key, value = list(model.items())[0]
112
+ provider_name = key.split("/")[0]
113
+ model_name = key.split("/")[1]
114
+
115
+ for provider_item in config_data["providers"]:
116
+ if provider_item['provider'] != provider_name:
117
+ continue
118
+ model_dict = get_model_dict(provider_item)
119
+ if model_name in model_dict.keys():
120
+ weights_dict.update({provider_name + "/" + model_dict[model_name]: int(value)})
121
+ elif model_name == "*":
122
+ weights_dict.update({provider_name + "/" + model_dict[model_item]: int(value) for model_item in model_dict.keys()})
123
+
124
  models.append(key)
125
  if isinstance(model, str):
126
  models.append(model)