From 2331d7e38bb7c948ebad1815cf754b3f31884544 Mon Sep 17 00:00:00 2001 From: AoXuan Date: Tue, 23 Sep 2025 23:39:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=B3=A8=E9=87=8A=E6=8E=89?= =?UTF-8?q?=E6=9D=80=E6=AD=BB=E5=90=8E=E7=AB=AF=E7=9A=84=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=B8=BA=E7=94=B1=E5=90=8E=E7=AB=AF=E8=87=AA?= =?UTF-8?q?=E6=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/electron/main.ts | 27 ++++---- frontend/electron/services/pythonService.ts | 70 ++++++++++----------- frontend/src/components/TitleBar.vue | 10 +++ 3 files changed, 58 insertions(+), 49 deletions(-) diff --git a/frontend/electron/main.ts b/frontend/electron/main.ts index 272ae75..fa0a30d 100644 --- a/frontend/electron/main.ts +++ b/frontend/electron/main.ts @@ -20,7 +20,6 @@ import { installPipPackage, installDependencies, startBackend, - stopBackend, } from './services/pythonService' import { setMainWindow as setGitMainWindow, downloadGit, cloneBackend } from './services/gitService' import { setupLogger, log, getLogPath, getLogFiles, cleanOldLogs } from './services/logService' @@ -628,9 +627,9 @@ ipcMain.handle('start-backend', async () => { return startBackend(appRoot) }) -ipcMain.handle('stop-backend', async () => { - return stopBackend() -}) +// ipcMain.handle('stop-backend', async () => { +// return stopBackend() +// }) // Git相关 ipcMain.handle('download-git', async () => { @@ -1015,16 +1014,16 @@ app.on('before-quit', async event => { // 清理托盘 destroyTray() - try { - await stopBackend() - log.info('后端服务已停止') - } catch (e) { - log.error('停止后端时出错:', e) - console.error('停止后端时出错:', e) - } finally { - log.info('应用退出') - app.exit(0) - } + // try { + // await stopBackend() + // log.info('后端服务已停止') + // } catch (e) { + // log.error('停止后端时出错:', e) + // console.error('停止后端时出错:', e) + // } finally { + // log.info('应用退出') + // app.exit(0) + // } } }) diff --git a/frontend/electron/services/pythonService.ts b/frontend/electron/services/pythonService.ts index a70c61e..9d67d07 100644 --- a/frontend/electron/services/pythonService.ts +++ b/frontend/electron/services/pythonService.ts @@ -574,38 +574,38 @@ export async function startBackend(appRoot: string, timeoutMs = 30_000) { } /** 停止后端进程(如果没启动就直接返回成功) */ -export async function stopBackend() { - if (!backendProc || backendProc.killed) { - console.log('[Backend] 未运行,无需停止') - return { success: true } - } - - const pid = backendProc.pid - console.log('[Backend] 正在停止后端服务, PID =', pid) - - return new Promise<{ success: boolean; error?: string }>(resolve => { - // 清监听,避免重复日志 - backendProc?.stdout?.removeAllListeners('data') - backendProc?.stderr?.removeAllListeners('data') - - backendProc!.once('exit', (code, signal) => { - console.log('[Backend] 已退出', { code, signal }) - backendProc = null - resolve({ success: true }) - }) - - backendProc!.once('error', err => { - console.error('[Backend] 停止时出错:', err) - backendProc = null - resolve({ success: false, error: err instanceof Error ? err.message : String(err) }) - }) - - try { - backendProc!.kill() // 默认 SIGTERM,Windows 下等价于结束进程 - } catch (e) { - console.error('[Backend] kill 调用失败:', e) - backendProc = null - resolve({ success: false, error: e instanceof Error ? e.message : String(e) }) - } - }) -} +// export async function stopBackend() { +// if (!backendProc || backendProc.killed) { +// console.log('[Backend] 未运行,无需停止') +// return { success: true } +// } +// +// const pid = backendProc.pid +// console.log('[Backend] 正在停止后端服务, PID =', pid) +// +// return new Promise<{ success: boolean; error?: string }>(resolve => { +// // 清监听,避免重复日志 +// backendProc?.stdout?.removeAllListeners('data') +// backendProc?.stderr?.removeAllListeners('data') +// +// backendProc!.once('exit', (code, signal) => { +// console.log('[Backend] 已退出', { code, signal }) +// backendProc = null +// resolve({ success: true }) +// }) +// +// backendProc!.once('error', err => { +// console.error('[Backend] 停止时出错:', err) +// backendProc = null +// resolve({ success: false, error: err instanceof Error ? err.message : String(err) }) +// }) +// +// try { +// backendProc!.kill() // 默认 SIGTERM,Windows 下等价于结束进程 +// } catch (e) { +// console.error('[Backend] kill 调用失败:', e) +// backendProc = null +// resolve({ success: false, error: e instanceof Error ? e.message : String(e) }) +// } +// }) +// } diff --git a/frontend/src/components/TitleBar.vue b/frontend/src/components/TitleBar.vue index ee0132e..8f1c33d 100644 --- a/frontend/src/components/TitleBar.vue +++ b/frontend/src/components/TitleBar.vue @@ -125,9 +125,19 @@ const toggleMaximize = async () => { const closeWindow = async () => { try { + // 先调用后端关闭API + await Service.closeApiCoreClosePost() + console.log('Backend close API called successfully') + // 然后关闭窗口 await window.electronAPI?.windowClose() } catch (error) { console.error('Failed to close window:', error) + // 即使API调用失败,也尝试关闭窗口 + try { + await window.electronAPI?.windowClose() + } catch (closeError) { + console.error('Failed to close window after API error:', closeError) + } } }