
    0i
                        d Z ddlmZ ddlZddlmZ ddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ  eh d
      ZddZddZddZddZy)u   Sentry kurulumu — DSN yoksa no-op.

KVKK ve hukuki kurallar gereği:
- send_default_pii=False (varsayılan) — kullanıcı adı, email vs. gönderilmez
- before_send ile patent içeriğini (intake, draft, claim text) filtreliyoruz
    )annotationsN)Any)AsyncioIntegration)FastApiIntegration)HttpxIntegration)StarletteIntegration)get_settings>
   claimsintakeabstractdescriptionclaims_draftabstract_draftapplicant_nameinventor_namesinvention_intakedescription_draftc                n    dD ]/  }| j                  |      }t        |t              s%t        |       1 | S )u   Sentry event'inden patent taslak içeriğini kaldır.

    Patent draft'ları gizli kabul edilir (mucit ile vekil arasında vekaletname
    altında) — Sentry'ye sızdırmak hukuki risk.
    )requestextracontexts)get
isinstancedict_scrub_dict)event_hintctxdatas       0/var/www/ai.patentyazar.com/app/observability.py_scrub_patent_contentr!   %   s9     0 yy~dD! L    c                    t        | j                               D ]@  }|j                         t        v rd| |<   t	        | |   t
              s3t        | |          B y )Nz
[REDACTED])listkeyslower_PATENT_CONTENT_KEYSr   r   r   )dkeys     r    r   r   2   sM    AFFH~  99;..!AcF#%#	 r"   c                 N   t               } | j                  s)t        j                  t              j                  d       yt        j                  | j                  | j                  | j                  dt               t               t               t               gt        t               y)u6   Sentry'yi başlat. DSN yoksa no-op, dev/test'i bozmaz.u'   Sentry DSN yok — izleme devre dışıNF)dsnenvironmenttraces_sample_ratesend_default_piiintegrationsbefore_sendtraces_sampler)r	   
sentry_dsnlogging	getLogger__name__info
sentry_sdkinitsentry_environmentsentry_traces_sample_rater   r   r   r   r!   _traces_sampler)settingss    r    setup_sentryr=   :   s~    ~H(#(()RSOO//#== "  	
 *&r"   c                    t               }| j                  di       }t        |t              r|j                  dd      nd}|j	                  d      ry|j
                  S )N
asgi_scopepath z/api/v1/healthg        )r	   r   r   r   
startswithr:   )sampling_contextr<   r   r@   s       r    r;   r;   R   sR    ~H""<4G&0$&?7;;vr"RD'(---r"   )r   dict[str, Any]r   rD   returnrD   )r(   rD   rE   None)rE   rF   )rC   rD   rE   float)__doc__
__future__r   r3   typingr   r7   sentry_sdk.integrations.asyncior   sentry_sdk.integrations.fastapir   sentry_sdk.integrations.httpxr   !sentry_sdk.integrations.starletter   
app.configr	   	frozensetr'   r!   r   r=   r;    r"   r    <module>rR      sK    #    > > : B #   
 0.r"   