Files
vps-tracker/apps/api/src/services/billmanager/profiles/README.md
T
DenozordecandCursor 83ed3b8a42
Docker / build (push) Failing after 19s
feat(billmanager): профиль FirstByte — ДЦ, оплата и specs VPS
Парсинг страны/города и paidUntil из list vds; CPU/RAM/диск из vds.order по pricelist_id, иначе vds.edit.

Co-authored-by: Cursor <[email protected]>
2026-07-19 22:38:33 +07:00

2.2 KiB
Raw Blame History

BILLmanager hoster profiles

Унифицированные переопределители для исключений из стандартного ISPsystem API.

Как добавить профиль (5 минут)

  1. Создай profiles/<id>.ts с только расхождениями:
import type { BillmanagerProfileOverrides } from './types.js'

export const myHosterOverrides: BillmanagerProfileOverrides = {
  id: 'myhoster',
  match: {
    hostnames: ['myhoster.com'],
    keywords: ['myhoster'],
  },
  funcs: {
    listVds: 'vds.custom', // если отличается от 'vds'
  },
  // map: { enrichVds: (item, mapped) => ({ ...mapped, country: 'DE' }) },
  // requestParams: { listVds: { p_cnt: 1000 } },
}
  1. Зарегистрируй в registry.ts — массив PROFILE_OVERRIDES (порядок = приоритет матча).

  2. Добавь fixture + тест в profiles.test.ts.

  3. Новый hook (редко) — расширь BillmanagerProfile в types.ts и значение в default.ts.

Контракт

Поле Назначение
match.hostnames substring hostname
match.keywords substring всего URL
funcs.* func= для list / payment / dashboard / order
extract.* ключ для extractList
map.vds / map.payment полный маппер
map.enrichVds пост-обработка после default map
requestParams.* доп. query params

resolveBillmanagerProfile(apiBaseUrl)merge(DEFAULT, override) или DEFAULT.

Sync и operations не содержат if (hoster) — только профиль.

Готовые профили

id Match Что переопределяет
waicore waicore.com / keyword funcs.listVds = vds.vps
firstbyte firstbyte.ru, firstbyte.club, 1byte.ru enrichVds: страна/город, paidUntil ISO, billdaily→daily, diskType/KVM из имени; options.fetchVdsEditForSpecs; sync: specs из vds.order по pricelist_id, иначе vds.edit