Files
makemd/server/src/services/SocialTrendSourcingService.ts

59 lines
2.4 KiB
TypeScript
Raw Normal View History

import db from '../config/database';
import { logger } from '../utils/logger';
import { AdviceService } from '../domains/Strategy/AdviceService';
export interface SocialTrend {
keyword: string;
platform: 'TikTok' | 'Instagram' | 'Pinterest';
growthRate: number; // 增长率
mentions: number; // 提及次数
relatedProducts: string[];
}
/**
* [BIZ_MKT_05]
* @description AI
*/
export class SocialTrendSourcingService {
/**
* (BIZ_MKT_05)
*/
static async discoverTrends(tenantId: string): Promise<void> {
logger.info(`[SocialTrend] Discovering trends for Tenant: ${tenantId}`);
// 1. 模拟采集社交热点数据 (实际中应集成外部 API 或爬虫)
const trends = await this.mockCollectTrends();
for (const trend of trends) {
// 2. 识别高增长热词
if (trend.growthRate > 0.5) {
logger.info(`[SocialTrend] High growth trend detected: ${trend.keyword} (+${(trend.growthRate * 100).toFixed(0)}%)`);
// 3. 自动触发策略建议 (BIZ_AI_16-EXT)
await AdviceService.recordAdvice({
tenantId,
shopId: 'DEFAULT',
traceId: `TREND-${Date.now()}`,
insight: {
type: 'ARBITRAGE',
title: `Social Trend Alert: ${trend.keyword}`,
description: `The keyword "${trend.keyword}" is trending on ${trend.platform} with a ${ (trend.growthRate * 100).toFixed(0) }% growth rate. Potential for arbitrage.`,
impact: 'high',
confidence: 0.88,
suggestedAction: `Source products related to "${trend.keyword}" from 1688 and test on Shopify.`,
metadata: { keyword: trend.keyword, platform: trend.platform, growthRate: trend.growthRate, mentions: trend.mentions }
}
});
}
}
}
private static async mockCollectTrends(): Promise<SocialTrend[]> {
return [
{ keyword: 'portable_espresso_maker', platform: 'TikTok', growthRate: 0.65, mentions: 12500, relatedProducts: [] },
{ keyword: 'ergonomic_office_chair', platform: 'Instagram', growthRate: 0.2, mentions: 5400, relatedProducts: [] },
{ keyword: 'smart_home_fragrance', platform: 'TikTok', growthRate: 0.8, mentions: 8900, relatedProducts: [] }
];
}
}