修复 lewan 虚拟号配额被占满:过期绑定自动回收、退号失败不再追加取号、取号占满增加冷却

This commit is contained in:
yml2213
2026-08-08 02:15:13 +08:00
parent 84a4c6c627
commit 995de86322
4 changed files with 200 additions and 4 deletions
@@ -13,6 +13,10 @@ import {
notifyCloudtentaclesAssetLow,
notifyCloudtentaclesAuthExpired,
} from '../notification/domain-notifications.js'
import {
recycleCloudtentaclesStaleNumbers,
retryCloudtentaclesPendingReturns,
} from './cloudtentacles-number-recycle-service.js'
type CloudtentaclesHealthAccountResult = {
sourceKey: string
@@ -31,9 +35,13 @@ type CloudtentaclesHealthAccountResult = {
export async function runCloudtentaclesHealthJob(job: JsonObject) {
const accounts = resolveCloudtentaclesHealthAccounts(job)
const cooldownSeconds = Number(job.cooldownSeconds || 1800)
const results = await Promise.all(
accounts.map((account) => runCloudtentaclesHealthAccount(account, cooldownSeconds)),
)
const [results, recycleResult, returnRetryResult] = await Promise.all([
Promise.all(
accounts.map((account) => runCloudtentaclesHealthAccount(account, cooldownSeconds)),
),
recycleCloudtentaclesStaleNumbers(),
retryCloudtentaclesPendingReturns(),
])
const checkedResults = results.filter((item) => !item.skipped)
const failedResults = checkedResults.filter((item) => item.ok === false)
const lowAssetResults = checkedResults.filter((item) => item.status === 'asset_low')
@@ -60,6 +68,8 @@ export async function runCloudtentaclesHealthJob(job: JsonObject) {
? Math.max(...checkedResults.map((item) => Number(item.threshold || 0)))
: normalizeNonNegativeInteger(job.config?.assetThreshold, 500),
accounts: results,
numberRecycle: recycleResult,
pendingReturnRetry: returnRetryResult,
}
}