The AI analysis card now fetches asynchronously on the client side after
the page mounts, instead of blocking the entire server-rendered page until
the LLM returns. A loading skeleton with animate-pulse is shown while the
analysis is being generated.
- Convert StockAIAnalysisCard to client component with useEffect fetch
- Page now only awaits fast sentiment insights server-side
- Add getAIAnalysis server action for client-side AI analysis requests
- Show loading skeleton and error states in the AI analysis card
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add StockAIAnalysisCard component for displaying AI analysis results
- Add stock-analysis server actions and helper utilities
- Integrate Finnhub data into AI analysis pipeline
- Update AI provider with enhanced stock analysis capabilities
- Add Inngest prompt templates for stock analysis
- Wire AI analysis into stock symbol page
- Add unit tests for stock analysis helpers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add PasswordRequirements component showing rules with live checkmarks
- Add PASSWORD_RULES and PASSWORD_VALIDATION constants
- Update sign-up and reset-password forms to show requirements
Expand formatSymbolForTradingView to map 40+ Finnhub exchange suffixes
to their TradingView prefix equivalents. Previously only .SS, .SZ, and
.HK were handled, causing international symbols like 2330.TW to fail
on the stock details page.
Add comprehensive test suite for utility functions including
formatSymbolForTradingView, formatMarketCapValue, formatChangePercent,
getChangeColorClass, and calculateNewsDistribution.
Closes#24
Introduce a configurable AI provider system (lib/ai-provider.ts) that
supports Gemini (default), MiniMax, and Siray.ai with automatic
fallback. The AI_PROVIDER env var selects the primary provider, and
on failure the system falls back to a secondary provider automatically.
- MiniMax M2.7 via OpenAI-compatible API (api.minimax.io/v1)
- Provider abstraction replaces hardcoded Gemini + Siray fallback
- 24 unit tests + 3 integration tests (vitest)