fix(userapi): валюта и ставки Macloud/VDSina при синке
Docker / build (push) Has been cancelled

Валюта VPS берётся из baseCurrency хостера, ставки — из тарифных планов с fallback и parsePlanCost. На списке VPS цены в валюте провайдера. Расширен parseTariffPrice для форматов UserAPI. Добавлены фильтры на странице тарифов.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-06-29 02:48:04 +07:00
co-authored by Cursor
parent 6c5eb04fae
commit 031fc3aaa0
14 changed files with 1508 additions and 144 deletions
+49 -1
View File
@@ -49,7 +49,55 @@ describe('mapServerToVps', () => {
expect(vps.notes).toContain('macloud-12345')
expect(vps.tariffType).toBe('daily')
expect(vps.dailyRate).toBe(1.55)
expect(vps.monthlyRate).toBeNull()
expect(vps.monthlyRate).toBe(46.5)
expect(vps.currency).toBe('RUB')
})
it('parses string plan cost from index', () => {
const planIndex = new Map([
[
'1',
{
id: 1,
name: 'Plan',
cost: '2.50',
period: 'day',
},
],
])
const vps = mapServerToVps(server, 'vdsina', 'prov-1', 'acc-1', planIndex, 'USD')
expect(vps.dailyRate).toBe(2.5)
expect(vps.currency).toBe('USD')
})
it('falls back to tariff item price when plan index misses', () => {
const tariffByPlanId = new Map([
[
'1',
{
externalId: '1',
datacenterKey: '11',
datacenterName: 'Cloud',
name: 'Plan',
desc: '',
vcpu: 1,
ramGb: 1,
diskGb: 10,
diskType: 'NVMe',
virtualization: 'KVM',
channel: '',
location: 'Cloud',
country: '',
cpuModel: '',
orderAvailable: true,
price: '3 USD/day',
},
],
])
const vps = mapServerToVps(server, 'vdsina', 'prov-1', 'acc-1', undefined, 'USD', tariffByPlanId)
expect(vps.dailyRate).toBe(3)
expect(vps.monthlyRate).toBe(90)
expect(vps.currency).toBe('USD')
})
it('maps monthly plan cost from plan index', () => {