U
    j                     @  s  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
mZm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 d d
lmZmZmZ d dlmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& ee'( j)Z*eddddZ+e+j,dee*d ddd ee*d dZ-dddddZ.dddddZ/e.e-j0j1d< e/e-j0j1d< e+2ddd d!d"Z3e+j2d#ed$d%d&d'd(d)Z4e+j5d*ed$e	d+e	d,e	d,e	d+e	d+e	d+e	d-fd%dddddddd&d.	d/d0Z6e+j2d1ed$d%d&d'd2d3Z7e+j5d1ed$e	d+fd%dd&d4d5d6Z8e+j5d7e!d8d9d:d;d<d=Z9e+j5d>e d8d?d@d;dAdBZ:e+j5dCed8ed+e	dDfdEddFdGdHdIZ;dJS )K    )annotations)Path)Dict)FastAPIFileFormHTTPExceptionRequest
UploadFile)HTMLResponse)StaticFiles)Jinja2Templates)ValidationError)AudioTranscriptionErrortranscribe_audio_bytes)extraction_form_valuesinterpret_oee_casemissing_labels)AudioTranscriptionResponseInterpretationRequestOEEInputOEEInterpretationResponse	OEEResultcalculate_oee)parse_oee_formvalidation_messagesZCALCOEEz<Calculadora OEE con interprete IA para casos en texto libre.z0.1.0)titledescriptionversionz/staticZstatic)	directory)name	templatesfloatstr)valuereturnc                 C  s   | d ddS )Nd   z.2f% )r%   r)   r)   /var/www/calcoee/app/main.pypct$   s    r+   c                 C  s.   t | }| rt| S |dddS )Nz.4f0.)r#   
is_integerintrstrip)r%   numberr)   r)   r*   qty(   s    
r2   z/healthzDict[str, str])r&   c                   C  s   ddiS )Nstatusokr)   r)   r)   r)   r*   health3   s    r5   /)Zresponse_classr	   r   )requestr&   c              	     s   t | d| di g dS )N
index.htmlmanualr7   activeformerrorsr"   TemplateResponser7   r)   r)   r*   manual_form8   s    rA   z
/calculate.r,   Zunidades)	r7   tiempo_turno_minparadas_planificadas_minparadas_no_planificadas_minproduccion_totalproduccion_buenaciclo_ideal_segunidad_produccionr&   c                   s   |||||||d}zt |}	t|	}
W nJ ttfk
rr } z(tj| d| d|t|ddd W Y S d }~X Y nX t| d| dd|
|d g dd	S )
N)rB   rC   rD   rE   rF   rG   rH   r8   r9   r:     status_coderesult.html r7   r;   sourceresultr<   
extractionmissing	case_text)r   r   r   
ValueErrorr"   r?   r   )r7   rB   rC   rD   rE   rF   rG   rH   r<   ZentradarP   excr)   r)   r*   calculate_viewF   sF    
rV   z
/interpretc                   s   t | d| ddi g d g dS )Ninterpret.html	interpretrM   r7   r;   rS   r<   r=   rQ   rR   r>   r@   r)   r)   r*   interpret_form{   s    rZ   )r7   rS   r&   c                   sz   t |}t|j}|jr<t| d| dd|j||jg |dS tj| d| d|||jj|jt|jd|jjdkrrdndd	S )
NrL   rX   rN   rW   rY   ZcompletorI      rJ   )	r   r   Z
extraccionZ	resultador"   r?   Zadvertenciasr   Zestado)r7   rS   responser<   r)   r)   r*   interpret_view   s:    
	r]   z/api/oee/calculate)Zresponse_modelr   r   )payloadr&   c                   s   t | S Nr   r^   r)   r)   r*   api_calculate   s    ra   z/api/oee/interpretr   r   c                   s
   t | jS r_   )r   textr`   r)   r)   r*   api_interpret   s    rc   z/api/audio/transcribeesr
   r   )audiolanguager&   c              
     sj   |   I d H }zt|| jpd| j|d}W n4 tk
r^ } ztdt|d|W 5 d }~X Y nX t|dS )Nzdictado.webm)audio_bytes	file_namecontent_typerf   rI   )rK   Zdetail)rb   )readr   filenameri   r   r   r$   r   )re   rf   rg   rb   rU   r)   r)   r*   api_audio_transcribe   s    
$rl   N)<
__future__r   pathlibr   typingr   Zfastapir   r   r   r   r	   r
   Zfastapi.responsesr   Zfastapi.staticfilesr   Zfastapi.templatingr   Zpydanticr   Zapp.audio_transcriberr   r   Zapp.ai_interpreterr   r   r   Z
app.modelsr   r   r   r   r   Zapp.oee_calculatorr   Zapp.validatorsr   r   __file__resolveparentZBASE_DIRappZmountr"   r+   r2   envfiltersgetr5   rA   postrV   rZ   r]   ra   rc   rl   r)   r)   r)   r*   <module>   sd    "4'