46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
'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,
|
|
};
|