
    iD#                     4   d Z ddlZddlmZmZmZ  G d d      Zedk(  ry e       Zg dZ	 e
d        e
d	       e	D ]X  \  ZZej                  ee      Z e
d
e         e
de         e
ded    ded    d        e
ded            e
d	       Z yy)u"  
Four Categories:
1) PRODUCTIVE  → All work-related activities
2) BROWSER     → YouTube, Gmail, social, entertainment, search, ALL MAIL
3) SERVER      → AWS, GCP, Azure, SSH, Docker, monitoring tools
4) NON-WORK    → Untitled, system lock / idle / AFK / screensaver (ActivityWatch)
    N)DictListTuplec            	       d    e Zd Zd Zd
dededeeef   fdZd
dededefdZ	de
e   de
e   fdZy	)ActivityCategorizerc                 L    g d| _         g d| _        g d| _        g d| _        y )N)untitlednew tabblankemptyzlockapp.exelockappzlock screensessionlockzsession lockedzwindows default lock screenidlez	idle-timeafkawayz
not activeuserinactivezno active windowscreensaverzscreen saver)(inboxcomposemailemailz@firsteconomy.comz
@gmail.comz
@yahoo.comz@outlook.comz@hotmail.comzfirst economy mailgmailz
yahoo mailoutlook
protonmailthunderbirdwebmailyoutubezyoutu.benetflixzamazon prime
primevideohotstarspotifytwitchfacebook	instagramsnapchattiktok	pinterestreddittwitterzx.comwhatsapptelegramzgoogle.com/searchzbing.com/search
duckduckgo?q=z&q=z	search?q=)(awsec2s3lambdaiam
cloudwatchazurezmicrosoft azuregcpzgoogle cloudfirebasedigitaloceandropletlinodevultrvercelnetlify
cloudflaregodaddy	namecheapjenkinszgithub actionsz	gitlab cicirclecidocker
kubernetesk8spodsclustergrafana
prometheusdatadogz	new relicsentrysshrdpvnc
teamvieweranydeskopenvpn)0zvisual studiozvs codevscodecursorintellijpycharmphpstormwebstormz.pyz.jsz.tsz.phpz.jsxz.tsxz.htmlz.cssz.jsonz.sql	localhostz	127.0.0.1z:3000z:8000z:5000z:4200postmaninsomniaz
github.comz
gitlab.com	bitbucketzstack overflowchatgptclaudebard
perplexityphindjiranotiontrelloasana
confluenceclickupfigmazadobe xd	photoshopillustratorcpanel
phpmyadmin	filezilla)non_work_keywordsbrowser_keywordsserver_keywordsproductive_keywords)selfs    :E:\timesheet\timesheet_new\backend\activity_categorizer.py__init__zActivityCategorizer.__init__   s*    "
&!
. 
*$
     window_titleapp_namereturnc                 x   | d| j                         |j                         j                         dv ry| j                  D ]  }|v s y dv s$dj                         v sdj                         v ry| j                  D ]  }|v s y | j                  D ]  }|v s y	 t        fd
dD              ryy)N )r	   r
   r    )non-work      ?@r   r   )browserr{   )r}   ffffff?)serverr~   c              3   &   K   | ]  }|v  
 y w)N ).0email_indicatortexts     rq   	<genexpr>z:ActivityCategorizer.categorize_activity.<locals>.<genexpr>   s     n>m?$&>ms   )r|   r   zcompose mailzfirst economy)
productiveg?)lowerstriprl   rm   rn   any)rp   rt   ru   wordr   s       @rq   categorize_activityz'ActivityCategorizer.categorize_activityq   s    q
+113 %%'+OO$ **Dt|( + $;'TZZ\1Vtzz|5K#))Dt|( *
 ((Dt|' ) n>mnn$#rs   c                    | j                  ||      \  }}| d| j                         }|dk(  r*d|j                         v rd}n}d|v rd}nvd|v sd|v rd}nkd}nh|dk(  r$d	|v sd
|v sd|v rd}nTd|v rd}nMd|v sd|v rd}nBd}n?|dk(  rd|v rd}n3d|v rd}n,d|v rd}n%d}n"d|v sd|v rd}nd|v rd}nd|v rd}n	d|v rd}nd }|||||d!S )"Nrx   rz   r	   lockzsystem-lockr   r   r}   r|   r   r   r   r   entertainmentr-   searchzgeneral-browsingr   r.   r4   r5   zserver-toolsrQ   code.execodingrW   z
dev-serverrX   zapi-testingrf   designzproductive-general)categorysubcategory
confidencert   ru   )r   r   )rp   rt   ru   r   r   r   subs          rq   get_detailed_categoryz)ActivityCategorizer.get_detailed_category   s@   #77hO*q
+113z!TZZ\) 4#45D= "d{go4d"%$(d"2(!}D$$4:#5$"d"#D* !$( 
 	
rs   
activitiesc                     g }|D ]V  }| j                  |j                  dd      |j                  dd            }|j                  |       |j                  |       X |S )Nrt   ry   application_name)r   getupdateappend)rp   r   categorizedactivityinfos        rq   categorize_batchz$ActivityCategorizer.categorize_batch   sb    "H--^R0/4D OOD!x( # rs   N)ry   )__name__
__module____qualname__rr   strr   floatr   r   r   r   r   r   rs   rq   r   r      sf    `
D$ $s $ERUW\R\L] $B1
# 1
 1
d 1
f
4: 
$t* 
rs   r   __main__))UntitledUnknown)z=Inbox (11,928) - ankita@firsteconomy.com - First Economy Mail
chrome.exe)zYouTube - Google Chromer   )zGmail - Inbox - Google Chromer   )zclaude.ai - Clauder   )zDashboard - WAAREE Adminr   )zTimesheet Appr   )ChatGPTr   )z Stack Overflow - Python questionr   )z"cPanel - Web Hosting Control Panelr   )zFileZilla - FTP Clientfilezilla.exe)zGoogle Search: python tutorialr   )Facebookr   )zmain.py - Visual Studio Coder   )zlocalhost:3000 - React Appr   )zUntitled - Notepadznotepad.exe)z9waaree_main - live@waaree.com@103.174.103.109 - FileZillar   zTesting categorization:z<------------------------------------------------------------zTitle: zApp: z
Category: r   z (r   )zConfidence: r   )__doc__retypingr   r   r   r   r   categorizer
test_casesprinttitleappr   category_infor   rs   rq   <module>r      s    
 $ $A AJ z%'KJ( 

#$	(O 
s#99%Ew cUm
=45Rm8T7UUVWX]<89:;h !5 rs   