后端移除内嵌OCR子服务

This commit is contained in:
yml
2026-05-21 17:46:12 +08:00
parent acd5c0d50e
commit 0931975ed4
18 changed files with 18 additions and 750 deletions
+7 -7
View File
@@ -10,7 +10,7 @@ import webhooksRouter from './routes/webhooks.js'
import { ensureAdminUsersBootstrapped } from './services/admin/admin-auth-service.js'
import { ensureFulfillmentCatalogBootstrapped } from './services/bootstrap/fulfillment-bootstrap-service.js'
import { startScheduledJobs, stopScheduledJobs } from './services/scheduler/scheduler-service.js'
import { closeLocalOcrWorker, warmupLocalOcrWorker } from './services/session/ocr.js'
import { closeOcrService, warmupOcrService } from './services/session/ocr.js'
import { closeAllTencentBrowserSessions, warmupTencentBrowser } from './services/session/session.js'
import { buildSuccessPayload } from './utils/http.js'
import { createRequestId, logError, logInfo, logWarn } from './utils/logger.js'
@@ -227,14 +227,14 @@ async function bootstrapOcr() {
startupState.ocr.lastAttemptAt = new Date().toISOString()
try {
await warmupLocalOcrWorker()
await warmupOcrService()
startupState.ocr.status = 'ready'
startupState.ocr.message = 'local OCR ready'
logInfo('[startup]', 'local OCR ready')
startupState.ocr.message = 'OCR service ready'
logInfo('[startup]', 'OCR service ready')
} catch (error) {
startupState.ocr.status = 'degraded'
startupState.ocr.message = formatStartupError(error)
logWarn('[startup]', `local OCR skipped: ${formatStartupError(error)}`)
logWarn('[startup]', `OCR service skipped: ${formatStartupError(error)}`)
}
}
@@ -369,9 +369,9 @@ async function shutdown(signal) {
}
try {
await closeLocalOcrWorker()
await closeOcrService()
} catch (error) {
logError('[shutdown]', 'failed to close local OCR worker', error)
logError('[shutdown]', 'failed to close OCR service', error)
}
if (!server.listening) {
+4 -4
View File
@@ -23,11 +23,11 @@ export async function batchRecognizeTencentCaptcha(payload: OcrRequestPayload):
return callOcrViaHttp('batch', payload, { timeoutMs: 180_000 })
}
export async function warmupLocalOcrWorker(): Promise<void> {
export async function warmupOcrService(): Promise<void> {
await warmupOcrViaHttp()
}
export async function closeLocalOcrWorker(): Promise<void> {
export async function closeOcrService(): Promise<void> {
// HTTP 模式无持久连接,无需关闭。
}
@@ -58,7 +58,7 @@ async function callOcrViaHttp(
if (err instanceof Error && err.name === 'TimeoutError') {
throw new Error(`OCR 请求超时(${timeoutMs}ms),请检查 OCR 服务状态`)
}
throw new Error(`OCR 服务不可用(${baseUrl}),请检查 ocr-worker 容器是否正常运行`)
throw new Error(`OCR 服务不可用(${baseUrl}),请检查 OCR_BASE_URL 或外部 OCR 服务状态`)
}
if (!response.ok) {
@@ -93,7 +93,7 @@ async function warmupOcrViaHttp(): Promise<void> {
if (err instanceof Error && err.name === 'TimeoutError') {
throw new Error(`OCR 服务健康检查超时,请检查 ${baseUrl} 是否可访问`)
}
throw new Error(`OCR 服务不可用(${baseUrl}),请检查 ocr-worker 容器是否正常运行`)
throw new Error(`OCR 服务不可用(${baseUrl}),请检查 OCR_BASE_URL 或外部 OCR 服务状态`)
}
if (!response.ok) {
throw new Error(`OCR 服务健康检查失败:HTTP ${response.status}`)