3개의 TTLCache (portfolio 120s · news 600s · screener 180s) + 헬퍼 함수. screener key는 mode + top_n + weights canonical hash로 분기. 다음 커밋에서 /api/webai/portfolio·news-sentiment·screener/run 3 endpoint에 적용. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>