aliceblue11 commited on
Commit
6e4b8e7
·
verified ·
1 Parent(s): 5800fc6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -105
app.py CHANGED
@@ -7,7 +7,7 @@ import json
7
  from io import BytesIO
8
  import base64
9
 
10
- # TCI_TYPES 데이터 (기존에 정의한 내용과 통합)
11
  TCI_TYPES = {
12
  "Type1": {
13
  "name": "활동적인 도전자",
@@ -146,32 +146,32 @@ def calculate_tci(responses):
146
  return selected_type, percentages[selected_type]
147
 
148
  def generate_report(tci_data):
149
- 개인정보 = tci_data["개인정보"]
150
- 프로파일 = tci_data["TCI_RS_프로파일"]
151
- 하위척도 = tci_data["TCI_RS_하위척도"]
152
 
153
  # 개인 정보 섹션
154
  personal_info = f"""
155
  ## 개인 정보
156
- - **이름**: {개인정보['이름']}
157
- - **개인 고유번호**: {개인정보['개인고유번호']}
158
- - **성별**: {개인정보['성별']}
159
- - **연령**: {개인정보['연령']}
160
- - **소속기관 1**: {개인정보['소속기관1']}
161
- - **소속기관 2**: {개인정보['소속기관2']}
162
- - **규준집단**: {개인정보['규준집단']}
163
- - **무응답수**: {개인정보['무응답수']}
164
  """
165
 
166
  # 기질 섹션
167
  temperament = "## 기질\n"
168
- for key, value in 프로파일["기질"].items():
169
- temperament += f"- **{key}**: 원점수={value['원점수']}, T점수={value['T점수']}, 백분위={value['백분위']}\n"
170
 
171
  # 성격 섹션
172
  personality = "## 성격\n"
173
- for key, value in 프로파일["성격"].items():
174
- personality += f"- **{key}**: 원점수={value['원점수']}, T점수={value['T점수']}, 백분위={value['백분위']}\n"
175
 
176
  # 하위척도 섹션
177
  subscales = "## TCI-RS 하위척도\n"
@@ -188,12 +188,12 @@ def generate_report(tci_data):
188
  def plot_scores(tci_data):
189
  scales = []
190
  scores = []
191
- for scale, data in tci_data["TCI_RS_프로파일"]["기질"].items():
192
  scales.append(scale)
193
- scores.append(data["백분위"])
194
- for scale, data in tci_data["TCI_RS_프로파일"]["성격"].items():
195
  scales.append(scale)
196
- scores.append(data["백분위"])
197
 
198
  plt.figure(figsize=(12, 6))
199
  bars = plt.bar(scales, scores, color='skyblue')
@@ -239,83 +239,13 @@ def display_profile(tci_data_json):
239
  def main():
240
  with gr.Blocks() as demo:
241
  gr.Markdown("# TCI-RS 프로파일 보고서")
242
- gr.Markdown("아래에 TCI-RS 프로파일 데이터를 JSON 형식으로 입력해주세요.\n\n**예시 JSON 데이터**\n```json\n" + json.dumps({
243
- "개인정보": {
244
- "이름": "홍길동",
245
- "개인고유번호": 123,
246
- "성별": "남자",
247
- "연령": "만 20 세",
248
- "소속기관1": "마음사랑",
249
- "소속기관2": "",
250
- "규준집단": "일반성인",
251
- "무응답수": 0
252
- },
253
- "TCI_RS_프로파일": {
254
- "기질": {
255
- "자극추구(NS)": {"원점수": 34, "T점수": 57, "백분위": 74},
256
- "위험회피(HA)": {"원점수": 40, "T점수": 55, "백분위": 66},
257
- "사회적 민감성(RD)": {"원점수": 41, "T점수": 48, "백분위": 39},
258
- "인내력(PS)": {"원점수": 32, "T점수": 38, "백분위": 11}
259
- },
260
- "성격": {
261
- "자율성(SD)": {"원점수": 47, "T점수": 49, "백분위": 44},
262
- "연대감(CO)": {"원점수": 43, "T점수": 35, "백분위": 5},
263
- "자기초월(ST)": {"원점수": 27, "T점수": 51, "백분위": 56},
264
- "자율성+연대감(SC)": {"원점수": 90, "T점수": 41, "백분위": 18}
265
- }
266
- },
267
- "TCI_RS_하위척도": {
268
- "자극추구(NS)": {
269
- "NS1": {"원점수": 9, "규준집단_M": 9.5, "SD": 3.2, "특성": "관습적안정성 탐색적흥분"},
270
- "NS2": {"원점수": 7, "규준집단_M": 7.0, "SD": 3.3, "특성": "심사숙고 충동성"},
271
- "NS3": {"원점수": 9, "규준집단_M": 6.0, "SD": 3.2, "특성": "절제 무절제"},
272
- "NS4": {"원점수": 9, "규준집단_M": 5.2, "SD": 3.2, "특성": "질서정연 자유분방"}
273
- },
274
- "위험회피(HA)": {
275
- "HA1": {"원점수": 8, "규준집단_M": 7.8, "SD": 4.1, "특성": "낙천성 예기불안"},
276
- "HA2": {"원점수": 9, "규준집단_M": 9.9, "SD": 3.0, "특성": "(낮은)불확실성에대한두려움 (높은)불확실성에대한두려움"},
277
- "HA3": {"원점수": 12, "규준집단_M": 8.7, "SD": 3.6, "특성": "(낮은)낯선사람에대한수줍음 (높은)낯선사람에대한수줍음"},
278
- "HA4": {"원점수": 11, "규준집단_M": 8.7, "SD": 3.4, "특성": "활기넘침 쉽게지침"}
279
- },
280
- "사회적 민감성(RD)": {
281
- "RD1": {"원점수": 8, "규준집단_M": 11.1, "SD": 2.9, "특성": "(낮은)정서적감수성 (높은)정서적감수성"},
282
- "RD2": {"원점수": 10, "규준집단_M": 10.5, "SD": 3.0, "특성": "(낮은)정서적개방성 (높은)정서적개방성"},
283
- "RD3": {"원점수": 13, "규준집단_M": 11.6, "SD": 3.3, "특성": "거리두기 친밀감"},
284
- "RD4": {"원점수": 10, "규준집단_M": 9.4, "SD": 2.6, "특성": "독립 의존"}
285
- },
286
- "인내력(PS)": {
287
- "PS1": {"원점수": 12, "규준집단_M": 12.7, "SD": 3.0, "특성": "(낮은)근면 (높은)근면"},
288
- "PS2": {"원점수": 6, "규준집단_M": 10.7, "SD": 3.0, "특성": "(낮은)끈기 (높은)끈기"},
289
- "PS3": {"원점수": 7, "규준집단_M": 10.4, "SD": 3.7, "특성": "(낮은)성취에대한야망 (높은)성취에대한야망"},
290
- "PS4": {"원점수": 7, "규준집단_M": 9.9, "SD": 3.5, "특성": "(낮은)완벽주의 (높은)완벽주의"}
291
- },
292
- "자율성(SD)": {
293
- "SD1": {"원점수": 12, "규준집단_M": 12.7, "SD": 2.9, "특성": "(낮은)책임감 (높은)책임감"},
294
- "SD2": {"원점수": 12, "규준집단_M": 11.6, "SD": 3.1, "특성": "(낮은)목적의식 (높은)목적의식"},
295
- "SD3": {"원점수": 6, "규준집단_M": 6.8, "SD": 1.9, "특성": "(낮은)유능감 (높은)유능감"},
296
- "SD4": {"원점수": 5, "규준집단_M": 4.2, "SD": 1.7, "특성": "(낮은)자기수용 (높은)자기수용"},
297
- "SD5": {"원점수": 12, "규준집단_M": 12.5, "SD": 3.2, "특성": "(낮은)자기일치 (높은)자기일치"}
298
- },
299
- "연대감(CO)": {
300
- "CO1": {"원점수": 11, "규준집단_M": 12.6, "SD": 2.8, "특성": "(낮은)타인수용 (높은)타인수용"},
301
- "CO2": {"원점수": 6, "규준집단_M": 9.6, "SD": 2.5, "특성": "(낮은)공감 (높은)공감"},
302
- "CO3": {"원점수": 7, "규준집단_M": 9.9, "SD": 2.5, "특성": "(낮은)이타성 (높은)이타성"},
303
- "CO4": {"원점수": 9, "규준집단_M": 8.9, "SD": 2.6, "특성": "(낮은)관대함 (높은)관대함"},
304
- "CO5": {"원점수": 10, "규준집단_M": 15.1, "SD": 2.5, "특성": "(낮은)공평 (높은)공평"}
305
- },
306
- "자기초월(ST)": {
307
- "ST1": {"원점수": 10, "규준집단_M": 9.1, "SD": 4.0, "특성": "자의식 창조적자기망각"},
308
- "ST2": {"원점수": 8, "규준집단_M": 7.4, "SD": 4.1, "특성": "(낮은)우주만물과의일체감 (높은)우주만물과의일체감"},
309
- "ST3": {"원점수": 9, "규준집단_M": 9.2, "SD": 5.4, "특성": "합리적유물론 영성수용"}
310
- }
311
- }
312
- }, ensure_ascii=False, indent=4) + "\n```")
313
-
314
- input_json = gr.Textbox(
315
- label="TCI-RS 데이터 (JSON)",
316
- lines=15,
317
- placeholder="TCI-RS 데이터를 JSON 형식으로 입력해주세요.",
318
- value=json.dumps({
319
  "개인정보": {
320
  "이름": "홍길동",
321
  "개인고유번호": 123,
@@ -386,7 +316,9 @@ def main():
386
  }
387
  }
388
  }
389
- }, ensure_ascii=False, indent=4) + "\n```")
 
 
390
 
391
  input_json = gr.Textbox(
392
  label="TCI-RS 데이터 (JSON)",
@@ -462,8 +394,7 @@ def main():
462
  "ST3": {"원점수": 9, "규준집단_M": 9.2, "SD": 5.4, "특성": "합리적유물론 영성수용"}
463
  }
464
  }
465
- }
466
- }, ensure_ascii=False, indent=4))
467
 
468
  submit = gr.Button("보고서 생성")
469
 
@@ -472,8 +403,5 @@ def main():
472
 
473
  submit.click(fn=display_profile, inputs=input_json, outputs=[report_output, image_output])
474
 
475
- demo.launch()
476
-
477
- if __name__ == "__main__":
478
- main()
479
-
 
7
  from io import BytesIO
8
  import base64
9
 
10
+ # TCI_TYPES 데이터
11
  TCI_TYPES = {
12
  "Type1": {
13
  "name": "활동적인 도전자",
 
146
  return selected_type, percentages[selected_type]
147
 
148
  def generate_report(tci_data):
149
+ 개인정보 = tci_data.get("개인정보", {})
150
+ 프로파일 = tci_data.get("TCI_RS_프로파일", {})
151
+ 하위척도 = tci_data.get("TCI_RS_하위척도", {})
152
 
153
  # 개인 정보 섹션
154
  personal_info = f"""
155
  ## 개인 정보
156
+ - **이름**: {개인정보.get('이름', 'N/A')}
157
+ - **개인 고유번호**: {개인정보.get('개인고유번호', 'N/A')}
158
+ - **성별**: {개인정보.get('성별', 'N/A')}
159
+ - **연령**: {개인정보.get('연령', 'N/A')}
160
+ - **소속기관 1**: {개인정보.get('소속기관1', 'N/A')}
161
+ - **소속기관 2**: {개인정보.get('소속기관2', 'N/A')}
162
+ - **규준집단**: {개인정보.get('규준집단', 'N/A')}
163
+ - **무응답수**: {개인정보.get('무응답수', 'N/A')}
164
  """
165
 
166
  # 기질 섹션
167
  temperament = "## 기질\n"
168
+ for key, value in 프로파일.get("기질", {}).items():
169
+ temperament += f"- **{key}**: 원점수={value.get('원점수', 'N/A')}, T점수={value.get('T점수', 'N/A')}, 백분위={value.get('백분위', 'N/A')}\n"
170
 
171
  # 성격 섹션
172
  personality = "## 성격\n"
173
+ for key, value in 프로파일.get("성격", {}).items():
174
+ personality += f"- **{key}**: 원점수={value.get('원점수', 'N/A')}, T점수={value.get('T점수', 'N/A')}, 백분위={value.get('백분위', 'N/A')}\n"
175
 
176
  # 하위척도 섹션
177
  subscales = "## TCI-RS 하위척도\n"
 
188
  def plot_scores(tci_data):
189
  scales = []
190
  scores = []
191
+ for scale, data in tci_data.get("TCI_RS_프로파일", {}).get("기질", {}).items():
192
  scales.append(scale)
193
+ scores.append(data.get("백분위", 0))
194
+ for scale, data in tci_data.get("TCI_RS_프로파일", {}).get("성격", {}).items():
195
  scales.append(scale)
196
+ scores.append(data.get("백분위", 0))
197
 
198
  plt.figure(figsize=(12, 6))
199
  bars = plt.bar(scales, scores, color='skyblue')
 
239
  def main():
240
  with gr.Blocks() as demo:
241
  gr.Markdown("# TCI-RS 프로파일 보고서")
242
+ gr.Markdown(
243
+ """
244
+ 아래에 TCI-RS 프로파일 데이터를 JSON 형식으로 입력해주세요.
245
+
246
+ **예시 JSON 데이터**
247
+ ```json
248
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  "개인정보": {
250
  "이름": "홍길동",
251
  "개인고유번호": 123,
 
316
  }
317
  }
318
  }
319
+ ```
320
+ """
321
+ )
322
 
323
  input_json = gr.Textbox(
324
  label="TCI-RS 데이터 (JSON)",
 
394
  "ST3": {"원점수": 9, "규준집단_M": 9.2, "SD": 5.4, "특성": "합리적유물론 영성수용"}
395
  }
396
  }
397
+ }, ensure_ascii=False, indent=4))
 
398
 
399
  submit = gr.Button("보고서 생성")
400
 
 
403
 
404
  submit.click(fn=display_profile, inputs=input_json, outputs=[report_output, image_output])
405
 
406
+ if __name__ == "__main__":
407
+ main()