transcripts(routes): cache api_stats on (month, day_dirs_mtime)
Month-picker clicks were re-scanning matching transcript days on every request. Cache
api_stats with lru_cache(maxsize=64) keyed on the month plus the maximum mtime
observed anywhere under the matching day directories so repeat requests for unchanged
months reuse the prior result. Any create, delete, or modify under a matching day dir
changes that mtime key and forces a cache miss, and FileNotFoundError races during the
rglob walk are skipped silently.