feat: KRW 가격 지원 및 GPU/G8/VPU 인스턴스 추가
## KRW 가격 기능 - pricing 테이블에 hourly_price_krw, monthly_price_krw 컬럼 추가 - 부가세 10% + 영업이익 10% + 환율 적용 (기본 1450원) - 시간당: 1원 단위 반올림 (최소 1원) - 월간: 100원 단위 반올림 (최소 100원) - 환율/부가세/영업이익률 환경변수로 분리 (배포 없이 변경 가능) ## GPU/G8/VPU 인스턴스 지원 - gpu_instances, gpu_pricing 테이블 추가 - g8_instances, g8_pricing 테이블 추가 - vpu_instances, vpu_pricing 테이블 추가 - Linode/Vultr 커넥터에 GPU 동기화 로직 추가 ## 환경변수 추가 - KRW_EXCHANGE_RATE: 환율 (기본 1450) - KRW_VAT_RATE: 부가세율 (기본 1.1) - KRW_MARKUP_RATE: 영업이익률 (기본 1.1) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,11 +8,24 @@ export { ProvidersRepository } from './providers';
|
||||
export { RegionsRepository } from './regions';
|
||||
export { InstancesRepository } from './instances';
|
||||
export { PricingRepository } from './pricing';
|
||||
export { GpuInstancesRepository } from './gpu-instances';
|
||||
export { GpuPricingRepository } from './gpu-pricing';
|
||||
export { G8InstancesRepository } from './g8-instances';
|
||||
export { G8PricingRepository } from './g8-pricing';
|
||||
export { VpuInstancesRepository } from './vpu-instances';
|
||||
export { VpuPricingRepository } from './vpu-pricing';
|
||||
|
||||
import { ProvidersRepository } from './providers';
|
||||
import { RegionsRepository } from './regions';
|
||||
import { InstancesRepository } from './instances';
|
||||
import { PricingRepository } from './pricing';
|
||||
import { GpuInstancesRepository } from './gpu-instances';
|
||||
import { GpuPricingRepository } from './gpu-pricing';
|
||||
import { G8InstancesRepository } from './g8-instances';
|
||||
import { G8PricingRepository } from './g8-pricing';
|
||||
import { VpuInstancesRepository } from './vpu-instances';
|
||||
import { VpuPricingRepository } from './vpu-pricing';
|
||||
import type { Env } from '../types';
|
||||
|
||||
/**
|
||||
* Repository factory for creating repository instances
|
||||
@@ -23,8 +36,14 @@ export class RepositoryFactory {
|
||||
private _regions?: RegionsRepository;
|
||||
private _instances?: InstancesRepository;
|
||||
private _pricing?: PricingRepository;
|
||||
private _gpuInstances?: GpuInstancesRepository;
|
||||
private _gpuPricing?: GpuPricingRepository;
|
||||
private _g8Instances?: G8InstancesRepository;
|
||||
private _g8Pricing?: G8PricingRepository;
|
||||
private _vpuInstances?: VpuInstancesRepository;
|
||||
private _vpuPricing?: VpuPricingRepository;
|
||||
|
||||
constructor(private _db: D1Database) {}
|
||||
constructor(private _db: D1Database, private _env?: Env) {}
|
||||
|
||||
/**
|
||||
* Access to raw D1 database instance for advanced operations (e.g., batch queries)
|
||||
@@ -33,6 +52,13 @@ export class RepositoryFactory {
|
||||
return this._db;
|
||||
}
|
||||
|
||||
/**
|
||||
* Access to environment variables for KRW pricing configuration
|
||||
*/
|
||||
get env(): Env | undefined {
|
||||
return this._env;
|
||||
}
|
||||
|
||||
get providers(): ProvidersRepository {
|
||||
return this._providers ??= new ProvidersRepository(this.db);
|
||||
}
|
||||
@@ -46,6 +72,30 @@ export class RepositoryFactory {
|
||||
}
|
||||
|
||||
get pricing(): PricingRepository {
|
||||
return this._pricing ??= new PricingRepository(this.db);
|
||||
return this._pricing ??= new PricingRepository(this.db, this._env);
|
||||
}
|
||||
|
||||
get gpuInstances(): GpuInstancesRepository {
|
||||
return this._gpuInstances ??= new GpuInstancesRepository(this.db);
|
||||
}
|
||||
|
||||
get gpuPricing(): GpuPricingRepository {
|
||||
return this._gpuPricing ??= new GpuPricingRepository(this.db, this._env);
|
||||
}
|
||||
|
||||
get g8Instances(): G8InstancesRepository {
|
||||
return this._g8Instances ??= new G8InstancesRepository(this.db);
|
||||
}
|
||||
|
||||
get g8Pricing(): G8PricingRepository {
|
||||
return this._g8Pricing ??= new G8PricingRepository(this.db, this._env);
|
||||
}
|
||||
|
||||
get vpuInstances(): VpuInstancesRepository {
|
||||
return this._vpuInstances ??= new VpuInstancesRepository(this.db);
|
||||
}
|
||||
|
||||
get vpuPricing(): VpuPricingRepository {
|
||||
return this._vpuPricing ??= new VpuPricingRepository(this.db, this._env);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user