autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
46 lines (45 loc) • 1.72 kB
TypeScript
/**
* RecommendationMetrics — 推荐效果度量追踪
*
* 追踪推荐系统的关键指标:
* - 展示次数 (display)
* - 查看次数 (view)
* - 采纳次数 (adopt)
* - 忽略次数 (dismiss)
* - 采纳率 = adopt / (adopt + dismiss)
* - CTR = view / display
*
* 所有数据委托给 FeedbackStore 持久化。
* 本类只负责实时聚合 + 对外暴露接口。
*/
import type { FeedbackStore } from './FeedbackStore.js';
import type { RecommendationMetricsSnapshot, ScoredRecommendation } from './types.js';
interface MetricsCounters {
displayed: number;
viewed: number;
adopted: number;
dismissed: number;
expired: number;
}
export declare class RecommendationMetrics {
#private;
constructor(feedbackStore: FeedbackStore);
/** 记录推荐已展示 (dashboard/MCP 返回推荐列表时调用) */
trackDisplayed(recommendations: ScoredRecommendation[]): void;
/** 记录推荐被采纳 */
trackAdopted(recommendationId: string, source?: string, category?: string): Promise<void>;
/** 记录推荐被忽略 */
trackDismissed(recommendationId: string, reason?: string, source?: string, category?: string): Promise<void>;
/** 记录推荐过期 */
trackExpired(recommendationId: string, source?: string): Promise<void>;
/** 获取当前会话的指标 */
getSessionMetrics(): MetricsCounters & {
adoptionRate: number;
ctr: number;
};
/** 获取全局指标快照 (含持久化历史) */
getGlobalSnapshot(since?: Date): RecommendationMetricsSnapshot;
/** 获取指定来源的采纳率 */
getAdoptionRateBySource(source: string): number;
}
export default RecommendationMetrics;