+
    j                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ]	! R.R	7      t ! R
 R]4      t ! R R]4      tR R ltR R ltR R lt]P/                  R]R7      R R l4       tR# )u  Health check endpoint for the AI pipeline service.

İki seviye:
- `status` — genel durum: "ok" | "degraded". Kritik bir bağımlılık eksikse
  "degraded" döner (ama yine HTTP 200 — liveness probe servisi öldürmesin).
- `checks` — alt bileşen durumları: Anthropic API anahtarı, LibreOffice
  (DOCX→PDF dönüşümü), geçici dizin yazılabilirliği.

Deploy/monitoring readiness probe'u `checks` üzerinden ince ayar yapabilir.
)annotationsN)UTCdatetime)	APIRouter)	BaseModelField)get_settings)soffice_availablehealth)tagsc                  0    ] tR t^t$ R]R&   RtR]R&   RtR# )CheckResultboolok strdetail N)__name__
__module____qualname____firstlineno____annotations__r   __static_attributes__r       P/Users/zincirx/Documents/projelerim/patentyazar/backend-python/app/api/health.pyr   r      s    HFCr   r   c                      ] tR t^!t$ ]! RR7      tR]R&   ]! RRR7      tR]R&   R]R	&   R]R
&   R]R&   R]R&   ]! ]R7      t	R]R&   Rt
R# )HealthResponsezpatentyazar-python)defaultr   servicer   zok | degraded)r   descriptionstatusversionpythonplatform	timestamp)default_factoryzdict[str, CheckResult]checksr   N)r   r   r   r   r   r   r   r!   dictr'   r   r   r   r   r   r   !   sG    !56GS6/BFCBLKMN%*4%@F"@r   r   c                   V ^8  d   QhRR/#    returnr   r   )formats   "r   __annotate__r.   +   s      k r   c                 j    \        4       P                  '       d   \        RRR7      # \        RRR7      # )u?   ANTHROPIC_API_KEY tanımlı mı — LLM uçları için gerekli.Tu   API anahtarı tanımlır   r   Fu?   ANTHROPIC_API_KEY tanımlı değil — LLM uçları çalışmaz)r   anthropic_api_keyr   r   r   r   _check_anthropic_keyr2   +   s1    ~'''d+DEEZ r   c                   V ^8  d   QhRR/# r*   r   )r-   s   "r   r.   r.   4   s      K r   c                 V    \        4       '       d   \        RRR7      # \        RRR7      # )uR   LibreOffice (soffice) erişilebilir mi — DOCX→PDF dönüşümü için gerekli.Tu   soffice erişilebilirr0   Fu>   LibreOffice (soffice) bulunamadı — PDF üretimi çalışmaz)r	   r   r   r   r   _check_libreofficer5   4   s,    d+BCCY r   c                   V ^8  d   QhRR/# r*   r   )r-   s   "r   r.   r.   =   s     S Sk Sr   c                     \         P                  ! RR7      ;_uu_ 4       p V P                  R4       RRR4       \        RRR7      #   + '       g   i     L; i  \         d   p\        RR	T 2R7      u Rp?# Rp?ii ; i)
uL   Geçici dizin yazılabilir mi — DOCX/PDF üretimi geçici dosya kullanır.zpatentyazar-health-)prefixs   okNTu   geçici dizin yazılabilirr0   Fu   geçici dizine yazılamadı: )tempfileNamedTemporaryFilewriter   OSError)tmpexcs     r   _check_temp_writabler?   =   sn    S((0EFF#IIe Gd+GHH GF  Se.KC5,QRRSs3   A AA A	A B &A;5B ;B z/health)response_modelc                   V ^8  d   QhRR/# )r+   r,   r   r   )r-   s   "r   r.   r.   H   s      n r   c            	       "   R \        4       R\        4       R\        4       /p \        ;QJ d*    R V P	                  4        4       F  '       d   K   RM	  RM! R V P	                  4        4       4      '       d   RMRp\        R\        P                  P                  4       ^ ,          \        P                  ! 4       \        P                  ! \        4      P                  4       VV R	7      # 5i)
	anthropiclibreofficetemp_dirc              3  8   "   T F  qP                   x  K  	  R # 5i)N)r   ).0cs   & r   	<genexpr>health.<locals>.<genexpr>P   s     81$$s   FTr   degradedz0.1.0)r"   r#   r$   r%   r!   r'   )r2   r5   r?   allvaluesr   sysr"   splitr$   r   nowr   	isoformat)r'   overalls     r   r
   r
   G   s      	)+)+(*F c88ccc8888djG{{  "1%""$,,s#--/ s   AC*(C*9A1C*)__doc__
__future__r   r$   rN   r9   r   r   fastapir   pydanticr   r   
app.configr   app.services.docx.pdf_converterr	   routerr   r   r2   r5   r?   getr
   r   r   r   <module>r[      s~   	 #  
  "  % # =	
	#) 
AY AS In5 6r   