
    ^5jc                     <   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZmZ ddlmZ dd	lmZ  ej,                  d
      d        Z ej,                  d      d        Z ej,                  d      d        Z ej,                  d      d        Zy)u  
Analytics & Insights — Stories 10.1–10.7.

Routes:
  GET /analytics/               → overview (spending chart + flags)
  GET /analytics/subscriptions  → subscription detector
  GET /analytics/merchants      → merchant spend summary
  GET /analytics/recommendations → history-based budget recommendations
  GET /api/analytics/spending-by-category → JSON for chart
  GET /api/analytics/monthly-totals      → JSON for MoM/YoY chart
    )date)render_templaterequest)analytics_bp)Settings)spending_by_category_monthlymonthly_totalsmom_comparisonyoy_comparison)merchant_spend_summaryfrom_history)detect_subscriptions)get_spending_flags/c            	         t        j                         } t        j                  j	                         }|r|j
                  nd }t               }|D cg c]  }|j                   }}t        ||      }t        | j                  | j                        }t        | j                  | j                        }t        d      }	t        d||||	| d      S c c}w )N   zanalytics/index.html	analytics)flagsmomyoymonthlytodayactive_page)r   r   r   queryfirstmonthly_incomer   merchantr   r
   yearmonthr   r	   r   )
r   settingsr   subscriptionsssub_merchantsr   r   r   r   s
             ;/var/www/html/financials/app/blueprints/analytics/routes.pyindexr%      s    JJLE~~##%H08X,,dN(*M)67AQZZ7M7~}=E
U[[
1C
U[[
1CR G  8s   Cz/subscriptionsc                  2    t               } t        d| d      S )Nzanalytics/subscriptions.htmlr   )r!   r   )r   r   )subss    r$   r!   r!   3   s     !D&     z
/merchantsc                      t         j                  j                  d      } t         j                  j                  d      }t        d| |      }t	        d|| |d      S )Nfromto   )limit	date_fromdate_tozanalytics/merchants.htmlr   )	merchantsr.   r/   r   )r   argsgetr   r   )r.   r/   summarys      r$   r0   r0   =   sT      (Illt$G$2GTG" r(   z/recommendationsc                     t         j                  j                         } | r| j                  nd }ddlm} ddlm} ddlm	} |j                  j                  |j                  |j                  |j                  |j                  dd                        j                         xs d}|dk\  }|r|rt!        |      ng }t#        d|||d	
      S )Nr   )func)db)Transaction         zanalytics/recommendations.htmlr   )recommendationshas_historyr   r   )r   r   r   r   
sqlalchemyr5   app.extensionsr6   app.models.transactionr7   sessioncountdistinctsubstrr   scalarr   r   )r    r   r5   r6   r7   month_countr<   recss           r$   r;   r;   K   s    ~~##%H08X,,dN  !2


JJKK 0 0!Q7	
 &(	   "K+6><'rD(% r(   N)__doc__datetimer   flaskr   r   app.blueprints.analyticsr   app.models.settingsr   &app.services.analytics.trend_analyticsr   r	   r
   r   'app.services.analytics.budget_analyticsr   r   +app.services.insights.subscription_detectorr   #app.services.insights.pattern_flagsr   router%   r!   r0   r;    r(   r$   <module>rR      s   
  * 1 (  Y L B C 0 $% & L!
 "
 &' (r(   