File size: 2,528 Bytes
f25db82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# app.py

import gradio as gr
import json

# TCI 유형 데이터
TCI_TYPES = {
    "Type1": {
        "name": "예시 유형1",
        "description": "이 유형은 ...",
        "career": ["직업1", "직업2", "직업3"],
        "compatibility": {
            "good": {"Type2": "이유..."},
            "bad": {"Type3": "이유..."}
        }
    },
    # 다른 6가지 유형도 동일한 형식으로 추가
    # ...
}

# 질문 리스트
QUESTIONS = [
    "질문 1 내용...",
    "질문 2 내용...",
    "질문 3 내용...",
    # 최소 20개 이상의 질문 추가
    # ...
]

# 선택지
OPTIONS = ["매우 그렇다", "그렇다", "보통이다", "아니다", "매우 아니다"]

def calculate_tci(responses):
    # 예시 점수 계산 로직
    # 실제 TCI 점수 계산 방식에 맞게 수정 필요
    scores = {type_name: 0 for type_name in TCI_TYPES.keys()}
    for i, response in enumerate(responses):
        # 각 질문을 특정 유형에 매핑하는 로직 필요
        # 예를 들어, 질문 i가 Type1에 해당하면 scores["Type1"] += response 점수
        pass
    # 퍼센트 계산
    total = sum(scores.values())
    percentages = {k: (v / total * 100) if total > 0 else 0 for k, v in scores.items()}
    # 최고 점수 유형 선택
    selected_type = max(percentages, key=percentages.get)
    return selected_type, percentages[selected_type]

def get_results(responses):
    selected_type, percentage = calculate_tci(responses)
    type_info = TCI_TYPES[selected_type]
    
    # 형식에 맞는 결과 생성
    result = {
        "유형": type_info["name"],
        "퍼센트": f"{percentage:.2f}%",
        "성격 설명": type_info["description"],
        "추천 직업": ", ".join(type_info["career"]),
        "좋은 궁합": ", ".join([f"{k}: {v}" for k, v in type_info["compatibility"]["good"].items()]),
        "나쁜 궁합": ", ".join([f"{k}: {v}" for k, v in type_info["compatibility"]["bad"].items()])
    }
    return result

def main():
    with gr.Blocks() as demo:
        gr.Markdown("# TCI 기질 분석기")
        with gr.Form():
            responses = []
            for question in QUESTIONS:
                response = gr.Radio(label=question, choices=OPTIONS, type="index")
                responses.append(response)
            submit = gr.Button("결과 보기")
        output = gr.JSON()
        
        submit.click(fn=get_results, inputs=responses, outputs=output)
    
    demo.launch()

if __name__ == "__main__":
    main()