IAIService:
+ generateMatchExplanation, summarizeTradeOffs, generateDataQualitySummary,
classifyMarketSignal (4 new methods covering all documented AI output types)
OpenRouterAIService:
- All 11 methods now make real API calls via withFallback() pattern
- Every fallback is explicit (console.warn/error) — no silent mock bleed-through
- Proper JSON extraction with type-safe parsers, no any casts
- parseNeed: AI JSON → ParseNeedResult mapping (no TODO stubs)
- generateFollowUpQuestions, generateMatchExplanation, summarizeTradeOffs,
generateDataQualitySummary, classifyMarketSignal, generateOfferEmail,
extractCriteria, generateFollowUp: fully implemented
Prompts: +followUpQuestionsPrompt, +tradeOffPrompt, +dataQualityPrompt, +marketSignalPrompt
Factory (index.ts):
- VITE_AI_PROVIDER=mock|openrouter (new, takes priority)
- VITE_USE_REAL_AI=true still supported (legacy compat)
- Missing API key → explicit console.warn + MockAIService fallback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>