import db from '../config/database'; import { AuditService } from './AuditService'; import { AIService } from './AIService'; /** * [BIZ_MKT_11] 基于用户画像的个性化定价策略 * 负责针对不同用户群体(如新客、老客、高价值客户等)自动生成个性化的定价与折扣建议 */ export class PersonalizedPricingService { /** * 为特定用户群体生成个性化价格 */ static async suggestPersonalizedPrice( tenantId: string, productId: string, userSegment: string, traceId: string ): Promise { // 1. 获取商品基础价格 const product = await db('cf_product').where({ productId }).first(); const basePrice = product?.price || 0; // 2. 个性化策略逻辑 (基于用户画像自动计算最优折扣) // 模拟调用 AI 分析用户画像并给出折扣建议 const discountRate = await AIService.calculateOptimalDiscount(userSegment, productId); const personalizedPrice = basePrice * (1 - discountRate); // 3. 持久化定价记录 await db.transaction(async (trx) => { const [id] = await trx('cf_personalized_pricing').insert({ tenant_id: tenantId, product_id: productId, user_segment: userSegment, base_price: basePrice, personalized_price: personalizedPrice, discount_rate: discountRate }); // 审计记录 await AuditService.log({ tenant_id: tenantId, action: 'PERSONALIZED_PRICE_SUGGESTED', target_type: 'PRICING_STRATEGY', target_id: id.toString(), trace_id: traceId, new_data: JSON.stringify({ personalizedPrice, discountRate }), metadata: JSON.stringify({ userSegment, productId }) }); }); return personalizedPrice; } /** * 获取租户所有生效的个性化定价 */ static async getActivePricings(tenantId: string) { return await db('cf_personalized_pricing') .where({ tenant_id: tenantId }) .orderBy('created_at', 'desc'); } }