'use strict'; const { getAlibaba1688ImageSearchRuntimeConfig } = require('./alibaba1688ImageSearchSettings'); const { getSimilarProductsRuntimeConfig } = require('./similarProductsSettings'); function shouldRequireImageSearchCredentials() { // Image search is an optional integration in the PDD edition. const configured = String(process.env.REQUIRE_PERSISTED_IMAGE_SEARCH_SECRETS || '').trim().toLowerCase(); return configured === 'true' || configured === '1'; } async function verifyImageSearchCredentials() { const [companyConfig, alibabaConfig] = await Promise.all([ getSimilarProductsRuntimeConfig({ forceRefresh: true }), getAlibaba1688ImageSearchRuntimeConfig({ forceRefresh: true }), ]); const status = { company: { configured: Boolean(companyConfig.token), source: companyConfig.secretSource || companyConfig.source || 'unconfigured', }, alibaba1688: { configured: Boolean(alibabaConfig.ak), source: alibabaConfig.secretSource || alibabaConfig.source || 'unconfigured', }, }; const missing = []; if (!status.company.configured) missing.push('公司以图搜图 API Key'); if (!status.alibaba1688.configured) missing.push('1688 以图搜图 AccessKey'); if (missing.length) { const error = new Error(`生产密钥守卫校验失败:${missing.join('、')}`); error.code = 'IMAGE_SEARCH_CREDENTIALS_MISSING'; error.status = status; throw error; } return status; } module.exports = { shouldRequireImageSearchCredentials, verifyImageSearchCredentials, };