Add ETFCollector (KRX master data) and ETFPriceCollector (pykrx OHLCV)
with corresponding admin API endpoints and frontend collection UI buttons.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Portfolio pages updated with DashboardLayout and shadcn/ui Card components
- Strategy pages updated (multi-factor, quality, value-momentum)
- Backtest pages updated with consistent styling
- Admin data management page updated
- Login page improved with shadcn/ui Card, Input, Button, Label
- All pages now support dark mode via CSS variables
- Removed old Sidebar/Header imports, using unified DashboardLayout
- Added shadcn/ui input and label components
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add user-facing error state with red alert box for failed operations
- Improve error handling in fetchJobs and runCollector functions
- Add aria-labels to collector buttons for better accessibility
- Add scope="col" to table headers for proper semantic HTML
- Add refresh loading state with disabled button styling
- Create handleRefresh function for proper state management during refresh
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add frontend page for admin data collection management at /admin/data.
The page displays available collectors (stocks, sectors, prices, valuations)
with buttons to trigger collection jobs, and shows recent job history
with status, timing, record counts, and error information.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>