- Database: Add subscription_tier, messages_remaining, monthly_messages_used, and last_billing_date to User model
- Migration: Generate and apply Alembic migration with server_defaults for existing rows
- Backend: Enforce bearer token authorization and message limits on /analyst/chat endpoint
- Backend: Map Razorpay webhook payment capture to user subscription tiers and credit allocations
- Frontend: Implement live ticking 3-day countdown timer for Pro pack discount (₹10k vs ₹15k)
- Frontend: Show real-time remaining quota badge in Chatbot header and lock chat input when limit is reached
feat: implement real-time price alerts via email with 2-minute reminder loops
- models.py: Add is_triggered and last_notified_at columns to the Alert database model.
- crud.py: Add trigger_alert and update_alert_notification_time database handlers.
- crud.py: Check active alerts and immediately notify on crossover during insert_stock_candle execution.
- email_service.py: Create SMTP email dispatcher with professional HTML template and terminal log fallback.
- celery_app.py: Implement process_triggered_alerts task scheduled to run every 120 seconds.
- Alembic: Generate and execute database migrations to apply schema updates on Postgres.
feat: implement AI Analyst strategy history and persistence
- models.py: Add SavedStrategy database model and establish relationship in User model
- alembic: Generate and apply Postgres migration revision to create saved_strategies table
- crud.py: Implement create_saved_strategy and get_user_saved_strategies helper functions
- schema.py: Expose savedStrategies query field and automatically save generated strategies to the database in get_ai_insight mutation
- App.tsx: Add savedStrategies state, load history on startup, and trigger a refresh when generating new insights
- Dashboard.tsx: Pass savedStrategies prop down to AIAnalyst component
- AIAnalyst.tsx: Redesign component with Analysis/History tabs, scrollable history list with timestamps, and full report expand view
fix: enable SQLAlchemy pre-ping and connection pool recycle to prevent Neon idle connection drops