diff --git a/wwwroot/index.html b/wwwroot/index.html
new file mode 100644
index 0000000..a974484
--- /dev/null
+++ b/wwwroot/index.html
@@ -0,0 +1,9 @@
+
+
+
PCCS
+
+
+
+
diff --git a/wwwroot/index.ui b/wwwroot/index.ui
index cf669d6..da14957 100644
--- a/wwwroot/index.ui
+++ b/wwwroot/index.ui
@@ -1,7 +1,138 @@
{
- "widgettype": "urlwidget",
- "options": {
- "url": "/pccs/index.ui",
- "method": "GET"
- }
+ "widgettype": "HBox",
+ "id": "pccs_root",
+ "options": {"width": "100%", "height": "100%"},
+ "subwidgets": [
+ {
+ "widgettype": "VBox",
+ "id": "pccs_sidebar",
+ "options": {
+ "width": "220px",
+ "height": "100%",
+ "bgcolor": "#0f172a",
+ "padding": "0",
+ "flexShrink": "0"
+ },
+ "subwidgets": [
+ {
+ "widgettype": "VBox",
+ "options": {
+ "padding": "20px 16px",
+ "borderBottom": "1px solid #1e293b"
+ },
+ "subwidgets": [
+ {"widgettype": "Text", "options": {
+ "otext": "PCCS",
+ "cfontsize": 1.3,
+ "fontWeight": "bold",
+ "color": "#e2e8f0"
+ }},
+ {"widgettype": "Text", "options": {
+ "otext": "算力中心集群系统",
+ "cfontsize": 0.75,
+ "color": "#64748b"
+ }}
+ ]
+ },
+ {
+ "widgettype": "VBox",
+ "id": "pccs_menu",
+ "options": {"padding": "8px", "gap": "2px"},
+ "subwidgets": [
+ {"widgettype": "Text", "options": {
+ "otext": "主导航",
+ "cfontsize": 0.7,
+ "color": "#475569",
+ "padding": "8px 8px 4px 8px",
+ "fontWeight": "bold"
+ }}
+ ]
+ }
+ ]
+ },
+ {
+ "widgettype": "VBox",
+ "id": "pccs_main",
+ "options": {
+ "css": "filler",
+ "bgcolor": "#f8fafc",
+ "overflow": "auto"
+ },
+ "subwidgets": [
+ {
+ "widgettype": "VBox",
+ "id": "dashboard_header",
+ "options": {
+ "bgcolor": "#ffffff",
+ "borderBottom": "1px solid #e2e8f0",
+ "padding": "16px 24px"
+ },
+ "subwidgets": [
+ {"widgettype": "Text", "options": {
+ "otext": "概览",
+ "cfontsize": 1.3,
+ "fontWeight": "bold",
+ "color": "#1e293b"
+ }},
+ {"widgettype": "Text", "options": {
+ "otext": "算力中心资源总览",
+ "cfontsize": 0.85,
+ "color": "#64748b"
+ }}
+ ]
+ },
+ {
+ "widgettype": "VBox",
+ "id": "dashboard_content",
+ "options": {"css": "filler", "padding": "24px", "gap": "20px", "overflow": "auto"},
+ "subwidgets": [
+ {
+ "widgettype": "HBox",
+ "options": {"gap": "16px"},
+ "subwidgets": [
+ {
+ "widgettype": "urlwidget",
+ "id": "card_pool",
+ "options": {
+ "url": "{{entire_url('/pcpool/api/pool_stats.dspy')}}",
+ "method": "GET"
+ }
+ },
+ {
+ "widgettype": "urlwidget",
+ "id": "card_cluster",
+ "options": {
+ "url": "{{entire_url('/pcc/api/cluster_status_all.dspy')}}",
+ "method": "GET"
+ }
+ }
+ ]
+ },
+ {
+ "widgettype": "HBox",
+ "options": {"gap": "16px"},
+ "subwidgets": [
+ {
+ "widgettype": "urlwidget",
+ "id": "card_storage",
+ "options": {
+ "url": "{{entire_url('/storage_mgr/api/storage_stats.dspy')}}",
+ "method": "GET"
+ }
+ },
+ {
+ "widgettype": "urlwidget",
+ "id": "card_image",
+ "options": {
+ "url": "{{entire_url('/image_mgr/api/image_stats.dspy')}}",
+ "method": "GET"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
}