o
    oi                     @   s   d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ eddgd	Zed
defddZeddefddZdS )    )	APIRouterHTTPException)	it_module)StartITRequestAnswerITRequest)get_it_questionsget_question_by_id)calculate_final_result)ListDictz/goal-skill-t/api/itIT)prefixtagsz/startrequestc              
      s   z?t | j t }|d }g }g d}t|d D ]\}}|t|k r1|||  d|  q|d |d |dt|dW S  tyT } ztd	t	|d
d}~ww )u?   
    IT 기초 테스트 시작 - 첫 번째 문제 반환
    r   ABCDEoptions idquestion   question_idquestion_textr   currenttotal  status_codedetailN)
r   clear_session_logs
session_idr   	enumeratelenappend	Exceptionr   str)r   	questionsfirst_questionoptions_with_letterslettersiopte r2   7/home/air/goalskill_sales/back/app/routers/it_router.pystart_it_test   s*   r4   z/answerc              
      s  zt  }t|}t| j}|stdd| j dd| j}d|v r2|dd}t|dkr2|d }|d }| | k}tj	| j
| j||d t| j
}||kryt| j
}	d	d
 |	D }
t| j
|
}tj| j
|d |d d d|dW S | jd }t|}|stdd| ddg }g d}t|d D ]\}}|t|k r|||  d|  qd|d |d ||d |ddW S  ty     ty } ztdt|dd}~ww )u   
    IT 기초 테스트 답변 처리
    
    1. 답변 저장 (it_log)
    2. 정답 여부 확인
    3. 마지막 문제면 결과 계산 & 저장
    4. 다음 문제 반환 or 완료 응답
    i  z	Question z
 not foundr!   r   r   answer)r%   r   selected_answer
is_correctc                 S   s$   g | ]}|d  |d |d dqS )r   r6   r7   )r   r6   r7   r2   ).0ansr2   r2   r3   
<listcomp>`   s    z"answer_it_test.<locals>.<listcomp>total_scorelevel)r%   r;   r<   	completed)statusresultzNext question r   r   continuer   r   r   )r>   next_questionr    N)r   r'   r   r   r   r6   splitstripr   save_answerr%   get_answer_countget_all_answersr	   save_or_update_outputr&   r(   r)   r*   )r   r+   total_questionscurrent_questionselected_answer_cleanpartscorrect_answerr7   answer_countall_answersanswers_for_scoringr?   next_question_idrA   r-   r.   r/   r0   r1   r2   r2   r3   answer_it_test/   sv   

	
	rQ   N)fastapir   r   
app.modelsr   app.schemas.it_schemar   r   app.services.it_questionsr   r   app.services.it_scoringr	   typingr
   r   routerpostr4   rQ   r2   r2   r2   r3   <module>   s   