Files
config-center/__tests__/supplier-contract-updates.test.mjs

48 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { test } from 'node:test'
import assert from 'node:assert/strict'
import { readFileSync, readdirSync } from 'node:fs'
import { fileURLToPath } from 'node:url'
import { join } from 'node:path'
import { parseSourcePage } from '../scripts/validate-sources.mjs'
const root = fileURLToPath(new URL('../', import.meta.url))
const read = path => JSON.parse(readFileSync(join(root, path), 'utf8'))
test('Kimi domestic token prices remain distinct from write TTL and subscription prices', () => {
const provider = read('compute/providers/moonshot.json')
const model = provider.models.find(item => item.modelName === 'kimi-k3')
assert.equal(provider.priceCurrency, 'CNY')
assert.deepEqual([model.inputPrice, model.outputPrice, model.extra.cacheHitPrice], [20, 100, 2])
assert.equal(model.maxOutputTokens, 1048576)
assert.match(model.extra.pricingNotes, /TTL 5min 20, TTL 1h 40/)
const page = parseSourcePage(readFileSync(join(root, 'docs/model-sources/providers/moonshot/models/kimi-k3.md'), 'utf8'))
const proof = page.records.find(item => item.config === 'compute/providers/moonshot.json').fieldSources
for (const field of ['inputPrice', 'outputPrice', 'extra.cacheHitPrice']) assert.ok(proof.some(item => item.field === field && item.source === 'kimi-pricing'))
})
test('Xiaomi normal API prices do not use batch rates or ASR duration as token prices', () => {
const provider = read('compute/providers/xiaomi.json')
const old = provider.models.find(item => item.modelName === 'mimo-v2.5-pro')
assert.deepEqual([old.inputPrice, old.outputPrice, old.extra.cachedInputPrice], [3, 6, 0.025])
const asr = provider.models.find(item => item.modelName === 'mimo-v2.5-asr')
assert.equal(asr.inputPrice, undefined)
assert.equal(asr.outputPrice, undefined)
const fast = provider.models.find(item => item.modelName === 'mimo-v2.6-pro-ultraspeed')
assert.deepEqual([fast.inputPrice, fast.outputPrice], [30, 60])
})
test('Baidu Coding Plan does not inherit native ERNIE vision or obsolete quota multipliers', () => {
const plan = read('compute/coding-plans/baidu-coding.json')
assert.equal(plan.models.some(item => item.capabilities?.includes('vision')), false)
const glm = plan.models.find(item => item.modelName === 'glm-5.1')
assert.match(glm.description, /高峰抵扣 ×4 \/ 低峰 ×3/)
assert.ok(read('compute/providers/baidu.json').models.find(item => item.modelName === 'ernie-5.0').capabilities.includes('vision'))
})
test('JavaScript shell pages cannot silently become verified Volcengine parameters', () => {
const directory = join(root, 'docs/model-sources/providers/volcengine/models')
for (const file of readdirSync(directory)) {
const page = parseSourcePage(readFileSync(join(directory, file), 'utf8'))
for (const record of page.records) {
assert.equal(record.status, 'pending')
assert.deepEqual(record.fieldSources, [])
}
}
})