U
    G9i**                     @   s   d Z ddlZddlmZmZmZ G dd dZedkre Zddd	d
dddgZ	e
d e
d e	D ]V\ZZeeeZe
de  e
de  e
ded  ded  d e
d qbdS )u.  
Four Categories:
1) PRODUCTIVE  → All work-related activities (IDEs, Office, dev tools)
2) BROWSER     → YouTube, Gmail, social, entertainment, shopping, ALL MAIL
3) SERVER      → AWS, GCP, Azure, SSH, Docker, monitoring tools
4) NON-WORK    → Untitled, system lock / idle / AFK / screensaver
    N)DictListTuplec                   @   s\   e Zd Zdd Zdeeeeef dddZdeeedddZ	e
e e
e d	d
dZdS )ActivityCategorizerc              <   C   s  ddddddddd	d
dddddddddg| _ ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGg4| _dHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndog(| _dpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddg<| _dddddg| _d S )Nuntitlednew tabblankemptyzlockapp.exelockappzlock screenZsessionlockzwindows default lock screenidlez	idle-timeafkZawayz
not activeZuserinactivezno active windowscreensaverzscreen saverznew incognito tab	amazon.in
amazon.comflipkartmyntraajiosnapdealmeeshoshoppingzadd to cartz
buy onlineinboxZcomposemailemailz@firsteconomy.comz
@gmail.comz
@yahoo.comz@outlook.comz@hotmail.comfirst economy mailgmailz
yahoo mailoutlookZ
protonmailZthunderbirdwebmailyoutubezyoutu.benetflixzamazon primeZ
primevideoZhotstarspotifytwitchfacebook	instagramsnapchattiktok	pinterestreddittwitterzx.comwhatsapptelegramzgoogle.com/searchzbing.com/searchZ
duckduckgo?q=z&q=z	search?q=zawesome screenshotZ
screenshotawsZec2Zs3lambdaZiamZ
cloudwatchazurezmicrosoft azuregcpzgoogle cloudfirebaseZdigitaloceanZdropletZlinodeZvultrZvercelZnetlifyZ
cloudflareZgodaddyZ	namecheapZjenkinszgithub actionsz	gitlab ciZcirclecidocker
kubernetesZk8sZpodsZclusterZgrafanaZ
prometheusZdatadogz	new relicZsentrysshZrdpZvncZ
teamviewerZanydeskZopenvpnwinwordexcelpowerpntonenotemswordzmicrosoft wordzmicrosoft excelzmicrosoft powerpointsnipping toolsnippingtoolnotepad
calculatorvisual studiozvs codevscodecursorintellijpycharmphpstormwebstorm.py.js.ts.php.jsx.tsx.html.css.json.sql	localhostz	127.0.0.1z:3000z:8000z:5000z:4200postmanZinsomniaz
github.comz
gitlab.com	bitbucketzstack overflowchatgptclaudeZbardZ
perplexityZphindjiranotiontrelloasana
confluenceZclickupfigmazadobe xd	photoshopillustratorcpanelZ
phpmyadmin	filezillaZradiant_clonezradiant cloneZ	timesheetwaareefirsteconomy)non_work_keywordsbrowser_keywordsserver_keywordsZproductive_keywordsknown_projects)self rc   7/var/www/html/timesheet/backend/activity_categorizer.py__init__   sj                                                                                                                                    zActivityCategorizer.__init__ )window_titleapp_namereturnc                    s8  | d|    |   }dddddddd	d
g	}t fdd|D rNdS t fdd| jD rjdS dddddddg}||krdS dddddddddg	}t fd d|D rdS d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1g}t fd2d|D rdS d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNg}t fdOd|D rPdS |dPkr^dQS | jD ]}	|	 krd dQS qddRdSdTdUdVdWdXdYg}
t fdZd|
D rdS d[ krdQS t fd\dd]D }|sd^ ksd ksd_ krdS | jD ]}	|	 kr d`S q| jD ]}	|	 kr daS qdbS )cN r   z@gmailz@yahooz@outlookz@hotmailz@firsteconomyr   z- mailr   c                 3   s   | ]}| kV  qd S Nrc   ).0Z	indicatortextrc   rd   	<genexpr>k   s     z:ActivityCategorizer.categorize_activity.<locals>.<genexpr>)browser      ?c                 3   s   | ]}| kV  qd S rk   rc   )rl   projectrm   rc   rd   ro   o   s     )
productiverq   Zwelcomehomestartopenloadingpagezopen folderr3   r4   r5   r6   r7   r8   r9   znotepad.exer;   c                 3   s   | ]}| kV  qd S rk   rc   )rl   toolrm   rc   rd   ro   z   s     r=   code.exer>   r@   r?   rB   rA   sublimeatomvimemacsz	notepad++r<   zclaude codezandroid studioZxcodeZriderc                 3   s   | ]}| kV  qd S rk   rc   )rl   iderm   rc   rd   ro      s     rC   rD   rG   rE   rH   rF   z.javaz.cppz.cz.hz.csz.rbz.goz.rsz.vuerI   rJ   z.scssz.sassrK   z.xmlrL   z.swiftz.ktz.dartz.shz.yamlz.ymlc                 3   s   | ]}| kV  qd S rk   rc   )rl   extrm   rc   rd   ro      s     )r   r   r   rf   )non-workrq   r   r   r   r   r   r   r   Ztitanc                 3   s   | ]}| kV  qd S rk   rc   )rl   Zshoprm   rc   rd   ro      s     zfile explorerc                 3   s   | ]}| kV  qd S rk   rc   )rl   prm   rc   rd   ro      s     )\z:/zsrc/zsrc\z/componentsz\components@z mail )rp   ffffff?)serverr   )rs   g?)lowerstripanyra   r^   r_   r`   )rb   rg   rh   Zwindow_lowerZemail_indicatorsZgeneric_titlesZoffice_toolsZide_indicatorsZcode_extensionswordZshopping_sitesZis_file_pathrc   rm   rd   categorize_activityd   s    
   
   
                           



   






z'ActivityCategorizer.categorize_activityc                 C   s  |  ||\}}| d|  }|dkrdd|kr8d}n(d|krFd}nd|ksVd|kr\d}nd}n.|dkrd	|ksd
|ksd|krd}n>d|krd}n0d|ksd|krd}nd|ksd|krd}nd}n|dkrd|krd}n,d|krd}nd|ksd|kr
d}nd}nd|ks.d|ks.d|kr4d}n^d|ksHd |krNd!}nDd"|kr^d#}n4d$|krnd%}n$d&|kr~d'}nd(|krd)}nd*}|||||d+S ),Nrj   r   r   lockzsystem-lockr   r   rp   r   r   r   r   r   entertainmentZamazonr   r   r*   searchzgeneral-browsingr   r+   r-   r.   r/   zserver-toolsr=   rz   r>   Zcodingr3   r4   officesnippingZtoolsrM   z
dev-serverrN   zapi-testingrW   designzproductive-general)categorysubcategory
confidencerg   rh   )r   r   )rb   rg   rh   r   r   rn   subrc   rc   rd   get_detailed_category   s^    




z)ActivityCategorizer.get_detailed_category)
activitiesri   c                 C   sB   g }|D ]4}|  |dd|dd}|| || q|S )Nrg   rf   application_name)r   getupdateappend)rb   r   Zcategorizedactivityinforc   rc   rd   categorize_batch   s    


z$ActivityCategorizer.categorize_batchN)rf   )rf   )__name__
__module____qualname__re   strr   floatr   r   r   r   r   rc   rc   rc   rd   r      s   UM9r   __main__)zDocument1 - Microsoft WordzWINWORD.EXE)zSnipping Tool OverlayzSnippingTool.exe)zOnline Shopping - Amazon.in
chrome.exe)z;Luxury Dealz - ankita@firsteconomy.com - First Economy Mailr   )z*? [Claude Code] radiant_clone\src\Mail.jsxzCode.exe)ZWelcomer   )zYouTube - Google Chromer   zTesting categorization:z<------------------------------------------------------------zTitle: zApp: u   → Category: r   z (r   ))__doc__retypingr   r   r   r   r   categorizerZ
test_casesprinttitleappr   r   rc   rc   rc   rd   <module>   s,    i
