From 46a9b817e748860314486007515536e91ec31803 Mon Sep 17 00:00:00 2001 From: DawnARC Date: Fri, 17 Apr 2026 08:33:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=E4=BB=85=E4=BD=BF=E7=94=A8=E5=8C=85?= =?UTF-8?q?=E5=86=85WebUI=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 暂时注释本地dashboard/dist回退逻辑,并同步调整WebUI静态路径解析测试,确保仅从maibot_dashboard包加载前端资源。 --- pytests/webui/test_app.py | 6 +++--- src/webui/app.py | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pytests/webui/test_app.py b/pytests/webui/test_app.py index 3ef1cfdd..bc7343ea 100644 --- a/pytests/webui/test_app.py +++ b/pytests/webui/test_app.py @@ -79,7 +79,7 @@ def test_resolve_static_path_prefers_installed_dashboard_package(monkeypatch, tm assert resolved_path == package_dist -def test_resolve_static_path_uses_dashboard_dist(monkeypatch, tmp_path) -> None: +def test_resolve_static_path_ignores_dashboard_dist_when_package_is_unavailable(monkeypatch, tmp_path) -> None: dashboard_dist = tmp_path / "dashboard" / "dist" dashboard_dist.mkdir(parents=True) (dashboard_dist / "index.html").write_text("", encoding="utf-8") @@ -89,10 +89,10 @@ def test_resolve_static_path_uses_dashboard_dist(monkeypatch, tmp_path) -> None: with patch.object(webui_app, "import_module", side_effect=ImportError): resolved_path = webui_app._resolve_static_path() - assert resolved_path == dashboard_dist + assert resolved_path is None -def test_resolve_static_path_falls_back_to_package_when_dashboard_dist_has_no_index(monkeypatch, tmp_path) -> None: +def test_resolve_static_path_uses_package_even_when_dashboard_dist_exists(monkeypatch, tmp_path) -> None: dashboard_dist = tmp_path / "dashboard" / "dist" dashboard_dist.mkdir(parents=True) diff --git a/src/webui/app.py b/src/webui/app.py index 366c1c79..54b1288b 100644 --- a/src/webui/app.py +++ b/src/webui/app.py @@ -205,11 +205,12 @@ def _setup_static_files(app: FastAPI): def _resolve_static_path() -> Path | None: - # 开发环境优先允许复用仓库里的现成 dist - base_dir = _get_project_root() - static_path = base_dir / "dashboard" / "dist" - if static_path.is_dir() and (static_path / "index.html").exists(): - return static_path + # 临时仅允许使用已安装的 maibot-dashboard 包,不使用仓库本地 dashboard/dist。 + # 如需恢复本地回退逻辑,可取消下方注释。 + # base_dir = _get_project_root() + # static_path = base_dir / "dashboard" / "dist" + # if static_path.is_dir() and (static_path / "index.html").exists(): + # return static_path try: module = import_module("maibot_dashboard") From 967b197bb9b10b230ce745f16b991eb747630424 Mon Sep 17 00:00:00 2001 From: DawnARC Date: Fri, 17 Apr 2026 08:41:35 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Ddashboard=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E7=9A=84=E5=8F=8D=E9=A6=88=E8=AF=A6=E6=83=85=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为反馈纠错详情补齐显式类型约束,解决action_logs与详情字段在联合类型下的TS编译报错;同步提交锁文件变更,保持本地依赖解析结果一致。 --- dashboard/package-lock.json | 105 ------------------ .../src/routes/resource/knowledge-base.tsx | 4 +- 2 files changed, 2 insertions(+), 107 deletions(-) diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index a0e1d02c..8c581c4c 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -1252,72 +1252,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@electron/windows-sign": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", - "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "dependencies": { - "cross-dirname": "^0.1.0", - "debug": "^4.3.4", - "fs-extra": "^11.1.1", - "minimist": "^1.2.8", - "postject": "^1.0.0-alpha.6" - }, - "bin": { - "electron-windows-sign": "bin/electron-windows-sign.js" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@electron/windows-sign/node_modules/fs-extra": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", - "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@electron/windows-sign/node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/windows-sign/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -7798,15 +7732,6 @@ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", "license": "MIT" }, - "node_modules/cross-dirname": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", - "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -13888,36 +13813,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/postject": { - "version": "1.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", - "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "commander": "^9.4.0" - }, - "bin": { - "postject": "dist/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/postject/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/preact": { "version": "10.29.1", "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.1.tgz", diff --git a/dashboard/src/routes/resource/knowledge-base.tsx b/dashboard/src/routes/resource/knowledge-base.tsx index 5cc3602f..561f8b97 100644 --- a/dashboard/src/routes/resource/knowledge-base.tsx +++ b/dashboard/src/routes/resource/knowledge-base.tsx @@ -1719,7 +1719,7 @@ export function KnowledgeBasePage() { } }, [selectedFeedbackCorrection?.task_id]) - const selectedFeedbackResolved = useMemo(() => { + const selectedFeedbackResolved = useMemo(() => { if (!selectedFeedbackCorrection) { return null } @@ -1732,7 +1732,7 @@ export function KnowledgeBasePage() { return selectedFeedbackTaskDetail ?? selectedFeedbackCorrection }, [selectedFeedbackCorrection, selectedFeedbackTaskDetail]) - const selectedFeedbackActionLogs = Array.isArray(selectedFeedbackResolved?.action_logs) + const selectedFeedbackActionLogs: MemoryFeedbackActionLogPayload[] = Array.isArray(selectedFeedbackResolved?.action_logs) ? selectedFeedbackResolved.action_logs : [] const filteredFeedbackActionLogs = useMemo(() => { From b192a362c602f3491cc2762e1c7c3b71ac2659dd Mon Sep 17 00:00:00 2001 From: DawnARC Date: Fri, 17 Apr 2026 08:44:01 +0800 Subject: [PATCH 3/4] =?UTF-8?q?Revert=20"fix:=E4=BF=AE=E5=A4=8Ddashboard?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E7=9A=84=E5=8F=8D=E9=A6=88=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=8A=A5=E9=94=99"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 967b197bb9b10b230ce745f16b991eb747630424. --- dashboard/package-lock.json | 105 ++++++++++++++++++ .../src/routes/resource/knowledge-base.tsx | 4 +- 2 files changed, 107 insertions(+), 2 deletions(-) diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index 8c581c4c..a0e1d02c 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -1252,6 +1252,72 @@ "node": ">= 10.0.0" } }, + "node_modules/@electron/windows-sign": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", + "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/windows-sign/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -7732,6 +7798,15 @@ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", "license": "MIT" }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -13813,6 +13888,36 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/preact": { "version": "10.29.1", "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.1.tgz", diff --git a/dashboard/src/routes/resource/knowledge-base.tsx b/dashboard/src/routes/resource/knowledge-base.tsx index 561f8b97..5cc3602f 100644 --- a/dashboard/src/routes/resource/knowledge-base.tsx +++ b/dashboard/src/routes/resource/knowledge-base.tsx @@ -1719,7 +1719,7 @@ export function KnowledgeBasePage() { } }, [selectedFeedbackCorrection?.task_id]) - const selectedFeedbackResolved = useMemo(() => { + const selectedFeedbackResolved = useMemo(() => { if (!selectedFeedbackCorrection) { return null } @@ -1732,7 +1732,7 @@ export function KnowledgeBasePage() { return selectedFeedbackTaskDetail ?? selectedFeedbackCorrection }, [selectedFeedbackCorrection, selectedFeedbackTaskDetail]) - const selectedFeedbackActionLogs: MemoryFeedbackActionLogPayload[] = Array.isArray(selectedFeedbackResolved?.action_logs) + const selectedFeedbackActionLogs = Array.isArray(selectedFeedbackResolved?.action_logs) ? selectedFeedbackResolved.action_logs : [] const filteredFeedbackActionLogs = useMemo(() => { From df281c71ddb75b4f42ae484143487ddb0e48013b Mon Sep 17 00:00:00 2001 From: DawnARC Date: Fri, 17 Apr 2026 08:44:31 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dknowledgebase?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E8=AF=A6=E6=83=85=E7=B1=BB=E5=9E=8B=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 仅保留knowledge-base页面的类型约束修复,解决反馈纠错详情字段在联合类型下触发的TS构建错误,不再包含package-lock变更。 --- dashboard/src/routes/resource/knowledge-base.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dashboard/src/routes/resource/knowledge-base.tsx b/dashboard/src/routes/resource/knowledge-base.tsx index 5cc3602f..561f8b97 100644 --- a/dashboard/src/routes/resource/knowledge-base.tsx +++ b/dashboard/src/routes/resource/knowledge-base.tsx @@ -1719,7 +1719,7 @@ export function KnowledgeBasePage() { } }, [selectedFeedbackCorrection?.task_id]) - const selectedFeedbackResolved = useMemo(() => { + const selectedFeedbackResolved = useMemo(() => { if (!selectedFeedbackCorrection) { return null } @@ -1732,7 +1732,7 @@ export function KnowledgeBasePage() { return selectedFeedbackTaskDetail ?? selectedFeedbackCorrection }, [selectedFeedbackCorrection, selectedFeedbackTaskDetail]) - const selectedFeedbackActionLogs = Array.isArray(selectedFeedbackResolved?.action_logs) + const selectedFeedbackActionLogs: MemoryFeedbackActionLogPayload[] = Array.isArray(selectedFeedbackResolved?.action_logs) ? selectedFeedbackResolved.action_logs : [] const filteredFeedbackActionLogs = useMemo(() => {