From 5cdb42e1ac9023ead485b375e68f17bea3d5c1f0 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 24 三月 2026 11:17:46 +0800
Subject: [PATCH] 去除无用文件

---
 Code/WMS/CLAUDE.md                                                          |  187 +++++++++++++
 Code/WCS/.omc/state/subagent-tracking.json                                  |    7 
 .omc/project-memory.json                                                    |  203 ++++++++++++++
 Code/WMS/.omc/state/subagent-tracking.json                                  |    7 
 Code/WCS/.omc/state/idle-notif-cooldown.json                                |    3 
 Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl |    2 
 Code/WCS/AGENTS.md                                                          |   62 ++++
 Code/WMS/AGENTS.md                                                          |   70 +++++
 /dev/null                                                                   |   55 ---
 .omc/state/hud-stdin-cache.json                                             |    1 
 Code/WMS/.omc/state/idle-notif-cooldown.json                                |    3 
 Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl |    1 
 .omc/state/hud-state.json                                                   |    6 
 Code/WCS/CLAUDE.md                                                          |  183 +++++++++++++
 14 files changed, 735 insertions(+), 55 deletions(-)

diff --git a/.omc/project-memory.json b/.omc/project-memory.json
new file mode 100644
index 0000000..d41fb24
--- /dev/null
+++ b/.omc/project-memory.json
@@ -0,0 +1,203 @@
+{
+  "version": "1.0.0",
+  "lastScanned": 1774319550302,
+  "projectRoot": "D:\\Git\\ShanMeiXinNengYuan",
+  "techStack": {
+    "languages": [],
+    "frameworks": [],
+    "packageManager": null,
+    "runtime": null
+  },
+  "build": {
+    "buildCommand": null,
+    "testCommand": null,
+    "lintCommand": null,
+    "devCommand": null,
+    "scripts": {}
+  },
+  "conventions": {
+    "namingStyle": null,
+    "importStyle": null,
+    "testPattern": null,
+    "fileOrganization": null
+  },
+  "structure": {
+    "isMonorepo": false,
+    "workspaces": [],
+    "mainDirectories": [],
+    "gitBranches": {
+      "defaultBranch": "master",
+      "branchingStrategy": null
+    }
+  },
+  "customNotes": [],
+  "directoryMap": {
+    "Code": {
+      "path": "Code",
+      "purpose": null,
+      "fileCount": 0,
+      "lastAccessed": 1774319550279,
+      "keyFiles": []
+    },
+    "椤圭洰璧勬枡": {
+      "path": "椤圭洰璧勬枡",
+      "purpose": null,
+      "fileCount": 0,
+      "lastAccessed": 1774319550280,
+      "keyFiles": []
+    }
+  },
+  "hotPaths": [
+    {
+      "path": "Code\\WCS\\CLAUDE.md",
+      "accessCount": 4,
+      "lastAccessed": 1774319832508,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\CLAUDE.md",
+      "accessCount": 4,
+      "lastAccessed": 1774320014175,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS",
+      "accessCount": 2,
+      "lastAccessed": 1774319685208,
+      "type": "directory"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Client\\package.json",
+      "accessCount": 1,
+      "lastAccessed": 1774319589861,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Server\\CLAUDE.md",
+      "accessCount": 1,
+      "lastAccessed": 1774319589915,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Client\\README.md",
+      "accessCount": 1,
+      "lastAccessed": 1774319589977,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\main.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319604017,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\router\\index.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319604071,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
+      "accessCount": 1,
+      "lastAccessed": 1774319604091,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\store\\index.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319611661,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\api\\http.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319611675,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSClient\\package.json",
+      "accessCount": 1,
+      "lastAccessed": 1774319652164,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSClient\\vite.config.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319656371,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSClient\\src\\main.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319656381,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+      "accessCount": 1,
+      "lastAccessed": 1774319656394,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj",
+      "accessCount": 1,
+      "lastAccessed": 1774319656456,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\WIDESEA_Core.csproj",
+      "accessCount": 1,
+      "lastAccessed": 1774319664837,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+      "accessCount": 1,
+      "lastAccessed": 1774319668135,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSClient\\src\\router\\index.js",
+      "accessCount": 1,
+      "lastAccessed": 1774319668167,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\IService.cs",
+      "accessCount": 1,
+      "lastAccessed": 1774319668191,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\MaterielInfoController.cs",
+      "accessCount": 1,
+      "lastAccessed": 1774319671555,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs",
+      "accessCount": 1,
+      "lastAccessed": 1774319671580,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\WIDESEA_Model.csproj",
+      "accessCount": 1,
+      "lastAccessed": 1774319671631,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+      "accessCount": 1,
+      "lastAccessed": 1774319685049,
+      "type": "file"
+    },
+    {
+      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseController\\ApiBaseController.cs",
+      "accessCount": 1,
+      "lastAccessed": 1774319685114,
+      "type": "file"
+    }
+  ],
+  "userDirectives": []
+}
\ No newline at end of file
diff --git a/.omc/state/hud-state.json b/.omc/state/hud-state.json
new file mode 100644
index 0000000..c1a86d9
--- /dev/null
+++ b/.omc/state/hud-state.json
@@ -0,0 +1,6 @@
+{
+  "timestamp": "2026-03-24T02:39:49.050Z",
+  "backgroundTasks": [],
+  "sessionStartTimestamp": "2026-03-24T02:33:23.593Z",
+  "sessionId": "4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66"
+}
\ No newline at end of file
diff --git a/.omc/state/hud-stdin-cache.json b/.omc/state/hud-stdin-cache.json
new file mode 100644
index 0000000..e02c35e
--- /dev/null
+++ b/.omc/state/hud-stdin-cache.json
@@ -0,0 +1 @@
+{"session_id":"4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66","transcript_path":"C:\\Users\\29028\\.claude\\projects\\D--Git-ShanMeiXinNengYuan-Code-WMS\\4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl","cwd":"D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS","model":{"id":"glm-4.7","display_name":"glm-4.7"},"workspace":{"current_dir":"D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS","project_dir":"D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS","added_dirs":[]},"version":"2.1.72","output_style":{"name":"default"},"cost":{"total_cost_usd":1.441715,"total_duration_ms":453632,"total_api_duration_ms":376045,"total_lines_added":298,"total_lines_removed":110},"context_window":{"total_input_tokens":153210,"total_output_tokens":8441,"context_window_size":200000,"current_usage":{"input_tokens":3040,"output_tokens":292,"cache_creation_input_tokens":0,"cache_read_input_tokens":96384},"used_percentage":50,"remaining_percentage":50},"exceeds_200k_tokens":false}
\ No newline at end of file
diff --git a/Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl b/Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl
new file mode 100644
index 0000000..5079599
--- /dev/null
+++ b/Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl
@@ -0,0 +1 @@
+{"t":0,"agent":"a7f1459","agent_type":"unknown","event":"agent_stop","success":true}
diff --git a/Code/WCS/.omc/state/idle-notif-cooldown.json b/Code/WCS/.omc/state/idle-notif-cooldown.json
new file mode 100644
index 0000000..88cae56
--- /dev/null
+++ b/Code/WCS/.omc/state/idle-notif-cooldown.json
@@ -0,0 +1,3 @@
+{
+  "lastSentAt": "2026-03-24T02:37:21.000Z"
+}
\ No newline at end of file
diff --git a/Code/WCS/.omc/state/subagent-tracking.json b/Code/WCS/.omc/state/subagent-tracking.json
new file mode 100644
index 0000000..e379105
--- /dev/null
+++ b/Code/WCS/.omc/state/subagent-tracking.json
@@ -0,0 +1,7 @@
+{
+  "agents": [],
+  "total_spawned": 0,
+  "total_completed": 0,
+  "total_failed": 0,
+  "last_updated": "2026-03-24T02:38:41.486Z"
+}
\ No newline at end of file
diff --git a/Code/WCS/AGENTS.md b/Code/WCS/AGENTS.md
new file mode 100644
index 0000000..8ecf800
--- /dev/null
+++ b/Code/WCS/AGENTS.md
@@ -0,0 +1,62 @@
+锘�# Repository Guidelines
+
+## 椤圭洰缁撴瀯涓庢ā鍧楃粍缁�
+鏈粨搴撳寘鍚袱涓牳蹇冨簲鐢細
+- `WIDESEAWCS_Client/`锛歏ue 3 + Vite 鍓嶇锛屼富瑕佺洰褰曞寘鎷� `src/views`銆乣src/components`銆乣src/api`銆乣src/router`銆乣src/store`銆�
+- `WIDESEAWCS_Server/`锛欰SP.NET Core 鍚庣瑙e喅鏂规锛坄WIDESEAWCS_Server.sln`锛夛紝鎸夊垎灞傜粍缁囦负 `WIDESEAWCS_*Service`銆乣WIDESEAWCS_*Repository`銆乣WIDESEAWCS_Core`銆乣WIDESEAWCS_Domain`锛岃皟搴︿笌璁惧鐩稿叧浠g爜鍦� `WIDESEAWCS_Tasks` 涓� `WIDESEAWCS_QuartzJob`銆�
+
+娴嬭瘯涓昏浣嶄簬 `WIDESEAWCS_Server/WIDESEAWCS_Tests`锛坸Unit锛夛紝鍙﹀杩樻湁棰嗗煙涓庨泦鎴愭祴璇曢」鐩��
+
+## 鏋勫缓銆佹祴璇曚笌鏈湴寮�鍙戝懡浠�
+- 鍓嶇锛堝湪 `WIDESEAWCS_Client/` 鎵ц锛夛細
+  - `npm install`锛氬畨瑁呬緷璧栥��
+  - `npm run serve`锛氬惎鍔ㄦ湰鍦板紑鍙戞湇鍔★紙Vite锛夈��
+  - `npm run build`锛氭瀯寤虹敓浜ц祫婧愩��
+  - `npm run lint`锛氭墽琛� ESLint 妫�鏌ャ��
+- 鍚庣锛堝湪 `WIDESEAWCS_Server/` 鎵ц锛夛細
+  - `dotnet restore WIDESEAWCS_Server.sln`锛氳繕鍘� NuGet 渚濊禆銆�
+  - `dotnet build WIDESEAWCS_Server.sln`锛氱紪璇戝叏閮ㄥ悗绔」鐩��
+  - `dotnet run --project WIDESEAWCS_Server`锛氭湰鍦板惎鍔� API銆�
+  - `dotnet test WIDESEAWCS_Tests/WIDESEAWCS_Tests.csproj`锛氳繍琛屽崟鍏冩祴璇曘��
+
+## 寮�鍙戞祦绋嬪己鍒惰鑼�
+- 鎵�鏈変换鍔″繀椤诲湪 `Code/WCS/.worktrees/<task-name>` 鐙珛 worktree 涓紑鍙戯紝涓嶇洿鎺ュ湪涓诲伐浣滃尯鏀瑰姩銆�
+- 鍒嗘敮鍛藉悕缁熶竴锛歚feat/<妯″潡>-<涓婚>`銆乣fix/<妯″潡>-<闂>`銆乣refactor/<妯″潡>-<涓婚>`銆乣docs/<涓婚>`銆�
+- 姣忔鎻愪氦鍓嶈嚦灏戞墽琛屼笌鏀瑰姩鐩稿叧鐨勬渶灏忛獙璇侊紙鍓嶇鏀瑰姩璺� `npm run lint`锛涘悗绔敼鍔ㄨ窇 `dotnet test` 鎴栨渶灏忓彲杩愯楠岃瘉锛夈��
+- 绂佹涓�娆℃彁浜ゆ贩鍏ユ棤鍏抽噸鏋勩�佹牸寮忓寲鍣0鎴栧ぇ闈㈢Н鏂囦欢绉诲姩銆�
+
+## 浠g爜椋庢牸涓庡懡鍚嶈鑼�
+- C#锛�4 绌烘牸缂╄繘锛涚被鍨�/鏂规硶/灞炴�т娇鐢� `PascalCase`锛涘眬閮ㄥ彉閲忓拰鍙傛暟浣跨敤 `camelCase`锛涙帴鍙d娇鐢� `I` 鍓嶇紑銆�
+- Vue/JS锛氶伒寰幇鏈� ESLint 閰嶇疆涓庨」鐩棦鏈夋ā寮忥紱鏂囦欢鍚嶅簲涓庡姛鑳戒竴鑷达紙濡� `TaskController.cs`銆佸姛鑳界洰褰曚笅 `index.vue`锛夈��
+- 榛樿瑕佹眰锛氬鏂板鎴栦慨鏀圭殑浠g爜娣诲姞璇︾粏涓枃娉ㄩ噴锛岃嚦灏戝寘鍚柟娉曠洰鐨勩�佸弬鏁板惈涔夈�佽繑鍥炲�笺�佸叧閿�昏緫姝ラ鍜屽紓甯稿鐞嗚鏄庛��
+- 娉ㄩ噴瑕佹眰鍙銆佸彲缁存姢锛岀姝⑩�滈噸澶嶄唬鐮佸瓧闈㈡剰鎬濃�濈殑鏃犳晥娉ㄩ噴銆�
+
+## 鏁版嵁涓�鑷存�т笌浜嬪姟瑙勮寖
+- 鍚屼竴涓氬姟鎿嶄綔娑夊強澶氫釜鏁版嵁瀵硅薄锛堝琛ㄣ�佸浠撳偍銆佽法鏈嶅姟鍐欏叆锛夊悓鏃舵敼鍔ㄦ椂锛屽繀椤讳娇鐢ㄦ暟鎹簱浜嬪姟锛圱ransaction锛変繚璇佸師瀛愭�с��
+- 浜嬪姟鑼冨洿鍙鐩栧繀瑕佸啓鎿嶄綔锛岀姝㈠皢闀胯�楁椂 IO/缃戠粶璋冪敤鏀惧叆浜嬪姟鍐咃紝閬垮厤闀夸簨鍔¢攣琛ㄣ��
+- 鍙戠敓寮傚父鏃跺繀椤诲洖婊氫簨鍔★紝骞惰褰曚簨鍔′笂涓嬫枃锛堜笟鍔″崟鍙枫�佸叧閿富閿�佽皟鐢ㄩ摼鏍囪瘑锛夈��
+- 鑻ユ秹鍙婂垎甯冨紡鎴栬法杈圭晫鍐欏叆锛岄渶鍦� PR 涓槑纭竴鑷存�х瓥鐣ワ紙琛ュ伩銆侀噸璇曘�佸箓绛夐敭锛夈��
+
+## 鎺ュ彛銆佹棩蹇椾笌寮傚父瑙勮寖
+- API 杩斿洖缁撴瀯淇濇寔缁熶竴锛屽瓧娈靛懡鍚嶄笌鐜版湁鍚庣搴忓垪鍖栫瓥鐣ヤ竴鑷达紝閬垮厤闅忔剰鍙樻洿鍝嶅簲瀛楁銆�
+- Service 灞傛姏鍑虹殑涓氬姟寮傚父闇�鍖呭惈鍙畾浣嶄笂涓嬫枃锛堜换鍔″彿銆佽澶囧彿銆佸叧閿弬鏁帮級銆�
+- 鏃ュ織绾у埆瑙勮寖锛氳皟璇曠粏鑺傜敤 `Debug`锛屼笟鍔″叧閿矾寰勭敤 `Information`锛屽彲鎭㈠寮傚父鐢� `Warning`锛屼笉鍙仮澶嶉敊璇敤 `Error`銆�
+- 涓ョ鍚炲紓甯革紱鎹曡幏鍚庡繀椤昏褰曚笂涓嬫枃骞跺喅瀹氶噸鎶涙垨杞崲涓轰笟鍔¢敊璇��
+- 娑夊強澶栭儴绯荤粺璋冪敤銆両O銆佺綉缁滈�氫俊銆佽澶囬�氫俊銆佹暟鎹簱璁块棶鐨勫叧閿矾寰勫繀椤讳娇鐢� `try-catch`锛沗catch` 涓嚦灏戣褰曢敊璇俊鎭笌鍏抽敭鍙傛暟锛屽苟淇濈暀鍘熷鍫嗘爤锛坄throw;`锛夛紝绂佹浠� `throw ex;`銆�
+
+## 娴嬭瘯瑙勮寖
+- 涓昏娴嬭瘯妗嗘灦涓� xUnit锛岄」鐩凡寮曞叆 `Moq`銆乣FluentAssertions`銆乣coverlet.collector`銆�
+- 娴嬭瘯鍛藉悕寤鸿锛歚MethodName_ShouldExpectedBehavior`銆�
+- 娑夊強琛屼负鍙樺寲鐨勬敼鍔紝蹇呴』鍚屾鏂板鎴栨洿鏂版祴璇曞悗鍐嶅悎骞躲��
+
+## 鎻愪氦涓� Pull Request 瑙勮寖
+- 鎻愪氦鍘嗗彶浠ヨ仛鐒﹀瀷鍓嶇紑涓轰富锛歚feat:`銆乣fix:`銆乣refactor:`銆乣docs:`銆乣chore:`锛堜腑鏂囨憳瑕侊級銆�
+- 姣忔潯鎻愪氦淇℃伅蹇呴』鍖呭惈璇︾粏鎻愪氦鍐呭锛氳嚦灏戣鏄庢敼浜嗕粈涔堛�佷负浠�涔堟敼銆佸奖鍝嶄簡鍝簺妯″潡/鏂囦欢锛涚姝粎鍐欌�滀慨鏀逛唬鐮佲�濃�滀紭鍖栤�濊繖绫绘ā绯婃弿杩般��
+- PR 蹇呴』璇存槑锛氭敼鍔ㄥ唴瀹广�佹敼鍔ㄥ師鍥犮�佸奖鍝嶈矾寰勩�侀獙璇佹柟寮忎笌缁撴灉銆佹綔鍦ㄩ闄╀笌鍥炴粴鏂规銆�
+- 浠呭湪鍓嶇鐣岄潰鍙樻洿鏃堕檮鎴浘锛涙帴鍙e彉鏇撮渶闄勮姹�/鍝嶅簲绀轰緥銆�
+
+## 瀹夊叏涓庨厤缃鑼�
+- 绂佹鎻愪氦瀵嗛挜銆佷护鐗屻�佽繛鎺ヤ覆鏄庢枃锛涙晱鎰熼厤缃繀椤绘斁鍏ョ幆澧冨彉閲忔垨鏈湴鍙楁帶閰嶇疆銆�
+- `appsettings*.json` 鐨勭幆澧冨樊寮傞」闇�鏂囨。鍖栵紝閬垮厤鎶婂紑鍙戞満閰嶇疆甯﹀叆娴嬭瘯/鐢熶骇銆�
+- 娑夊強鏉冮檺銆侀壌鏉冦�佷腑闂翠欢椤哄簭鐨勬敼鍔紝蹇呴』鍦� PR 涓崟鐙爣娉ㄣ��
+
diff --git a/Code/WCS/CLAUDE.md b/Code/WCS/CLAUDE.md
new file mode 100644
index 0000000..19fe0e5
--- /dev/null
+++ b/Code/WCS/CLAUDE.md
@@ -0,0 +1,183 @@
+# CLAUDE.md
+
+鏈枃浠朵负 Claude Code (claude.ai/code) 鍦ㄦ浠g爜搴撲腑宸ヤ綔鏃舵彁渚涙寚瀵笺��
+
+## 椤圭洰姒傝堪
+
+杩欐槸涓�涓� **WCS锛堜粨搴撴帶鍒剁郴缁燂級** - 閯編鏂拌兘婧愪粨搴撴帶鍒剁郴缁燂紝鍖呭惈锛�
+
+- **WIDESEAWCS_Client** - Vue 3 鍓嶇搴旂敤锛圗lement Plus UI锛�
+- **WIDESEAWCS_Server** - ASP.NET Core 6.0 鍚庣 API 鏈嶅姟鍣�
+
+绯荤粺绠$悊鑷姩鍖栦粨搴撲綔涓氾紝鍖呮嫭鍫嗗灈鏈恒�佽緭閫佺嚎銆佺┛姊溅鍜屾満姊版墜鐨勭墿鏂欐惉杩愪换鍔★紙缁勭洏銆佹崲鐩樸�佹媶鐩橈級銆�
+
+---
+
+## 甯哥敤鍛戒护
+
+### 鍓嶇 (WIDESEAWCS_Client)
+
+```bash
+# 瀹夎渚濊禆锛堝湪 Client 鐩綍涓級
+cd WIDESEAWCS_Client
+npm install
+
+# 寮�鍙戞湇鍔″櫒
+npm run serve
+
+# 鐢熶骇鏋勫缓
+npm run build
+
+# 浠g爜妫�鏌�
+npm run lint
+```
+
+**Node.js 18+ 娉ㄦ剰浜嬮」**锛氬鏋� `npm run serve` 鍥� OpenSSL 閿欒澶辫触锛宍package.json` 鑴氭湰宸插寘鍚� `SET NODE_OPTIONS=--openssl-legacy-provider` 瑙e喅鏂规銆�
+
+### 鍚庣 (WIDESEAWCS_Server)
+
+```bash
+# 鏋勫缓鏁翠釜瑙e喅鏂规
+cd WIDESEAWCS_Server
+dotnet build WIDESEAWCS_Server.sln
+
+# 杩愯鏈嶅姟鍣�
+dotnet run --project WIDESEAWCS_Server
+
+# 杩愯娴嬭瘯
+dotnet test WIDESEAWCS_Tests
+```
+
+**鏈嶅姟鍣ㄧ鍙�**锛欰PI 杩愯鍦� `http://*:9292`锛堝彲鍦� `appsettings.json` 涓厤缃級
+
+---
+
+## 鏋舵瀯
+
+### 鍓嶇鏋舵瀯 (Vue 3)
+
+**鎶�鏈爤**锛�
+- Vue 3 + Vite
+- Element Plus UI 妗嗘灦
+- Vue Router锛坔ash 妯″紡锛�
+- Vuex 鐘舵�佺鐞�
+- Axios HTTP 璇锋眰
+- SignalR 瀹炴椂閫氫俊锛堝彲閫夛級
+
+**鍏抽敭鐩綍**锛�
+- `src/views/` - 椤甸潰缁勪欢锛圚ome銆丩ogin銆乻ystem銆乥asicinfo銆乼askinfo銆乧harts锛�
+- `src/components/basic/` - 鍙鐢ㄧ粍浠讹紝鍖呮嫭 `ViewGrid`锛堟暟鎹〃鏍肩粍浠讹級
+- `src/api/` - HTTP 瀹㈡埛绔紙`http.js`锛夛紝甯︿护鐗岀鐞嗗拰鎷︽埅鍣�
+- `src/router/` - 璺敱瀹氫箟锛屽甫韬唤楠岃瘉瀹堝崼
+- `src/store/` - Vuex 瀛樺偍锛岀敤浜庣敤鎴蜂俊鎭拰鏉冮檺
+- `src/uitils/` - 宸ュ叿鍑芥暟
+
+**HTTP 瀹㈡埛绔�** (`src/api/http.js`)锛�
+- 鍩虹 URL 榛樿鍊硷細寮�鍙戠幆澧冿紙`http://127.0.0.1:9292/`锛夈�佺敓浜х幆澧冿紙`http://115.159.85.185:9292/`锛�
+- 鑷姩鍖呭惈 `Authorization: Bearer {token}` 璇锋眰澶�
+- 鏀跺埌 `wideseawcs_exp` 鍝嶅簲澶存椂鑷姩鍒锋柊浠ょ墝
+- 401 鑷姩閲嶅畾鍚戝埌鐧诲綍椤�
+- 瀵煎嚭鏂规硶锛歚post()`銆乣get()`銆乣download()`銆乣ajax()`
+
+**鍏ㄥ眬灞炴��**锛堝湪 `main.js` 涓寕杞斤級锛�
+- `this.$http` - HTTP 瀹㈡埛绔�
+- `this.base` - 閫氱敤宸ュ叿
+- `this.permission` - 鏉冮檺妫�鏌�
+- `this.$global` - 鍏ㄥ眬閰嶇疆锛圫ignalR 鍚敤鏍囧織銆佽〃鏍兼爣绛炬樉绀猴級
+
+### 鍚庣鏋舵瀯 (ASP.NET Core)
+
+**鎶�鏈爤**锛�
+- ASP.NET Core 6.0 Web API
+- Autofac DI锛屼娇鐢� `IDependency` 鏍囪鎺ュ彛瀹炵幇鑷姩娉ㄥ唽
+- Quartz.NET 瀹氭椂浠诲姟锛堣澶囬�氫俊寰幆锛�
+- SqlSugar ORM 鏁版嵁搴撹闂�
+- Redis锛堥�氳繃 `WIDESEAWCS_RedisService` 瀹炵幇 L1+L2 娣峰悎缂撳瓨锛�
+- TCP Socket 鏈嶅姟鍣紙绔彛 2000锛夌敤浜庡疄鏃惰澶囬�氫俊
+- HslCommunication 搴撶敤浜� PLC/纭欢閫氫俊
+
+**椤圭洰缁撴瀯**锛�
+```
+WIDESEAWCS_Server/          # 涓� API 鏈嶅姟鍣�
+WIDESEAWCS_Core/            # 鏍稿績鍩虹璁炬柦锛氬熀绫汇�丏I銆佹墿灞曘�佷腑闂翠欢
+WIDESEAWCS_Model/           # 鏁版嵁妯″瀷鍜� DTO
+WIDESEAWCS_Communicator/    # 纭欢閫氫俊椹卞姩锛堣タ闂ㄥ瓙銆佹濮嗛緳銆丮odbus 绛夛級
+WIDESEAWCS_QuartzJob/       # 浠诲姟璋冨害鍩虹璁炬柦鍜岃澶囨娊璞�
+WIDESEAWCS_Tasks/           # Quartz 浠诲姟瀹炵幇锛堣澶囬�氫俊寰幆锛�
+WIDESEAWCS_RedisService/    # Redis 鏈嶅姟锛氱紦瀛樸�侀攣銆佽鏁板櫒銆佸彂甯冭闃�
+WIDESEAWCS_*Repository/     # 鏁版嵁璁块棶灞傚疄鐜�
+WIDESEAWCS_*Service/        # 涓氬姟鏈嶅姟灞�
+WIDESEAWCS_Tests/           # 鍗曞厓娴嬭瘯
+```
+
+**渚濊禆娉ㄥ叆妯″紡**锛�
+- 瀹炵幇 `IDependency` 鏍囪鎺ュ彛鐨勬湇鍔$敱 Autofac **鑷姩娉ㄥ唽**
+- 浣嶄簬 `AutofacModuleRegister` 涓壂鎻忔墍鏈夌▼搴忛泦
+- 娣诲姞鍓嶄娇鐢� `services.Remove()` 瑕嗙洊鐜版湁娉ㄥ唽
+
+**缂撳瓨灞�** (`ICacheService`)锛�
+- L1锛堝唴瀛橈級+ L2锛圧edis锛夋贩鍚堢紦瀛�
+- 瀹炵幇锛歚MemoryCacheService`銆乣RedisCacheService`銆乣HybridCacheService`
+- 甯哥敤鏂规硶锛歚Add`銆乣Get<T>`銆乣Remove`銆乣RemoveByPrefix`銆乣GetOrAdd<T>`
+
+**璁惧閫氫俊**锛�
+- 浠诲姟缁ф壙 `JobBase` 骞跺疄鐜� `IJob`
+- 璁惧绫诲瀷锛歚IStackerCrane`锛堝爢鍨涙満锛夈�乣IConveyorLine`锛堣緭閫佺嚎锛夈�乣IShuttleCar`锛堢┛姊溅锛夈�乣IRobot`锛堟満姊版墜锛�
+- 閫氫俊鍣細`SiemensS7Communicator`銆乣OmronEtherNetCommunicator`銆乣ModbusTcpCommunicator`銆乣SerialPortCommunicator`
+- TCP Socket 鏈嶅姟鍣紙绔彛 2000锛夌敱 `SocketServerHostedService` 绠$悊
+
+---
+
+## 鍏抽敭闆嗘垚鐐�
+
+### 绯荤粺闆嗘垚 URL (BaseAPI 甯搁噺)
+- WMS锛歚http://localhost:9291/api/`
+- WCS锛堟湰鏈嶅姟鍣級锛歚http://localhost:9292/api/`
+- MES锛歚http://localhost:9293/api/`
+- ERP锛歚http://localhost:9294/api/`
+
+### 鏈烘鎵嬮�氫俊绯荤粺
+鏈烘鎵嬫帶鍒剁殑妯″潡鍖栨灦鏋勶細
+- `RobotClientManager` - TCP 瀹㈡埛绔繛鎺ョ鐞�
+- `RobotStateManager` - 绾跨▼瀹夊叏鐨勬満姊版墜鐘舵�佺紦瀛�
+- `RobotMessageHandler` - TCP 娑堟伅瑙f瀽
+- `RobotTaskProcessor` - 浠诲姟鎵ц鍜岀姸鎬佽浆鎹�
+- 浠诲姟绫诲瀷锛歚GroupPallet (500)` 缁勭洏銆乣ChangePallet (510)` 鎹㈢洏銆乣SplitPallet (520)` 鎷嗙洏
+
+### 閰嶇疆 (appsettings.json)
+鍏抽敭璁剧疆锛�
+- `"urls": "http://*:9292"` - 鏈嶅姟鍣ㄧ鍙�
+- `"QuartzJobAutoStart": true` - 鑷姩鍚姩瀹氭椂浠诲姟
+- `"SocketServer:Enabled": true` - 鍚敤 TCP 鏈嶅姟鍣�
+- `"RedisConfig:Enabled": true` - 鍚敤 Redis 缂撳瓨
+- `"DBType": "SqlServer"` - 鏁版嵁搴撶被鍨�
+
+---
+
+## 寮�鍙戞寚鍗�
+
+### 娣诲姞鏂板姛鑳�
+
+**鍚庣**锛�
+1. 鍦� `WIDESEAWCS_IService/` 涓垱寤烘湇鍔℃帴鍙�
+2. 鍦� `WIDESEAWCS_Service/` 涓垱寤烘湇鍔″疄鐜帮紝瀹炵幇 `IDependency`
+3. 鍦� `WIDESEAWCS_Tasks/` 涓垱寤轰换鍔★紝缁ф壙 `JobBase` 鍜� `IJob`
+4. 鍦� `WIDESEAWCS_QuartzJob/Device/` 涓坊鍔犺澶囩被鍨�
+
+**鍓嶇**锛�
+1. 鍦� `src/views/` 涓坊鍔犺鍥�
+2. 鍦� `src/router/index.js` 涓坊鍔犺矾鐢�
+3. 浣跨敤 `$http.post()` 鍜� `$http.get()` 杩涜 API 璋冪敤
+4. 浣跨敤 `ViewGrid` 缁勪欢鏄剧ず鏁版嵁琛ㄦ牸
+
+### 浠g爜椋庢牸
+- **C#**锛氱被鍨�/鏂规硶/灞炴�т娇鐢� PascalCase锛屽眬閮ㄥ彉閲�/鍙傛暟浣跨敤 camelCase銆�4 绌烘牸缂╄繘锛屽ぇ鎷彿鎹㈣銆�
+- **JavaScript/Vue**锛氶伒寰幇鏈夋ā寮忥紝鏂扮粍浠朵娇鐢� Vue 3 Composition API
+- **娉ㄩ噴**锛氫负鏂板/淇敼鐨勪唬鐮佹坊鍔犺缁嗙殑涓枃娉ㄩ噴锛堟柟娉曠洰鐨勩�佸弬鏁般�佽繑鍥炲�笺�侀�愯璇存槑銆佸紓甯稿鐞嗭級
+
+### 閲嶈璇存槑
+- 鍚庣浣跨敤 **CamelCase** JSON 搴忓垪鍖�
+- 鎵�鏈夋湇鍔¢�氳繃 Autofac 榛樿浣跨敤 **scoped** 鐢熷懡鍛ㄦ湡
+- Redis 杩炴帴鍦ㄩ娆¤闂椂寤惰繜鍒濆鍖�
+- 鍦ㄤ换鍔′腑浣跨敤 `ConsoleHelper.WriteSuccessLine()` / `WriteErrorLine()` 杩涜鎺у埗鍙拌緭鍑�
+- TCP Socket 鏈嶅姟鍣ㄧ嫭绔嬩簬 HTTP API 杩愯
diff --git a/Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl b/Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl
new file mode 100644
index 0000000..638b15d
--- /dev/null
+++ b/Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl
@@ -0,0 +1,2 @@
+{"t":0,"agent":"a1dd170","agent_type":"unknown","event":"agent_stop","success":true}
+{"t":0,"agent":"a5ca246","agent_type":"unknown","event":"agent_stop","success":true}
diff --git a/Code/WMS/.omc/state/idle-notif-cooldown.json b/Code/WMS/.omc/state/idle-notif-cooldown.json
new file mode 100644
index 0000000..20c6478
--- /dev/null
+++ b/Code/WMS/.omc/state/idle-notif-cooldown.json
@@ -0,0 +1,3 @@
+{
+  "lastSentAt": "2026-03-24T02:40:56.392Z"
+}
\ No newline at end of file
diff --git a/Code/WMS/.omc/state/subagent-tracking.json b/Code/WMS/.omc/state/subagent-tracking.json
new file mode 100644
index 0000000..a44828a
--- /dev/null
+++ b/Code/WMS/.omc/state/subagent-tracking.json
@@ -0,0 +1,7 @@
+{
+  "agents": [],
+  "total_spawned": 0,
+  "total_completed": 0,
+  "total_failed": 0,
+  "last_updated": "2026-03-24T02:41:20.073Z"
+}
\ No newline at end of file
diff --git a/Code/WMS/AGENTS.md b/Code/WMS/AGENTS.md
new file mode 100644
index 0000000..bce6547
--- /dev/null
+++ b/Code/WMS/AGENTS.md
@@ -0,0 +1,70 @@
+# Repository Guidelines
+
+## 项目结构与模块组织
+仓库由两个主项目组成:
+- `WIDESEA_WMSServer/`:ASP.NET Core 后端(解决方案:`WIDESEA_WMSServer.sln`)。
+- `WIDESEA_WMSClient/`:Vue 3 前端(Vite + Yarn)。
+
+后端按职责拆分:`WIDESEA_WMSServer/`(API 启动项目)、`WIDESEA_Core/`(基础设施/基类能力)、`WIDESEA_Model/`(实体模型)、`WIDESEA_DTO/`(数据传输对象)、`WIDESEA_I*Service/`(服务接口)、`WIDESEA_*Service/`(服务实现)。前端源码位于 `WIDESEA_WMSClient/src/`,单元测试位于 `WIDESEA_WMSClient/tests/unit/`。
+
+## 构建、测试与开发命令
+后端(在 `WIDESEA_WMSServer` 目录执行):
+- `dotnet restore WIDESEA_WMSServer.sln`:还原 NuGet 依赖。
+- `dotnet build WIDESEA_WMSServer.sln`:构建全部后端项目。
+- `dotnet run --project WIDESEA_WMSServer/WIDESEA_WMSServer.csproj`:本地启动 API。
+
+前端(在 `WIDESEA_WMSClient` 目录执行):
+- `yarn install`:安装依赖。
+- `yarn dev`:启动 Vite 开发服务。
+- `yarn build`:构建生产包。
+- `yarn preview`:预览生产构建结果。
+- `yarn test:unit`:运行单元测试。
+- `yarn lint`:执行代码检查。
+
+## 开发流程强制规范
+
+- 所有任务必须在 `Code/WMS/.worktrees/<task-name>` 独立 worktree 中开发,不直接在主工作区改动。
+- 分支命名统一:`feat/<模块>-<主题>`、`fix/<模块>-<问题>`、`refactor/<模块>-<主题>`、`docs/<主题>`。
+- 每次提交前至少执行与改动相关的最小验证(前端改动跑 `npm run lint`;后端改动跑 `dotnet test` 或最小可运行验证)。
+- 禁止一次提交混入无关重构、格式化噪声或大面积文件移动。
+
+## 代码风格与命名约定
+
+前端使用 Vue Standard ESLint 规则,缩进为 4 空格(见 `package.json`)。Vue 组件采用 PascalCase;扩展配置建议放在 `src/extension/{domain}/{entity}.js`。
+
+后端遵循现有分层与命名:`I{Entity}Service`(接口)、`{Entity}Service`(实现)、`{Entity}Controller`(控制器)。新增代码应保持与现有 Autofac 注册、基础 Controller/Service 模式一致。
+
+默认要求:对新增或修改的代码添加详细中文注释,至少包含方法目的、参数含义、返回值、关键逻辑步骤和异常处理说明。
+
+注释要求可读、可维护,禁止“重复代码字面意思”的无效注释。
+
+## 数据一致性与事务规范
+
+- 同一业务操作涉及多个数据对象(多表、多仓储、跨服务写入)同时改动时,必须使用数据库事务(Transaction)保证原子性。
+- 事务范围只覆盖必要写操作,禁止将长耗时 IO/网络调用放入事务内,避免长事务锁表。
+- 发生异常时必须回滚事务,并记录事务上下文(业务单号、关键主键、调用链标识)。
+- 若涉及分布式或跨边界写入,需在 PR 中明确一致性策略(补偿、重试、幂等键)。
+
+## 接口、日志与异常规范
+
+- API 返回结构保持统一,字段命名与现有后端序列化策略一致,避免随意变更响应字段。
+- Service 层抛出的业务异常需包含可定位上下文(任务号、设备号、关键参数)。
+- 日志级别规范:调试细节用 `Debug`,业务关键路径用 `Information`,可恢复异常用 `Warning`,不可恢复错误用 `Error`。
+- 严禁吞异常;捕获后必须记录上下文并决定重抛或转换为业务错误。
+- 涉及外部系统调用、IO、网络通信、设备通信、数据库访问的关键路径必须使用 `try-catch`;`catch` 中至少记录错误信息与关键参数,并保留原始堆栈(`throw;`),禁止仅 `throw ex;`。
+
+## 测试指南
+
+前端测试采用 Vue 单元测试(`tests/unit/*.spec.js`)。涉及 UI 逻辑或接口交互变更时,应补充或更新测试,并执行 `yarn test:unit`。
+
+当前解决方案中未包含独立后端测试项目。后端改动至少需完成构建与关键 API 手工验证;复杂业务逻辑建议新增测试项目(如 xUnit)并纳入解决方案。
+
+## 提交与合并请求规范
+最近提交普遍采用 Conventional Commit 前缀:`feat:`、`fix:`、`refactor:`、`docs:`、`chore:`(中文描述)。建议一次提交聚焦一个明确改动点。
+
+PR 建议包含:
+- 变更目的与业务影响说明;
+- 涉及模块与目录范围(前端/后端);
+- 验证证据(已执行命令与结果);
+- UI 变更截图或录屏;
+- 关联任务或问题编号(如有)。
diff --git a/Code/WMS/CLAUDE.md b/Code/WMS/CLAUDE.md
new file mode 100644
index 0000000..7208508
--- /dev/null
+++ b/Code/WMS/CLAUDE.md
@@ -0,0 +1,187 @@
+# CLAUDE.md
+
+姝ゆ枃浠朵负 Claude Code (claude.ai/code) 鎻愪緵鍦ㄦ浠g爜搴撲腑宸ヤ綔鐨勬寚瀵笺��
+
+## 椤圭洰姒傝堪
+
+杩欐槸涓�涓� WMS锛堜粨搴撶鐞嗙郴缁燂級锛屽悗绔噰鐢� ASP.NET Core 6.0锛屽墠绔噰鐢� Vue 3銆傜郴缁熺鐞嗕粨搴撹繍钀ワ紝鍖呮嫭鍏ュ簱銆佸嚭搴撱�佸簱瀛樸�佷换鍔″拰鍩虹涓绘暟鎹��
+
+```
+WMS/
+鈹溾攢鈹� WIDESEA_WMSServer/           # 鍚庣 (ASP.NET Core 6.0)
+鈹�   鈹溾攢鈹� WIDESEA_WMSServer/       # 涓� API 椤圭洰
+鈹�   鈹溾攢鈹� WIDESEA_Core/            # 鏍稿績妗嗘灦锛堝熀纭�鎺у埗鍣ㄣ�佹湇鍔°�佷粨鍌級
+鈹�   鈹溾攢鈹� WIDESEA_Model/           # 鎸夐鍩熺粍缁囩殑鏁版嵁妯″瀷
+鈹�   鈹溾攢鈹� WIDESEA_*Service/        # 鏈嶅姟瀹炵幇锛圔asic銆両nbound銆丱utbound銆丼tock 绛夛級
+鈹�   鈹溾攢鈹� WIDESEA_I*Service/       # 鏈嶅姟鎺ュ彛
+鈹�   鈹溾攢鈹� WIDESEA_DTO/             # 鏁版嵁浼犺緭瀵硅薄
+鈹�   鈹斺攢鈹� WIDESEA_Common/          # 鍏叡宸ュ叿绫�
+鈹斺攢鈹� WIDESEA_WMSClient/           # 鍓嶇 (Vue 3 + Vite)
+    鈹溾攢鈹� src/api/                 # HTTP 瀹㈡埛绔拰 API 璋冪敤
+    鈹溾攢鈹� src/components/basic/    # 鍙鐢ㄧ粍浠讹紙ViewGrid銆乂olForm銆乂olTable锛�
+    鈹溾攢鈹� src/extension/           # 涓庡悗绔尮閰嶇殑棰嗗煙鐗瑰畾閰嶇疆
+    鈹溾攢鈹� src/views/               # Vue 椤甸潰缁勪欢
+    鈹溾攢鈹� src/router/              # Vue Router 閰嶇疆
+    鈹斺攢鈹� src/store/               # Vuex 鐘舵�佺鐞�
+```
+
+## 寮�鍙戝懡浠�
+
+### 鍚庣 (ASP.NET Core)
+```bash
+# 鏋勫缓瑙e喅鏂规
+cd WIDESEA_WMSServer
+dotnet build WIDESEA_WMSServer.sln
+
+# 杩愯鏈嶅姟鍣紙榛樿绔彛锛�9291锛�
+cd WIDESEA_WMSServer/WIDESEA_WMSServer
+dotnet run
+
+# 杩樺師鍖�
+dotnet restore
+
+# 浣跨敤鐗瑰畾閰嶇疆杩愯
+dotnet run --configuration Release
+```
+
+### 鍓嶇 (Vue 3 + Vite)
+```bash
+cd WIDESEA_WMSClient
+
+# 瀹夎渚濊禆锛堜娇鐢� yarn锛�
+yarn install
+
+# 寮�鍙戞湇鍔″櫒锛堢鍙� 8080锛�
+yarn dev
+
+# 鐢熶骇鏋勫缓
+yarn build
+
+# 棰勮鐢熶骇鏋勫缓
+yarn preview
+
+# 杩愯鍗曞厓娴嬭瘯
+yarn test:unit
+
+# 浠g爜妫�鏌�
+yarn lint
+```
+
+## 鏋舵瀯
+
+### 鍚庣鏋舵瀯
+
+**閲囩敤娓呮磥鏋舵瀯鍘熷垯鐨勫垎灞傛灦鏋勶細**
+
+- **鎺у埗鍣�** (`WIDESEA_WMSServer/Controllers/`)锛氱户鎵胯嚜 `ApiBaseController<TService, TEntity>`锛岃嚜鍔ㄦ彁渚� CRUD 绔偣銆傞鍩熺壒瀹氭帶鍒跺櫒鎸夋枃浠跺す缁勭粐锛圔asic銆両nbound銆丱utbound銆丼tock銆丼ystem銆乀askInfo 绛夛級銆�
+
+- **鏈嶅姟灞�** (`WIDESEA_*Service/`)锛氫笟鍔¢�昏緫灞傘�傛湇鍔$户鎵胯嚜 `ServiceBase<T, TEntity>` 骞跺疄鐜� `WIDESEA_I*Service/` 涓殑棰嗗煙鎺ュ彛銆傞�氳繃 Autofac DI 娉ㄥ唽銆�
+
+- **浠撳偍灞�** (`WIDESEA_Core/BaseRepository/`)锛氫娇鐢� SqlSugar ORM 鐨勬暟鎹闂眰銆傛硾鍨� `IRepository<T>` 鍜� `RepositoryBase<T>` 鎻愪緵閫氱敤 CRUD 鎿嶄綔銆�
+
+- **妯″瀷** (`WIDESEA_Model/Models/`)锛氭寜棰嗗煙缁勭粐锛圔asic銆丆heck銆両nbound銆丱utbound銆丼tock銆丼ystem銆乀askInfo銆丷ecord銆丆onfig銆丄pprovalFlow锛夈�傛ā鍨嬬户鎵胯嚜 `BaseEntity` 鎴� `BaseWarehouseEntity`銆�
+
+- **DTO** (`WIDESEA_DTO/`)锛欰PI 璇锋眰/鍝嶅簲鐨勬暟鎹紶杈撳璞★紝鎸夐鍩熺粍缁囥��
+
+**鍏抽敭鍩虹璁炬柦缁勪欢锛�**
+- `WIDESEA_Core/BaseController/ApiBaseController.cs`锛氬叿鏈夎嚜鍔� CRUD 璺敱鐨勫熀纭�鎺у埗鍣�
+- `WIDESEA_Core/BaseServices/IService.cs`锛氬熀纭�鏈嶅姟鎺ュ彛
+- `WIDESEA_Core/Extensions/AutofacModuleRegister.cs`锛欰utofac DI 娉ㄥ唽
+- `WIDESEA_Core/DB/`锛歋qlSugar 鏁版嵁搴撻厤缃�
+- `WIDESEA_Core/Authorization/`锛欽WT 韬唤楠岃瘉
+- `WIDESEA_Core/Filter/`锛氬叏灞�寮傚父澶勭悊鍜屾搷浣滆繃婊ゅ櫒
+
+### 鍓嶇鏋舵瀯
+
+**甯︽湁鑷畾涔夌粍浠舵鏋剁殑 Vue 3 缁勫悎寮� API锛�**
+
+- **ViewGrid 缁勪欢** (`src/components/basic/ViewGrid/`)锛氭牳蹇冭〃鏍�/缃戞牸缁勪欢锛屽鐞嗘暟鎹樉绀恒�佸垎椤点�佹悳绱㈠拰 CRUD 鎿嶄綔銆傞�氳繃鎵╁睍鏂囦欢楂樺害鍙厤缃��
+
+- **鎵╁睍鏂囦欢** (`src/extension/`)锛氶厤缃瘡涓疄浣撶殑 ViewGrid 琛屼负鐨� JavaScript 鏂囦欢銆傚畠浠畾涔夎〃鏍煎垪銆佽〃鍗曞瓧娈点�佹悳绱㈡潯浠跺拰鑷畾涔夋搷浣溿�傛ā寮忥細`src/extension/{domain}/{entityName}.js` 鍖归厤鍚庣鎺у埗鍣ㄣ��
+
+- **API 灞�** (`src/api/`)锛氬皝瑁� Axios 鐨� HTTP 瀹㈡埛绔紝鍏锋湁韬唤楠岃瘉鍜岄敊璇鐞嗘嫤鎴櫒銆�
+
+- **璺敱鍣�** (`src/router/index.js`)锛氬甫鏈夊搱甯屾ā寮忋�佽韩浠介獙璇佸畧鍗拰浠� `viewGird.js` 鍔ㄦ�佽矾鐢卞姞杞界殑 Vue Router銆�
+
+**鍏抽敭鍓嶇妯″紡锛�**
+- 鎵╁睍鏂囦欢锛堝 `src/extension/basic/materielInfo.js`锛夊畾涔夎〃澶淬�佽〃鍗曞瓧娈靛拰鑷畾涔変笟鍔¢�昏緫
+- `src/views/` 涓殑瑙嗗浘寰堢簿绠�锛屽ぇ澶氫娇鐢ㄧ敱鎵╁睍閰嶇疆鐨� ViewGrid 缁勪欢
+- Vuex 瀛樺偍绠$悊韬唤楠岃瘉鐘舵�佸拰鍔犺浇鎸囩ず鍣�
+
+## 閰嶇疆
+
+### 鍚庣閰嶇疆
+
+`WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json` 涓殑鍏抽敭璁剧疆锛�
+- `urls`锛氭湇鍔″櫒绔彛锛堥粯璁わ細`http://*:9291`锛�
+- `ConnectionString`锛歋QL Server 鏁版嵁搴撹繛鎺�
+- `MainDB`锛氫富鏁版嵁搴撳悕绉�
+- `Cors`锛氬墠绔簮澶寸殑 CORS 绛栫暐
+- `WebSocketPort`锛氬疄鏃舵洿鏂扮殑 WebSocket 绔彛锛堥粯璁わ細9296锛�
+- `AutoOutboundTask`锛氳嚜鍔ㄥ嚭搴撴搷浣滅殑鍚庡彴浠诲姟閰嶇疆
+
+### 鍓嶇閰嶇疆
+
+- `vite.config.js`锛歏ite 鏋勫缓閰嶇疆锛宍@` 鍒悕鎸囧悜 `src/`
+- 鏈嶅姟鍣ㄩ粯璁よ繍琛屽湪绔彛 8080
+- 鍩轰簬鍝堝笇鐨勮矾鐢憋紙`createWebHashHistory`锛�
+
+## 浠g爜绾﹀畾
+
+### 鍚庣
+
+1. **鍛藉悕瑙勮寖**锛�
+   - 鎺у埗鍣細`{Entity}Controller.cs`
+   - 鏈嶅姟锛歚{Entity}Service.cs`锛堝疄鐜� `I{Entity}Service`锛�
+   - 妯″瀷锛歚Dt_{EntityName}.cs`锛堟暟鎹簱瀹炰綋浣跨敤 `Dt_` 鍓嶇紑锛�
+   - API 璺敱锛歚api/{ControllerName}`
+
+2. **鏈嶅姟娉ㄥ唽**锛氬疄鐜� `IDependency` 鐨勬湇鍔′細閫氳繃 Autofac 浠庢墍鏈夐」鐩▼搴忛泦涓嚜鍔ㄦ敞鍐屻��
+
+3. **鎺у埗鍣ㄦā寮�**锛氬ぇ澶氭暟鎺у埗鍣ㄧ户鎵胯嚜 `ApiBaseController<TService, TEntity>`锛屽彧闇�瑕佹瀯閫犲嚱鏁般�傛牴鎹渶瑕佹坊鍔犺嚜瀹氫箟鎿嶄綔銆�
+
+4. **鍝嶅簲鏍煎紡**锛歚WebResponseContent` 鍖呰鍣紝鍖呭惈 `Status`锛堝竷灏斿�硷級鍜� `Data` 灞炴�с��
+
+### 鍓嶇
+
+1. **鎵╁睍鏂囦欢妯″紡**锛氬浜庢瘡涓悗绔疄浣擄紝鍦� `src/extension/{domain}/{entity}.js` 鍒涘缓鎵╁睍鏂囦欢锛屽寘鍚細
+   - 琛ㄦ牸鍒楀畾涔�
+   - 琛ㄥ崟瀛楁閰嶇疆
+   - 鑷畾涔� URL 妯″紡
+   - 涓氬姟閫昏緫閽╁瓙
+
+2. **缁勪欢鍛藉悕**锛歏ue 缁勪欢浣跨敤 PascalCase锛屽敖鍙兘鍖归厤鍚庣瀹炰綋鍚嶇О銆�
+
+3. **API 璋冪敤**锛氫娇鐢ㄥ叏灞� `this.http` 瀵硅薄杩涜 HTTP 璇锋眰銆�
+
+## 娣诲姞鏂板姛鑳�
+
+### 鍚庣
+1. 鍦� `WIDESEA_Model/Models/{Domain}/` 涓垱寤烘ā鍨�
+2. 鍦� `WIDESEA_I{Domain}Service/` 涓垱寤烘湇鍔℃帴鍙�
+3. 鍦� `WIDESEA_{Domain}Service/` 涓垱寤烘湇鍔″疄鐜�
+4. 鍦� `WIDESEA_WMSServer/Controllers/{Domain}/` 涓垱寤烘帶鍒跺櫒锛岀户鎵胯嚜 `ApiBaseController<TService, TEntity>`
+5. 鏈嶅姟閫氳繃 `IDependency` 鎺ュ彛鑷姩娉ㄥ唽
+
+### 鍓嶇
+1. 鍦� `src/extension/{domain}/{entity}.js` 鍒涘缓鎵╁睍鏂囦欢
+2. 濡傞渶鑷畾涔� UI锛屽湪 `src/views/{domain}/{entity}.vue` 鍒涘缓鍙�夎鍥剧粍浠�
+3. 濡傞渶瑕侊紝娣诲姞璺敱閰嶇疆
+4. ViewGrid 缁勪欢閰嶅悎鎵╁睍閰嶇疆鍙嚜鍔ㄥ鐞嗗ぇ澶氭暟 CRUD 鎿嶄綔
+
+## 鏁版嵁搴�
+
+- **ORM**锛歋qlSugar
+- **鏁版嵁搴�**锛歋QL Server
+- **杩炴帴瀛楃涓�**锛氬湪 `appsettings.json` 涓厤缃�
+- **杩佺Щ**锛氶�氳繃 SqlSugar 鐨� Code First 鏂瑰紡澶勭悊
+
+## 瀹炴椂鍔熻兘
+
+- SignalR 鐢ㄤ簬鏈嶅姟鍣ㄥ拰瀹㈡埛绔箣闂寸殑瀹炴椂鏇存柊
+- WebSocket 鏈嶅姟鍣ㄥ湪鍗曠嫭绔彛锛堝彲鍦� `appsettings.json` 涓厤缃級
+- 鍓嶇 SignalR 瀹㈡埛绔泦鎴愬湪 `src/main.js` 涓�
+
+## API 鏂囨。
+
+杩愯鍚庣鏈嶅姟鍣ㄦ椂鍙敤 Swagger UI锛堟煡鐪� `/swagger` 绔偣锛夈��
diff --git a/Code/WMS/WIDESEA_WMSServer/AGENTS.md b/Code/WMS/WIDESEA_WMSServer/AGENTS.md
deleted file mode 100644
index c07a83b..0000000
--- a/Code/WMS/WIDESEA_WMSServer/AGENTS.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# AGENTS 鍗忎綔璇存槑
-
-鏈枃浠剁敤浜庣害鏉熷湪鏈粨搴撳唴鍗忎綔寮�鍙戠殑 AI Agent 涓庡紑鍙戣�呰涓恒��
-
-## 1. 鍩烘湰鍘熷垯
-
-- 鎵�鏈夋矡閫氥�佹敞閲娿�佽鏄庢枃妗i粯璁や娇鐢ㄤ腑鏂囥��
-- 浼樺厛淇濊瘉绯荤粺绋冲畾鎬э紝閬垮厤褰卞搷鐜版湁涓氬姟娴佺▼銆�
-- 淇敼搴旈伒寰�滄渶灏忔敼鍔ㄥ師鍒欌�濓紝涓嶈鍋氭棤鍏抽噸鏋勩��
-- 浠讳綍娑夊強鐘舵�佹祦杞殑鏀瑰姩锛屽繀椤绘槑纭墠缃姸鎬併�佺洰鏍囩姸鎬佷笌寮傚父澶勭悊銆�
-
-## 2. 寮�鍙戣鑼�
-
-- 淇濇寔涓庣幇鏈変唬鐮侀鏍间竴鑷达紙鍛藉悕銆佺缉杩涖�佸紓甯稿鐞嗘柟寮忥級銆�
-- 浼樺厛澶嶇敤宸叉湁鏋氫妇銆佹湇鍔′笌浠撳偍鏂规硶锛岄伩鍏嶉噸澶嶅疄鐜般��
-- 涓氬姟甯搁噺搴旀斁鍏ラ厤缃垨鏋氫妇锛屼笉鍏佽纭紪鐮侀瓟娉曞�笺��
-- 娑夊強鎵归噺澶勭悊鏃讹紝浼樺厛鑰冭檻鎵归噺鏌ヨ/鎵归噺鏇存柊锛岄伩鍏� N+1 鏌ヨ銆�
-
-## 3. 鐘舵�佷笌浜嬪姟
-
-- 娑夊強鈥滀换鍔″垱寤� + 搴撳瓨鐘舵�� + 璐т綅鐘舵�佲�濊仈鍔ㄦ椂锛屽繀椤讳繚璇佷竴鑷存�с��
-- 鑻ヤ换涓�鍏抽敭姝ラ澶辫触锛屽簲杩斿洖鏄庣‘閿欒淇℃伅锛屼笉鑳介潤榛樺け璐ャ��
-- 瀵瑰苟鍙戝満鏅繚鎸佹晱鎰燂紝閬垮厤閲嶅鍒涘缓浠诲姟鎴栭噸澶嶅垎閰嶅簱瀛樸��
-
-## 4. 鎺ュ彛涓庨泦鎴�
-
-- 瀵规帴澶栭儴绯荤粺锛堝 WCS锛夊墠锛屽厛纭璇锋眰妯″瀷涓庢帴鍙g害瀹氾紙鍗曟潯鎴栨壒閲忥級銆�
-- 澶栭儴閫氱煡澶辫触涓嶅簲闃诲涓绘祦绋嬫椂锛屽繀椤昏褰曞彲杩借釜鏃ュ織銆�
-- 鎺ュ彛鍦板潃浼樺厛閰嶇疆鍖栵紝閬垮厤鍐欐鐜鍦板潃銆�
-
-## 5. 楠岃瘉瑕佹眰
-
-- 瀹屾垚鏀瑰姩鍚庤嚦灏戞墽琛屼竴娆″彲鐢ㄧ殑缂栬瘧鎴栨祴璇曢獙璇併��
-- 鍦ㄦ彁浜ょ粨鏋滄椂锛岃鏄庯細
-  - 淇敼浜嗗摢浜涙枃浠�
-  - 鍏抽敭閫昏緫鍙樻洿鐐�
-  - 楠岃瘉鍛戒护涓庣粨鏋�
-
-## 6. 绂佹浜嬮」
-
-- 鏈粡鏄庣‘瑕佹眰锛屼笉寰楀垹闄ゆ垨鍥炴粴浠栦汉宸叉湁鏀瑰姩銆�
-- 涓嶅緱浣跨敤楂橀闄╁懡浠わ紙濡傚己鍒堕噸缃級鐮村潖宸ヤ綔鍖恒��
-- 涓嶅緱鍦ㄦ湭楠岃瘉鐨勬儏鍐典笅瀹gО鈥滃凡淇鈥濇垨鈥滃彲涓婄嚎鈥濄��
-
-## 7. 寤鸿宸ヤ綔娴�
-
-1. 鍏堥槄璇荤浉鍏充笂涓嬫父浠g爜涓庢灇涓惧畾涔夈��
-2. 鏄庣‘杈撳叆銆佸鐞嗐�佽緭鍑轰互鍙婄姸鎬佸彉鍖栥��
-3. 瀹炴柦鏈�灏忔敼鍔ㄥ苟琛ュ厖蹇呰娉ㄩ噴銆�
-4. 缂栬瘧/娴嬭瘯楠岃瘉骞惰緭鍑虹粨鏋滄憳瑕併��
-
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/.gitignore b/Code/WMS/WIDESEA_WMS_Frontend/.gitignore
deleted file mode 100644
index d1c7d12..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/.gitignore
+++ /dev/null
@@ -1,28 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
-
-# Auto-generated
-src/auto-imports.d.ts
-src/components.d.ts
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md b/Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md
deleted file mode 100644
index bf8696e..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md
+++ /dev/null
@@ -1,435 +0,0 @@
-# WIDESEA WMS 鍓嶇椤圭洰 - 蹇�熷紑濮嬫寚鍗�
-
-## 椤圭洰姒傝堪
-
-鏈」鐩槸鍩轰簬 Vue 3 + TypeScript + Ant Design Vue 寮�鍙戠殑 WIDESEA WMS 浠撳簱绠$悊绯荤粺鍓嶇锛屽凡瀹屾垚涓庡悗绔� API 鐨勯�傞厤銆�
-
-## 鎶�鏈爤
-
-- **妗嗘灦**: Vue 3.4 (Composition API)
-- **璇█**: TypeScript 5.3
-- **鏋勫缓宸ュ叿**: Vite 5.0
-- **UI 缁勪欢搴�**: Ant Design Vue 4.1
-- **璺敱**: Vue Router 4.2
-- **鐘舵�佺鐞�**: Pinia 2.1
-- **HTTP 瀹㈡埛绔�**: Axios 1.6
-- **鏃ユ湡澶勭悊**: Day.js 1.11
-- **宸ュ叿搴�**: Lodash-es 4.17
-
-## 椤圭洰缁撴瀯
-
-```
-WIDESEA_WMS_Frontend/
-鈹溾攢鈹� src/
-鈹�   鈹溾攢鈹� api/                    # API 鎺ュ彛瀹氫箟
-鈹�   鈹�   鈹溾攢鈹� auth.ts             # 璁よ瘉鐩稿叧 API
-鈹�   鈹�   鈹溾攢鈹� system/             # 绯荤粺绠$悊 API
-鈹�   鈹�   鈹斺攢鈹� basic/              # 鍩虹淇℃伅 API
-鈹�   鈹溾攢鈹� assets/                 # 闈欐�佽祫婧�
-鈹�   鈹�   鈹斺攢鈹� styles/             # 鏍峰紡鏂囦欢
-鈹�   鈹溾攢鈹� layouts/                # 甯冨眬缁勪欢
-鈹�   鈹�   鈹斺攢鈹� BasicLayout.vue     # 鍩虹甯冨眬
-鈹�   鈹溾攢鈹� router/                 # 璺敱閰嶇疆
-鈹�   鈹�   鈹溾攢鈹� index.ts            # 璺敱涓绘枃浠�
-鈹�   鈹�   鈹溾攢鈹� routes.ts           # 璺敱瀹氫箟
-鈹�   鈹�   鈹斺攢鈹� guard.ts            # 璺敱瀹堝崼
-鈹�   鈹溾攢鈹� stores/                 # Pinia 鐘舵�佺鐞�
-鈹�   鈹�   鈹溾攢鈹� auth.ts             # 璁よ瘉鐘舵��
-鈹�   鈹�   鈹斺攢鈹� app.ts              # 搴旂敤鐘舵��
-鈹�   鈹溾攢鈹� types/                  # TypeScript 绫诲瀷瀹氫箟
-鈹�   鈹�   鈹溾攢鈹� api.ts              # API 绫诲瀷
-鈹�   鈹�   鈹溾攢鈹� user.ts             # 鐢ㄦ埛绫诲瀷
-鈹�   鈹�   鈹斺攢鈹� common.ts           # 閫氱敤绫诲瀷
-鈹�   鈹溾攢鈹� utils/                  # 宸ュ叿鍑芥暟
-鈹�   鈹�   鈹溾攢鈹� request.ts          # Axios 灏佽
-鈹�   鈹�   鈹溾攢鈹� auth.ts             # 璁よ瘉宸ュ叿
-鈹�   鈹�   鈹斺攢鈹� common.ts           # 閫氱敤宸ュ叿
-鈹�   鈹溾攢鈹� views/                  # 椤甸潰缁勪欢
-鈹�   鈹�   鈹溾攢鈹� login/              # 鐧诲綍椤�
-鈹�   鈹�   鈹溾攢鈹� dashboard/          # 棣栭〉
-鈹�   鈹�   鈹溾攢鈹� system/             # 绯荤粺绠$悊
-鈹�   鈹�   鈹�   鈹溾攢鈹� user/           # 鐢ㄦ埛绠$悊
-鈹�   鈹�   鈹�   鈹溾攢鈹� role/           # 瑙掕壊绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� menu/           # 鑿滃崟绠$悊
-鈹�   鈹�   鈹溾攢鈹� basic/              # 鍩虹淇℃伅
-鈹�   鈹�   鈹�   鈹溾攢鈹� warehouse/      # 浠撳簱绠$悊
-鈹�   鈹�   鈹�   鈹溾攢鈹� location/       # 璐т綅绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� materiel/       # 鐗╂枡绠$悊
-鈹�   鈹�   鈹溾攢鈹� inbound/            # 鍏ュ簱绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� order/          # 鍏ュ簱鍗曠鐞�
-鈹�   鈹�   鈹溾攢鈹� outbound/           # 鍑哄簱绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� order/          # 鍑哄簱鍗曠鐞�
-鈹�   鈹�   鈹溾攢鈹� stock/              # 搴撳瓨绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� info/           # 搴撳瓨淇℃伅
-鈹�   鈹�   鈹溾攢鈹� check/              # 鐩樼偣绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� order/          # 鐩樼偣鍗曠鐞�
-鈹�   鈹�   鈹溾攢鈹� task/               # 浠诲姟绠$悊
-鈹�   鈹�   鈹�   鈹斺攢鈹� info/           # 浠诲姟淇℃伅
-鈹�   鈹�   鈹斺攢鈹� error/              # 閿欒椤甸潰
-鈹�   鈹�       鈹斺攢鈹� 404.vue         # 404 椤甸潰
-鈹�   鈹溾攢鈹� App.vue                 # 鏍圭粍浠�
-鈹�   鈹斺攢鈹� main.ts                 # 鍏ュ彛鏂囦欢
-鈹溾攢鈹� index.html                  # HTML 妯℃澘
-鈹溾攢鈹� package.json                # 椤圭洰閰嶇疆
-鈹溾攢鈹� tsconfig.json               # TypeScript 閰嶇疆
-鈹溾攢鈹� vite.config.ts              # Vite 閰嶇疆
-鈹斺攢鈹� README.md                   # 椤圭洰璇存槑
-
-## 瀹夎渚濊禆
-
-```bash
-cd WIDESEA_WMS_Frontend
-npm install
-```
-
-## 鍚姩寮�鍙戞湇鍔″櫒
-
-```bash
-npm run dev
-```
-
-璁块棶: http://localhost:3000
-
-## 鏋勫缓鐢熶骇鐗堟湰
-
-```bash
-npm run build
-```
-
-鏋勫缓浜х墿灏嗙敓鎴愬湪 `dist` 鐩綍銆�
-
-## 棰勮鐢熶骇鏋勫缓
-
-```bash
-npm run preview
-```
-
-## 鍚庣 API 閰嶇疆
-
-鍚庣 API 鍦板潃閰嶇疆鍦� `vite.config.ts` 涓細
-
-```typescript
-server: {
-  proxy: {
-    '/api': {
-      target: 'http://localhost:9291',  // 鍚庣 API 鍦板潃
-      changeOrigin: true,
-    },
-  },
-}
-```
-
-**閲嶈**: 鍚姩鍓嶇涔嬪墠锛岃纭繚鍚庣鏈嶅姟宸茬粡鍚姩鍦� `http://localhost:9291`銆�
-
-## 鐧诲綍鍔熻兘
-
-### 鐧诲綍娴佺▼
-
-1. 璁块棶 http://localhost:3000锛岃嚜鍔ㄨ烦杞埌鐧诲綍椤�
-2. 杈撳叆鐢ㄦ埛鍚嶅拰瀵嗙爜
-3. 鐐瑰嚮鐧诲綍鎸夐挳
-4. 鐧诲綍鎴愬姛鍚庯紝Token 瀛樺偍鍦� localStorage
-5. 鑷姩璺宠浆鍒伴椤�
-
-### 璁よ瘉鏈哄埗
-
-- **Token 瀛樺偍**: localStorage (key: `token`)
-- **Token 鏈夋晥鏈�**: 120 鍒嗛挓
-- **Token 鍒锋柊**: 褰撳搷搴斿ご鍖呭惈 `widesea_exp: 1` 鏃惰嚜鍔ㄥ埛鏂�
-- **璇锋眰澶�**: `Authorization: Bearer {token}`
-- **鏈璇佸鐞�**: 401 閿欒鑷姩璺宠浆鐧诲綍椤�
-
-### 娴嬭瘯璐﹀彿
-
-璇蜂娇鐢ㄥ悗绔暟鎹簱涓殑鐢ㄦ埛璐﹀彿杩涜鐧诲綍娴嬭瘯銆�
-
-## 鍔熻兘妯″潡
-
-### 1. 绯荤粺绠$悊
-
-#### 鐢ㄦ埛绠$悊 (`/system/user`)
-- 鐢ㄦ埛鍒楄〃鏌ヨ锛堝垎椤点�佹悳绱級
-- 鏂板鐢ㄦ埛
-- 缂栬緫鐢ㄦ埛
-- 鍒犻櫎鐢ㄦ埛
-- API: `/api/User/GetPageData`, `/api/User/Add`, `/api/User/Update`, `/api/User/Del`
-
-#### 瑙掕壊绠$悊 (`/system/role`)
-- 瑙掕壊鍒楄〃鏌ヨ
-- 鏂板瑙掕壊
-- 缂栬緫瑙掕壊
-- 鍒犻櫎瑙掕壊
-- API: `/api/Role/GetPageData`, `/api/Role/Add`, `/api/Role/Update`, `/api/Role/Del`
-
-#### 鑿滃崟绠$悊 (`/system/menu`)
-- 鑿滃崟鍒楄〃鏌ヨ锛堟爲褰㈢粨鏋勶級
-- 鏂板鑿滃崟
-- 缂栬緫鑿滃崟
-- 鍒犻櫎鑿滃崟
-- API: `/api/Menu/GetPageData`, `/api/Menu/Add`, `/api/Menu/Update`, `/api/Menu/Del`
-
-### 2. 鍩虹淇℃伅
-
-#### 浠撳簱绠$悊 (`/basic/warehouse`)
-- 浠撳簱鍒楄〃鏌ヨ锛堝垎椤点�佹悳绱級
-- 鏂板浠撳簱
-- 缂栬緫浠撳簱
-- 鍒犻櫎浠撳簱
-- API: `/api/Warehouse/GetPageData`, `/api/Warehouse/Add`, `/api/Warehouse/Update`, `/api/Warehouse/Del`
-
-#### 璐т綅绠$悊 (`/basic/location`)
-- 璐т綅鍒楄〃鏌ヨ锛堝垎椤点�佹悳绱級
-- 鏂板璐т綅
-- 缂栬緫璐т綅
-- 鍒犻櫎璐т綅
-- 璐т綅鐘舵�佹樉绀猴紙绌洪棽/鍗犵敤锛�
-- API: `/api/LocationInfo/GetPageData`, `/api/LocationInfo/Add`, `/api/LocationInfo/Update`, `/api/LocationInfo/Del`
-
-#### 鐗╂枡绠$悊 (`/basic/materiel`)
-- 鐗╂枡鍒楄〃鏌ヨ锛堝垎椤点�佹悳绱級
-- 鏂板鐗╂枡
-- 缂栬緫鐗╂枡
-- 鍒犻櫎鐗╂枡
-- API: `/api/MaterielInfo/GetPageData`, `/api/MaterielInfo/Add`, `/api/MaterielInfo/Update`, `/api/MaterielInfo/Del`
-
-### 3. 鍏ュ簱绠$悊
-
-#### 鍏ュ簱鍗曠鐞� (`/inbound/order`)
-- 鍏ュ簱鍗曞垪琛ㄦ煡璇紙鍒嗛〉銆佹悳绱級
-- 鏂板鍏ュ簱鍗�
-- 鏌ョ湅鍏ュ簱鍗曡鎯�
-- 缂栬緫鍏ュ簱鍗�
-- 鍒犻櫎鍏ュ簱鍗�
-- 璁㈠崟鐘舵�佹樉绀猴紙寰呭鐞�/澶勭悊涓�/宸插畬鎴�/宸插彇娑堬級
-- API: `/api/InboundOrder/GetPageData`, `/api/InboundOrder/Add`, `/api/InboundOrder/Update`, `/api/InboundOrder/Del`
-
-### 4. 鍑哄簱绠$悊
-
-#### 鍑哄簱鍗曠鐞� (`/outbound/order`)
-- 鍑哄簱鍗曞垪琛ㄦ煡璇紙鍒嗛〉銆佹悳绱級
-- 鏂板鍑哄簱鍗�
-- 鏌ョ湅鍑哄簱鍗曡鎯�
-- 缂栬緫鍑哄簱鍗�
-- 鍒犻櫎鍑哄簱鍗�
-- 璁㈠崟鐘舵�佹樉绀猴紙寰呭鐞�/澶勭悊涓�/宸插畬鎴�/宸插彇娑堬級
-- API: `/api/OutboundOrder/GetPageData`, `/api/OutboundOrder/Add`, `/api/OutboundOrder/Update`, `/api/OutboundOrder/Del`
-
-### 5. 搴撳瓨绠$悊
-
-#### 搴撳瓨淇℃伅 (`/stock/info`)
-- 搴撳瓨鍒楄〃鏌ヨ锛堝垎椤点�佹悳绱級
-- 鏌ョ湅搴撳瓨鏄庣粏
-- 瀵煎嚭搴撳瓨鏁版嵁
-- 鏄剧ず鎬绘暟閲忋�佸彲鐢ㄦ暟閲忋�侀攣瀹氭暟閲�
-- API: `/api/StockInfo/GetPageData`, `/api/StockInfoDetail/GetDetailPage`
-
-### 6. 鐩樼偣绠$悊
-
-#### 鐩樼偣鍗曠鐞� (`/check/order`)
-- 鐩樼偣鍗曞垪琛ㄦ煡璇紙鍒嗛〉銆佹悳绱級
-- 鏂板鐩樼偣鍗�
-- 鏌ョ湅鐩樼偣鍗曡鎯�
-- 缂栬緫鐩樼偣鍗�
-- 鍒犻櫎鐩樼偣鍗�
-- 鐩樼偣鐘舵�佹樉绀猴紙寰呯洏鐐�/鐩樼偣涓�/宸插畬鎴愶級
-- API: `/api/CheckOrder/GetPageData`, `/api/CheckOrder/Add`, `/api/CheckOrder/Update`, `/api/CheckOrder/Del`
-
-### 7. 浠诲姟绠$悊
-
-#### 浠诲姟淇℃伅 (`/task/info`)
-- 浠诲姟鍒楄〃鏌ヨ锛堝垎椤点�佹悳绱級
-- 浠诲姟鐘舵�佺瓫閫�
-- 鏌ョ湅浠诲姟璇︽儏
-- 浠诲姟鐘舵�佹樉绀猴紙寰呭鐞�/澶勭悊涓�/宸插畬鎴�/宸插彇娑堬級
-- API: `/api/Task/GetPageData`
-
-## API 璇锋眰鏍煎紡
-
-### 鍒嗛〉璇锋眰
-
-```typescript
-{
-  page: 1,              // 褰撳墠椤电爜
-  rows: 20,             // 姣忛〉鏉℃暟
-  sort: 'CreateDate',   // 鎺掑簭瀛楁
-  order: 'desc',        // 鎺掑簭鏂瑰紡 (asc/desc)
-  wheres: [             // 鏌ヨ鏉′欢锛堝彲閫夛級
-    {
-      name: 'UserName',           // 瀛楁鍚�
-      value: 'admin',             // 瀛楁鍊�
-      displayType: 'like'         // 鏌ヨ绫诲瀷 (like/equal/notEqual/greaterThan/lessThan/in/notIn)
-    }
-  ]
-}
-```
-
-### 鍝嶅簲鏍煎紡
-
-```typescript
-{
-  status: true,         // 鎴愬姛/澶辫触
-  message: '',          // 娑堟伅
-  data: {               // 鏁版嵁
-    rows: [],           // 鏁版嵁鍒楄〃
-    total: 0,           // 鎬绘潯鏁�
-    page: 1,            // 褰撳墠椤�
-    records: 20         // 姣忛〉鏉℃暟
-  }
-}
-```
-
-## 寮�鍙戞寚鍗�
-
-### 娣诲姞鏂伴〉闈�
-
-1. 鍦� `src/views` 涓嬪垱寤洪〉闈㈢粍浠�
-2. 鍦� `src/router/routes.ts` 涓坊鍔犺矾鐢遍厤缃�
-3. 鍦� `src/api` 涓坊鍔� API 鎺ュ彛瀹氫箟
-4. 鍦� `src/types` 涓坊鍔犵被鍨嬪畾涔夛紙濡傞渶瑕侊級
-
-### 娣诲姞鏂� API
-
-鍦� `src/api` 鐩綍涓嬪垱寤烘垨缂栬緫 API 鏂囦欢锛�
-
-```typescript
-import request from '../utils/request';
-import type { ApiResponse, PageRequest, PageResponse } from '../types/api';
-
-export function getList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<YourType>>>({
-    url: '/YourController/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-export function add(data: Partial<YourType>) {
-  return request<ApiResponse<boolean>>({
-    url: '/YourController/Add',
-    method: 'post',
-    data,
-  });
-}
-```
-
-### 鐘舵�佺鐞�
-
-浣跨敤 Pinia 杩涜鐘舵�佺鐞嗭紝宸插垱寤虹殑 Store锛�
-
-- `useAuthStore`: 璁よ瘉鐘舵�侊紙鐧诲綍銆佺櫥鍑恒�佺敤鎴蜂俊鎭級
-- `useAppStore`: 搴旂敤鐘舵�侊紙渚ц竟鏍忔姌鍙犮�佸姞杞界姸鎬侊級
-
-鍒涘缓鏂� Store锛�
-
-```typescript
-import { defineStore } from 'pinia';
-import { ref } from 'vue';
-
-export const useYourStore = defineStore('your-store', () => {
-  const data = ref<any>(null);
-
-  function setData(value: any) {
-    data.value = value;
-  }
-
-  return {
-    data,
-    setData,
-  };
-});
-```
-
-## 甯歌闂
-
-### 1. 鐧诲綍鍚� Token 鏈敓鏁�
-
-妫�鏌ワ細
-- 鍚庣鏄惁姝g‘杩斿洖 Token
-- Token 鏄惁瀛樺偍鍦� localStorage
-- 璇锋眰澶存槸鍚﹀寘鍚� `Authorization: Bearer {token}`
-
-### 2. API 璇锋眰 404
-
-妫�鏌ワ細
-- 鍚庣鏈嶅姟鏄惁鍚姩
-- API 璺緞鏄惁姝g‘
-- Vite 浠g悊閰嶇疆鏄惁姝g‘
-
-### 3. 璺ㄥ煙闂
-
-宸插湪 `vite.config.ts` 涓厤缃唬鐞嗭紝寮�鍙戠幆澧冧笉浼氭湁璺ㄥ煙闂銆傜敓浜х幆澧冮渶瑕佸悗绔厤缃� CORS銆�
-
-### 4. Token 杩囨湡澶勭悊
-
-绯荤粺浼氳嚜鍔ㄥ鐞� Token 杩囨湡锛�
-- 401 閿欒鑷姩璺宠浆鐧诲綍椤�
-- Token 鍗冲皢杩囨湡鏃惰嚜鍔ㄥ埛鏂帮紙鍝嶅簲澶� `widesea_exp: 1`锛�
-
-## 閮ㄧ讲
-
-### 寮�鍙戠幆澧�
-
-```bash
-npm run dev
-```
-
-### 鐢熶骇鐜
-
-1. 鏋勫缓椤圭洰锛�
-```bash
-npm run build
-```
-
-2. 灏� `dist` 鐩綍閮ㄧ讲鍒� Web 鏈嶅姟鍣紙Nginx銆丄pache 绛夛級
-
-3. 閰嶇疆 Nginx 鍙嶅悜浠g悊锛堢ず渚嬶級锛�
-
-```nginx
-server {
-    listen 80;
-    server_name your-domain.com;
-
-    location / {
-        root /path/to/dist;
-        try_files $uri $uri/ /index.html;
-    }
-
-    location /api {
-        proxy_pass http://localhost:9291;
-        proxy_set_header Host $host;
-        proxy_set_header X-Real-IP $remote_addr;
-    }
-}
-```
-
-## 鍚庣画鎵╁睍
-
-### 寰呭畬鍠勫姛鑳�
-
-1. **鍏ュ簱/鍑哄簱鍗曟槑缁�**: 娣诲姞鏄庣粏琛ㄦ牸鍜岀紪杈戝姛鑳�
-2. **鏉冮檺鎺у埗**: 鍩轰簬瑙掕壊鐨勮彍鍗曞拰鎸夐挳鏉冮檺鎺у埗
-3. **鏁版嵁瀵煎嚭**: Excel 瀵煎嚭鍔熻兘
-4. **鏁版嵁瀵煎叆**: Excel 鎵归噺瀵煎叆鍔熻兘
-5. **鎶ヨ〃缁熻**: 鍚勭被涓氬姟鎶ヨ〃鍜屽浘琛�
-6. **娑堟伅閫氱煡**: WebSocket 瀹炴椂娑堟伅鎺ㄩ��
-7. **鎿嶄綔鏃ュ織**: 鐢ㄦ埛鎿嶄綔鏃ュ織璁板綍鍜屾煡璇�
-8. **鏁版嵁瀛楀吀**: 瀛楀吀绠$悊鍜屽瓧鍏搁」绠$悊
-9. **鏂囦欢涓婁紶**: 鍥剧墖鍜屾枃浠朵笂浼犲姛鑳�
-10. **鎵撳嵃鍔熻兘**: 鍗曟嵁鎵撳嵃鍔熻兘
-
-### 鎬ц兘浼樺寲
-
-1. 璺敱鎳掑姞杞斤紙宸插疄鐜帮級
-2. 缁勪欢鎳掑姞杞�
-3. 鍥剧墖鎳掑姞杞�
-4. 铏氭嫙婊氬姩锛堝ぇ鏁版嵁閲忚〃鏍硷級
-5. 璇锋眰闃叉姈鍜岃妭娴�
-6. 缂撳瓨浼樺寲
-
-## 鎶�鏈敮鎸�
-
-濡傛湁闂锛岃鑱旂郴寮�鍙戝洟闃熸垨鏌ョ湅鍚庣 API 鏂囨。銆�
-
-## 璁稿彲璇�
-
-MIT
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/README.md b/Code/WMS/WIDESEA_WMS_Frontend/README.md
deleted file mode 100644
index 28dcec2..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/README.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# WIDESEA WMS 鍓嶇绯荤粺
-
-鍩轰簬 Vue 3 + TypeScript + Ant Design Vue 鐨勪粨搴撶鐞嗙郴缁熷墠绔��
-
-## 鎶�鏈爤
-
-- Vue 3.4
-- TypeScript 5.3
-- Vite 5.0
-- Ant Design Vue 4.1
-- Vue Router 4.2
-- Pinia 2.1
-- Axios 1.6
-
-## 鍔熻兘妯″潡
-
-### 绯荤粺绠$悊
-- 鐢ㄦ埛绠$悊
-- 瑙掕壊绠$悊
-- 鑿滃崟绠$悊
-- 瀛楀吀绠$悊
-- 鏃ュ織绠$悊
-- 绉熸埛绠$悊
-
-### 鍩虹淇℃伅
-- 浠撳簱绠$悊
-- 璐т綅绠$悊
-- 鐗╂枡绠$悊
-- 鐗╂枡缂栫爜绠$悊
-- 鎵樼洏缂栫爜绠$悊
-
-### 鍏ュ簱绠$悊
-- 鍏ュ簱鍗曠鐞�
-- 鍏ュ簱鍗曟槑缁�
-- 閲囪喘鍗曠鐞�
-- 鏀惰揣鍗曠鐞�
-
-### 鍑哄簱绠$悊
-- 鍑哄簱鍗曠鐞�
-- 鍑哄簱鍗曟槑缁�
-- 鍑哄簱閿佸畾淇℃伅
-
-### 搴撳瓨绠$悊
-- 搴撳瓨淇℃伅
-- 搴撳瓨鏄庣粏
-- 搴撳瓨瑙嗗浘
-
-### 鐩樼偣绠$悊
-- 鐩樼偣鍗曠鐞�
-- 鐩樼偣缁撴灉
-
-### 浠诲姟绠$悊
-- 浠诲姟淇℃伅
-- 浠诲姟鍘嗗彶
-
-## 寮�鍙�
-
-```bash
-# 瀹夎渚濊禆
-npm install
-
-# 鍚姩寮�鍙戞湇鍔″櫒
-npm run dev
-
-# 鏋勫缓鐢熶骇鐗堟湰
-npm run build
-
-# 棰勮鐢熶骇鏋勫缓
-npm run preview
-```
-
-## 閰嶇疆
-
-鍚庣 API 鍦板潃閰嶇疆鍦� `vite.config.ts` 涓細
-
-```typescript
-server: {
-  proxy: {
-    '/api': {
-      target: 'http://localhost:9291',
-      changeOrigin: true,
-    },
-  },
-}
-```
-
-## 鐩綍缁撴瀯
-
-```
-src/
-鈹溾攢鈹� api/              # API 鎺ュ彛
-鈹溾攢鈹� assets/           # 闈欐�佽祫婧�
-鈹溾攢鈹� components/       # 鍏叡缁勪欢
-鈹溾攢鈹� layouts/          # 甯冨眬缁勪欢
-鈹溾攢鈹� router/           # 璺敱閰嶇疆
-鈹溾攢鈹� stores/           # Pinia 鐘舵�佺鐞�
-鈹溾攢鈹� types/            # TypeScript 绫诲瀷瀹氫箟
-鈹溾攢鈹� utils/            # 宸ュ叿鍑芥暟
-鈹溾攢鈹� views/            # 椤甸潰缁勪欢
-鈹溾攢鈹� App.vue           # 鏍圭粍浠�
-鈹斺攢鈹� main.ts           # 鍏ュ彛鏂囦欢
-```
-
-## 璁よ瘉鏈哄埗
-
-绯荤粺浣跨敤 JWT Token 杩涜璁よ瘉锛�
-- Token 瀛樺偍鍦� localStorage
-- 璇锋眰澶磋嚜鍔ㄦ坊鍔� Authorization: Bearer {token}
-- Token 杩囨湡鑷姩鍒锋柊
-- 鏈璇佽嚜鍔ㄨ烦杞櫥褰曢〉
-
-## 璁稿彲璇�
-
-MIT
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/index.html b/Code/WMS/WIDESEA_WMS_Frontend/index.html
deleted file mode 100644
index 72508ff..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>WIDESEA WMS - 浠撳簱绠$悊绯荤粺</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.ts"></script>
-  </body>
-</html>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/package-lock.json b/Code/WMS/WIDESEA_WMS_Frontend/package-lock.json
deleted file mode 100644
index 988bad4..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/package-lock.json
+++ /dev/null
@@ -1,4654 +0,0 @@
-{
-  "name": "widesea-wms-frontend",
-  "version": "1.0.0",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "widesea-wms-frontend",
-      "version": "1.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "@ant-design/icons-vue": "^7.0.1",
-        "ant-design-vue": "^4.1.0",
-        "axios": "^1.6.2",
-        "dayjs": "^1.11.10",
-        "lodash-es": "^4.17.21",
-        "nprogress": "^0.2.0",
-        "pinia": "^2.1.7",
-        "vue": "^3.4.0",
-        "vue-router": "^4.2.5"
-      },
-      "devDependencies": {
-        "@types/lodash-es": "^4.17.12",
-        "@types/node": "^20.10.5",
-        "@types/nprogress": "^0.2.3",
-        "@vitejs/plugin-vue": "^5.0.0",
-        "@vitejs/plugin-vue-jsx": "^3.1.0",
-        "eslint": "^8.56.0",
-        "prettier": "^3.1.1",
-        "typescript": "^5.3.3",
-        "unplugin-auto-import": "^0.17.2",
-        "unplugin-vue-components": "^0.26.0",
-        "vite": "^5.0.8",
-        "vue-tsc": "^1.8.27"
-      }
-    },
-    "node_modules/@ant-design/colors": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz",
-      "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@ctrl/tinycolor": "^3.4.0"
-      }
-    },
-    "node_modules/@ant-design/icons-svg": {
-      "version": "4.4.2",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
-      "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==",
-      "license": "MIT"
-    },
-    "node_modules/@ant-design/icons-vue": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons-vue/-/icons-vue-7.0.1.tgz",
-      "integrity": "sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@ant-design/colors": "^6.0.0",
-        "@ant-design/icons-svg": "^4.2.1"
-      },
-      "peerDependencies": {
-        "vue": ">=3.0.3"
-      }
-    },
-    "node_modules/@antfu/utils": {
-      "version": "0.7.10",
-      "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
-      "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/@babel/code-frame": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
-      "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.28.5",
-        "js-tokens": "^4.0.0",
-        "picocolors": "^1.1.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/compat-data": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
-      "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/core": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
-      "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.29.0",
-        "@babel/generator": "^7.29.0",
-        "@babel/helper-compilation-targets": "^7.28.6",
-        "@babel/helper-module-transforms": "^7.28.6",
-        "@babel/helpers": "^7.28.6",
-        "@babel/parser": "^7.29.0",
-        "@babel/template": "^7.28.6",
-        "@babel/traverse": "^7.29.0",
-        "@babel/types": "^7.29.0",
-        "@jridgewell/remapping": "^2.3.5",
-        "convert-source-map": "^2.0.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.3",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/babel"
-      }
-    },
-    "node_modules/@babel/generator": {
-      "version": "7.29.1",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
-      "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.29.0",
-        "@babel/types": "^7.29.0",
-        "@jridgewell/gen-mapping": "^0.3.12",
-        "@jridgewell/trace-mapping": "^0.3.28",
-        "jsesc": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.27.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
-      "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.27.3"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
-      "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.28.6",
-        "@babel/helper-validator-option": "^7.27.1",
-        "browserslist": "^4.24.0",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz",
-      "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.27.3",
-        "@babel/helper-member-expression-to-functions": "^7.28.5",
-        "@babel/helper-optimise-call-expression": "^7.27.1",
-        "@babel/helper-replace-supers": "^7.28.6",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
-        "@babel/traverse": "^7.28.6",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-globals": {
-      "version": "7.28.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
-      "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.28.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
-      "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.28.5",
-        "@babel/types": "^7.28.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
-      "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.28.6",
-        "@babel/types": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
-      "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.28.6",
-        "@babel/helper-validator-identifier": "^7.28.5",
-        "@babel/traverse": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.27.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
-      "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.27.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
-      "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-replace-supers": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
-      "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-member-expression-to-functions": "^7.28.5",
-        "@babel/helper-optimise-call-expression": "^7.27.1",
-        "@babel/traverse": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.27.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
-      "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.27.1",
-        "@babel/types": "^7.27.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-string-parser": {
-      "version": "7.27.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
-      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.28.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
-      "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-option": {
-      "version": "7.27.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
-      "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helpers": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
-      "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/template": "^7.28.6",
-        "@babel/types": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/parser": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
-      "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.29.0"
-      },
-      "bin": {
-        "parser": "bin/babel-parser.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-jsx": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
-      "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-typescript": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
-      "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-typescript": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
-      "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.27.3",
-        "@babel/helper-create-class-features-plugin": "^7.28.6",
-        "@babel/helper-plugin-utils": "^7.28.6",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
-        "@babel/plugin-syntax-typescript": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/runtime": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz",
-      "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/template": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
-      "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.28.6",
-        "@babel/parser": "^7.28.6",
-        "@babel/types": "^7.28.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
-      "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.29.0",
-        "@babel/generator": "^7.29.0",
-        "@babel/helper-globals": "^7.28.0",
-        "@babel/parser": "^7.29.0",
-        "@babel/template": "^7.28.6",
-        "@babel/types": "^7.29.0",
-        "debug": "^4.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/types": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
-      "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-string-parser": "^7.27.1",
-        "@babel/helper-validator-identifier": "^7.28.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@ctrl/tinycolor": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
-      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/@emotion/hash": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
-      "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
-      "license": "MIT"
-    },
-    "node_modules/@emotion/unitless": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
-      "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
-      "license": "MIT"
-    },
-    "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
-      "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "aix"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/android-arm": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
-      "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/android-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
-      "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/android-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
-      "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
-      "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/darwin-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
-      "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
-      "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
-      "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-arm": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
-      "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
-      "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-ia32": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
-      "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-loong64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
-      "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
-      "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
-      "cpu": [
-        "mips64el"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
-      "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
-      "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-s390x": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
-      "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
-      "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
-      "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "netbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
-      "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "openbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/sunos-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
-      "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "sunos"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/win32-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
-      "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/win32-ia32": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
-      "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/win32-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-      "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@eslint-community/eslint-utils": {
-      "version": "4.9.1",
-      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
-      "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "eslint-visitor-keys": "^3.4.3"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
-      }
-    },
-    "node_modules/@eslint-community/regexpp": {
-      "version": "4.12.2",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
-      "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
-      }
-    },
-    "node_modules/@eslint/eslintrc": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
-      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.6.0",
-        "globals": "^13.19.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/@eslint/js": {
-      "version": "8.57.1",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
-      "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
-    "node_modules/@humanwhocodes/config-array": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
-      "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
-      "deprecated": "Use @eslint/config-array instead",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@humanwhocodes/object-schema": "^2.0.3",
-        "debug": "^4.3.1",
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=10.10.0"
-      }
-    },
-    "node_modules/@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=12.22"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/nzakas"
-      }
-    },
-    "node_modules/@humanwhocodes/object-schema": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
-      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
-      "deprecated": "Use @eslint/object-schema instead",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.13",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
-      "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/sourcemap-codec": "^1.5.0",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      }
-    },
-    "node_modules/@jridgewell/remapping": {
-      "version": "2.3.5",
-      "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
-      "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
-      "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
-      "license": "MIT"
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.31",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
-      "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
-    },
-    "node_modules/@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@rollup/pluginutils": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
-      "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "estree-walker": "^2.0.2",
-        "picomatch": "^4.0.2"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
-      },
-      "peerDependenciesMeta": {
-        "rollup": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz",
-      "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz",
-      "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz",
-      "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz",
-      "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/@rollup/rollup-freebsd-arm64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz",
-      "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "freebsd"
-      ]
-    },
-    "node_modules/@rollup/rollup-freebsd-x64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz",
-      "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "freebsd"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz",
-      "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz",
-      "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz",
-      "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz",
-      "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-loong64-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz",
-      "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-loong64-musl": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz",
-      "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-ppc64-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz",
-      "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-ppc64-musl": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz",
-      "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz",
-      "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-riscv64-musl": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz",
-      "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz",
-      "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz",
-      "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz",
-      "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-openbsd-x64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz",
-      "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "openbsd"
-      ]
-    },
-    "node_modules/@rollup/rollup-openharmony-arm64": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz",
-      "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "openharmony"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz",
-      "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz",
-      "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-x64-gnu": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz",
-      "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz",
-      "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@simonwep/pickr": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.8.2.tgz",
-      "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==",
-      "license": "MIT",
-      "dependencies": {
-        "core-js": "^3.15.1",
-        "nanopop": "^2.1.0"
-      }
-    },
-    "node_modules/@types/estree": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
-      "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/lodash": {
-      "version": "4.17.23",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz",
-      "integrity": "sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/lodash-es": {
-      "version": "4.17.12",
-      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
-      "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/lodash": "*"
-      }
-    },
-    "node_modules/@types/node": {
-      "version": "20.19.33",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz",
-      "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "undici-types": "~6.21.0"
-      }
-    },
-    "node_modules/@types/nprogress": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz",
-      "integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@ungap/structured-clone": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
-      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/@vitejs/plugin-vue": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
-      "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^18.0.0 || >=20.0.0"
-      },
-      "peerDependencies": {
-        "vite": "^5.0.0 || ^6.0.0",
-        "vue": "^3.2.25"
-      }
-    },
-    "node_modules/@vitejs/plugin-vue-jsx": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
-      "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.23.3",
-        "@babel/plugin-transform-typescript": "^7.23.3",
-        "@vue/babel-plugin-jsx": "^1.1.5"
-      },
-      "engines": {
-        "node": "^14.18.0 || >=16.0.0"
-      },
-      "peerDependencies": {
-        "vite": "^4.0.0 || ^5.0.0",
-        "vue": "^3.0.0"
-      }
-    },
-    "node_modules/@volar/language-core": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz",
-      "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@volar/source-map": "1.11.1"
-      }
-    },
-    "node_modules/@volar/source-map": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz",
-      "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "muggle-string": "^0.3.1"
-      }
-    },
-    "node_modules/@volar/typescript": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz",
-      "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@volar/language-core": "1.11.1",
-        "path-browserify": "^1.0.1"
-      }
-    },
-    "node_modules/@vue/babel-helper-vue-transform-on": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz",
-      "integrity": "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/babel-plugin-jsx": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.5.0.tgz",
-      "integrity": "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.27.1",
-        "@babel/helper-plugin-utils": "^7.27.1",
-        "@babel/plugin-syntax-jsx": "^7.27.1",
-        "@babel/template": "^7.27.2",
-        "@babel/traverse": "^7.28.0",
-        "@babel/types": "^7.28.2",
-        "@vue/babel-helper-vue-transform-on": "1.5.0",
-        "@vue/babel-plugin-resolve-type": "1.5.0",
-        "@vue/shared": "^3.5.18"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      },
-      "peerDependenciesMeta": {
-        "@babel/core": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vue/babel-plugin-resolve-type": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.5.0.tgz",
-      "integrity": "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.27.1",
-        "@babel/helper-module-imports": "^7.27.1",
-        "@babel/helper-plugin-utils": "^7.27.1",
-        "@babel/parser": "^7.28.0",
-        "@vue/compiler-sfc": "^3.5.18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sxzz"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/compiler-core": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.27.tgz",
-      "integrity": "sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.28.5",
-        "@vue/shared": "3.5.27",
-        "entities": "^7.0.0",
-        "estree-walker": "^2.0.2",
-        "source-map-js": "^1.2.1"
-      }
-    },
-    "node_modules/@vue/compiler-dom": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz",
-      "integrity": "sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/compiler-core": "3.5.27",
-        "@vue/shared": "3.5.27"
-      }
-    },
-    "node_modules/@vue/compiler-sfc": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz",
-      "integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.28.5",
-        "@vue/compiler-core": "3.5.27",
-        "@vue/compiler-dom": "3.5.27",
-        "@vue/compiler-ssr": "3.5.27",
-        "@vue/shared": "3.5.27",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.21",
-        "postcss": "^8.5.6",
-        "source-map-js": "^1.2.1"
-      }
-    },
-    "node_modules/@vue/compiler-ssr": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz",
-      "integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/compiler-dom": "3.5.27",
-        "@vue/shared": "3.5.27"
-      }
-    },
-    "node_modules/@vue/devtools-api": {
-      "version": "6.6.4",
-      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
-      "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
-      "license": "MIT"
-    },
-    "node_modules/@vue/language-core": {
-      "version": "1.8.27",
-      "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz",
-      "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@volar/language-core": "~1.11.1",
-        "@volar/source-map": "~1.11.1",
-        "@vue/compiler-dom": "^3.3.0",
-        "@vue/shared": "^3.3.0",
-        "computeds": "^0.0.1",
-        "minimatch": "^9.0.3",
-        "muggle-string": "^0.3.1",
-        "path-browserify": "^1.0.1",
-        "vue-template-compiler": "^2.7.14"
-      },
-      "peerDependencies": {
-        "typescript": "*"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vue/language-core/node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/@vue/language-core/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@vue/reactivity": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.27.tgz",
-      "integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/shared": "3.5.27"
-      }
-    },
-    "node_modules/@vue/runtime-core": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.27.tgz",
-      "integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/reactivity": "3.5.27",
-        "@vue/shared": "3.5.27"
-      }
-    },
-    "node_modules/@vue/runtime-dom": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz",
-      "integrity": "sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/reactivity": "3.5.27",
-        "@vue/runtime-core": "3.5.27",
-        "@vue/shared": "3.5.27",
-        "csstype": "^3.2.3"
-      }
-    },
-    "node_modules/@vue/server-renderer": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.27.tgz",
-      "integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/compiler-ssr": "3.5.27",
-        "@vue/shared": "3.5.27"
-      },
-      "peerDependencies": {
-        "vue": "3.5.27"
-      }
-    },
-    "node_modules/@vue/shared": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.27.tgz",
-      "integrity": "sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==",
-      "license": "MIT"
-    },
-    "node_modules/acorn": {
-      "version": "8.15.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-      "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/ant-design-vue": {
-      "version": "4.2.6",
-      "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-4.2.6.tgz",
-      "integrity": "sha512-t7eX13Yj3i9+i5g9lqFyYneoIb3OzTvQjq9Tts1i+eiOd3Eva/6GagxBSXM1fOCjqemIu0FYVE1ByZ/38epR3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@ant-design/colors": "^6.0.0",
-        "@ant-design/icons-vue": "^7.0.0",
-        "@babel/runtime": "^7.10.5",
-        "@ctrl/tinycolor": "^3.5.0",
-        "@emotion/hash": "^0.9.0",
-        "@emotion/unitless": "^0.8.0",
-        "@simonwep/pickr": "~1.8.0",
-        "array-tree-filter": "^2.1.0",
-        "async-validator": "^4.0.0",
-        "csstype": "^3.1.1",
-        "dayjs": "^1.10.5",
-        "dom-align": "^1.12.1",
-        "dom-scroll-into-view": "^2.0.0",
-        "lodash": "^4.17.21",
-        "lodash-es": "^4.17.15",
-        "resize-observer-polyfill": "^1.5.1",
-        "scroll-into-view-if-needed": "^2.2.25",
-        "shallow-equal": "^1.0.0",
-        "stylis": "^4.1.3",
-        "throttle-debounce": "^5.0.0",
-        "vue-types": "^3.0.0",
-        "warning": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12.22.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/ant-design-vue"
-      },
-      "peerDependencies": {
-        "vue": ">=3.2.0"
-      }
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/anymatch/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true,
-      "license": "Python-2.0"
-    },
-    "node_modules/array-tree-filter": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
-      "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==",
-      "license": "MIT"
-    },
-    "node_modules/async-validator": {
-      "version": "4.2.5",
-      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
-      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
-      "license": "MIT"
-    },
-    "node_modules/asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-      "license": "MIT"
-    },
-    "node_modules/axios": {
-      "version": "1.13.4",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz",
-      "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==",
-      "license": "MIT",
-      "dependencies": {
-        "follow-redirects": "^1.15.6",
-        "form-data": "^4.0.4",
-        "proxy-from-env": "^1.1.0"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/baseline-browser-mapping": {
-      "version": "2.9.19",
-      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
-      "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "bin": {
-        "baseline-browser-mapping": "dist/cli.js"
-      }
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.12",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
-      "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fill-range": "^7.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/browserslist": {
-      "version": "4.28.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
-      "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "baseline-browser-mapping": "^2.9.0",
-        "caniuse-lite": "^1.0.30001759",
-        "electron-to-chromium": "^1.5.263",
-        "node-releases": "^2.0.27",
-        "update-browserslist-db": "^1.2.0"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
-      "engines": {
-        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      }
-    },
-    "node_modules/call-bind-apply-helpers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
-      "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
-      "license": "MIT",
-      "dependencies": {
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/caniuse-lite": {
-      "version": "1.0.30001769",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
-      "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "CC-BY-4.0"
-    },
-    "node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/chokidar/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "license": "MIT",
-      "dependencies": {
-        "delayed-stream": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/compute-scroll-into-view": {
-      "version": "1.0.20",
-      "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
-      "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
-      "license": "MIT"
-    },
-    "node_modules/computeds": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
-      "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/confbox": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
-      "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/convert-source-map": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
-      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/core-js": {
-      "version": "3.48.0",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz",
-      "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/cross-spawn": {
-      "version": "7.0.6",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
-      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/csstype": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
-      "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
-      "license": "MIT"
-    },
-    "node_modules/dayjs": {
-      "version": "1.11.19",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
-      "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
-      "license": "MIT"
-    },
-    "node_modules/de-indent": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
-      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/debug": {
-      "version": "4.4.3",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
-      "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "^2.1.3"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/deep-is": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/doctrine": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/dom-align": {
-      "version": "1.12.4",
-      "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz",
-      "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==",
-      "license": "MIT"
-    },
-    "node_modules/dom-scroll-into-view": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
-      "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==",
-      "license": "MIT"
-    },
-    "node_modules/dunder-proto": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
-      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
-      "license": "MIT",
-      "dependencies": {
-        "call-bind-apply-helpers": "^1.0.1",
-        "es-errors": "^1.3.0",
-        "gopd": "^1.2.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/electron-to-chromium": {
-      "version": "1.5.286",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
-      "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/entities": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
-      "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.12"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
-      }
-    },
-    "node_modules/es-define-property": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
-      "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-errors": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
-      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-object-atoms": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
-      "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
-      "license": "MIT",
-      "dependencies": {
-        "es-errors": "^1.3.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-set-tostringtag": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
-      "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
-      "license": "MIT",
-      "dependencies": {
-        "es-errors": "^1.3.0",
-        "get-intrinsic": "^1.2.6",
-        "has-tostringtag": "^1.0.2",
-        "hasown": "^2.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/esbuild": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
-      "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "bin": {
-        "esbuild": "bin/esbuild"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.21.5",
-        "@esbuild/android-arm": "0.21.5",
-        "@esbuild/android-arm64": "0.21.5",
-        "@esbuild/android-x64": "0.21.5",
-        "@esbuild/darwin-arm64": "0.21.5",
-        "@esbuild/darwin-x64": "0.21.5",
-        "@esbuild/freebsd-arm64": "0.21.5",
-        "@esbuild/freebsd-x64": "0.21.5",
-        "@esbuild/linux-arm": "0.21.5",
-        "@esbuild/linux-arm64": "0.21.5",
-        "@esbuild/linux-ia32": "0.21.5",
-        "@esbuild/linux-loong64": "0.21.5",
-        "@esbuild/linux-mips64el": "0.21.5",
-        "@esbuild/linux-ppc64": "0.21.5",
-        "@esbuild/linux-riscv64": "0.21.5",
-        "@esbuild/linux-s390x": "0.21.5",
-        "@esbuild/linux-x64": "0.21.5",
-        "@esbuild/netbsd-x64": "0.21.5",
-        "@esbuild/openbsd-x64": "0.21.5",
-        "@esbuild/sunos-x64": "0.21.5",
-        "@esbuild/win32-arm64": "0.21.5",
-        "@esbuild/win32-ia32": "0.21.5",
-        "@esbuild/win32-x64": "0.21.5"
-      }
-    },
-    "node_modules/escalade": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
-      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/eslint": {
-      "version": "8.57.1",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
-      "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
-      "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.6.1",
-        "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.57.1",
-        "@humanwhocodes/config-array": "^0.13.0",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "@ungap/structured-clone": "^1.2.0",
-        "ajv": "^6.12.4",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.2.2",
-        "eslint-visitor-keys": "^3.4.3",
-        "espree": "^9.6.1",
-        "esquery": "^1.4.2",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "graphemer": "^1.4.0",
-        "ignore": "^5.2.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "bin": {
-        "eslint": "bin/eslint.js"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/eslint-scope": {
-      "version": "7.2.2",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
-      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/eslint-visitor-keys": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/espree": {
-      "version": "9.6.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
-      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "acorn": "^8.9.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.1"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/esquery": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
-      "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "estraverse": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estree-walker": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
-      "license": "MIT"
-    },
-    "node_modules/esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/exsolve": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz",
-      "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fast-glob": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.8"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
-    "node_modules/fast-glob/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fastq": {
-      "version": "1.20.1",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
-      "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "node_modules/file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "flat-cache": "^3.0.4"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-up": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/flat-cache": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
-      "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "flatted": "^3.2.9",
-        "keyv": "^4.5.3",
-        "rimraf": "^3.0.2"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "node_modules/flatted": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.15.11",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
-      "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "license": "MIT",
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/form-data": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
-      "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
-      "license": "MIT",
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "es-set-tostringtag": "^2.1.0",
-        "hasown": "^2.0.2",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
-      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/gensync": {
-      "version": "1.0.0-beta.2",
-      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
-      "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
-      "license": "MIT",
-      "dependencies": {
-        "call-bind-apply-helpers": "^1.0.2",
-        "es-define-property": "^1.0.1",
-        "es-errors": "^1.3.0",
-        "es-object-atoms": "^1.1.1",
-        "function-bind": "^1.1.2",
-        "get-proto": "^1.0.1",
-        "gopd": "^1.2.0",
-        "has-symbols": "^1.1.0",
-        "hasown": "^2.0.2",
-        "math-intrinsics": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-proto": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
-      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
-      "license": "MIT",
-      "dependencies": {
-        "dunder-proto": "^1.0.1",
-        "es-object-atoms": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/glob-parent": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.3"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/globals": {
-      "version": "13.24.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
-      "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "type-fest": "^0.20.2"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/gopd": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
-      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/graphemer": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
-      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
-      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-tostringtag": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
-      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
-      "license": "MIT",
-      "dependencies": {
-        "has-symbols": "^1.0.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/hasown": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
-      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
-      "license": "MIT",
-      "dependencies": {
-        "function-bind": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/ignore": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
-      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/import-fresh": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
-      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.16.1",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
-      "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "hasown": "^2.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-plain-object": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
-      "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "license": "MIT"
-    },
-    "node_modules/js-yaml": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
-      "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "argparse": "^2.0.1"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/jsesc": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
-      "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "jsesc": "bin/jsesc"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/json-buffer": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
-      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json5": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
-      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/keyv": {
-      "version": "4.5.4",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
-      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "json-buffer": "3.0.1"
-      }
-    },
-    "node_modules/levn": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/local-pkg": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz",
-      "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mlly": "^1.7.3",
-        "pkg-types": "^1.2.1"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.23",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
-      "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
-      "license": "MIT"
-    },
-    "node_modules/lodash-es": {
-      "version": "4.17.23",
-      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
-      "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
-      "license": "MIT"
-    },
-    "node_modules/lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.30.21",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
-      "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/sourcemap-codec": "^1.5.5"
-      }
-    },
-    "node_modules/math-intrinsics": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
-      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/micromatch": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
-      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "braces": "^3.0.3",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/micromatch/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/mlly": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz",
-      "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^8.15.0",
-        "pathe": "^2.0.3",
-        "pkg-types": "^1.3.1",
-        "ufo": "^1.6.1"
-      }
-    },
-    "node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/muggle-string": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz",
-      "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.11",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
-      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/nanopop": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/nanopop/-/nanopop-2.4.2.tgz",
-      "integrity": "sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==",
-      "license": "MIT"
-    },
-    "node_modules/natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/node-releases": {
-      "version": "2.0.27",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
-      "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/nprogress": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
-      "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
-      "license": "MIT"
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/optionator": {
-      "version": "0.9.4",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
-      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0",
-        "word-wrap": "^1.2.5"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/parent-module": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "callsites": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/path-browserify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
-      "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/pathe": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
-      "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/picocolors": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
-      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
-      "license": "ISC"
-    },
-    "node_modules/picomatch": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
-      "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/pinia": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz",
-      "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/devtools-api": "^6.6.3",
-        "vue-demi": "^0.14.10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/posva"
-      },
-      "peerDependencies": {
-        "typescript": ">=4.4.4",
-        "vue": "^2.7.0 || ^3.5.11"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/pkg-types": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
-      "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "confbox": "^0.1.8",
-        "mlly": "^1.7.4",
-        "pathe": "^2.0.1"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "8.5.6",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-      "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "nanoid": "^3.3.11",
-        "picocolors": "^1.1.1",
-        "source-map-js": "^1.2.1"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/prelude-ls": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/prettier": {
-      "version": "3.8.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
-      "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "prettier": "bin/prettier.cjs"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/prettier/prettier?sponsor=1"
-      }
-    },
-    "node_modules/proxy-from-env": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
-      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
-      "license": "MIT"
-    },
-    "node_modules/punycode": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/quansync": {
-      "version": "0.2.11",
-      "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz",
-      "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/antfu"
-        },
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/sxzz"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/readdirp/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/resize-observer-polyfill": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
-      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
-      "license": "MIT"
-    },
-    "node_modules/resolve": {
-      "version": "1.22.11",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
-      "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-core-module": "^2.16.1",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/reusify": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
-      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "deprecated": "Rimraf versions prior to v4 are no longer supported",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "4.57.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz",
-      "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "1.0.8"
-      },
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=18.0.0",
-        "npm": ">=8.0.0"
-      },
-      "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.57.1",
-        "@rollup/rollup-android-arm64": "4.57.1",
-        "@rollup/rollup-darwin-arm64": "4.57.1",
-        "@rollup/rollup-darwin-x64": "4.57.1",
-        "@rollup/rollup-freebsd-arm64": "4.57.1",
-        "@rollup/rollup-freebsd-x64": "4.57.1",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.57.1",
-        "@rollup/rollup-linux-arm-musleabihf": "4.57.1",
-        "@rollup/rollup-linux-arm64-gnu": "4.57.1",
-        "@rollup/rollup-linux-arm64-musl": "4.57.1",
-        "@rollup/rollup-linux-loong64-gnu": "4.57.1",
-        "@rollup/rollup-linux-loong64-musl": "4.57.1",
-        "@rollup/rollup-linux-ppc64-gnu": "4.57.1",
-        "@rollup/rollup-linux-ppc64-musl": "4.57.1",
-        "@rollup/rollup-linux-riscv64-gnu": "4.57.1",
-        "@rollup/rollup-linux-riscv64-musl": "4.57.1",
-        "@rollup/rollup-linux-s390x-gnu": "4.57.1",
-        "@rollup/rollup-linux-x64-gnu": "4.57.1",
-        "@rollup/rollup-linux-x64-musl": "4.57.1",
-        "@rollup/rollup-openbsd-x64": "4.57.1",
-        "@rollup/rollup-openharmony-arm64": "4.57.1",
-        "@rollup/rollup-win32-arm64-msvc": "4.57.1",
-        "@rollup/rollup-win32-ia32-msvc": "4.57.1",
-        "@rollup/rollup-win32-x64-gnu": "4.57.1",
-        "@rollup/rollup-win32-x64-msvc": "4.57.1",
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/scroll-into-view-if-needed": {
-      "version": "2.2.31",
-      "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
-      "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
-      "license": "MIT",
-      "dependencies": {
-        "compute-scroll-into-view": "^1.0.20"
-      }
-    },
-    "node_modules/scule": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
-      "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/shallow-equal": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
-      "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==",
-      "license": "MIT"
-    },
-    "node_modules/shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
-      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/strip-literal": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz",
-      "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "js-tokens": "^9.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/strip-literal/node_modules/js-tokens": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
-      "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/stylis": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz",
-      "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==",
-      "license": "MIT"
-    },
-    "node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/throttle-debounce": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
-      "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12.22"
-      }
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/type-check": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "prelude-ls": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/type-fest": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "5.9.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
-      "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
-      "devOptional": true,
-      "license": "Apache-2.0",
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=14.17"
-      }
-    },
-    "node_modules/ufo": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
-      "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/undici-types": {
-      "version": "6.21.0",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
-      "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/unimport": {
-      "version": "3.14.6",
-      "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.14.6.tgz",
-      "integrity": "sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@rollup/pluginutils": "^5.1.4",
-        "acorn": "^8.14.0",
-        "escape-string-regexp": "^5.0.0",
-        "estree-walker": "^3.0.3",
-        "fast-glob": "^3.3.3",
-        "local-pkg": "^1.0.0",
-        "magic-string": "^0.30.17",
-        "mlly": "^1.7.4",
-        "pathe": "^2.0.1",
-        "picomatch": "^4.0.2",
-        "pkg-types": "^1.3.0",
-        "scule": "^1.3.0",
-        "strip-literal": "^2.1.1",
-        "unplugin": "^1.16.1"
-      }
-    },
-    "node_modules/unimport/node_modules/confbox": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz",
-      "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/unimport/node_modules/escape-string-regexp": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
-      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/unimport/node_modules/estree-walker": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
-      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0"
-      }
-    },
-    "node_modules/unimport/node_modules/local-pkg": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz",
-      "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mlly": "^1.7.4",
-        "pkg-types": "^2.3.0",
-        "quansync": "^0.2.11"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/unimport/node_modules/local-pkg/node_modules/pkg-types": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
-      "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "confbox": "^0.2.2",
-        "exsolve": "^1.0.7",
-        "pathe": "^2.0.3"
-      }
-    },
-    "node_modules/unplugin": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz",
-      "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^8.14.0",
-        "webpack-virtual-modules": "^0.6.2"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/unplugin-auto-import": {
-      "version": "0.17.8",
-      "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.17.8.tgz",
-      "integrity": "sha512-CHryj6HzJ+n4ASjzwHruD8arhbdl+UXvhuAIlHDs15Y/IMecG3wrf7FVg4pVH/DIysbq/n0phIjNHAjl7TG7Iw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@antfu/utils": "^0.7.10",
-        "@rollup/pluginutils": "^5.1.0",
-        "fast-glob": "^3.3.2",
-        "local-pkg": "^0.5.0",
-        "magic-string": "^0.30.10",
-        "minimatch": "^9.0.4",
-        "unimport": "^3.7.2",
-        "unplugin": "^1.11.0"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      },
-      "peerDependencies": {
-        "@nuxt/kit": "^3.2.2",
-        "@vueuse/core": "*"
-      },
-      "peerDependenciesMeta": {
-        "@nuxt/kit": {
-          "optional": true
-        },
-        "@vueuse/core": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/unplugin-auto-import/node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/unplugin-auto-import/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/unplugin-vue-components": {
-      "version": "0.26.0",
-      "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.26.0.tgz",
-      "integrity": "sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@antfu/utils": "^0.7.6",
-        "@rollup/pluginutils": "^5.0.4",
-        "chokidar": "^3.5.3",
-        "debug": "^4.3.4",
-        "fast-glob": "^3.3.1",
-        "local-pkg": "^0.4.3",
-        "magic-string": "^0.30.3",
-        "minimatch": "^9.0.3",
-        "resolve": "^1.22.4",
-        "unplugin": "^1.4.0"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      },
-      "peerDependencies": {
-        "@babel/parser": "^7.15.8",
-        "@nuxt/kit": "^3.2.2",
-        "vue": "2 || 3"
-      },
-      "peerDependenciesMeta": {
-        "@babel/parser": {
-          "optional": true
-        },
-        "@nuxt/kit": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/unplugin-vue-components/node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/unplugin-vue-components/node_modules/local-pkg": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
-      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/unplugin-vue-components/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/update-browserslist-db": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
-      "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "escalade": "^3.2.0",
-        "picocolors": "^1.1.1"
-      },
-      "bin": {
-        "update-browserslist-db": "cli.js"
-      },
-      "peerDependencies": {
-        "browserslist": ">= 4.21.0"
-      }
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/vite": {
-      "version": "5.4.21",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
-      "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "esbuild": "^0.21.3",
-        "postcss": "^8.4.43",
-        "rollup": "^4.20.0"
-      },
-      "bin": {
-        "vite": "bin/vite.js"
-      },
-      "engines": {
-        "node": "^18.0.0 || >=20.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/vitejs/vite?sponsor=1"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.3"
-      },
-      "peerDependencies": {
-        "@types/node": "^18.0.0 || >=20.0.0",
-        "less": "*",
-        "lightningcss": "^1.21.0",
-        "sass": "*",
-        "sass-embedded": "*",
-        "stylus": "*",
-        "sugarss": "*",
-        "terser": "^5.4.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/node": {
-          "optional": true
-        },
-        "less": {
-          "optional": true
-        },
-        "lightningcss": {
-          "optional": true
-        },
-        "sass": {
-          "optional": true
-        },
-        "sass-embedded": {
-          "optional": true
-        },
-        "stylus": {
-          "optional": true
-        },
-        "sugarss": {
-          "optional": true
-        },
-        "terser": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vue": {
-      "version": "3.5.27",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz",
-      "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/compiler-dom": "3.5.27",
-        "@vue/compiler-sfc": "3.5.27",
-        "@vue/runtime-dom": "3.5.27",
-        "@vue/server-renderer": "3.5.27",
-        "@vue/shared": "3.5.27"
-      },
-      "peerDependencies": {
-        "typescript": "*"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vue-demi": {
-      "version": "0.14.10",
-      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
-      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "bin": {
-        "vue-demi-fix": "bin/vue-demi-fix.js",
-        "vue-demi-switch": "bin/vue-demi-switch.js"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      },
-      "peerDependencies": {
-        "@vue/composition-api": "^1.0.0-rc.1",
-        "vue": "^3.0.0-0 || ^2.6.0"
-      },
-      "peerDependenciesMeta": {
-        "@vue/composition-api": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vue-router": {
-      "version": "4.6.4",
-      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz",
-      "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==",
-      "license": "MIT",
-      "dependencies": {
-        "@vue/devtools-api": "^6.6.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/posva"
-      },
-      "peerDependencies": {
-        "vue": "^3.5.0"
-      }
-    },
-    "node_modules/vue-template-compiler": {
-      "version": "2.7.16",
-      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
-      "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "de-indent": "^1.0.2",
-        "he": "^1.2.0"
-      }
-    },
-    "node_modules/vue-tsc": {
-      "version": "1.8.27",
-      "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz",
-      "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@volar/typescript": "~1.11.1",
-        "@vue/language-core": "1.8.27",
-        "semver": "^7.5.4"
-      },
-      "bin": {
-        "vue-tsc": "bin/vue-tsc.js"
-      },
-      "peerDependencies": {
-        "typescript": "*"
-      }
-    },
-    "node_modules/vue-tsc/node_modules/semver": {
-      "version": "7.7.4",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
-      "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/vue-types": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/vue-types/-/vue-types-3.0.2.tgz",
-      "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
-      "license": "MIT",
-      "dependencies": {
-        "is-plain-object": "3.0.1"
-      },
-      "engines": {
-        "node": ">=10.15.0"
-      },
-      "peerDependencies": {
-        "vue": "^3.0.0"
-      }
-    },
-    "node_modules/warning": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
-      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "node_modules/webpack-virtual-modules": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
-      "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/word-wrap": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
-      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    }
-  }
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/package.json b/Code/WMS/WIDESEA_WMS_Frontend/package.json
deleted file mode 100644
index 6058e0d..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "name": "widesea-wms-frontend",
-  "version": "1.0.0",
-  "description": "WIDESEA WMS 浠撳簱绠$悊绯荤粺鍓嶇",
-  "author": "WIDESEA",
-  "license": "MIT",
-  "scripts": {
-    "dev": "vite",
-    "build": "vue-tsc && vite build",
-    "preview": "vite preview",
-    "lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx --fix",
-    "format": "prettier --write ."
-  },
-  "dependencies": {
-    "vue": "^3.4.0",
-    "vue-router": "^4.2.5",
-    "pinia": "^2.1.7",
-    "axios": "^1.6.2",
-    "ant-design-vue": "^4.1.0",
-    "@ant-design/icons-vue": "^7.0.1",
-    "dayjs": "^1.11.10",
-    "lodash-es": "^4.17.21",
-    "nprogress": "^0.2.0"
-  },
-  "devDependencies": {
-    "@types/node": "^20.10.5",
-    "@types/nprogress": "^0.2.3",
-    "@types/lodash-es": "^4.17.12",
-    "@vitejs/plugin-vue": "^5.0.0",
-    "@vitejs/plugin-vue-jsx": "^3.1.0",
-    "typescript": "^5.3.3",
-    "vite": "^5.0.8",
-    "vue-tsc": "^1.8.27",
-    "eslint": "^8.56.0",
-    "prettier": "^3.1.1",
-    "unplugin-auto-import": "^0.17.2",
-    "unplugin-vue-components": "^0.26.0"
-  }
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/App.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/App.vue
deleted file mode 100644
index f7f206a..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/App.vue
+++ /dev/null
@@ -1,14 +0,0 @@
-<template>
-  <router-view />
-</template>
-
-<script setup lang="ts">
-// App root component
-</script>
-
-<style>
-#app {
-  width: 100%;
-  height: 100%;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts
deleted file mode 100644
index d21b542..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import request from '../utils/request';
-import type { ApiResponse, LoginParams, LoginResult, UserInfo } from '../types/user';
-
-/**
- * 鐧诲綍
- */
-export function login(data: LoginParams) {
-  return request<ApiResponse<LoginResult>>({
-    url: '/User/login',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
- */
-export function getCurrentUserInfo() {
-  return request<ApiResponse<UserInfo>>({
-    url: '/User/getCurrentUserInfo',
-    method: 'post',
-  });
-}
-
-/**
- * 鍒锋柊 Token
- */
-export function replaceToken(token: string) {
-  return request<ApiResponse<string>>({
-    url: '/User/replaceToken',
-    method: 'post',
-    data: { token },
-  });
-}
-
-/**
- * 淇敼瀵嗙爜
- */
-export function modifyPassword(data: { oldPassword: string; newPassword: string }) {
-  return request<ApiResponse<boolean>>({
-    url: '/User/modifyPwd',
-    method: 'post',
-    data,
-  });
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts
deleted file mode 100644
index a5e6d04..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-import request from '../../utils/request';
-import type { ApiResponse, PageRequest, PageResponse } from '../../types/api';
-import type {
-  WarehouseInfo,
-  LocationInfo,
-  MaterielInfo,
-} from '../../types/common';
-
-/**
- * 鑾峰彇浠撳簱鍒楄〃
- */
-export function getWarehouseList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<WarehouseInfo>>>({
-    url: '/Warehouse/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 娣诲姞浠撳簱
- */
-export function addWarehouse(data: Partial<WarehouseInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/Warehouse/Add',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鏇存柊浠撳簱
- */
-export function updateWarehouse(data: Partial<WarehouseInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/Warehouse/Update',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鍒犻櫎浠撳簱
- */
-export function deleteWarehouse(ids: string[]) {
-  return request<ApiResponse<boolean>>({
-    url: '/Warehouse/Del',
-    method: 'post',
-    data: ids,
-  });
-}
-
-/**
- * 鑾峰彇璐т綅鍒楄〃
- */
-export function getLocationList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<LocationInfo>>>({
-    url: '/LocationInfo/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 娣诲姞璐т綅
- */
-export function addLocation(data: Partial<LocationInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/LocationInfo/Add',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鏇存柊璐т綅
- */
-export function updateLocation(data: Partial<LocationInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/LocationInfo/Update',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鍒犻櫎璐т綅
- */
-export function deleteLocation(ids: string[]) {
-  return request<ApiResponse<boolean>>({
-    url: '/LocationInfo/Del',
-    method: 'post',
-    data: ids,
-  });
-}
-
-/**
- * 鑾峰彇鐗╂枡鍒楄〃
- */
-export function getMaterielList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<MaterielInfo>>>({
-    url: '/MaterielInfo/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 娣诲姞鐗╂枡
- */
-export function addMateriel(data: Partial<MaterielInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/MaterielInfo/Add',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鏇存柊鐗╂枡
- */
-export function updateMateriel(data: Partial<MaterielInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/MaterielInfo/Update',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鍒犻櫎鐗╂枡
- */
-export function deleteMateriel(ids: string[]) {
-  return request<ApiResponse<boolean>>({
-    url: '/MaterielInfo/Del',
-    method: 'post',
-    data: ids,
-  });
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts
deleted file mode 100644
index 9b86dd9..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-import request from '../../utils/request';
-import type { ApiResponse, PageRequest, PageResponse } from '../../types/api';
-import type { UserInfo, RoleInfo, MenuInfo } from '../../types/user';
-
-/**
- * 鑾峰彇鐢ㄦ埛鍒楄〃
- */
-export function getUserList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<UserInfo>>>({
-    url: '/User/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 娣诲姞鐢ㄦ埛
- */
-export function addUser(data: Partial<UserInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/User/Add',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鏇存柊鐢ㄦ埛
- */
-export function updateUser(data: Partial<UserInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/User/Update',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鍒犻櫎鐢ㄦ埛
- */
-export function deleteUser(ids: string[]) {
-  return request<ApiResponse<boolean>>({
-    url: '/User/Del',
-    method: 'post',
-    data: ids,
-  });
-}
-
-/**
- * 鑾峰彇瑙掕壊鍒楄〃
- */
-export function getRoleList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<RoleInfo>>>({
-    url: '/Role/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 娣诲姞瑙掕壊
- */
-export function addRole(data: Partial<RoleInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/Role/Add',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鏇存柊瑙掕壊
- */
-export function updateRole(data: Partial<RoleInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/Role/Update',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鍒犻櫎瑙掕壊
- */
-export function deleteRole(ids: string[]) {
-  return request<ApiResponse<boolean>>({
-    url: '/Role/Del',
-    method: 'post',
-    data: ids,
-  });
-}
-
-/**
- * 鑾峰彇鑿滃崟鍒楄〃
- */
-export function getMenuList(data: PageRequest) {
-  return request<ApiResponse<PageResponse<MenuInfo>>>({
-    url: '/Menu/GetPageData',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 娣诲姞鑿滃崟
- */
-export function addMenu(data: Partial<MenuInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/Menu/Add',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鏇存柊鑿滃崟
- */
-export function updateMenu(data: Partial<MenuInfo>) {
-  return request<ApiResponse<boolean>>({
-    url: '/Menu/Update',
-    method: 'post',
-    data,
-  });
-}
-
-/**
- * 鍒犻櫎鑿滃崟
- */
-export function deleteMenu(ids: string[]) {
-  return request<ApiResponse<boolean>>({
-    url: '/Menu/Del',
-    method: 'post',
-    data: ids,
-  });
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css b/Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css
deleted file mode 100644
index 4614f9d..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css
+++ /dev/null
@@ -1,15 +0,0 @@
-* {
-  margin: 0;
-  padding: 0;
-  box-sizing: border-box;
-}
-
-html,
-body,
-#app {
-  width: 100%;
-  height: 100%;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
-    'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
-    'Noto Color Emoji';
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue
deleted file mode 100644
index 0a5ba9d..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue
+++ /dev/null
@@ -1,337 +0,0 @@
-<template>
-  <a-layout class="basic-layout">
-    <a-layout-sider v-model:collapsed="collapsed" :trigger="null" collapsible>
-      <div class="logo">
-        <h1>{{ collapsed ? 'WMS' : 'WIDESEA WMS' }}</h1>
-      </div>
-      <a-menu
-        v-model:selectedKeys="selectedKeys"
-        v-model:openKeys="openKeys"
-        theme="dark"
-        mode="inline"
-        :items="menuItems"
-        @click="handleMenuClick"
-      />
-    </a-layout-sider>
-    <a-layout>
-      <a-layout-header class="header">
-        <menu-unfold-outlined
-          v-if="collapsed"
-          class="trigger"
-          @click="() => (collapsed = !collapsed)"
-        />
-        <menu-fold-outlined v-else class="trigger" @click="() => (collapsed = !collapsed)" />
-        <div class="header-right">
-          <a-dropdown>
-            <a class="ant-dropdown-link" @click.prevent>
-              <user-outlined />
-              <span class="username">{{ userInfo?.UserTrueName || userInfo?.UserName }}</span>
-              <down-outlined />
-            </a>
-            <template #overlay>
-              <a-menu>
-                <a-menu-item key="profile">
-                  <user-outlined />
-                  涓汉淇℃伅
-                </a-menu-item>
-                <a-menu-item key="password">
-                  <lock-outlined />
-                  淇敼瀵嗙爜
-                </a-menu-item>
-                <a-menu-divider />
-                <a-menu-item key="logout" @click="handleLogout">
-                  <logout-outlined />
-                  閫�鍑虹櫥褰�
-                </a-menu-item>
-              </a-menu>
-            </template>
-          </a-dropdown>
-        </div>
-      </a-layout-header>
-      <a-layout-content class="content">
-        <router-view />
-      </a-layout-content>
-    </a-layout>
-  </a-layout>
-</template>
-
-<script setup lang="ts">
-import { ref, computed, watch, h } from 'vue';
-import { useRouter, useRoute } from 'vue-router';
-import { useAuthStore } from '../stores/auth';
-import {
-  MenuUnfoldOutlined,
-  MenuFoldOutlined,
-  UserOutlined,
-  DownOutlined,
-  LockOutlined,
-  LogoutOutlined,
-  HomeOutlined,
-  SettingOutlined,
-  TeamOutlined,
-  MenuOutlined,
-  DatabaseOutlined,
-  ShopOutlined,
-  AppstoreOutlined,
-  InboxOutlined,
-  ImportOutlined,
-  ExportOutlined,
-  FileTextOutlined,
-  ContainerOutlined,
-  UnorderedListOutlined,
-  AuditOutlined,
-  CarryOutOutlined,
-} from '@ant-design/icons-vue';
-import { Modal } from 'ant-design-vue';
-
-const router = useRouter();
-const route = useRoute();
-const authStore = useAuthStore();
-
-const collapsed = ref(false);
-const selectedKeys = ref<string[]>([]);
-const openKeys = ref<string[]>([]);
-
-const userInfo = computed(() => authStore.userInfo);
-
-// 鍥炬爣鏄犲皠
-const iconMap: Record<string, any> = {
-  HomeOutlined,
-  SettingOutlined,
-  UserOutlined,
-  TeamOutlined,
-  MenuOutlined,
-  DatabaseOutlined,
-  ShopOutlined,
-  AppstoreOutlined,
-  InboxOutlined,
-  ImportOutlined,
-  ExportOutlined,
-  FileTextOutlined,
-  ContainerOutlined,
-  UnorderedListOutlined,
-  AuditOutlined,
-  CarryOutOutlined,
-};
-
-// 鑿滃崟椤�
-const menuItems = computed(() => {
-  return [
-    {
-      key: '/dashboard',
-      icon: () => h(HomeOutlined),
-      label: '棣栭〉',
-      title: '棣栭〉',
-    },
-    {
-      key: '/system',
-      icon: () => h(SettingOutlined),
-      label: '绯荤粺绠$悊',
-      title: '绯荤粺绠$悊',
-      children: [
-        {
-          key: '/system/user',
-          icon: () => h(UserOutlined),
-          label: '鐢ㄦ埛绠$悊',
-          title: '鐢ㄦ埛绠$悊',
-        },
-        {
-          key: '/system/role',
-          icon: () => h(TeamOutlined),
-          label: '瑙掕壊绠$悊',
-          title: '瑙掕壊绠$悊',
-        },
-        {
-          key: '/system/menu',
-          icon: () => h(MenuOutlined),
-          label: '鑿滃崟绠$悊',
-          title: '鑿滃崟绠$悊',
-        },
-      ],
-    },
-    {
-      key: '/basic',
-      icon: () => h(DatabaseOutlined),
-      label: '鍩虹淇℃伅',
-      title: '鍩虹淇℃伅',
-      children: [
-        {
-          key: '/basic/warehouse',
-          icon: () => h(ShopOutlined),
-          label: '浠撳簱绠$悊',
-          title: '浠撳簱绠$悊',
-        },
-        {
-          key: '/basic/location',
-          icon: () => h(AppstoreOutlined),
-          label: '璐т綅绠$悊',
-          title: '璐т綅绠$悊',
-        },
-        {
-          key: '/basic/materiel',
-          icon: () => h(InboxOutlined),
-          label: '鐗╂枡绠$悊',
-          title: '鐗╂枡绠$悊',
-        },
-      ],
-    },
-    {
-      key: '/inbound',
-      icon: () => h(ImportOutlined),
-      label: '鍏ュ簱绠$悊',
-      title: '鍏ュ簱绠$悊',
-      children: [
-        {
-          key: '/inbound/order',
-          icon: () => h(FileTextOutlined),
-          label: '鍏ュ簱鍗曠鐞�',
-          title: '鍏ュ簱鍗曠鐞�',
-        },
-      ],
-    },
-    {
-      key: '/outbound',
-      icon: () => h(ExportOutlined),
-      label: '鍑哄簱绠$悊',
-      title: '鍑哄簱绠$悊',
-      children: [
-        {
-          key: '/outbound/order',
-          icon: () => h(FileTextOutlined),
-          label: '鍑哄簱鍗曠鐞�',
-          title: '鍑哄簱鍗曠鐞�',
-        },
-      ],
-    },
-    {
-      key: '/stock',
-      icon: () => h(ContainerOutlined),
-      label: '搴撳瓨绠$悊',
-      title: '搴撳瓨绠$悊',
-      children: [
-        {
-          key: '/stock/info',
-          icon: () => h(UnorderedListOutlined),
-          label: '搴撳瓨淇℃伅',
-          title: '搴撳瓨淇℃伅',
-        },
-      ],
-    },
-    {
-      key: '/check',
-      icon: () => h(AuditOutlined),
-      label: '鐩樼偣绠$悊',
-      title: '鐩樼偣绠$悊',
-      children: [
-        {
-          key: '/check/order',
-          icon: () => h(FileTextOutlined),
-          label: '鐩樼偣鍗曠鐞�',
-          title: '鐩樼偣鍗曠鐞�',
-        },
-      ],
-    },
-    {
-      key: '/task',
-      icon: () => h(CarryOutOutlined),
-      label: '浠诲姟绠$悊',
-      title: '浠诲姟绠$悊',
-      children: [
-        {
-          key: '/task/info',
-          icon: () => h(UnorderedListOutlined),
-          label: '浠诲姟淇℃伅',
-          title: '浠诲姟淇℃伅',
-        },
-      ],
-    },
-  ];
-});
-
-// 鐩戝惉璺敱鍙樺寲
-watch(
-  () => route.path,
-  (path) => {
-    selectedKeys.value = [path];
-    // 鑷姩灞曞紑鐖惰彍鍗�
-    const parts = path.split('/').filter(Boolean);
-    if (parts.length > 1) {
-      openKeys.value = [`/${parts[0]}`];
-    }
-  },
-  { immediate: true }
-);
-
-// 鑿滃崟鐐瑰嚮
-function handleMenuClick({ key }: { key: string }) {
-  router.push(key);
-}
-
-// 閫�鍑虹櫥褰�
-function handleLogout() {
-  Modal.confirm({
-    title: '纭閫�鍑�',
-    content: '纭畾瑕侀��鍑虹櫥褰曞悧锛�',
-    onOk() {
-      authStore.logout();
-      router.push('/login');
-    },
-  });
-}
-</script>
-
-<style scoped>
-.basic-layout {
-  min-height: 100vh;
-}
-
-.logo {
-  height: 64px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  background: rgba(255, 255, 255, 0.2);
-}
-
-.logo h1 {
-  color: #fff;
-  font-size: 20px;
-  font-weight: bold;
-  margin: 0;
-}
-
-.header {
-  background: #fff;
-  padding: 0 24px;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
-}
-
-.trigger {
-  font-size: 18px;
-  cursor: pointer;
-  transition: color 0.3s;
-}
-
-.trigger:hover {
-  color: #1890ff;
-}
-
-.header-right {
-  display: flex;
-  align-items: center;
-}
-
-.username {
-  margin: 0 8px;
-}
-
-.content {
-  margin: 24px;
-  padding: 24px;
-  background: #fff;
-  min-height: 280px;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/main.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/main.ts
deleted file mode 100644
index ce9142a..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/main.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { createApp } from 'vue';
-import { createPinia } from 'pinia';
-import Antd from 'ant-design-vue';
-import App from './App.vue';
-import router from './router';
-import 'ant-design-vue/dist/reset.css';
-import './assets/styles/index.css';
-
-const app = createApp(App);
-const pinia = createPinia();
-
-app.use(pinia);
-app.use(router);
-app.use(Antd);
-
-app.mount('#app');
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts
deleted file mode 100644
index 1c5f2b4..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import type { Router } from 'vue-router';
-import { useAuthStore } from '../stores/auth';
-import NProgress from 'nprogress';
-import 'nprogress/nprogress.css';
-
-NProgress.configure({ showSpinner: false });
-
-export function setupRouterGuard(router: Router) {
-  router.beforeEach((to, from, next) => {
-    NProgress.start();
-
-    const authStore = useAuthStore();
-    const requiresAuth = to.meta.requiresAuth !== false;
-
-    if (requiresAuth && !authStore.isLoggedIn) {
-      // 闇�瑕佽璇佷絾鏈櫥褰曪紝璺宠浆鍒扮櫥褰曢〉
-      next({ path: '/login', query: { redirect: to.fullPath } });
-    } else if (to.path === '/login' && authStore.isLoggedIn) {
-      // 宸茬櫥褰曡闂櫥褰曢〉锛岃烦杞埌棣栭〉
-      next({ path: '/' });
-    } else {
-      next();
-    }
-  });
-
-  router.afterEach(() => {
-    NProgress.done();
-  });
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts
deleted file mode 100644
index d277527..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { createRouter, createWebHistory } from 'vue-router';
-import { routes } from './routes';
-import { setupRouterGuard } from './guard';
-
-const router = createRouter({
-  history: createWebHistory(),
-  routes,
-});
-
-setupRouterGuard(router);
-
-export default router;
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts
deleted file mode 100644
index 6c51eeb..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts
+++ /dev/null
@@ -1,218 +0,0 @@
-import type { RouteRecordRaw } from 'vue-router';
-
-export const routes: RouteRecordRaw[] = [
-  {
-    path: '/login',
-    name: 'Login',
-    component: () => import('../views/login/index.vue'),
-    meta: {
-      title: '鐧诲綍',
-      requiresAuth: false,
-    },
-  },
-  {
-    path: '/',
-    name: 'Layout',
-    component: () => import('../layouts/BasicLayout.vue'),
-    redirect: '/dashboard',
-    meta: {
-      requiresAuth: true,
-    },
-    children: [
-      {
-        path: '/dashboard',
-        name: 'Dashboard',
-        component: () => import('../views/dashboard/index.vue'),
-        meta: {
-          title: '棣栭〉',
-          icon: 'HomeOutlined',
-        },
-      },
-      // 绯荤粺绠$悊
-      {
-        path: '/system',
-        name: 'System',
-        meta: {
-          title: '绯荤粺绠$悊',
-          icon: 'SettingOutlined',
-        },
-        children: [
-          {
-            path: '/system/user',
-            name: 'SystemUser',
-            component: () => import('../views/system/user/index.vue'),
-            meta: {
-              title: '鐢ㄦ埛绠$悊',
-              icon: 'UserOutlined',
-            },
-          },
-          {
-            path: '/system/role',
-            name: 'SystemRole',
-            component: () => import('../views/system/role/index.vue'),
-            meta: {
-              title: '瑙掕壊绠$悊',
-              icon: 'TeamOutlined',
-            },
-          },
-          {
-            path: '/system/menu',
-            name: 'SystemMenu',
-            component: () => import('../views/system/menu/index.vue'),
-            meta: {
-              title: '鑿滃崟绠$悊',
-              icon: 'MenuOutlined',
-            },
-          },
-        ],
-      },
-      // 鍩虹淇℃伅
-      {
-        path: '/basic',
-        name: 'Basic',
-        meta: {
-          title: '鍩虹淇℃伅',
-          icon: 'DatabaseOutlined',
-        },
-        children: [
-          {
-            path: '/basic/warehouse',
-            name: 'BasicWarehouse',
-            component: () => import('../views/basic/warehouse/index.vue'),
-            meta: {
-              title: '浠撳簱绠$悊',
-              icon: 'ShopOutlined',
-            },
-          },
-          {
-            path: '/basic/location',
-            name: 'BasicLocation',
-            component: () => import('../views/basic/location/index.vue'),
-            meta: {
-              title: '璐т綅绠$悊',
-              icon: 'AppstoreOutlined',
-            },
-          },
-          {
-            path: '/basic/materiel',
-            name: 'BasicMateriel',
-            component: () => import('../views/basic/materiel/index.vue'),
-            meta: {
-              title: '鐗╂枡绠$悊',
-              icon: 'InboxOutlined',
-            },
-          },
-        ],
-      },
-      // 鍏ュ簱绠$悊
-      {
-        path: '/inbound',
-        name: 'Inbound',
-        meta: {
-          title: '鍏ュ簱绠$悊',
-          icon: 'ImportOutlined',
-        },
-        children: [
-          {
-            path: '/inbound/order',
-            name: 'InboundOrder',
-            component: () => import('../views/inbound/order/index.vue'),
-            meta: {
-              title: '鍏ュ簱鍗曠鐞�',
-              icon: 'FileTextOutlined',
-            },
-          },
-        ],
-      },
-      // 鍑哄簱绠$悊
-      {
-        path: '/outbound',
-        name: 'Outbound',
-        meta: {
-          title: '鍑哄簱绠$悊',
-          icon: 'ExportOutlined',
-        },
-        children: [
-          {
-            path: '/outbound/order',
-            name: 'OutboundOrder',
-            component: () => import('../views/outbound/order/index.vue'),
-            meta: {
-              title: '鍑哄簱鍗曠鐞�',
-              icon: 'FileTextOutlined',
-            },
-          },
-        ],
-      },
-      // 搴撳瓨绠$悊
-      {
-        path: '/stock',
-        name: 'Stock',
-        meta: {
-          title: '搴撳瓨绠$悊',
-          icon: 'ContainerOutlined',
-        },
-        children: [
-          {
-            path: '/stock/info',
-            name: 'StockInfo',
-            component: () => import('../views/stock/info/index.vue'),
-            meta: {
-              title: '搴撳瓨淇℃伅',
-              icon: 'UnorderedListOutlined',
-            },
-          },
-        ],
-      },
-      // 鐩樼偣绠$悊
-      {
-        path: '/check',
-        name: 'Check',
-        meta: {
-          title: '鐩樼偣绠$悊',
-          icon: 'AuditOutlined',
-        },
-        children: [
-          {
-            path: '/check/order',
-            name: 'CheckOrder',
-            component: () => import('../views/check/order/index.vue'),
-            meta: {
-              title: '鐩樼偣鍗曠鐞�',
-              icon: 'FileTextOutlined',
-            },
-          },
-        ],
-      },
-      // 浠诲姟绠$悊
-      {
-        path: '/task',
-        name: 'Task',
-        meta: {
-          title: '浠诲姟绠$悊',
-          icon: 'CarryOutOutlined',
-        },
-        children: [
-          {
-            path: '/task/info',
-            name: 'TaskInfo',
-            component: () => import('../views/task/info/index.vue'),
-            meta: {
-              title: '浠诲姟淇℃伅',
-              icon: 'UnorderedListOutlined',
-            },
-          },
-        ],
-      },
-    ],
-  },
-  {
-    path: '/:pathMatch(.*)*',
-    name: 'NotFound',
-    component: () => import('../views/error/404.vue'),
-    meta: {
-      title: '404',
-      requiresAuth: false,
-    },
-  },
-];
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts
deleted file mode 100644
index 1899cc7..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { defineStore } from 'pinia';
-import { ref } from 'vue';
-
-export const useAppStore = defineStore('app', () => {
-  const collapsed = ref<boolean>(false);
-  const loading = ref<boolean>(false);
-
-  /**
-   * 鍒囨崲渚ц竟鏍忔姌鍙犵姸鎬�
-   */
-  function toggleCollapsed() {
-    collapsed.value = !collapsed.value;
-  }
-
-  /**
-   * 璁剧疆鍔犺浇鐘舵��
-   */
-  function setLoading(value: boolean) {
-    loading.value = value;
-  }
-
-  return {
-    collapsed,
-    loading,
-    toggleCollapsed,
-    setLoading,
-  };
-});
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts
deleted file mode 100644
index f707b7a..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { defineStore } from 'pinia';
-import { ref } from 'vue';
-import type { UserInfo } from '../types/user';
-import { getToken, setToken, getUserInfo, setUserInfo, clearAuth } from '../utils/auth';
-import { login as loginApi, getCurrentUserInfo } from '../api/auth';
-
-export const useAuthStore = defineStore('auth', () => {
-  const token = ref<string | null>(getToken());
-  const userInfo = ref<UserInfo | null>(getUserInfo());
-  const isLoggedIn = ref<boolean>(!!token.value);
-
-  /**
-   * 鐧诲綍
-   */
-  async function login(username: string, password: string) {
-    try {
-      const res = await loginApi({ UserName: username, Password: password });
-      if (res.status && res.data) {
-        const { token: newToken, ...user } = res.data;
-        token.value = newToken;
-        userInfo.value = user;
-        isLoggedIn.value = true;
-        setToken(newToken);
-        setUserInfo(user);
-        return true;
-      }
-      return false;
-    } catch (error) {
-      console.error('Login failed:', error);
-      return false;
-    }
-  }
-
-  /**
-   * 鐧诲嚭
-   */
-  function logout() {
-    token.value = null;
-    userInfo.value = null;
-    isLoggedIn.value = false;
-    clearAuth();
-  }
-
-  /**
-   * 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
-   */
-  async function fetchUserInfo() {
-    try {
-      const res = await getCurrentUserInfo();
-      if (res.status && res.data) {
-        userInfo.value = res.data;
-        setUserInfo(res.data);
-        return true;
-      }
-      return false;
-    } catch (error) {
-      console.error('Fetch user info failed:', error);
-      return false;
-    }
-  }
-
-  /**
-   * 鏇存柊 Token
-   */
-  function updateToken(newToken: string) {
-    token.value = newToken;
-    setToken(newToken);
-  }
-
-  return {
-    token,
-    userInfo,
-    isLoggedIn,
-    login,
-    logout,
-    fetchUserInfo,
-    updateToken,
-  };
-});
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts
deleted file mode 100644
index 4f0c9c3..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * API 鍝嶅簲鍩虹绫诲瀷
- */
-export interface ApiResponse<T = any> {
-  status: boolean;
-  message: string;
-  data: T;
-  total?: number;
-}
-
-/**
- * 鍒嗛〉璇锋眰鍙傛暟
- */
-export interface PageRequest {
-  page: number;
-  rows: number;
-  sort?: string;
-  order?: 'asc' | 'desc';
-  wheres?: WhereCondition[];
-}
-
-/**
- * 鏌ヨ鏉′欢
- */
-export interface WhereCondition {
-  name: string;
-  value: any;
-  displayType?: 'like' | 'equal' | 'notEqual' | 'greaterThan' | 'lessThan' | 'in' | 'notIn';
-}
-
-/**
- * 鍒嗛〉鍝嶅簲鏁版嵁
- */
-export interface PageResponse<T = any> {
-  rows: T[];
-  total: number;
-  page: number;
-  records: number;
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts
deleted file mode 100644
index d4048b9..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * 浠撳簱淇℃伅
- */
-export interface WarehouseInfo {
-  Id: string;
-  WarehouseCode: string;
-  WarehouseName: string;
-  WarehouseType?: string;
-  Enable: number;
-  CreateDate?: string;
-  Creator?: string;
-}
-
-/**
- * 璐т綅淇℃伅
- */
-export interface LocationInfo {
-  Id: string;
-  LocationCode: string;
-  LocationName: string;
-  WarehouseCode: string;
-  WarehouseName?: string;
-  LocationType?: string;
-  LocationStatus?: number;
-  Enable: number;
-  CreateDate?: string;
-}
-
-/**
- * 鐗╂枡淇℃伅
- */
-export interface MaterielInfo {
-  Id: string;
-  MaterielCode: string;
-  MaterielName: string;
-  MaterielType?: string;
-  Specification?: string;
-  Unit?: string;
-  Enable: number;
-  CreateDate?: string;
-}
-
-/**
- * 鍏ュ簱鍗曚俊鎭�
- */
-export interface InboundOrderInfo {
-  Id: string;
-  InboundOrderNo: string;
-  InboundType?: string;
-  WarehouseCode: string;
-  WarehouseName?: string;
-  OrderStatus?: number;
-  CreateDate?: string;
-  Creator?: string;
-}
-
-/**
- * 鍑哄簱鍗曚俊鎭�
- */
-export interface OutboundOrderInfo {
-  Id: string;
-  OutboundOrderNo: string;
-  OutboundType?: string;
-  WarehouseCode: string;
-  WarehouseName?: string;
-  OrderStatus?: number;
-  CreateDate?: string;
-  Creator?: string;
-}
-
-/**
- * 搴撳瓨淇℃伅
- */
-export interface StockInfo {
-  Id: string;
-  WarehouseCode: string;
-  WarehouseName?: string;
-  LocationCode: string;
-  MaterielCode: string;
-  MaterielName?: string;
-  Quantity: number;
-  AvailableQuantity: number;
-  LockedQuantity: number;
-  CreateDate?: string;
-}
-
-/**
- * 鐩樼偣鍗曚俊鎭�
- */
-export interface CheckOrderInfo {
-  Id: string;
-  CheckOrderNo: string;
-  WarehouseCode: string;
-  WarehouseName?: string;
-  CheckStatus?: number;
-  CreateDate?: string;
-  Creator?: string;
-}
-
-/**
- * 浠诲姟淇℃伅
- */
-export interface TaskInfo {
-  Id: string;
-  TaskNo: string;
-  TaskType?: string;
-  TaskStatus?: number;
-  WarehouseCode: string;
-  CreateDate?: string;
-  Creator?: string;
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts
deleted file mode 100644
index d6dadc9..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * 鐢ㄦ埛淇℃伅
- */
-export interface UserInfo {
-  Id: string;
-  UserName: string;
-  UserTrueName: string;
-  Role_Id: string;
-  RoleName?: string;
-  DepartmentName?: string;
-  Enable: number;
-  CreateDate?: string;
-  Creator?: string;
-  Token?: string;
-}
-
-/**
- * 鐧诲綍璇锋眰鍙傛暟
- */
-export interface LoginParams {
-  UserName: string;
-  Password: string;
-}
-
-/**
- * 鐧诲綍鍝嶅簲鏁版嵁
- */
-export interface LoginResult {
-  token: string;
-  userInfo: UserInfo;
-}
-
-/**
- * 瑙掕壊淇℃伅
- */
-export interface RoleInfo {
-  Id: string;
-  RoleName: string;
-  OrderNo?: number;
-  Enable: number;
-  CreateDate?: string;
-  Creator?: string;
-}
-
-/**
- * 鑿滃崟淇℃伅
- */
-export interface MenuInfo {
-  Id: string;
-  ParentId?: string;
-  MenuName: string;
-  Url?: string;
-  Icon?: string;
-  OrderNo?: number;
-  Enable: number;
-  children?: MenuInfo[];
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts
deleted file mode 100644
index 3ace419..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-const TOKEN_KEY = 'token';
-const USER_INFO_KEY = 'userInfo';
-
-/**
- * 鑾峰彇 Token
- */
-export function getToken(): string | null {
-  return localStorage.getItem(TOKEN_KEY);
-}
-
-/**
- * 璁剧疆 Token
- */
-export function setToken(token: string): void {
-  localStorage.setItem(TOKEN_KEY, token);
-}
-
-/**
- * 绉婚櫎 Token
- */
-export function removeToken(): void {
-  localStorage.removeItem(TOKEN_KEY);
-}
-
-/**
- * 鑾峰彇鐢ㄦ埛淇℃伅
- */
-export function getUserInfo(): any {
-  const userInfo = localStorage.getItem(USER_INFO_KEY);
-  return userInfo ? JSON.parse(userInfo) : null;
-}
-
-/**
- * 璁剧疆鐢ㄦ埛淇℃伅
- */
-export function setUserInfo(userInfo: any): void {
-  localStorage.setItem(USER_INFO_KEY, JSON.stringify(userInfo));
-}
-
-/**
- * 绉婚櫎鐢ㄦ埛淇℃伅
- */
-export function removeUserInfo(): void {
-  localStorage.removeItem(USER_INFO_KEY);
-}
-
-/**
- * 娓呴櫎鎵�鏈夎璇佷俊鎭�
- */
-export function clearAuth(): void {
-  removeToken();
-  removeUserInfo();
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts
deleted file mode 100644
index 07549ae..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import dayjs from 'dayjs';
-
-/**
- * 鏍煎紡鍖栨棩鏈�
- */
-export function formatDate(date: string | Date, format = 'YYYY-MM-DD HH:mm:ss'): string {
-  if (!date) return '';
-  return dayjs(date).format(format);
-}
-
-/**
- * 鏍煎紡鍖栨棩鏈燂紙浠呮棩鏈燂級
- */
-export function formatDateOnly(date: string | Date): string {
-  return formatDate(date, 'YYYY-MM-DD');
-}
-
-/**
- * 娣辨嫹璐�
- */
-export function deepClone<T>(obj: T): T {
-  return JSON.parse(JSON.stringify(obj));
-}
-
-/**
- * 闃叉姈
- */
-export function debounce<T extends (...args: any[]) => any>(
-  func: T,
-  wait: number
-): (...args: Parameters<T>) => void {
-  let timeout: NodeJS.Timeout | null = null;
-  return function (this: any, ...args: Parameters<T>) {
-    if (timeout) clearTimeout(timeout);
-    timeout = setTimeout(() => {
-      func.apply(this, args);
-    }, wait);
-  };
-}
-
-/**
- * 鑺傛祦
- */
-export function throttle<T extends (...args: any[]) => any>(
-  func: T,
-  wait: number
-): (...args: Parameters<T>) => void {
-  let timeout: NodeJS.Timeout | null = null;
-  return function (this: any, ...args: Parameters<T>) {
-    if (!timeout) {
-      timeout = setTimeout(() => {
-        timeout = null;
-        func.apply(this, args);
-      }, wait);
-    }
-  };
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts b/Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts
deleted file mode 100644
index 07dab8d..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts
+++ /dev/null
@@ -1,130 +0,0 @@
-import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
-import { message } from 'ant-design-vue';
-import { getToken, setToken, clearAuth } from './auth';
-import router from '../router';
-
-// 鍒涘缓 axios 瀹炰緥
-const service: AxiosInstance = axios.create({
-  baseURL: '/api',
-  timeout: 30000,
-  headers: {
-    'Content-Type': 'application/json;charset=UTF-8',
-  },
-});
-
-// 璇锋眰鎷︽埅鍣�
-service.interceptors.request.use(
-  (config: any) => {
-    // 娣诲姞 Token 鍒拌姹傚ご
-    const token = getToken();
-    if (token) {
-      config.headers.Authorization = `Bearer ${token}`;
-    }
-
-    // 纭繚 POST 璇锋眰鐨勬暟鎹姝g‘搴忓垪鍖栦负 JSON
-    if (config.method === 'post' && config.data) {
-      // 濡傛灉 data 涓嶆槸 FormData锛岀‘淇濆畠鏄� JSON 瀛楃涓�
-      if (!(config.data instanceof FormData)) {
-        config.headers['Content-Type'] = 'application/json;charset=UTF-8';
-        // axios 浼氳嚜鍔ㄥ皢瀵硅薄杞崲涓� JSON锛屼絾鎴戜滑纭繚 Content-Type 姝g‘
-      }
-    }
-
-    // 寮�鍙戠幆澧冧笅鎵撳嵃璇锋眰淇℃伅
-    if (import.meta.env.DEV) {
-      console.log('Request:', {
-        url: config.url,
-        method: config.method,
-        data: config.data,
-        headers: config.headers,
-      });
-    }
-
-    return config;
-  },
-  (error: AxiosError) => {
-    console.error('Request error:', error);
-    return Promise.reject(error);
-  }
-);
-
-// 鍝嶅簲鎷︽埅鍣�
-service.interceptors.response.use(
-  (response: AxiosResponse) => {
-    // 妫�鏌ユ槸鍚﹂渶瑕佸埛鏂� Token
-    const expHeader = response.headers['widesea_exp'];
-    if (expHeader === '1') {
-      // Token 鍗冲皢杩囨湡锛屽埛鏂� Token
-      refreshToken();
-    }
-
-    const res = response.data;
-
-    // 濡傛灉鍝嶅簲鐘舵�佷笉鏄� true锛屾樉绀洪敊璇秷鎭�
-    if (res.status === false) {
-      message.error(res.message || '璇锋眰澶辫触');
-      return Promise.reject(new Error(res.message || '璇锋眰澶辫触'));
-    }
-
-    return res;
-  },
-  (error: AxiosError) => {
-    console.error('Response error:', error);
-
-    if (error.response) {
-      const status = error.response.status;
-
-      switch (status) {
-        case 401:
-          // 鏈璇侊紝娓呴櫎 Token 骞惰烦杞埌鐧诲綍椤�
-          message.error('鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�');
-          clearAuth();
-          router.push('/login');
-          break;
-        case 403:
-          message.error('娌℃湁鏉冮檺璁块棶璇ヨ祫婧�');
-          break;
-        case 404:
-          message.error('璇锋眰鐨勮祫婧愪笉瀛樺湪');
-          break;
-        case 500:
-          message.error('鏈嶅姟鍣ㄩ敊璇�');
-          break;
-        default:
-          message.error(error.message || '璇锋眰澶辫触');
-      }
-    } else {
-      message.error('缃戠粶閿欒锛岃妫�鏌ョ綉缁滆繛鎺�');
-    }
-
-    return Promise.reject(error);
-  }
-);
-
-/**
- * 鍒锋柊 Token
- */
-async function refreshToken() {
-  try {
-    const token = getToken();
-    if (!token) return;
-
-    const response = await axios.post(
-      '/api/User/replaceToken',
-      { token },
-      {
-        headers: {
-          Authorization: `Bearer ${token}`,
-        },
-      }
-    );
-
-    if (response.data.status && response.data.data) {
-      setToken(response.data.data);
-    }
-  } catch (error) {
-    console.error('Token refresh failed:', error);
-  }
-}
-
-export default service;
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue
deleted file mode 100644
index 278c07e..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue
+++ /dev/null
@@ -1,230 +0,0 @@
-<template>
-  <div class="location-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板璐т綅
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储璐т綅缂栫爜"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'LocationStatus'">
-            <a-tag :color="record.LocationStatus === 1 ? 'green' : 'orange'">
-              {{ record.LocationStatus === 1 ? '绌洪棽' : '鍗犵敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'Enable'">
-            <a-tag :color="record.Enable === 1 ? 'green' : 'red'">
-              {{ record.Enable === 1 ? '鍚敤' : '绂佺敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-
-    <a-modal
-      v-model:open="modalVisible"
-      :title="modalTitle"
-      @ok="handleModalOk"
-      @cancel="handleModalCancel"
-    >
-      <a-form
-        ref="formRef"
-        :model="formState"
-        :rules="rules"
-        :label-col="{ span: 6 }"
-        :wrapper-col="{ span: 16 }"
-      >
-        <a-form-item label="璐т綅缂栫爜" name="LocationCode">
-          <a-input v-model:value="formState.LocationCode" />
-        </a-form-item>
-        <a-form-item label="璐т綅鍚嶇О" name="LocationName">
-          <a-input v-model:value="formState.LocationName" />
-        </a-form-item>
-        <a-form-item label="浠撳簱缂栫爜" name="WarehouseCode">
-          <a-input v-model:value="formState.WarehouseCode" />
-        </a-form-item>
-        <a-form-item label="璐т綅绫诲瀷" name="LocationType">
-          <a-input v-model:value="formState.LocationType" />
-        </a-form-item>
-        <a-form-item label="鐘舵��" name="Enable">
-          <a-select v-model:value="formState.Enable">
-            <a-select-option :value="1">鍚敤</a-select-option>
-            <a-select-option :value="0">绂佺敤</a-select-option>
-          </a-select>
-        </a-form-item>
-      </a-form>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import {
-  getLocationList,
-  addLocation,
-  updateLocation,
-  deleteLocation,
-} from '../../../api/basic';
-import type { LocationInfo } from '../../../types/common';
-
-const columns = [
-  { title: '璐т綅缂栫爜', dataIndex: 'LocationCode', key: 'LocationCode' },
-  { title: '璐т綅鍚嶇О', dataIndex: 'LocationName', key: 'LocationName' },
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '璐т綅绫诲瀷', dataIndex: 'LocationType', key: 'LocationType' },
-  { title: '璐т綅鐘舵��', dataIndex: 'LocationStatus', key: 'LocationStatus' },
-  { title: '鐘舵��', dataIndex: 'Enable', key: 'Enable' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鎿嶄綔', key: 'action', width: 150 },
-];
-
-const dataSource = ref<LocationInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-const modalVisible = ref(false);
-const modalTitle = ref('鏂板璐т綅');
-const formRef = ref();
-const formState = reactive<Partial<LocationInfo>>({
-  LocationCode: '',
-  LocationName: '',
-  WarehouseCode: '',
-  LocationType: '',
-  Enable: 1,
-});
-
-const rules = {
-  LocationCode: [{ required: true, message: '璇疯緭鍏ヨ揣浣嶇紪鐮�', trigger: 'blur' }],
-  LocationName: [{ required: true, message: '璇疯緭鍏ヨ揣浣嶅悕绉�', trigger: 'blur' }],
-  WarehouseCode: [{ required: true, message: '璇疯緭鍏ヤ粨搴撶紪鐮�', trigger: 'blur' }],
-};
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    const res = await getLocationList({
-      page: pagination.current,
-      rows: pagination.pageSize,
-      sort: 'CreateDate',
-      order: 'desc',
-      wheres: searchText.value
-        ? [{ name: 'LocationCode', value: searchText.value, displayType: 'like' }]
-        : [],
-    });
-    if (res.status && res.data) {
-      dataSource.value = res.data.rows || [];
-      pagination.total = res.data.total || 0;
-    }
-  } catch (error) {
-    console.error('Fetch data error:', error);
-  } finally {
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  modalTitle.value = '鏂板璐т綅';
-  Object.assign(formState, {
-    Id: undefined,
-    LocationCode: '',
-    LocationName: '',
-    WarehouseCode: '',
-    LocationType: '',
-    Enable: 1,
-  });
-  modalVisible.value = true;
-}
-
-function handleEdit(record: LocationInfo) {
-  modalTitle.value = '缂栬緫璐т綅';
-  Object.assign(formState, record);
-  modalVisible.value = true;
-}
-
-async function handleModalOk() {
-  try {
-    await formRef.value.validate();
-    const api = formState.Id ? updateLocation : addLocation;
-    const res = await api(formState);
-    if (res.status) {
-      message.success(formState.Id ? '鏇存柊鎴愬姛' : '鏂板鎴愬姛');
-      modalVisible.value = false;
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Save error:', error);
-  }
-}
-
-function handleModalCancel() {
-  modalVisible.value = false;
-  formRef.value?.resetFields();
-}
-
-async function handleDelete(record: LocationInfo) {
-  try {
-    const res = await deleteLocation([record.Id]);
-    if (res.status) {
-      message.success('鍒犻櫎鎴愬姛');
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Delete error:', error);
-  }
-}
-</script>
-
-<style scoped>
-.location-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue
deleted file mode 100644
index 3f0d409..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue
+++ /dev/null
@@ -1,229 +0,0 @@
-<template>
-  <div class="materiel-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板鐗╂枡
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储鐗╂枡鍚嶇О"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'Enable'">
-            <a-tag :color="record.Enable === 1 ? 'green' : 'red'">
-              {{ record.Enable === 1 ? '鍚敤' : '绂佺敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-
-    <a-modal
-      v-model:open="modalVisible"
-      :title="modalTitle"
-      @ok="handleModalOk"
-      @cancel="handleModalCancel"
-    >
-      <a-form
-        ref="formRef"
-        :model="formState"
-        :rules="rules"
-        :label-col="{ span: 6 }"
-        :wrapper-col="{ span: 16 }"
-      >
-        <a-form-item label="鐗╂枡缂栫爜" name="MaterielCode">
-          <a-input v-model:value="formState.MaterielCode" />
-        </a-form-item>
-        <a-form-item label="鐗╂枡鍚嶇О" name="MaterielName">
-          <a-input v-model:value="formState.MaterielName" />
-        </a-form-item>
-        <a-form-item label="鐗╂枡绫诲瀷" name="MaterielType">
-          <a-input v-model:value="formState.MaterielType" />
-        </a-form-item>
-        <a-form-item label="瑙勬牸" name="Specification">
-          <a-input v-model:value="formState.Specification" />
-        </a-form-item>
-        <a-form-item label="鍗曚綅" name="Unit">
-          <a-input v-model:value="formState.Unit" />
-        </a-form-item>
-        <a-form-item label="鐘舵��" name="Enable">
-          <a-select v-model:value="formState.Enable">
-            <a-select-option :value="1">鍚敤</a-select-option>
-            <a-select-option :value="0">绂佺敤</a-select-option>
-          </a-select>
-        </a-form-item>
-      </a-form>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import {
-  getMaterielList,
-  addMateriel,
-  updateMateriel,
-  deleteMateriel,
-} from '../../../api/basic';
-import type { MaterielInfo } from '../../../types/common';
-
-const columns = [
-  { title: '鐗╂枡缂栫爜', dataIndex: 'MaterielCode', key: 'MaterielCode' },
-  { title: '鐗╂枡鍚嶇О', dataIndex: 'MaterielName', key: 'MaterielName' },
-  { title: '鐗╂枡绫诲瀷', dataIndex: 'MaterielType', key: 'MaterielType' },
-  { title: '瑙勬牸', dataIndex: 'Specification', key: 'Specification' },
-  { title: '鍗曚綅', dataIndex: 'Unit', key: 'Unit' },
-  { title: '鐘舵��', dataIndex: 'Enable', key: 'Enable' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鎿嶄綔', key: 'action', width: 150 },
-];
-
-const dataSource = ref<MaterielInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-const modalVisible = ref(false);
-const modalTitle = ref('鏂板鐗╂枡');
-const formRef = ref();
-const formState = reactive<Partial<MaterielInfo>>({
-  MaterielCode: '',
-  MaterielName: '',
-  MaterielType: '',
-  Specification: '',
-  Unit: '',
-  Enable: 1,
-});
-
-const rules = {
-  MaterielCode: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鐮�', trigger: 'blur' }],
-  MaterielName: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉�', trigger: 'blur' }],
-};
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    const res = await getMaterielList({
-      page: pagination.current,
-      rows: pagination.pageSize,
-      sort: 'CreateDate',
-      order: 'desc',
-      wheres: searchText.value
-        ? [{ name: 'MaterielName', value: searchText.value, displayType: 'like' }]
-        : [],
-    });
-    if (res.status && res.data) {
-      dataSource.value = res.data.rows || [];
-      pagination.total = res.data.total || 0;
-    }
-  } catch (error) {
-    console.error('Fetch data error:', error);
-  } finally {
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  modalTitle.value = '鏂板鐗╂枡';
-  Object.assign(formState, {
-    Id: undefined,
-    MaterielCode: '',
-    MaterielName: '',
-    MaterielType: '',
-    Specification: '',
-    Unit: '',
-    Enable: 1,
-  });
-  modalVisible.value = true;
-}
-
-function handleEdit(record: MaterielInfo) {
-  modalTitle.value = '缂栬緫鐗╂枡';
-  Object.assign(formState, record);
-  modalVisible.value = true;
-}
-
-async function handleModalOk() {
-  try {
-    await formRef.value.validate();
-    const api = formState.Id ? updateMateriel : addMateriel;
-    const res = await api(formState);
-    if (res.status) {
-      message.success(formState.Id ? '鏇存柊鎴愬姛' : '鏂板鎴愬姛');
-      modalVisible.value = false;
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Save error:', error);
-  }
-}
-
-function handleModalCancel() {
-  modalVisible.value = false;
-  formRef.value?.resetFields();
-}
-
-async function handleDelete(record: MaterielInfo) {
-  try {
-    const res = await deleteMateriel([record.Id]);
-    if (res.status) {
-      message.success('鍒犻櫎鎴愬姛');
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Delete error:', error);
-  }
-}
-</script>
-
-<style scoped>
-.materiel-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue
deleted file mode 100644
index d1d8c03..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue
+++ /dev/null
@@ -1,217 +0,0 @@
-<template>
-  <div class="warehouse-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板浠撳簱
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储浠撳簱鍚嶇О"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'Enable'">
-            <a-tag :color="record.Enable === 1 ? 'green' : 'red'">
-              {{ record.Enable === 1 ? '鍚敤' : '绂佺敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-
-    <a-modal
-      v-model:open="modalVisible"
-      :title="modalTitle"
-      @ok="handleModalOk"
-      @cancel="handleModalCancel"
-    >
-      <a-form
-        ref="formRef"
-        :model="formState" 
-        :rules="rules"
-        :label-col="{ span: 6 }"
-        :wrapper-col="{ span: 16 }"
-      >
-        <a-form-item label="浠撳簱缂栫爜" name="WarehouseCode">
-          <a-input v-model:value="formState.WarehouseCode" />
-        </a-form-item>
-        <a-form-item label="浠撳簱鍚嶇О" name="WarehouseName">
-          <a-input v-model:value="formState.WarehouseName" />
-        </a-form-item>
-        <a-form-item label="浠撳簱绫诲瀷" name="WarehouseType">
-          <a-input v-model:value="formState.WarehouseType" />
-        </a-form-item>
-        <a-form-item label="鐘舵��" name="Enable">
-          <a-select v-model:value="formState.Enable">
-            <a-select-option :value="1">鍚敤</a-select-option>
-            <a-select-option :value="0">绂佺敤</a-select-option>
-          </a-select>
-        </a-form-item>
-      </a-form>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import {
-  getWarehouseList,
-  addWarehouse,
-  updateWarehouse,
-  deleteWarehouse,
-} from '../../../api/basic';
-import type { WarehouseInfo } from '../../../types/common';
-
-const columns = [
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '浠撳簱鍚嶇О', dataIndex: 'WarehouseName', key: 'WarehouseName' },
-  { title: '浠撳簱绫诲瀷', dataIndex: 'WarehouseType', key: 'WarehouseType' },
-  { title: '鐘舵��', dataIndex: 'Enable', key: 'Enable' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鎿嶄綔', key: 'action', width: 150 },
-];
-
-const dataSource = ref<WarehouseInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-const modalVisible = ref(false);
-const modalTitle = ref('鏂板浠撳簱');
-const formRef = ref();
-const formState = reactive<Partial<WarehouseInfo>>({
-  WarehouseCode: '',
-  WarehouseName: '',
-  WarehouseType: '',
-  Enable: 1,
-});
-
-const rules = {
-  WarehouseCode: [{ required: true, message: '璇疯緭鍏ヤ粨搴撶紪鐮�', trigger: 'blur' }],
-  WarehouseName: [{ required: true, message: '璇疯緭鍏ヤ粨搴撳悕绉�', trigger: 'blur' }],
-};
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    const res = await getWarehouseList({
-      page: pagination.current,
-      rows: pagination.pageSize,
-      sort: 'CreateDate',
-      order: 'desc',
-      wheres: searchText.value
-        ? [{ name: 'WarehouseName', value: searchText.value, displayType: 'like' }]
-        : [],
-    });
-    if (res.status && res.data) {
-      dataSource.value = res.data.rows || [];
-      pagination.total = res.data.total || 0;
-    }
-  } catch (error) {
-    console.error('Fetch data error:', error);
-  } finally {
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  modalTitle.value = '鏂板浠撳簱';
-  Object.assign(formState, {
-    Id: undefined,
-    WarehouseCode: '',
-    WarehouseName: '',
-    WarehouseType: '',
-    Enable: 1,
-  });
-  modalVisible.value = true;
-}
-
-function handleEdit(record: WarehouseInfo) {
-  modalTitle.value = '缂栬緫浠撳簱';
-  Object.assign(formState, record);
-  modalVisible.value = true;
-}
-
-async function handleModalOk() {
-  try {
-    await formRef.value.validate();
-    const api = formState.Id ? updateWarehouse : addWarehouse;
-    const res = await api(formState);
-    if (res.status) {
-      message.success(formState.Id ? '鏇存柊鎴愬姛' : '鏂板鎴愬姛');
-      modalVisible.value = false;
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Save error:', error);
-  }
-}
-
-function handleModalCancel() {
-  modalVisible.value = false;
-  formRef.value?.resetFields();
-}
-
-async function handleDelete(record: WarehouseInfo) {
-  try {
-    const res = await deleteWarehouse([record.Id]);
-    if (res.status) {
-      message.success('鍒犻櫎鎴愬姛');
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Delete error:', error);
-  }
-}
-</script>
-
-<style scoped>
-.warehouse-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue
deleted file mode 100644
index ef52b48..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue
+++ /dev/null
@@ -1,145 +0,0 @@
-<template>
-  <div class="check-order-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板鐩樼偣鍗�
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储鐩樼偣鍗曞彿"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'CheckStatus'">
-            <a-tag :color="getStatusColor(record.CheckStatus)">
-              {{ getStatusText(record.CheckStatus) }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleView(record)">鏌ョ湅</a>
-              <a-divider type="vertical" />
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import type { CheckOrderInfo } from '../../../types/common';
-
-const columns = [
-  { title: '鐩樼偣鍗曞彿', dataIndex: 'CheckOrderNo', key: 'CheckOrderNo' },
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '浠撳簱鍚嶇О', dataIndex: 'WarehouseName', key: 'WarehouseName' },
-  { title: '鐩樼偣鐘舵��', dataIndex: 'CheckStatus', key: 'CheckStatus' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鍒涘缓浜�', dataIndex: 'Creator', key: 'Creator' },
-  { title: '鎿嶄綔', key: 'action', width: 200 },
-];
-
-const dataSource = ref<CheckOrderInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    // 杩欓噷璋冪敤瀹為檯鐨� API
-    setTimeout(() => {
-      dataSource.value = [];
-      pagination.total = 0;
-      loading.value = false;
-    }, 500);
-  } catch (error) {
-    console.error('Fetch data error:', error);
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  message.info('鏂板鐩樼偣鍗曞姛鑳�');
-}
-
-function handleView(record: CheckOrderInfo) {
-  message.info(`鏌ョ湅鐩樼偣鍗�: ${record.CheckOrderNo}`);
-}
-
-function handleEdit(record: CheckOrderInfo) {
-  message.info(`缂栬緫鐩樼偣鍗�: ${record.CheckOrderNo}`);
-}
-
-async function handleDelete(record: CheckOrderInfo) {
-  message.success('鍒犻櫎鎴愬姛');
-  fetchData();
-}
-
-function getStatusColor(status?: number) {
-  const colorMap: Record<number, string> = {
-    0: 'default',
-    1: 'processing',
-    2: 'success',
-  };
-  return colorMap[status || 0] || 'default';
-}
-
-function getStatusText(status?: number) {
-  const textMap: Record<number, string> = {
-    0: '寰呯洏鐐�',
-    1: '鐩樼偣涓�',
-    2: '宸插畬鎴�',
-  };
-  return textMap[status || 0] || '鏈煡';
-}
-</script>
-
-<style scoped>
-.check-order-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue
deleted file mode 100644
index ad867b3..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
-  <div class="dashboard">
-    <a-row :gutter="16">
-      <a-col :span="6">
-        <a-card>
-          <a-statistic
-            title="鍏ュ簱鍗曟�绘暟"
-            :value="statistics.inboundCount"
-            :prefix="() => h(ImportOutlined)"
-          />
-        </a-card>
-      </a-col>
-      <a-col :span="6">
-        <a-card>
-          <a-statistic
-            title="鍑哄簱鍗曟�绘暟"
-            :value="statistics.outboundCount"
-            :prefix="() => h(ExportOutlined)"
-          />
-        </a-card>
-      </a-col>
-      <a-col :span="6">
-        <a-card>
-          <a-statistic
-            title="搴撳瓨鎬婚噺"
-            :value="statistics.stockCount"
-            :prefix="() => h(ContainerOutlined)"
-          />
-        </a-card>
-      </a-col>
-      <a-col :span="6">
-        <a-card>
-          <a-statistic
-            title="寰呭鐞嗕换鍔�"
-            :value="statistics.taskCount"
-            :prefix="() => h(CarryOutOutlined)"
-          />
-        </a-card>
-      </a-col>
-    </a-row>
-
-    <a-row :gutter="16" style="margin-top: 16px">
-      <a-col :span="24">
-        <a-card title="娆㈣繋浣跨敤 WIDESEA WMS 浠撳簱绠$悊绯荤粺">
-          <p>绯荤粺鍔熻兘妯″潡锛�</p>
-          <ul>
-            <li>绯荤粺绠$悊锛氱敤鎴枫�佽鑹层�佽彍鍗曠鐞�</li>
-            <li>鍩虹淇℃伅锛氫粨搴撱�佽揣浣嶃�佺墿鏂欑鐞�</li>
-            <li>鍏ュ簱绠$悊锛氬叆搴撳崟銆侀噰璐崟銆佹敹璐у崟绠$悊</li>
-            <li>鍑哄簱绠$悊锛氬嚭搴撳崟銆佸嚭搴撻攣瀹氫俊鎭鐞�</li>
-            <li>搴撳瓨绠$悊锛氬簱瀛樹俊鎭�佸簱瀛樻槑缁嗐�佸簱瀛樿鍥�</li>
-            <li>鐩樼偣绠$悊锛氱洏鐐瑰崟銆佺洏鐐圭粨鏋滅鐞�</li>
-            <li>浠诲姟绠$悊锛氫换鍔′俊鎭�佷换鍔″巻鍙茬鐞�</li>
-          </ul>
-        </a-card>
-      </a-col>
-    </a-row>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted, h } from 'vue';
-import {
-  ImportOutlined,
-  ExportOutlined,
-  ContainerOutlined,
-  CarryOutOutlined,
-} from '@ant-design/icons-vue';
-
-const statistics = ref({
-  inboundCount: 0,
-  outboundCount: 0,
-  stockCount: 0,
-  taskCount: 0,
-});
-
-onMounted(() => {
-  // 杩欓噷鍙互璋冪敤 API 鑾峰彇缁熻鏁版嵁
-  // 鏆傛椂浣跨敤妯℃嫙鏁版嵁
-  statistics.value = {
-    inboundCount: 128,
-    outboundCount: 96,
-    stockCount: 1024,
-    taskCount: 12,
-  };
-});
-</script>
-
-<style scoped>
-.dashboard {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue
deleted file mode 100644
index 6706c5b..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue
+++ /dev/null
@@ -1,32 +0,0 @@
-<template>
-  <div class="error-page">
-    <a-result
-      status="404"
-      title="404"
-      sub-title="鎶辨瓑锛屾偍璁块棶鐨勯〉闈笉瀛樺湪"
-    >
-      <template #extra>
-        <a-button type="primary" @click="goHome">杩斿洖棣栭〉</a-button>
-      </template>
-    </a-result>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-
-function goHome() {
-  router.push('/');
-}
-</script>
-
-<style scoped>
-.error-page {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  min-height: 400px;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue
deleted file mode 100644
index f900554..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue
+++ /dev/null
@@ -1,150 +0,0 @@
-<template>
-  <div class="inbound-order-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板鍏ュ簱鍗�
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储鍏ュ簱鍗曞彿"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'OrderStatus'">
-            <a-tag :color="getStatusColor(record.OrderStatus)">
-              {{ getStatusText(record.OrderStatus) }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleView(record)">鏌ョ湅</a>
-              <a-divider type="vertical" />
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import type { InboundOrderInfo } from '../../../types/common';
-
-const columns = [
-  { title: '鍏ュ簱鍗曞彿', dataIndex: 'InboundOrderNo', key: 'InboundOrderNo' },
-  { title: '鍏ュ簱绫诲瀷', dataIndex: 'InboundType', key: 'InboundType' },
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '浠撳簱鍚嶇О', dataIndex: 'WarehouseName', key: 'WarehouseName' },
-  { title: '璁㈠崟鐘舵��', dataIndex: 'OrderStatus', key: 'OrderStatus' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鍒涘缓浜�', dataIndex: 'Creator', key: 'Creator' },
-  { title: '鎿嶄綔', key: 'action', width: 200 },
-];
-
-const dataSource = ref<InboundOrderInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    // 杩欓噷璋冪敤瀹為檯鐨� API
-    // const res = await getInboundOrderList({...});
-    // 鏆傛椂浣跨敤妯℃嫙鏁版嵁
-    setTimeout(() => {
-      dataSource.value = [];
-      pagination.total = 0;
-      loading.value = false;
-    }, 500);
-  } catch (error) {
-    console.error('Fetch data error:', error);
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  message.info('鏂板鍏ュ簱鍗曞姛鑳�');
-}
-
-function handleView(record: InboundOrderInfo) {
-  message.info(`鏌ョ湅鍏ュ簱鍗�: ${record.InboundOrderNo}`);
-}
-
-function handleEdit(record: InboundOrderInfo) {
-  message.info(`缂栬緫鍏ュ簱鍗�: ${record.InboundOrderNo}`);
-}
-
-async function handleDelete(record: InboundOrderInfo) {
-  message.success('鍒犻櫎鎴愬姛');
-  fetchData();
-}
-
-function getStatusColor(status?: number) {
-  const colorMap: Record<number, string> = {
-    0: 'default',
-    1: 'processing',
-    2: 'success',
-    3: 'error',
-  };
-  return colorMap[status || 0] || 'default';
-}
-
-function getStatusText(status?: number) {
-  const textMap: Record<number, string> = {
-    0: '寰呭鐞�',
-    1: '澶勭悊涓�',
-    2: '宸插畬鎴�',
-    3: '宸插彇娑�',
-  };
-  return textMap[status || 0] || '鏈煡';
-}
-</script>
-
-<style scoped>
-.inbound-order-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue
deleted file mode 100644
index 7731f98..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-<template>
-  <div class="login-container">
-    <div class="login-box">
-      <div class="login-header">
-        <h1>WIDESEA WMS</h1>
-        <p>浠撳簱绠$悊绯荤粺</p>
-      </div>
-      <a-form
-        :model="formState"
-        :rules="rules"
-        @finish="handleLogin"
-        class="login-form"
-      >
-        <a-form-item name="username">
-          <a-input
-            v-model:value="formState.username"
-            size="large"
-            placeholder="璇疯緭鍏ョ敤鎴峰悕"
-          >
-            <template #prefix>
-              <user-outlined />
-            </template>
-          </a-input>
-        </a-form-item>
-        <a-form-item name="password">
-          <a-input-password
-            v-model:value="formState.password"
-            size="large"
-            placeholder="璇疯緭鍏ュ瘑鐮�"
-          >
-            <template #prefix>
-              <lock-outlined />
-            </template>
-          </a-input-password>
-        </a-form-item>
-        <a-form-item>
-          <a-button
-            type="primary"
-            html-type="submit"
-            size="large"
-            :loading="loading"
-            block
-          >
-            鐧诲綍
-          </a-button>
-        </a-form-item>
-      </a-form>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from 'vue';
-import { useRouter, useRoute } from 'vue-router';
-import { message } from 'ant-design-vue';
-import { UserOutlined, LockOutlined } from '@ant-design/icons-vue';
-import { useAuthStore } from '../../stores/auth';
-
-const router = useRouter();
-const route = useRoute();
-const authStore = useAuthStore();
-
-const formState = reactive({
-  username: '',
-  password: '',
-});
-
-const rules = {
-  username: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕', trigger: 'blur' }],
-  password: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' }],
-};
-
-const loading = ref(false);
-
-async function handleLogin() {
-  loading.value = true;
-  try {
-    const success = await authStore.login(formState.username, formState.password);
-    if (success) {
-      message.success('鐧诲綍鎴愬姛');
-      const redirect = (route.query.redirect as string) || '/';
-      router.push(redirect);
-    } else {
-      message.error('鐧诲綍澶辫触锛岃妫�鏌ョ敤鎴峰悕鍜屽瘑鐮�');
-    }
-  } catch (error) {
-    console.error('Login error:', error);
-    message.error('鐧诲綍澶辫触');
-  } finally {
-    loading.value = false;
-  }
-}
-</script>
-
-<style scoped>
-.login-container {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  min-height: 100vh;
-  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-}
-
-.login-box {
-  width: 400px;
-  padding: 40px;
-  background: #fff;
-  border-radius: 8px;
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-}
-
-.login-header {
-  text-align: center;
-  margin-bottom: 32px;
-}
-
-.login-header h1 {
-  font-size: 32px;
-  font-weight: bold;
-  color: #333;
-  margin: 0 0 8px 0;
-}
-
-.login-header p {
-  font-size: 14px;
-  color: #666;
-  margin: 0;
-}
-
-.login-form {
-  margin-top: 24px;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue
deleted file mode 100644
index 5bdc61b..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue
+++ /dev/null
@@ -1,148 +0,0 @@
-<template>
-  <div class="outbound-order-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板鍑哄簱鍗�
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储鍑哄簱鍗曞彿"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'OrderStatus'">
-            <a-tag :color="getStatusColor(record.OrderStatus)">
-              {{ getStatusText(record.OrderStatus) }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleView(record)">鏌ョ湅</a>
-              <a-divider type="vertical" />
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import type { OutboundOrderInfo } from '../../../types/common';
-
-const columns = [
-  { title: '鍑哄簱鍗曞彿', dataIndex: 'OutboundOrderNo', key: 'OutboundOrderNo' },
-  { title: '鍑哄簱绫诲瀷', dataIndex: 'OutboundType', key: 'OutboundType' },
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '浠撳簱鍚嶇О', dataIndex: 'WarehouseName', key: 'WarehouseName' },
-  { title: '璁㈠崟鐘舵��', dataIndex: 'OrderStatus', key: 'OrderStatus' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鍒涘缓浜�', dataIndex: 'Creator', key: 'Creator' },
-  { title: '鎿嶄綔', key: 'action', width: 200 },
-];
-
-const dataSource = ref<OutboundOrderInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    // 杩欓噷璋冪敤瀹為檯鐨� API
-    setTimeout(() => {
-      dataSource.value = [];
-      pagination.total = 0;
-      loading.value = false;
-    }, 500);
-  } catch (error) {
-    console.error('Fetch data error:', error);
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  message.info('鏂板鍑哄簱鍗曞姛鑳�');
-}
-
-function handleView(record: OutboundOrderInfo) {
-  message.info(`鏌ョ湅鍑哄簱鍗�: ${record.OutboundOrderNo}`);
-}
-
-function handleEdit(record: OutboundOrderInfo) {
-  message.info(`缂栬緫鍑哄簱鍗�: ${record.OutboundOrderNo}`);
-}
-
-async function handleDelete(record: OutboundOrderInfo) {
-  message.success('鍒犻櫎鎴愬姛');
-  fetchData();
-}
-
-function getStatusColor(status?: number) {
-  const colorMap: Record<number, string> = {
-    0: 'default',
-    1: 'processing',
-    2: 'success',
-    3: 'error',
-  };
-  return colorMap[status || 0] || 'default';
-}
-
-function getStatusText(status?: number) {
-  const textMap: Record<number, string> = {
-    0: '寰呭鐞�',
-    1: '澶勭悊涓�',
-    2: '宸插畬鎴�',
-    3: '宸插彇娑�',
-  };
-  return textMap[status || 0] || '鏈煡';
-}
-</script>
-
-<style scoped>
-.outbound-order-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue
deleted file mode 100644
index 026e58f..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue
+++ /dev/null
@@ -1,108 +0,0 @@
-<template>
-  <div class="stock-info-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储鐗╂枡缂栫爜"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-        <a-button @click="handleExport">
-          <template #icon><download-outlined /></template>
-          瀵煎嚭
-        </a-button>
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'action'">
-            <a @click="handleView(record)">鏌ョ湅鏄庣粏</a>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { DownloadOutlined } from '@ant-design/icons-vue';
-import type { StockInfo } from '../../../types/common';
-
-const columns = [
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '浠撳簱鍚嶇О', dataIndex: 'WarehouseName', key: 'WarehouseName' },
-  { title: '璐т綅缂栫爜', dataIndex: 'LocationCode', key: 'LocationCode' },
-  { title: '鐗╂枡缂栫爜', dataIndex: 'MaterielCode', key: 'MaterielCode' },
-  { title: '鐗╂枡鍚嶇О', dataIndex: 'MaterielName', key: 'MaterielName' },
-  { title: '鎬绘暟閲�', dataIndex: 'Quantity', key: 'Quantity' },
-  { title: '鍙敤鏁伴噺', dataIndex: 'AvailableQuantity', key: 'AvailableQuantity' },
-  { title: '閿佸畾鏁伴噺', dataIndex: 'LockedQuantity', key: 'LockedQuantity' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鎿嶄綔', key: 'action', width: 120 },
-];
-
-const dataSource = ref<StockInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    // 杩欓噷璋冪敤瀹為檯鐨� API
-    setTimeout(() => {
-      dataSource.value = [];
-      pagination.total = 0;
-      loading.value = false;
-    }, 500);
-  } catch (error) {
-    console.error('Fetch data error:', error);
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleView(record: StockInfo) {
-  message.info(`鏌ョ湅搴撳瓨鏄庣粏: ${record.MaterielCode}`);
-}
-
-function handleExport() {
-  message.info('瀵煎嚭搴撳瓨鏁版嵁');
-}
-</script>
-
-<style scoped>
-.stock-info-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue
deleted file mode 100644
index e65c995..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue
+++ /dev/null
@@ -1,186 +0,0 @@
-<template>
-  <div class="menu-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板鑿滃崟
-        </a-button>
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="false"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'Enable'">
-            <a-tag :color="record.Enable === 1 ? 'green' : 'red'">
-              {{ record.Enable === 1 ? '鍚敤' : '绂佺敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-
-    <a-modal
-      v-model:open="modalVisible"
-      :title="modalTitle"
-      @ok="handleModalOk"
-      @cancel="handleModalCancel"
-    >
-      <a-form
-        ref="formRef"
-        :model="formState"
-        :rules="rules"
-        :label-col="{ span: 6 }"
-        :wrapper-col="{ span: 16 }"
-      >
-        <a-form-item label="鑿滃崟鍚嶇О" name="MenuName">
-          <a-input v-model:value="formState.MenuName" />
-        </a-form-item>
-        <a-form-item label="鑿滃崟璺緞" name="Url">
-          <a-input v-model:value="formState.Url" />
-        </a-form-item>
-        <a-form-item label="鍥炬爣" name="Icon">
-          <a-input v-model:value="formState.Icon" />
-        </a-form-item>
-        <a-form-item label="鎺掑簭鍙�" name="OrderNo">
-          <a-input-number v-model:value="formState.OrderNo" style="width: 100%" />
-        </a-form-item>
-        <a-form-item label="鐘舵��" name="Enable">
-          <a-select v-model:value="formState.Enable">
-            <a-select-option :value="1">鍚敤</a-select-option>
-            <a-select-option :value="0">绂佺敤</a-select-option>
-          </a-select>
-        </a-form-item>
-      </a-form>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import { getMenuList, addMenu, updateMenu, deleteMenu } from '../../../api/system';
-import type { MenuInfo } from '../../../types/user';
-
-const columns = [
-  { title: '鑿滃崟鍚嶇О', dataIndex: 'MenuName', key: 'MenuName' },
-  { title: '鑿滃崟璺緞', dataIndex: 'Url', key: 'Url' },
-  { title: '鍥炬爣', dataIndex: 'Icon', key: 'Icon' },
-  { title: '鎺掑簭鍙�', dataIndex: 'OrderNo', key: 'OrderNo' },
-  { title: '鐘舵��', dataIndex: 'Enable', key: 'Enable' },
-  { title: '鎿嶄綔', key: 'action', width: 150 },
-];
-
-const dataSource = ref<MenuInfo[]>([]);
-const loading = ref(false);
-
-const modalVisible = ref(false);
-const modalTitle = ref('鏂板鑿滃崟');
-const formRef = ref();
-const formState = reactive<Partial<MenuInfo>>({
-  MenuName: '',
-  Url: '',
-  Icon: '',
-  OrderNo: 0,
-  Enable: 1,
-});
-
-const rules = {
-  MenuName: [{ required: true, message: '璇疯緭鍏ヨ彍鍗曞悕绉�', trigger: 'blur' }],
-};
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    const res = await getMenuList({
-      page: 1,
-      rows: 1000,
-      sort: 'OrderNo',
-      order: 'asc',
-    });
-    if (res.status && res.data) {
-      dataSource.value = res.data.rows || [];
-    }
-  } catch (error) {
-    console.error('Fetch data error:', error);
-  } finally {
-    loading.value = false;
-  }
-}
-
-function handleAdd() {
-  modalTitle.value = '鏂板鑿滃崟';
-  Object.assign(formState, {
-    Id: undefined,
-    MenuName: '',
-    Url: '',
-    Icon: '',
-    OrderNo: 0,
-    Enable: 1,
-  });
-  modalVisible.value = true;
-}
-
-function handleEdit(record: MenuInfo) {
-  modalTitle.value = '缂栬緫鑿滃崟';
-  Object.assign(formState, record);
-  modalVisible.value = true;
-}
-
-async function handleModalOk() {
-  try {
-    await formRef.value.validate();
-    const api = formState.Id ? updateMenu : addMenu;
-    const res = await api(formState);
-    if (res.status) {
-      message.success(formState.Id ? '鏇存柊鎴愬姛' : '鏂板鎴愬姛');
-      modalVisible.value = false;
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Save error:', error);
-  }
-}
-
-function handleModalCancel() {
-  modalVisible.value = false;
-  formRef.value?.resetFields();
-}
-
-async function handleDelete(record: MenuInfo) {
-  try {
-    const res = await deleteMenu([record.Id]);
-    if (res.status) {
-      message.success('鍒犻櫎鎴愬姛');
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Delete error:', error);
-  }
-}
-</script>
-
-<style scoped>
-.menu-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue
deleted file mode 100644
index c3a2628..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue
+++ /dev/null
@@ -1,190 +0,0 @@
-<template>
-  <div class="role-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板瑙掕壊
-        </a-button>
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'Enable'">
-            <a-tag :color="record.Enable === 1 ? 'green' : 'red'">
-              {{ record.Enable === 1 ? '鍚敤' : '绂佺敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm title="纭畾瑕佸垹闄ゅ悧锛�" @confirm="handleDelete(record)">
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-
-    <a-modal
-      v-model:open="modalVisible"
-      :title="modalTitle"
-      @ok="handleModalOk"
-      @cancel="handleModalCancel"
-    >
-      <a-form
-        ref="formRef"
-        :model="formState"
-        :rules="rules"
-        :label-col="{ span: 6 }"
-        :wrapper-col="{ span: 16 }"
-      >
-        <a-form-item label="瑙掕壊鍚嶇О" name="RoleName">
-          <a-input v-model:value="formState.RoleName" />
-        </a-form-item>
-        <a-form-item label="鎺掑簭鍙�" name="OrderNo">
-          <a-input-number v-model:value="formState.OrderNo" style="width: 100%" />
-        </a-form-item>
-        <a-form-item label="鐘舵��" name="Enable">
-          <a-select v-model:value="formState.Enable">
-            <a-select-option :value="1">鍚敤</a-select-option>
-            <a-select-option :value="0">绂佺敤</a-select-option>
-          </a-select>
-        </a-form-item>
-      </a-form>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import { getRoleList, addRole, updateRole, deleteRole } from '../../../api/system';
-import type { RoleInfo } from '../../../types/user';
-
-const columns = [
-  { title: '瑙掕壊鍚嶇О', dataIndex: 'RoleName', key: 'RoleName' },
-  { title: '鎺掑簭鍙�', dataIndex: 'OrderNo', key: 'OrderNo' },
-  { title: '鐘舵��', dataIndex: 'Enable', key: 'Enable' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鎿嶄綔', key: 'action', width: 150 },
-];
-
-const dataSource = ref<RoleInfo[]>([]);
-const loading = ref(false);
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-const modalVisible = ref(false);
-const modalTitle = ref('鏂板瑙掕壊');
-const formRef = ref();
-const formState = reactive<Partial<RoleInfo>>({
-  RoleName: '',
-  OrderNo: 0,
-  Enable: 1,
-});
-
-const rules = {
-  RoleName: [{ required: true, message: '璇疯緭鍏ヨ鑹插悕绉�', trigger: 'blur' }],
-};
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    const res = await getRoleList({
-      page: pagination.current,
-      rows: pagination.pageSize,
-      sort: 'OrderNo',
-      order: 'asc',
-    });
-    if (res.status && res.data) {
-      dataSource.value = res.data.rows || [];
-      pagination.total = res.data.total || 0;
-    }
-  } catch (error) {
-    console.error('Fetch data error:', error);
-  } finally {
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleAdd() {
-  modalTitle.value = '鏂板瑙掕壊';
-  Object.assign(formState, {
-    Id: undefined,
-    RoleName: '',
-    OrderNo: 0,
-    Enable: 1,
-  });
-  modalVisible.value = true;
-}
-
-function handleEdit(record: RoleInfo) {
-  modalTitle.value = '缂栬緫瑙掕壊';
-  Object.assign(formState, record);
-  modalVisible.value = true;
-}
-
-async function handleModalOk() {
-  try {
-    await formRef.value.validate();
-    const api = formState.Id ? updateRole : addRole;
-    const res = await api(formState);
-    if (res.status) {
-      message.success(formState.Id ? '鏇存柊鎴愬姛' : '鏂板鎴愬姛');
-      modalVisible.value = false;
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Save error:', error);
-  }
-}
-
-function handleModalCancel() {
-  modalVisible.value = false;
-  formRef.value?.resetFields();
-}
-
-async function handleDelete(record: RoleInfo) {
-  try {
-    const res = await deleteRole([record.Id]);
-    if (res.status) {
-      message.success('鍒犻櫎鎴愬姛');
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Delete error:', error);
-  }
-}
-</script>
-
-<style scoped>
-.role-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue
deleted file mode 100644
index adab39c..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue
+++ /dev/null
@@ -1,216 +0,0 @@
-<template>
-  <div class="user-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-button type="primary" @click="handleAdd">
-          <template #icon><plus-outlined /></template>
-          鏂板鐢ㄦ埛
-        </a-button>
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储鐢ㄦ埛鍚�"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'Enable'">
-            <a-tag :color="record.Enable === 1 ? 'green' : 'red'">
-              {{ record.Enable === 1 ? '鍚敤' : '绂佺敤' }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a-space>
-              <a @click="handleEdit(record)">缂栬緫</a>
-              <a-divider type="vertical" />
-              <a-popconfirm
-                title="纭畾瑕佸垹闄ゅ悧锛�"
-                @confirm="handleDelete(record)"
-              >
-                <a style="color: red">鍒犻櫎</a>
-              </a-popconfirm>
-            </a-space>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-
-    <a-modal
-      v-model:open="modalVisible"
-      :title="modalTitle"
-      @ok="handleModalOk"
-      @cancel="handleModalCancel"
-    >
-      <a-form
-        ref="formRef"
-        :model="formState"
-        :rules="rules"
-        :label-col="{ span: 6 }"
-        :wrapper-col="{ span: 16 }"
-      >
-        <a-form-item label="鐢ㄦ埛鍚�" name="UserName">
-          <a-input v-model:value="formState.UserName" />
-        </a-form-item>
-        <a-form-item label="鐪熷疄濮撳悕" name="UserTrueName">
-          <a-input v-model:value="formState.UserTrueName" />
-        </a-form-item>
-        <a-form-item label="瀵嗙爜" name="Password" v-if="!formState.Id">
-          <a-input-password v-model:value="formState.Password" />
-        </a-form-item>
-        <a-form-item label="鐘舵��" name="Enable">
-          <a-select v-model:value="formState.Enable">
-            <a-select-option :value="1">鍚敤</a-select-option>
-            <a-select-option :value="0">绂佺敤</a-select-option>
-          </a-select>
-        </a-form-item>
-      </a-form>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import { getUserList, addUser, updateUser, deleteUser } from '../../../api/system';
-import type { UserInfo } from '../../../types/user';
-
-const columns = [
-  { title: '鐢ㄦ埛鍚�', dataIndex: 'UserName', key: 'UserName' },
-  { title: '鐪熷疄濮撳悕', dataIndex: 'UserTrueName', key: 'UserTrueName' },
-  { title: '瑙掕壊', dataIndex: 'RoleName', key: 'RoleName' },
-  { title: '鐘舵��', dataIndex: 'Enable', key: 'Enable' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鎿嶄綔', key: 'action', width: 150 },
-];
-
-const dataSource = ref<UserInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-const modalVisible = ref(false);
-const modalTitle = ref('鏂板鐢ㄦ埛');
-const formRef = ref();
-const formState = reactive<Partial<UserInfo>>({
-  UserName: '',
-  UserTrueName: '',
-  Password: '',
-  Enable: 1,
-});
-
-const rules = {
-  UserName: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕', trigger: 'blur' }],
-  UserTrueName: [{ required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�', trigger: 'blur' }],
-  Password: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' }],
-};
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    const res = await getUserList({
-      page: pagination.current,
-      rows: pagination.pageSize,
-      sort: 'CreateDate',
-      order: 'desc',
-      wheres: searchText.value
-        ? [{ name: 'UserName', value: searchText.value, displayType: 'like' }]
-        : [],
-    });
-    if (res.status && res.data) {
-      dataSource.value = res.data.rows || [];
-      pagination.total = res.data.total || 0;
-    }
-  } catch (error) {
-    console.error('Fetch data error:', error);
-  } finally {
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleAdd() {
-  modalTitle.value = '鏂板鐢ㄦ埛';
-  Object.assign(formState, {
-    Id: undefined,
-    UserName: '',
-    UserTrueName: '',
-    Password: '',
-    Enable: 1,
-  });
-  modalVisible.value = true;
-}
-
-function handleEdit(record: UserInfo) {
-  modalTitle.value = '缂栬緫鐢ㄦ埛';
-  Object.assign(formState, { ...record, Password: undefined });
-  modalVisible.value = true;
-}
-
-async function handleModalOk() {
-  try {
-    await formRef.value.validate();
-    const api = formState.Id ? updateUser : addUser;
-    const res = await api(formState);
-    if (res.status) {
-      message.success(formState.Id ? '鏇存柊鎴愬姛' : '鏂板鎴愬姛');
-      modalVisible.value = false;
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Save error:', error);
-  }
-}
-
-function handleModalCancel() {
-  modalVisible.value = false;
-  formRef.value?.resetFields();
-}
-
-async function handleDelete(record: UserInfo) {
-  try {
-    const res = await deleteUser([record.Id]);
-    if (res.status) {
-      message.success('鍒犻櫎鎴愬姛');
-      fetchData();
-    }
-  } catch (error) {
-    console.error('Delete error:', error);
-  }
-}
-</script>
-
-<style scoped>
-.user-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue b/Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue
deleted file mode 100644
index b80c85f..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue
+++ /dev/null
@@ -1,134 +0,0 @@
-<template>
-  <div class="task-info-page">
-    <a-card>
-      <a-space style="margin-bottom: 16px">
-        <a-input-search
-          v-model:value="searchText"
-          placeholder="鎼滅储浠诲姟鍙�"
-          style="width: 200px"
-          @search="handleSearch"
-        />
-        <a-select
-          v-model:value="statusFilter"
-          placeholder="浠诲姟鐘舵��"
-          style="width: 120px"
-          @change="handleSearch"
-          allowClear
-        >
-          <a-select-option :value="0">寰呭鐞�</a-select-option>
-          <a-select-option :value="1">澶勭悊涓�</a-select-option>
-          <a-select-option :value="2">宸插畬鎴�</a-select-option>
-          <a-select-option :value="3">宸插彇娑�</a-select-option>
-        </a-select>
-      </a-space>
-
-      <a-table
-        :columns="columns"
-        :data-source="dataSource"
-        :loading="loading"
-        :pagination="pagination"
-        @change="handleTableChange"
-        row-key="Id"
-      >
-        <template #bodyCell="{ column, record }">
-          <template v-if="column.key === 'TaskStatus'">
-            <a-tag :color="getStatusColor(record.TaskStatus)">
-              {{ getStatusText(record.TaskStatus) }}
-            </a-tag>
-          </template>
-          <template v-else-if="column.key === 'action'">
-            <a @click="handleView(record)">鏌ョ湅璇︽儏</a>
-          </template>
-        </template>
-      </a-table>
-    </a-card>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue';
-import { message } from 'ant-design-vue';
-import type { TaskInfo } from '../../../types/common';
-
-const columns = [
-  { title: '浠诲姟鍙�', dataIndex: 'TaskNo', key: 'TaskNo' },
-  { title: '浠诲姟绫诲瀷', dataIndex: 'TaskType', key: 'TaskType' },
-  { title: '浠诲姟鐘舵��', dataIndex: 'TaskStatus', key: 'TaskStatus' },
-  { title: '浠撳簱缂栫爜', dataIndex: 'WarehouseCode', key: 'WarehouseCode' },
-  { title: '鍒涘缓鏃堕棿', dataIndex: 'CreateDate', key: 'CreateDate' },
-  { title: '鍒涘缓浜�', dataIndex: 'Creator', key: 'Creator' },
-  { title: '鎿嶄綔', key: 'action', width: 120 },
-];
-
-const dataSource = ref<TaskInfo[]>([]);
-const loading = ref(false);
-const searchText = ref('');
-const statusFilter = ref<number>();
-const pagination = reactive({
-  current: 1,
-  pageSize: 20,
-  total: 0,
-  showSizeChanger: true,
-  showTotal: (total: number) => `鍏� ${total} 鏉,
-});
-
-onMounted(() => {
-  fetchData();
-});
-
-async function fetchData() {
-  loading.value = true;
-  try {
-    // 杩欓噷璋冪敤瀹為檯鐨� API
-    setTimeout(() => {
-      dataSource.value = [];
-      pagination.total = 0;
-      loading.value = false;
-    }, 500);
-  } catch (error) {
-    console.error('Fetch data error:', error);
-    loading.value = false;
-  }
-}
-
-function handleTableChange(pag: any) {
-  pagination.current = pag.current;
-  pagination.pageSize = pag.pageSize;
-  fetchData();
-}
-
-function handleSearch() {
-  pagination.current = 1;
-  fetchData();
-}
-
-function handleView(record: TaskInfo) {
-  message.info(`鏌ョ湅浠诲姟璇︽儏: ${record.TaskNo}`);
-}
-
-function getStatusColor(status?: number) {
-  const colorMap: Record<number, string> = {
-    0: 'default',
-    1: 'processing',
-    2: 'success',
-    3: 'error',
-  };
-  return colorMap[status || 0] || 'default';
-}
-
-function getStatusText(status?: number) {
-  const textMap: Record<number, string> = {
-    0: '寰呭鐞�',
-    1: '澶勭悊涓�',
-    2: '宸插畬鎴�',
-    3: '宸插彇娑�',
-  };
-  return textMap[status || 0] || '鏈煡';
-}
-</script>
-
-<style scoped>
-.task-info-page {
-  padding: 0;
-}
-</style>
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json b/Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json
deleted file mode 100644
index 16521e6..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "compilerOptions": {
-    "target": "ES2020",
-    "useDefineForClassFields": true,
-    "module": "ESNext",
-    "lib": ["ES2020", "DOM", "DOM.Iterable"],
-    "skipLibCheck": true,
-
-    /* Bundler mode */
-    "moduleResolution": "bundler",
-    "allowImportingTsExtensions": true,
-    "resolveJsonModule": true,
-    "isolatedModules": true,
-    "noEmit": true,
-    "jsx": "preserve",
-
-    /* Linting */
-    "strict": true,
-    "noUnusedLocals": true,
-    "noUnusedParameters": true,
-    "noFallthroughCasesInSwitch": true,
-
-    /* Path mapping */
-    "baseUrl": ".",
-    "paths": {
-      "@/*": ["src/*"]
-    }
-  },
-  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
-  "references": [{ "path": "./tsconfig.node.json" }]
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json b/Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json
deleted file mode 100644
index 42872c5..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "compilerOptions": {
-    "composite": true,
-    "skipLibCheck": true,
-    "module": "ESNext",
-    "moduleResolution": "bundler",
-    "allowSyntheticDefaultImports": true
-  },
-  "include": ["vite.config.ts"]
-}
diff --git a/Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts b/Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts
deleted file mode 100644
index f90a5a5..0000000
--- a/Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { defineConfig } from 'vite';
-import vue from '@vitejs/plugin-vue';
-import vueJsx from '@vitejs/plugin-vue-jsx';
-import { resolve } from 'path';
-import AutoImport from 'unplugin-auto-import/vite';
-import Components from 'unplugin-vue-components/vite';
-import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
-
-// https://vitejs.dev/config/
-export default defineConfig({
-  plugins: [
-    vue(),
-    vueJsx(),
-    AutoImport({
-      imports: ['vue', 'vue-router', 'pinia'],
-      dts: 'src/auto-imports.d.ts',
-    }),
-    Components({
-      resolvers: [
-        AntDesignVueResolver({
-          importStyle: false,
-        }),
-      ],
-      dts: 'src/components.d.ts',
-    }),
-  ],
-  resolve: {
-    alias: {
-      '@': resolve(__dirname, 'src'),
-    },
-  },
-  server: {
-    host: '0.0.0.0',
-    port: 3031,
-    proxy: {
-      '/api': {
-        target: 'http://localhost:9291',
-        changeOrigin: true,
-      },
-    },
-  },
-  build: {
-    outDir: 'dist',
-    sourcemap: false,
-    chunkSizeWarningLimit: 1500,
-    rollupOptions: {
-      output: {
-        manualChunks: {
-          'vue-vendor': ['vue', 'vue-router', 'pinia'],
-          'ant-design-vue': ['ant-design-vue', '@ant-design/icons-vue'],
-        },
-      },
-    },
-  },
-});

--
Gitblit v1.9.3