import gradio as gr # MBTI 유형별 해석 mbti_interpretations = { "INTJ": "전략가: 혁신적이고 독립적인 사고를 가진 비전의 창조자입니다.", "INFP": "중재자: 이상적이고 창의적인, 항상 선을 추구하는 사람입니다.", "INFJ": "옹호자: 조용하고 신비로운, 영감을 주는 이상주의자입니다.", "INTP": "논리학자: 혁신적인 발명가로, 독창적인 지식을 추구합니다.", "ENTJ": "통솔자: 대담하고 상상력이 풍부하며, 항상 목표를 향해 나아갑니다.", "ENFP": "활동가: 열정적이고 창의적으로, 자유로운 영혼을 가진 사람입니다.", "ENFJ": "선도자: 카리스마와 영감을 주는 리더, 타인의 성장을 돕습니다.", "ENTP": "변론가: 똑똑하고 호기심이 많으며, 지적 도전을 즐깁니다.", "ISFJ": "수호자: 세심하고 헌신적이며, 따뜻한 보호자입니다.", "ISTJ": "논리주의자: 실용적이고 사실에 기반한 결정을 내립니다.", "ISFP": "모험가: 유연하고 매력적이며, 새로운 경험을 즐깁니다.", "ISTP": "장인: 실험을 즐기고 손으로 만드는 것을 좋아하는 사람입니다.", "ESFJ": "사교적인 외교관: 협력적이고 따뜻하며, 타인과의 조화를 중시합니다.", "ESTJ": "경영자: 질서정연하고 책임감이 강하며, 사물을 관리하는 데 능숙합니다.", "ESFP": "연예인: 사교적이고 활동적이며, 즐거움을 추구하는 사람입니다.", "ESTP": "사업가: 에너지가 넘치고 대담하며, 행동으로 생각을 옮깁니다." } def calculate_mbti(*args): # 단순화된 MBTI 유형 계산 로직 # args는 사용자가 각 질문에 대해 선택한 옵션들의 리스트 # 여기서는 단순화를 위해 항상 "INTJ"를 반환하도록 설정 mbti_type = "INTJ" # 예시로 INTJ를 선택 # MBTI 유형과 해석을 반환 interpretation = mbti_interpretations[mbti_type] detailed_interpretation = f"{mbti_type}: {interpretation}\n\n진단 테스트 내용 추가:\n{mbti_type} 유형은 자연스럽게 리더십을 발휘하며, 복잡한 문제를 해결하는 데 능숙합니다. 독립적인 사고와 강한 의지를 가지고 있으며, 자신의 비전을 현실로 만들기 위해 끊임없이 노력합니다." return mbti_type, detailed_interpretation # 질문 리스트 questions = [ "새로운 사람들을 만날 때 주로 어떻게 행동하나요?", "문제를 해결할 때 어떤 접근 방식을 선호하나요?", "여가 시간을 어떻게 보내는 것을 선호하나요?", "의사 결정을 할 때 무엇을 더 중요하게 여기나요?", "팀 프로젝트를 할 때 어떤 역할을 선호하나요?", "새로운 아이디어나 프로젝트에 대해 어떻게 느끼나요?", "스트레스를 받을 때 어떻게 대처하나요?", "학습할 때 어떤 방식을 선호하나요?", "일상에서 어떤 것들에 가장 가치를 두나요?", "변화에 대해 어떻게 반응하나요?" ] # 옵션을 MBTI 성향에 맞게 수정 options = { "E/I": ["외향적(E)", "내향적(I)"], "S/N": ["감각적(S)", "직관적(N)"], "T/F": ["사고적(T)", "감정적(F)"], "J/P": ["판단적(J)", "인식적(P)"] } # Gradio 앱 정의 with gr.Blocks() as app: gr.Markdown("# MBTI 진단 테스트") with gr.Row(): # 각 질문에 대해 MBTI 성향에 맞는 옵션을 제공 answers = [gr.Radio(options[key], label=question) for key, question in zip(options.keys(), questions)] submit_button = gr.Button("결과 보기") output_mbti, output_interpretation = gr.Textbox(label="당신의 MBTI 유형"), gr.Textbox(label="유형 해석 및 진단 테스트 내용", lines=10) submit_button.click(fn=calculate_mbti, inputs=answers, outputs=[output_mbti, output_interpretation]) if __name__ == "__main__": app.launch()