o
    Ђj	                     @   st  d Z ddl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mZmZmZ eeZed	d
ddZejedgddgdgd ee
 ejejddgd ejejddgd ejejddgd ejejddgd ejejddgd ejejddgd ejejddgd ejejddgd ededdd  Zed!ed"d#d$ ZdS )%u>   FastAPI application — Crystallise AI backend (NetReady MVP).    N)FastAPI)CORSMiddleware)JSONResponse   )APIKeyAuthMiddleware)configcriteriaindexer	screeningzCrystallise AI Backendz0.1.0zCStateless AI services for systematic review screening and indexing.)titleversiondescription*T)allow_originsallow_credentialsallow_methodsallow_headersz/v1/indexerr	   )prefixtagsz/v1/screeningr
   z/v1/criteriar   z
/v1/configr   z/indexerz
/screeningz	/criteriaz/configz/healthz
/v1/healthc                      s
   ddiS )Nstatusok r   r   r   2/webroot/ai.evidencemapper.co.uk/www/./api/main.pyhealth2   s   r   z/health/readyz/v1/health/readyc               
      s   i } d}z)ddl m} | }| }||d W d   n1 s$w   Y  d| d< W n tyI } zd| | d< d	}W Y d}~nd}~ww tjd
pUtjd}|rZdnd| d< |sbd	}|rfdnd}t||rndnd| ddS )uC   Readiness probe — checks DB connectivity and OpenAI key presence.Tr   )get_backendzSELECT 1Nr   databasezerror: FCRYSTALLISE_OPENAI_API_KEYOPENAI_API_KEY
configuredmissing
openai_key   i  readydegraded)r   checks)status_codecontent)	crystallise.db.backendr   get_connectionexecute	Exceptionosenvirongetr   )r$   overallr   dbconneapi_keyr%   r   r   r   health_ready8   s0   
r3   )__doc__loggingr+   fastapir   fastapi.middleware.corsr   fastapi.responsesr   auth_middlewarer   routersr   r   r	   r
   	getLogger__name__loggerappadd_middlewareinclude_routerrouterr-   r   r3   r   r   r   r   <module>   sH    

