+
    ݰyj                        R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	H
t
 ^ RIHtHtHt ^ RIHt ]! R4      P"                  tRtR	t ! R
 R]4      t ! R R]4      tR R ltRRRRRR/R R lltR# )u  Yabancı terim tespiti — şekli eksiklik tarayıcısının LLM katmanı.

TürkPatent şekli inceleme kuralı: "Başvuru unsurlarında kullanılan teknik
terim niteliği taşımayan yabancı dildeki ifadelerin Türkçe karşılıkları
belirtilmelidir."

Bu kontrol yargısal — bir ifadenin "yerleşik teknik terim" mi yoksa
"Türkçeleştirilmesi gereken yabancı kelime" mi olduğu bağlama bağlıdır.
Bu nedenle deterministik regex yerine Claude Haiku 4.5 kullanılır.

- Haiku 4.5: ucuz, hızlı, structured output.
- Prompt caching: kural seti system prompt'ta cache_control ile ephemeral.
- API key yoksa boş liste döner; tarayıcı yalnızca deterministik
  kurallarla çalışmaya devam eder.
)annotations)APIError)	BaseModelField)FindingSeverity)LLMNotConfiguredErrorget_anthropic_clientresolve)record_usageformality.foreign_termsi@  uH  Sen Türk patent başvurularının şekli inceleme denetçisisin. Görevin: başvuru metninde geçen, teknik terim niteliği TAŞIMAYAN yabancı dildeki ifadeleri tespit etmek ve Türkçe karşılık önermek.

TÜRKPATENT KURALI: Başvuru unsurlarında kullanılan, teknik terim niteliği taşımayan yabancı dildeki ifadelerin Türkçe karşılıkları belirtilmelidir. İfadenin ilk geçtiği yerde Türkçe karşılığı yazılır, özgün yabancı ifade parantez içinde verilebilir.

TESPİT ET (Türkçeleştirilmeli):
- Yaygın İngilizce kelimeler: "fallback", "handshake", "dashboard", "middleware", "proxy", "rate limiter", "cross-platform", "binary", "stub".
- Tam İngilizce isim tamlamaları: "Private Certificate Authority", "Content Delivery Network".
- İngilizce fiil/sıfatlar: "spawn etme", "embedded", "patched".

TESPİT ETME (yerleşik teknik terim — dokunma):
- Uluslararası standart kısaltmalar: TLS, HTTP, HTTPS, TCP, IP, API, URL, DOM, CORS, JSON, CSS, HTML, SSL, DNS, CPU, GPU.
- Standart/protokol/algoritma adları: ML-DSA, ML-KEM, RSA, ECDSA, NIST FIPS 204, BoringSSL, OpenSSL.
- Özel adlar, ürün/marka adları, kod tanımlayıcıları (`crypto/tls`, `go:embed` gibi), dosya yolları.
- Zaten Türkçe karşılığı parantezle verilmiş ifadeler — örn. "el sıkışması (handshake)" zaten DOĞRU, tekrar bildirme.

KURALLAR:
1. Yalnızca GERÇEKTEN Türkçeleştirilmesi gereken ifadeleri bildir. Şüphedeysen ve ifade yerleşik bir teknik terimse, BİLDİRME.
2. Her bulgu için: yabancı ifade, önerilen Türkçe karşılık, kısa gerekçe.
3. Türkçe karşılık önerirken patent diline uygun, resmi terimler kullan.
4. Aynı ifade birden çok geçiyorsa bir kez bildir.
5. En fazla 25 bulgu döndür; en belirgin olanları önceliklendir.

Çıktı yalnızca structured JSON olarak döner; ek açıklama yapma.
c                  v    ] tR t^Ht$ Rt]! RRR7      tR]R&   ]! RRR7      tR]R&   ]! R	R
R7      t	R]R&   Rt
R# )_ForeignTermu%   Tespit edilen tek bir yabancı ifade..u   Metinde geçen yabancı ifade)descriptionstrphraseu8   Önerilen Türkçe karşılık (parantezli biçim dahil)suggested_turkish u   Kısa gerekçe)defaultr   	rationale N)__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   __static_attributes__r       ^/Users/zincirx/Documents/projelerim/patentyazar/backend-python/app/services/formality/terms.pyr   r   H   sC    /)HIFCI"Ss  23CDIsDr   r   c                  <    ] tR t^Rt$ Rt]! ]^RR7      tR]R&   Rt	R# )_ForeignTermSetu%   Haiku'nun structured output şeması.u/   Türkçeleştirilmesi gereken yabancı ifadeler)default_factory
max_lengthr   zlist[_ForeignTerm]termsr   N)
r   r   r   r   r   r   listr$   r   r   r   r   r   r!   r!   R   s     / %E!E r   r!   c                    V ^8  d   QhRRRR/# )   sectionr   returnr   )formats   "r   __annotate__r+   \   s      C C r   c                0    R RRRRR/P                  W 4      # )	tarifname	Tarifnameistemleru	   İstemlerozetu   Özet)get)r(   s   &r   _section_labelr2   \   s'    [K 
c'	r   r   r   claimsabstractc               (    V ^8  d   QhRRRRRRRR/# )r'   r   r   r3   r4   r)   ztuple[list[Finding], bool]r   )r*   s   "r   r+   r+   d   s8     V VV V 	V
  Vr   c                ^  "    \        4       pRT 3RT3RT3.p. pRpT EFN  w  rxT;'       g    RP                  4       '       g   K(  RpTP                  4       R\         p	R\	        T4       R	T	 2p
 TP
                  P                  \        R
RRR\        RRR//.RRRT
/.\        R7      G Rj  xL
 p\        \        TP                  RR7       TP                  pTP                   F  pTP!                  \#        R\$        P&                  TRTP(                   R2RTP*                  '       d   RTP*                   2MR,           RTP,                   R2TP(                  RR7      4       K  	  EKQ  	  YV3#   \         d    . R3u # i ; i L  \         d     EK|  \         d     EK  i ; i5i)u   Başvuru metinlerinde Türkçeleştirilmesi gereken yabancı ifadeleri bulur.

Dönüş: (bulgular, llm_calistirildi). API key yoksa ([], False) döner —
çağıran taraf yalnızca deterministik kurallarla devam eder.
Fr-   r/   r0   r   TNu   Aşağıdaki 'uN   ' metnini incele ve Türkçeleştirilmesi gereken yabancı ifadeleri bildir:

i   typetextcache_control	ephemeralroleusercontent)model
max_tokenssystemmessagesoutput_formatr   )r>   usageendpointzterms.foreign_phraseu8   Türkçe karşılığı belirtilmemiş yabancı ifade: ""ui   Teknik terim niteliği taşımayan yabancı dildeki ifadelerin Türkçe karşılıkları belirtilmelidir. uB   İfadenin ilk geçtiği yerde Türkçe karşılığını yazın: "uK   TürkPatent şekli inceleme — yabancı ifadelerin Türkçe karşılığı)rule_idseverityr(   titledetail
suggestionexcerptlegal_basis)r	   r   strip_MAX_CHARS_PER_SECTIONr2   rA   parse_MODELSYSTEM_PROMPTr!   r   rC   parsed_outputr   	Exceptionr$   appendr   r   WARNINGr   r   r   )r   r3   r4   clientsectionsfindingsran_anyr(   r8   rL   user_messagerespparsedterms   $$$           r   check_foreign_termsr_   d   s    %'
 
k"	V	H !HG!

!!##**,6 67^G45 6Ki 	
	.. '&+)> "69lCD- /  D jj2
 '+&8&8F LLDOO2%--#R)P37>>>Qt~~./rK
!334B8 !KK2# !I "z S ! 5y.&  	 		s{   F-
E5 F-F-,F-2=F/F
0,FBF-5FF-FF-
FF*F-F*$F*%F-)F**F-N)r   
__future__r   	anthropicr   pydanticr   r   app.services.formality.modelsr   r   app.services.llmr   r	   r
   app.services.llm.usage_logr   r>   rQ   rO   rR   r   r!   r2   r_   r   r   r   <module>rf      s     #  % ; Q Q 3 
*	+	1	1  $NE9 Ei VV V 	V Vr   