aliceblue11 commited on
Commit
f25db82
·
verified ·
1 Parent(s): 45345b9

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +79 -0
app.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ import gradio as gr
4
+ import json
5
+
6
+ # TCI 유형 데이터
7
+ TCI_TYPES = {
8
+ "Type1": {
9
+ "name": "예시 유형1",
10
+ "description": "이 유형은 ...",
11
+ "career": ["직업1", "직업2", "직업3"],
12
+ "compatibility": {
13
+ "good": {"Type2": "이유..."},
14
+ "bad": {"Type3": "이유..."}
15
+ }
16
+ },
17
+ # 다른 6가지 유형도 동일한 형식으로 추가
18
+ # ...
19
+ }
20
+
21
+ # 질문 리스트
22
+ QUESTIONS = [
23
+ "질문 1 내용...",
24
+ "질문 2 내용...",
25
+ "질문 3 내용...",
26
+ # 최소 20개 이상의 질문 추가
27
+ # ...
28
+ ]
29
+
30
+ # 선택지
31
+ OPTIONS = ["매우 그렇다", "그렇다", "보통이다", "아니다", "매우 아니다"]
32
+
33
+ def calculate_tci(responses):
34
+ # 예시 점수 계산 로직
35
+ # 실제 TCI 점수 계산 방식에 맞게 수정 필요
36
+ scores = {type_name: 0 for type_name in TCI_TYPES.keys()}
37
+ for i, response in enumerate(responses):
38
+ # 각 질문을 특정 유형에 매핑하는 로직 필요
39
+ # 예를 들어, 질문 i가 Type1에 해당하면 scores["Type1"] += response 점수
40
+ pass
41
+ # 퍼센트 계산
42
+ total = sum(scores.values())
43
+ percentages = {k: (v / total * 100) if total > 0 else 0 for k, v in scores.items()}
44
+ # 최고 점수 유형 선택
45
+ selected_type = max(percentages, key=percentages.get)
46
+ return selected_type, percentages[selected_type]
47
+
48
+ def get_results(responses):
49
+ selected_type, percentage = calculate_tci(responses)
50
+ type_info = TCI_TYPES[selected_type]
51
+
52
+ # 형식에 맞는 결과 생성
53
+ result = {
54
+ "유형": type_info["name"],
55
+ "퍼센트": f"{percentage:.2f}%",
56
+ "성격 설명": type_info["description"],
57
+ "추천 직업": ", ".join(type_info["career"]),
58
+ "좋은 궁합": ", ".join([f"{k}: {v}" for k, v in type_info["compatibility"]["good"].items()]),
59
+ "나쁜 궁합": ", ".join([f"{k}: {v}" for k, v in type_info["compatibility"]["bad"].items()])
60
+ }
61
+ return result
62
+
63
+ def main():
64
+ with gr.Blocks() as demo:
65
+ gr.Markdown("# TCI 기질 분석기")
66
+ with gr.Form():
67
+ responses = []
68
+ for question in QUESTIONS:
69
+ response = gr.Radio(label=question, choices=OPTIONS, type="index")
70
+ responses.append(response)
71
+ submit = gr.Button("결과 보기")
72
+ output = gr.JSON()
73
+
74
+ submit.click(fn=get_results, inputs=responses, outputs=output)
75
+
76
+ demo.launch()
77
+
78
+ if __name__ == "__main__":
79
+ main()