+
    j                        R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	 ^ RI
HtHt ^ RIHt ]! RR.R	7      t ! R
 R]4      t]P#                  R4      R R l4       tR# )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                      ] tR t^t$ Rt]! RRRR7      tR]R&   ]! RRR	R7      tR]R
&   ]! RRRR7      t	R]R&   ]! RRRR7      t
R]R&   ]! ]P                  RR7      tR]R&   ]! RRR7      tR]R&   RtR# )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_terms N)__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   r   TRr   r   __static_attributes__r       Y/Users/zincirx/Documents/projelerim/patentyazar/backend-python/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                    V ^8  d   QhRRRR/# )   reqr   returnr   r   )formats   "r$   __annotate__r*   2   s      4  r#   c           
     ^  a"   \        4       pVP                  P                  \        V P                  V P
                  V P                  V P                  V P                  R7      4       V P                  '       dw   V P                  \        P                  8X  dX   \        V P                  V P
                  V P                  R7      G Rj  xL
 w  r#VP                  P                  V4       W1n        R^ R^R^/oVP                  P                  V3R lR7       VP                  4        V#  La5i)	u7   Başvuru metinlerini şekli eksikliklere karşı tarar.)r   r   r   r   r   )r   r   r   Nerrorwarninginfoc                P   < SP                  V P                  P                  ^	4      # )	   )getseverityvalue)fseverity_orders   &r$   <lambda>!formality_check.<locals>.<lambda>N   s    ~'9'9!**:J:JA'Nr#   )key)r   findingsextendr   r   r   r   r   r   r   r   r!   r	   checked_termssortrecount)r'   reportterm_findingsranr5   s   &   @r$   formality_checkrA   1   s      F OO ::\\//))	
 3++|>#6::\\$
 

 	}-" q)Q:N
OONO
NNM
s   CD-	D+
A"D-N)r   
__future__r   fastapir   pydanticr   r   app.services.formalityr   app.services.formality.modelsr   r   app.services.formality.termsr	   routerr   postrA   r   r#   r$   <module>rJ      sU    #  % ; G <	,k]	;I . X r#   