- Create currency.service.ts with frankfurter.app ECB rate fetching - 24h in-memory cache with stale-serve fallback on fetch failure - convertPrice() handles EUR-base cross-currency conversion - CURRENCY_MARKET_MAP maps currencies to market regions - 12 unit tests covering conversion, rounding, unknowns, and mapping Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>