[fix] Correct API node pricing discrepancies (#4381)

This commit is contained in:
Christian Byrne
2025-07-07 23:33:55 -07:00
committed by Terry Jia
parent 19dca23247
commit fc35d2227c
2 changed files with 14 additions and 14 deletions

View File

@@ -151,7 +151,7 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
const renderingSpeed = String(renderingSpeedWidget.value) const renderingSpeed = String(renderingSpeedWidget.value)
if (renderingSpeed.toLowerCase().includes('quality')) { if (renderingSpeed.toLowerCase().includes('quality')) {
basePrice = 0.08 basePrice = 0.09
} else if (renderingSpeed.toLowerCase().includes('balanced')) { } else if (renderingSpeed.toLowerCase().includes('balanced')) {
basePrice = 0.06 basePrice = 0.06
} else if (renderingSpeed.toLowerCase().includes('turbo')) { } else if (renderingSpeed.toLowerCase().includes('turbo')) {
@@ -322,15 +322,15 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
const effectScene = String(effectSceneWidget.value) const effectScene = String(effectSceneWidget.value)
if ( if (
effectScene.includes('fuzzyfuzzy') || effectScene.includes('fuzzyfuzzy') ||
effectScene.includes('squish') || effectScene.includes('squish')
effectScene.includes('expansion')
) { ) {
return '$0.28/Run' return '$0.28/Run'
} else if ( } else if (effectScene.includes('dizzydizzy')) {
effectScene.includes('dizzydizzy') ||
effectScene.includes('bloombloom')
) {
return '$0.49/Run' return '$0.49/Run'
} else if (effectScene.includes('bloombloom')) {
return '$0.49/Run'
} else if (effectScene.includes('expansion')) {
return '$0.28/Run'
} }
return '$0.28/Run' return '$0.28/Run'
@@ -448,12 +448,12 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
} else if (model.includes('ray-2')) { } else if (model.includes('ray-2')) {
if (duration.includes('5s')) { if (duration.includes('5s')) {
if (resolution.includes('4k')) return '$6.37/Run' if (resolution.includes('4k')) return '$6.37/Run'
if (resolution.includes('1080p')) return '$2.30/Run' if (resolution.includes('1080p')) return '$1.59/Run'
if (resolution.includes('720p')) return '$0.71/Run' if (resolution.includes('720p')) return '$0.71/Run'
if (resolution.includes('540p')) return '$0.40/Run' if (resolution.includes('540p')) return '$0.40/Run'
} else if (duration.includes('9s')) { } else if (duration.includes('9s')) {
if (resolution.includes('4k')) return '$11.47/Run' if (resolution.includes('4k')) return '$11.47/Run'
if (resolution.includes('1080p')) return '$4.14/Run' if (resolution.includes('1080p')) return '$2.87/Run'
if (resolution.includes('720p')) return '$1.28/Run' if (resolution.includes('720p')) return '$1.28/Run'
if (resolution.includes('540p')) return '$0.72/Run' if (resolution.includes('540p')) return '$0.72/Run'
} }
@@ -499,12 +499,12 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
} else if (model.includes('ray-2')) { } else if (model.includes('ray-2')) {
if (duration.includes('5s')) { if (duration.includes('5s')) {
if (resolution.includes('4k')) return '$6.37/Run' if (resolution.includes('4k')) return '$6.37/Run'
if (resolution.includes('1080p')) return '$2.30/Run' if (resolution.includes('1080p')) return '$1.59/Run'
if (resolution.includes('720p')) return '$0.71/Run' if (resolution.includes('720p')) return '$0.71/Run'
if (resolution.includes('540p')) return '$0.40/Run' if (resolution.includes('540p')) return '$0.40/Run'
} else if (duration.includes('9s')) { } else if (duration.includes('9s')) {
if (resolution.includes('4k')) return '$11.47/Run' if (resolution.includes('4k')) return '$11.47/Run'
if (resolution.includes('1080p')) return '$4.14/Run' if (resolution.includes('1080p')) return '$2.87/Run'
if (resolution.includes('720p')) return '$1.28/Run' if (resolution.includes('720p')) return '$1.28/Run'
if (resolution.includes('540p')) return '$0.72/Run' if (resolution.includes('540p')) return '$0.72/Run'
} }

View File

@@ -300,14 +300,14 @@ describe('useNodePricing', () => {
}) })
describe('dynamic pricing - IdeogramV3', () => { describe('dynamic pricing - IdeogramV3', () => {
it('should return $0.08 for Quality rendering speed', () => { it('should return $0.09 for Quality rendering speed', () => {
const { getNodeDisplayPrice } = useNodePricing() const { getNodeDisplayPrice } = useNodePricing()
const node = createMockNode('IdeogramV3', [ const node = createMockNode('IdeogramV3', [
{ name: 'rendering_speed', value: 'Quality' } { name: 'rendering_speed', value: 'Quality' }
]) ])
const price = getNodeDisplayPrice(node) const price = getNodeDisplayPrice(node)
expect(price).toBe('$0.08/Run') expect(price).toBe('$0.09/Run')
}) })
it('should return $0.06 for Balanced rendering speed', () => { it('should return $0.06 for Balanced rendering speed', () => {
@@ -348,7 +348,7 @@ describe('useNodePricing', () => {
]) ])
const price = getNodeDisplayPrice(node) const price = getNodeDisplayPrice(node)
expect(price).toBe('$0.24/Run') // 0.08 * 3 expect(price).toBe('$0.27/Run') // 0.09 * 3
}) })
it('should multiply price by num_images for Turbo rendering speed', () => { it('should multiply price by num_images for Turbo rendering speed', () => {