feat: registration gravity from DB config instead of hardcoded

- Add registrationGravity to pricing config (default 50, adjustable via admin)
- Inject PricingService into UserService, read config for all 4 registration paths
- Expose registrationGravity in /member/plans response for frontend
- Login page fetches dynamic value from API, replaces hardcoded '50'
- Update user.vue gravity card copy
This commit is contained in:
yuzhiran
2026-06-25 08:12:01 +08:00
parent 52e5350ba0
commit 2fddd39301
5 changed files with 38 additions and 6 deletions
@@ -10,6 +10,8 @@ export interface GravityRates {
}
interface PricingConfig {
/** 新用户注册赠送引力值 */
registrationGravity: number
interview: { pricePerSession: number; creditsPerPurchase: number }
resumeOptimize: { freeLimit: number; pricePerOptimize: number; creditsPerPurchase: number }
resumeDownload: { pricePerDownload: number; creditsPerPurchase: number }
@@ -21,6 +23,7 @@ interface PricingConfig {
}
const DEFAULT_PRICING: PricingConfig = {
registrationGravity: 50,
interview: { pricePerSession: 600, creditsPerPurchase: 1 },
resumeOptimize: { freeLimit: 3, pricePerOptimize: 400, creditsPerPurchase: 1 },
resumeDownload: { pricePerDownload: 200, creditsPerPurchase: 1 },
@@ -62,6 +65,7 @@ export class PricingService {
private mergeDefaults(value: any): PricingConfig {
return {
registrationGravity: value?.registrationGravity ?? DEFAULT_PRICING.registrationGravity,
interview: { ...DEFAULT_PRICING.interview, ...value?.interview },
resumeOptimize: { ...DEFAULT_PRICING.resumeOptimize, ...value?.resumeOptimize },
resumeDownload: { ...DEFAULT_PRICING.resumeDownload, ...value?.resumeDownload },