Skip to main content
Glama

MCP Starter for Puch AI

by Kulraj69
visibility_service.cpython-311.pyc16.8 kB
� ��hF2���ddlZddlmZmZddlmZmZmZmZddlm Z m Z ddl m Z m Z ddlmZmZmZmZmZddlmZmZddlmZGd �d ��Ze��ZdS) �N)�datetime� timedelta)�List�Dict�Any�Optional)�Session�select)�engine�ensure_user_exists)�User� TrackedQuery�Run�RunItem� Aggregate)�visibility_workflow�VisibilityState)�auto_detect_brandsc �<�eZdZd�Zddededeeedeeeffd�Z dedeeeffd�Z dded e d eeedeeeffd �Z dded e d edeeeffd�Z dded e dedeedeeeff d�Zdedeeeffd�ZdS)�VisibilityServicec��ddg|_dS)N� azure_openai� perplexity)�default_platforms)�selfs �P/Users/kulraj/agent09/mcp-starter/mcp-bearer-token/../data/visibility_service.py�__init__zVisibilityService.__init__ s��"0�,�!?�����N�phone�query� competitors�returnc���K�t|��tt��5}|�t t ���t j|kt j|k����� ��}|r]|�E||_ |� |��|� ��|� |��d|jd�cddd��St |||pg���}|� |��|� ��|� |��d|jd�cddd��S#1swxYwYdS)z*Add or update a tracked query for the userNT)�ok�query_id)� user_phone� query_textr!)r r r �execr r�wherer&r'�firstr!�add�commit�refresh�id)rrr r!�session�existing_query� new_querys r�add_tracking_queryz$VisibilityService.add_tracking_querys������5�!�!�!� �V�_�_�# ��$�\�\��|�$�$�*�*� �+�u�4� �+�u�4����� �e�g�g� �� ��*�1<�N�.��K�K��/�/�/��N�N�$�$�$��O�O�N�3�3�3�� .� 1���## �# �# �# �# �# �# �# �.)�$�$� +� 1�r���� � � � �I�&�&�&���� � � ���� �*�*�*�� )� ���A# �# �# �# �# �# �# �# �# �# �# �# ����# �# �# �# �# �# s�B<E�/AE�E�Ec�L�t|��tt��5}|�t t ���t j|k�������}dd�|D��icddd��S#1swxYwYdS)z%List all tracked queries for the user�queriesc�h�g|]/}|j|j|j|j���d���0S))r.r'r!� created_at)r.r'r!r6� isoformat)�.0r s r� <listcomp>z:VisibilityService.list_tracked_queries.<locals>.<listcomp>AsT������ $�h�&+�&6�',�'8�&+�&6�&@�&@�&B�&B� ����rN) r r r r(r rr)r&�all)rrr/r4s r�list_tracked_queriesz&VisibilityService.list_tracked_queries7s����5�!�!�!� �V�_�_� ���l�l��|�$�$�*�*�<�+B�e�+K�L�L����c�e�e� � ���")���� �  � � � � � � � � � � � ���� � � � � � s�A(B�B� Br%� platformsc ��K�t|��tt��5}|�t t ���t j|kt j|k����� ��}|sddicddd��S|p|j }|j }|sgd�}t||j ||���}tj|���d{V��}t!|||dd���} |�| ��|���|�| ��|d ���D]j\} } d| vrat+| j| |d | d | d | d | d| d| d���} |�| ���k|���d| j|dd�cddd��S#1swxYwYdS)z)Run visibility check for a specific query�error�query_not_foundN)�Zoho�HubSpot� Salesforce)rr'�brandsr<�summaryr<)r&r%�platforms_summary�parsed� raw_results� raw_answer�mentions� citations� sentiment�first_position_brand�stats)�run_id�platformrHrIrJrKrLrMT)r$rNrD)r r r r(r rr)r.r&r*rr!rr'r�ainvokerr+r,r-�itemsr) rrr%r<r/r rC�state�result�runrOrF�run_items r�run_visibility_checkz&VisibilityService.run_visibility_checkLs������5�!�!�!� �V�_�_�@ ���L�L��|�$�$�*�*� �O�x�/� �+�u�4����� �e�g�g� �� 4��!2�3�@ �@ �@ �@ �@ �@ �@ �@ �"�;�T�%;�I��&�F�� ;�;�:�:��$�� �+��#� ���E�/�6�u�=�=�=�=�=�=�=�=�F�� �!�"(��"3�K�"@����C� �K�K�� � � � �N�N� � � � �O�O�C� � � �%+�8�$4�$:�$:�$<�$<� *� *� ��&��&�(�(�&�"�v�!)�#)�-�#8��#B�<�#P�!'� �!3�"(��"5�"(��"5�-3�4J�-K�$�W�o� � � �H��K�K��)�)�)�� �N�N� � � ���&�!�)�,���y@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ ����@ �@ �@ �@ �@ �@ s�A/G<�"E G<�<H�H�7d� range_daysc ���t|��tt��5}|�t t ���t j|kt j|k����� ��}|sddicddd��Stj ��}|dkr|td���z }n&|dkr|td���z }n tj }|�t t���tj|ktj|ktj|ktj|k�������}d �|D��} |�t t$���t$j�| ���������} g} g} g} g}| D]�}| �|j��| �|j��| �|jd |j�d ��d ���|jr;|�|j�d ��|j|jd�����ddlm }|| ��}i}| D],}|d}|�|d��|dz||<�-d�tC|�"��d�d���D��}i}| D]�}|j#�"��D]f\�}�|vr dddd�|�<|�dxx|dz cc<|�dxx|dz cc<|�dxx|dz cc<�g��|D]e�tI�fd�| D����}|dkrB|�dxx|zcc<|�dxx|zcc<|�dxx|zcc<�f|j%||d�|�"��D��|| |dgid�cddd��S#1swxYwYdS) z#Fetch visibility report for a queryr>r?NrW���days�30d�c��g|] }|j�� S�)r.)r8rTs rr9z=VisibilityService.fetch_visibility_report.<locals>.<listcomp>�s��.�.�.�#�s�v�.�.�.rr$� latency_ms)rO�status�last_latency_ms�%Y-%m-%d)�date�brandrOr)� compute_sov�domain�countc��g|] \}}||d��� S))rhrir`)r8rhris rr9z=VisibilityService.fetch_visibility_report.<locals>.<listcomp>�s4��$�$�$�!�F�E�"�E�2�2�$�$�$rc��|dS)N�r`)�xs r�<lambda>z;VisibilityService.fetch_visibility_report.<locals>.<lambda>�s ��ST�UV�SW�rT)�key�reverseg)�positive�neutral�negativerqrrrsc�&��g|] }�|jv� |��Sr`)rK)r8�rirfs �rr9z=VisibilityService.fetch_visibility_report.<locals>.<listcomp>�s%���M�M�M�B�u�� �7L�7L�R�7L�7L�7Lrc� �g|] \}}d|i|��� S)rfr`)r8rfrKs rr9z=VisibilityService.fetch_visibility_report.<locals>.<listcomp>�s6�����(��y��e�1�y�1���r� sov_over_time)r �period�share_of_voicerK�top_citation_domains�platform_status�first_position_leaderboard�trends)&r r r r(r rr)r.r&r*r�nowr�minrr%�run_atr:rrN�in_�extendrIrJ�appendrOrM�getrLr6�strftime�parsingrg�sortedrQrK�lenr')rrr%rXr/r �end_date� start_date�runs�run_ids� run_items� all_mentions� all_citationsr{�first_position_datarUrg�sov_data�citation_counts�citationrhrz�sentiment_datarKrirfs @r�fetch_visibility_reportz)VisibilityService.fetch_visibility_report�s�����5�!�!�!� �V�_�_�l ���L�L��|�$�$�*�*� �O�x�/� �+�u�4����� �e�g�g� �� 4��!2�3�l �l �l �l �l �l �l �l � �|�~�~�H��T�!�!�%� �q�(9�(9�(9�9� � ��u�$�$�%� �r�(:�(:�(:�:� � �%�\� ��<�<��s� � �!�!��N�e�+��L�H�,��J�*�,��J�(�*� �����c�e�e� �/�.��.�.�.�G�� � ��w���%�%�g�n�&8�&8��&A�&A�B�B����c�e�e� � �L��M� �O�"$� �%� � ���#�#�H�$5�6�6�6��$�$�X�%7�8�8�8��&�&� (� 1�"�'/�~�'9�'9�,�'G�'G�(�(���� �0��'�.�.� (� 3� <� <�Z� H� H�!)�!>�$,�$5�0�0����� ,� +� +� +� +� +�"�{�<�0�0�H�!�O�)� ]� ]��!�(�+��*9�*=�*=�f�a�*H�*H�8�T[�K\�*\���'�'�$�$�%+�O�,A�,A�,C�,C���ae�%f�%f�%f�$�$�$� �  �N�%� O� O��(0�(:�(@�(@�(B�(B�O�O�$�E�9��N�2�2�=@�S�^a�0b�0b��u�-�"�5�)�*�5�5�5��:�9N�N�5�5�5�"�5�)�)�4�4�4� �)�8L�L�4�4�4�"�5�)�*�5�5�5��:�9N�N�5�5�5�5� O�(� ?� ?���M�M�M�M�)�M�M�M�N�N���1�9�9�"�5�)�*�5�5�5��>�5�5�5�"�5�)�)�4�4�4��=�4�4�4�"�5�)�*�5�5�5��>�5�5�5���)�$�"*���,:�,@�,@�,B�,B����)=�#2�.A�#�R����}l �l �l �l �l �l �l �l �l �l �l �l ����l �l �l �l �l �l s�A/Q�!NQ�Q� QrOrec ��t|��tt��5}|�t t ���t j|kt j|k����� ��}|sddicddd��St t��� t���tj|ktj |ktj|k��}|r| tj|d��}|t#d���z} |�tj|ktj| k��}n #t&$rddicYcddd��SwxYw|�|�tj�������� ��} | sddicddd��S|j|| j�d��| j| j| j| jd �cddd��S#1swxYwYdS) z:Get a snapshot of results for a specific platform and dater>r?Nrdrlr[�invalid_date_format� no_data_found)r rOrerHrIrJ�sentiment_summary)r r r r(r rr)r.r&r*r�joinrr%rOr�strptimerr6� ValueError�order_by�descr'r�rHrIrJrK) rrr%rOrer/r � query_builder� target_date� next_daterUs r�get_platform_snapshotz'VisibilityService.get_platform_snapshots����5�!�!�!� �V�_�_�- ���L�L��|�$�$�*�*� �O�x�/� �+�u�4����� �e�g�g� �� 4��!2�3�- �- �- �- �- �- �- �- �#�7�O�O�0�0��5�5�;�;���%�'�� ��(�� �H�,���M� � <�<�"*�"3�D�*�"E�"E�K� +�i�Q�.?�.?�.?� ?�I�$1�$7�$7��*�k�9��*�Y�6�%�%�M�M��"�<�<�<�#�%:�;�;�;�;- �- �- �- �- �- �- �- �8<�����|�|�M�$:�$:�7�;M�;R�;R�;T�;T�$U�$U�V�V�\�\�^�^�H�� 2���1�G- �- �- �- �- �- �- �- �L�)�$� �+�4�4�Z�@�@�&�1�$�-�%�/�%-�%7���K- �- �- �- �- �- �- �- �- �- �- �- ����- �- �- �- �- �- sE�A/H8� A-H8�AE)�(H8�)F�7H8�F�AH8�1:H8�8H<�?H<c���K�t|��tt��5}|�t t ���t j|k�������}g}|D]Y}|� ||j |j ���d{V��}|� d��r|� |d���Zd|d�cddd��S#1swxYwYdS)z>Run visibility check for all user queries on default platformsNr$rNT)r$r�)r r r r(r rr)r&r:rVr.rr�r�)rrr/r4r�r rSs r� run_all_todayzVisibilityService.run_all_today7sC�����5�!�!�!� �V�_�_� ���l�l��|�$�$�*�*�<�+B�e�+K�L�L����c�e�e� ��G� � 5� 5��#�8�8����$�J`�a�a�a�a�a�a�a�a���:�:�d�#�#�5��N�N�6�(�#3�4�4�4���"��� � � � � � � � � � � � ���� � � � � � s�B=C0�0C4�7C4)N)rW)�__name__� __module__� __qualname__r�strrrrrr2r;�intrVr�r�r�r`rrrr s�������@�@�@�'�'�c�'�#�'�H�UY�Z]�U^�L_�'�ko�ps�ux�px�ky�'�'�'�'�R�#��$�s�C�x�.�����*D�D��D�s�D�x�X\�]`�Xa�Ob�D�nr�sv�x{�s{�n|�D�D�D�D�Lp�p�S�p�C�p�S�p�\`�ad�fi�ai�\j�p�p�p�p�d1�1�3�1�#�1��1�T\�]`�Ta�1�mq�ru�wz�rz�m{�1�1�1�1�f����c�3�h�������rr)�asynciorr�typingrrrr�sqlmodelr r �databaser r �modelsr rrrr� orchestrationrrr�rr�visibility_servicer`rr�<module>r�s������(�(�(�(�(�(�(�(�,�,�,�,�,�,�,�,�,�,�,�,�$�$�$�$�$�$�$�$�/�/�/�/�/�/�/�/�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�&�&�&�&�&�&���������D '�&�(�(���r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kulraj69/mcp-llm'

If you have feedback or need assistance with the MCP directory API, please join our Discord server