增加feifei履约配置界面

This commit is contained in:
yml2213
2026-07-07 14:02:56 +08:00
parent fcb3ac3b38
commit 92d819c616
17 changed files with 927 additions and 11 deletions
@@ -0,0 +1,70 @@
import { getKuaishouFeifeiConfig } from '../../platforms/kuaishou-feifei/config.js'
import { resolveKuaishouFeifeiProductByName } from '../../platforms/kuaishou-feifei/product-rule-service.js'
import {
getKuaishouFeifeiConfigFilePath,
getKuaishouFeifeiSourceConfig,
hasKuaishouFeifeiConfigFile,
normalizeKuaishouFeifeiSourceConfig,
saveKuaishouFeifeiSourceConfig,
} from '../../platforms/kuaishou-feifei/source-config-service.js'
import { normalizeCloudtentaclesMatchName } from '../../order/cloudtentacles-match-utils.js'
type JsonObject = Record<string, any>
export function getAdminKuaishouFeifeiConfig() {
const source = getAdminEditableKuaishouFeifeiConfig()
const effective = getKuaishouFeifeiConfig()
return {
filePath: getKuaishouFeifeiConfigFilePath(),
source,
effective: mapEffectiveKuaishouFeifeiConfig(effective),
}
}
export function updateAdminKuaishouFeifeiConfig(payload: JsonObject = {}) {
const saved = saveKuaishouFeifeiSourceConfig(payload)
const effective = getKuaishouFeifeiConfig()
return {
filePath: getKuaishouFeifeiConfigFilePath(),
source: saved,
effective: mapEffectiveKuaishouFeifeiConfig(effective),
}
}
export function matchAdminKuaishouFeifeiProduct(payload: JsonObject = {}) {
const productName = String(payload.productName || '').trim()
const source = getAdminEditableKuaishouFeifeiConfig()
const match = resolveKuaishouFeifeiProductByName(productName, {
enabled: source.enabled,
rules: source.productRules,
})
return {
productName,
normalizedProductName: normalizeCloudtentaclesMatchName(productName),
matched: Boolean(match),
match,
}
}
function getAdminEditableKuaishouFeifeiConfig() {
if (hasKuaishouFeifeiConfigFile()) {
return getKuaishouFeifeiSourceConfig()
}
return normalizeKuaishouFeifeiSourceConfig(getKuaishouFeifeiConfig())
}
function mapEffectiveKuaishouFeifeiConfig(config: ReturnType<typeof getKuaishouFeifeiConfig>) {
return {
enabled: config.enabled !== false,
baseUrl: config.baseUrl,
timeoutMs: config.timeoutMs,
notifyUrl: config.notifyUrl,
hasAppKey: Boolean(config.appKey),
hasAppSecret: Boolean(config.appSecret),
productRuleCount: config.productRules.length,
}
}