refactor: generalize recommendation pipeline — candidate → rank → render stages #80
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
The current recommender mixes candidate fetching, feature extraction, policy selection, and tip serving in one function. As we add AI-generated tips, multiple signal sources, and more policies, this becomes unmaintainable.
Design
Split
POST /recommendinto a staged pipeline:Each stage is an interface. Pipeline composition is config-driven.
Tasks
CandidateGenerator,FeatureExtractor,RankingPolicy,TipRendererinterfaces