From 91cb0f0650c3111f83640b593beda202eb216e4a Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Fri, 17 Apr 2026 13:46:25 +0800 Subject: [PATCH] feat(cleaner): compute videoDir and pass through to ErpAuthService Add ensureVideoDir helper that creates /video/ directory on demand. Pass recordVideo and videoDir to both ErpAuthService instantiations (initial login and outer retry) in cleaner-application-service. Co-Authored-By: Claude Opus 4.6 --- .../cleaner/cleaner-application-service.ts | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/services/cleaner/cleaner-application-service.ts b/src/main/services/cleaner/cleaner-application-service.ts index 31f4bfc..5eba88d 100644 --- a/src/main/services/cleaner/cleaner-application-service.ts +++ b/src/main/services/cleaner/cleaner-application-service.ts @@ -1,3 +1,5 @@ +import path from 'path' +import fs from 'fs' import type { WebContents } from 'electron' import type { IDatabaseService } from '../../types/database.types' import { ErpAuthService } from '../erp/erp-auth' @@ -11,6 +13,7 @@ import { ResultExporter } from '../excel/result-exporter' import { SessionManager } from '../user/session-manager' import { UserErpConfigService } from '../user/user-erp-config-service' import { createLogger } from '../logger' +import { getLogDir } from '../logger/shared' import { logAuditWithCurrentUser } from '../logger/audit-logger' import { AuditAction, AuditStatus } from '../../types/audit.types' import { IPC_CHANNELS } from '../../../shared/ipc-channels' @@ -128,11 +131,15 @@ export class CleanerApplicationService { return emptyResult } + const videoDir = input.recordVideo ? this.ensureVideoDir() : undefined + authService = new ErpAuthService({ url: erpConfig.url, username: erpConfig.username, password: erpConfig.password, - headless: input.headless ?? true + headless: input.headless ?? true, + recordVideo: input.recordVideo ?? false, + videoDir }) log.info('Logging in to ERP...') @@ -200,7 +207,9 @@ export class CleanerApplicationService { url: erpConfig.url, username: erpConfig.username, password: erpConfig.password, - headless: input.headless ?? true + headless: input.headless ?? true, + recordVideo: input.recordVideo ?? false, + videoDir }) try { @@ -333,6 +342,14 @@ export class CleanerApplicationService { } } + private ensureVideoDir(): string | undefined { + const videoDir = path.join(getLogDir(), 'video') + if (!fs.existsSync(videoDir)) { + fs.mkdirSync(videoDir, { recursive: true }) + } + return videoDir + } + private async getDatabaseService(): Promise { const configManager = ConfigManager.getInstance() const config = configManager.getConfig()