
    j                        d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZ  edd	g
      Z G d de      Zej#                  d      dd       Zy)uF  Şekli eksiklik ön-tarayıcı endpoint'i.

Vekil, başvuruyu yüklemeden önce tarifname/istem/özet metinlerini hedef
patent ofisinin (TR | EP | US) şekli inceleme kurallarına göre tarar.
Ofisin reddedeceği eksiklikler (alt başlıklı istemler, eksik abstract,
hatalı numaralandırma, 150 kelime aşımı vb.) önceden bildirilir.

İki katman birleştirilir:
- Deterministik kurallar — her zaman çalışır, LLM'siz, ücretsiz.
  Ofise göre kural seti seçilir (rules.py + epo.py + uspto.py).
- Yabancı terim kontrolü — Claude Haiku; yalnızca TR başvurularında.
    )annotations)	APIRouter)	BaseModelField)run_deterministic_checks)FormalityReportJurisdiction)check_foreign_termsz
/formality	formality)prefixtagsc                      e Zd ZU dZ eddd      Zded<    eddd	      Zded
<    eddd      Zded<    eddd      Z	ded<    ee
j                  d      Zded<    edd      Zded<   y)FormalityCheckRequestu   Frontend → backend isteği. zTarifname metnii@ )defaultdescription
max_lengthstrr   u   İstemler metnii claimsu   Özet metnii'  abstracti,  uC   Buluş başlığı — özet/tarifname tutarlılık kontrolü için)r   r   r   invention_titleu:   Hedef patent ofisi: TR | EP | US — kural setini belirler)r   r   r	   jurisdictionTuC   Yabancı terim LLM kontrolü çalıştırılsın mı (yalnızca TR)boolcheck_termsN)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r	   TRr   r        (/tmp/py-stage/app/api/formality_check.pyr   r      s    ' 1gK  0AgVFCV"-FSHcS YOS 
 "'P"L,  YK r"   r   z/checkc           	     L  K   t               }|j                  j                  t        | j                  | j
                  | j                  | j                  | j                               | j                  rv| j                  t        j                  k(  rYt        | j                  | j
                  | j                         d{   \  }}|j                  j                  |       ||_        dddd|j                  j                  fd	       |j                          |S 7 `w)
u7   Başvuru metinlerini şekli eksikliklere karşı tarar.)r   r   r   r   r   )r   r   r   Nr         )errorwarninginfoc                P    j                  | j                  j                  d      S )N	   )getseverityvalue)fseverity_orders    r#   <lambda>z!formality_check.<locals>.<lambda>N   s    ~'9'9!**:J:JA'N r"   )key)r   findingsextendr   r   r   r   r   r   r   r	   r    r
   checked_termssortrecount)reqreportterm_findingsranr0   s       @r#   formality_checkr<   1   s      F OO ::\\//))	
 3++|>#6::\\$
 
s
 	}-"  !Q:N
OONO
NNM
s   B>D$D"A!D$N)r8   r   returnr   )r   
__future__r   fastapir   pydanticr   r   app.services.formalityr   app.services.formality.modelsr   r	   app.services.formality.termsr
   routerr   postr<   r!   r"   r#   <module>rF      sU    #  % ; G <	,k]	;I . X r"   