haepa_mac commited on
Commit
058f20f
·
1 Parent(s): 0b35ceb

Simplify UI to 3 core traits + humor style with fixed high humor default

Browse files
Files changed (2) hide show
  1. app.py +54 -25
  2. modules/persona_generator.py +46 -12
app.py CHANGED
@@ -15,6 +15,7 @@ from datetime import datetime
15
  import PIL.ImageDraw
16
  import random
17
  import copy
 
18
 
19
  # AVIF 지원을 위한 플러그인 활성화
20
  try:
@@ -320,8 +321,8 @@ def generate_personality_preview(persona_name, personality_traits):
320
  else:
321
  return f"🌟 **{persona_name}** - 안녕? 나는 {persona_name}... 뭔가 어색하네. 😅"
322
 
323
- def adjust_persona_traits(persona, warmth, competence, humor, extraversion, humor_style):
324
- """페르소나 성격 특성 조정 - Gradio 5.x 호환"""
325
  if not persona or not isinstance(persona, dict):
326
  return None, "조정할 페르소나가 없습니다.", {}
327
 
@@ -330,22 +331,53 @@ def adjust_persona_traits(persona, warmth, competence, humor, extraversion, humo
330
  import copy
331
  adjusted_persona = copy.deepcopy(persona)
332
 
333
- # 성격 특성 업데이트
334
  if "성격특성" not in adjusted_persona:
335
  adjusted_persona["성격특성"] = {}
336
 
337
  adjusted_persona["성격특성"]["온기"] = warmth
338
  adjusted_persona["성격특성"]["능력"] = competence
339
- adjusted_persona["성격특성"]["유머감각"] = humor
340
  adjusted_persona["성격특성"]["외향성"] = extraversion
341
  adjusted_persona["유머스타일"] = humor_style
342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  # 조정된 정보 표시
344
  adjusted_info = {
345
  "이름": adjusted_persona.get("기본정보", {}).get("이름", "Unknown"),
346
  "온기": warmth,
347
  "능력": competence,
348
- "유머감각": humor,
349
  "외향성": extraversion,
350
  "유머스타일": humor_style
351
  }
@@ -356,7 +388,7 @@ def adjust_persona_traits(persona, warmth, competence, humor, extraversion, humo
356
  personality_preview = generate_personality_preview(persona_name, {
357
  "온기": warmth,
358
  "능력": competence,
359
- "유머감각": humor,
360
  "외향성": extraversion
361
  })
362
 
@@ -365,12 +397,14 @@ def adjust_persona_traits(persona, warmth, competence, humor, extraversion, humo
365
 
366
  {personality_preview}
367
 
368
- ✨ **조정된 성격:**
369
  • 온기: {warmth}/100
370
  • 능력: {competence}/100
371
- • 유머감각: {humor}/100
372
  • 외향성: {extraversion}/100
 
373
  • 유머스타일: {humor_style}
 
 
374
  """
375
 
376
  return adjusted_persona, adjustment_message, adjusted_info
@@ -944,7 +978,7 @@ def create_main_interface():
944
  adjustment_section = gr.Group(visible=False)
945
  with adjustment_section:
946
  gr.Markdown("### 🎯 2단계: 친구 성격 미세조정")
947
- gr.Markdown("생성된 페르소나의 성격을 원하는 대로 조정해보세요!")
948
 
949
  with gr.Row():
950
  with gr.Column():
@@ -960,22 +994,18 @@ def create_main_interface():
960
  )
961
 
962
  with gr.Column():
963
- humor_slider = gr.Slider(
964
- minimum=0, maximum=100, value=50, step=1,
965
- label="유머감각",
966
- info="0: 진지함 ↔ 100: 유머러스"
967
- )
968
  extraversion_slider = gr.Slider(
969
  minimum=0, maximum=100, value=50, step=1,
970
- label="외향성",
971
- info="0: 내향적 ↔ 100: 외향적"
 
 
 
 
 
 
 
972
  )
973
-
974
- humor_style_radio = gr.Radio(
975
- choices=["따뜻한 유머러스", "위트있는 재치꾼", "날카로운 관찰자", "자기 비하적"],
976
- value="따뜻한 유머러스",
977
- label="유머 스타일"
978
- )
979
 
980
  with gr.Row():
981
  adjust_btn = gr.Button("✨ 성격 조정 적용", variant="primary")
@@ -1078,18 +1108,17 @@ def create_main_interface():
1078
  fn=lambda persona: (
1079
  persona["성격특성"]["온기"] if persona else 50,
1080
  persona["성격특성"]["능력"] if persona else 50,
1081
- persona["성격특성"]["유머감각"] if persona else 50,
1082
  persona["성격특성"]["외향성"] if persona else 50,
1083
  persona["유머스타일"] if persona else "따뜻한 유머러스"
1084
  ),
1085
  inputs=[current_persona],
1086
- outputs=[warmth_slider, competence_slider, humor_slider, extraversion_slider, humor_style_radio]
1087
  )
1088
 
1089
  # 성격 조정 적용
1090
  adjust_btn.click(
1091
  fn=adjust_persona_traits,
1092
- inputs=[current_persona, warmth_slider, competence_slider, humor_slider, extraversion_slider, humor_style_radio],
1093
  outputs=[current_persona, adjustment_result, adjusted_info_output]
1094
  )
1095
 
 
15
  import PIL.ImageDraw
16
  import random
17
  import copy
18
+ from modules.persona_generator import PersonaGenerator, PersonalityProfile, HumorMatrix
19
 
20
  # AVIF 지원을 위한 플러그인 활성화
21
  try:
 
321
  else:
322
  return f"🌟 **{persona_name}** - 안녕? 나는 {persona_name}... 뭔가 어색하네. 😅"
323
 
324
+ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style):
325
+ """페르소나 성격 특성 조정 - 3개 핵심 지표 + 유머스타일"""
326
  if not persona or not isinstance(persona, dict):
327
  return None, "조정할 페르소나가 없습니다.", {}
328
 
 
331
  import copy
332
  adjusted_persona = copy.deepcopy(persona)
333
 
334
+ # 성격 특성 업데이트 (유머감각은 항상 높게 고정)
335
  if "성격특성" not in adjusted_persona:
336
  adjusted_persona["성격특성"] = {}
337
 
338
  adjusted_persona["성격특성"]["온기"] = warmth
339
  adjusted_persona["성격특성"]["능력"] = competence
340
+ adjusted_persona["성격특성"]["유머감각"] = 75 # 🎭 항상 높은 유머감각
341
  adjusted_persona["성격특성"]["외향성"] = extraversion
342
  adjusted_persona["유머스타일"] = humor_style
343
 
344
+ # 127개 변수 시스템도 업데이트 (사용자 지표가 반영되도록)
345
+ if "성격프로필" in adjusted_persona:
346
+ from modules.persona_generator import PersonalityProfile
347
+ profile = PersonalityProfile.from_dict(adjusted_persona["성격프로필"])
348
+
349
+ # 온기 관련 변수들 조정
350
+ warmth_vars = ["W01_친절함", "W02_친근함", "W06_공감능력", "W07_포용력"]
351
+ for var in warmth_vars:
352
+ profile.variables[var] = warmth + random.randint(-10, 10)
353
+ profile.variables[var] = max(0, min(100, profile.variables[var]))
354
+
355
+ # 능력 관련 변수들 조정
356
+ competence_vars = ["C01_효율성", "C02_지능", "C05_정확성", "C09_실행력"]
357
+ for var in competence_vars:
358
+ profile.variables[var] = competence + random.randint(-10, 10)
359
+ profile.variables[var] = max(0, min(100, profile.variables[var]))
360
+
361
+ # 외향성 관련 변수들 조정
362
+ extraversion_vars = ["E01_사교성", "E02_활동성", "E04_긍정정서"]
363
+ for var in extraversion_vars:
364
+ profile.variables[var] = extraversion + random.randint(-10, 10)
365
+ profile.variables[var] = max(0, min(100, profile.variables[var]))
366
+
367
+ # 유머 관련 변수들은 항상 높게 유지
368
+ humor_vars = ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감"]
369
+ for var in humor_vars:
370
+ profile.variables[var] = random.randint(70, 85)
371
+
372
+ # 업데이트된 프로필 저장
373
+ adjusted_persona["성격프로필"] = profile.to_dict()
374
+
375
  # 조정된 정보 표시
376
  adjusted_info = {
377
  "이름": adjusted_persona.get("기본정보", {}).get("이름", "Unknown"),
378
  "온기": warmth,
379
  "능력": competence,
380
+ "유머감각": 75, # 고정값 표시
381
  "외향성": extraversion,
382
  "유머스타일": humor_style
383
  }
 
388
  personality_preview = generate_personality_preview(persona_name, {
389
  "온기": warmth,
390
  "능력": competence,
391
+ "유머감각": 75, # 항상 높은 유머감각
392
  "외향성": extraversion
393
  })
394
 
 
397
 
398
  {personality_preview}
399
 
400
+ ✨ **조정된 성격 (3가지 핵심 지표):**
401
  • 온기: {warmth}/100
402
  • 능력: {competence}/100
 
403
  • 외향성: {extraversion}/100
404
+ • 유머감각: 75/100 (고정 - 모든 페르소나가 유머러스!)
405
  • 유머스타일: {humor_style}
406
+
407
+ 🧬 **백그라운드**: 127개 세부 변수가 이 설정에 맞춰 자동 조정되었습니다.
408
  """
409
 
410
  return adjusted_persona, adjustment_message, adjusted_info
 
978
  adjustment_section = gr.Group(visible=False)
979
  with adjustment_section:
980
  gr.Markdown("### 🎯 2단계: 친구 성격 미세조정")
981
+ gr.Markdown("**3가지 핵심 지표**로 성격을 조정해보세요! (유머감각은 모든 페르소나가 기본적으로 높습니다 😄)")
982
 
983
  with gr.Row():
984
  with gr.Column():
 
994
  )
995
 
996
  with gr.Column():
 
 
 
 
 
997
  extraversion_slider = gr.Slider(
998
  minimum=0, maximum=100, value=50, step=1,
999
+ label="외향성 (활발함 정도)",
1000
+ info="0: 내향적, 조용함 ↔ 100: 외향적, 활발함"
1001
+ )
1002
+
1003
+ humor_style_radio = gr.Radio(
1004
+ choices=["따뜻한 유머러스", "위트있는 재치꾼", "날카로운 관찰자", "자기 비하적", "장난꾸러기"],
1005
+ value="따뜻한 유머러스",
1006
+ label="유머 스타일 (모든 페르소나는 유머감각이 높습니다!)",
1007
+ info="어떤 방식으로 재미있게 만들까요?"
1008
  )
 
 
 
 
 
 
1009
 
1010
  with gr.Row():
1011
  adjust_btn = gr.Button("✨ 성격 조정 적용", variant="primary")
 
1108
  fn=lambda persona: (
1109
  persona["성격특성"]["온기"] if persona else 50,
1110
  persona["성격특성"]["능력"] if persona else 50,
 
1111
  persona["성격특성"]["외향성"] if persona else 50,
1112
  persona["유머스타일"] if persona else "따뜻한 유머러스"
1113
  ),
1114
  inputs=[current_persona],
1115
+ outputs=[warmth_slider, competence_slider, extraversion_slider, humor_style_radio]
1116
  )
1117
 
1118
  # 성격 조정 적용
1119
  adjust_btn.click(
1120
  fn=adjust_persona_traits,
1121
+ inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
1122
  outputs=[current_persona, adjustment_result, adjusted_info_output]
1123
  )
1124
 
modules/persona_generator.py CHANGED
@@ -1006,17 +1006,17 @@ class PersonaGenerator:
1006
  # ✨ 127개 변수 시스템을 활용한 PersonalityProfile 생성
1007
  personality_profile = self._create_comprehensive_personality_profile(image_analysis, object_type)
1008
 
1009
- # PersonalityProfile에서 기본 특성 추출
1010
  personality_traits = {
1011
  "온기": personality_profile.get_category_summary("W"),
1012
  "능력": personality_profile.get_category_summary("C"),
1013
  "외향성": personality_profile.get_category_summary("E"),
 
1014
  "친화성": personality_profile.get_category_summary("A"),
1015
  "성실성": personality_profile.get_category_summary("C1"),
1016
  "신경증": personality_profile.get_category_summary("N"),
1017
  "개방성": personality_profile.get_category_summary("O"),
1018
  "창의성": personality_profile.variables.get("C04_창의성", 50),
1019
- "유머감각": personality_profile.get_category_summary("H"),
1020
  "공감능력": personality_profile.variables.get("W06_공감능력", 50)
1021
  }
1022
 
@@ -1055,11 +1055,15 @@ class PersonaGenerator:
1055
  personality_hints = image_analysis.get("personality_hints", {})
1056
  warmth_hint = personality_hints.get("warmth_factor", 50)
1057
  competence_hint = personality_hints.get("competence_factor", 50)
1058
- humor_hint = personality_hints.get("humor_factor", 50)
1059
 
1060
  # 기본 PersonalityProfile 생성 (기본값들로 시작)
1061
  profile = PersonalityProfile()
1062
 
 
 
 
 
1063
  # 🎯 성격 유형별 127개 변수 조정
1064
  personality_type = self._determine_base_personality_type(warmth_hint, competence_hint, humor_hint)
1065
  profile = self._apply_personality_archetype_to_profile(profile, personality_type)
@@ -1105,6 +1109,11 @@ class PersonaGenerator:
1105
  def _apply_personality_archetype_to_profile(self, profile, personality_type):
1106
  """성격 유형에 따라 127개 변수 조정"""
1107
 
 
 
 
 
 
1108
  # 각 성격 유형별로 127개 변수를 체계적으로 조정
1109
  if personality_type == "열정적_엔터테이너":
1110
  # 온기 차원 강화
@@ -1115,9 +1124,10 @@ class PersonaGenerator:
1115
  for var in ["E01_사교성", "E02_활동성", "E04_긍정정서", "E05_자극추구", "E06_열정성"]:
1116
  profile.variables[var] = random.randint(80, 95)
1117
 
1118
- # 유머 차원 강화
1119
  for var in ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감"]:
1120
- profile.variables[var] = random.randint(75, 90)
 
1121
 
1122
  # 능력 차원 약화
1123
  for var in ["C01_효율성", "C05_정확성", "C16_신중함"]:
@@ -1144,6 +1154,11 @@ class PersonaGenerator:
1144
  for var in ["E01_사교성", "E02_활동성", "E04_긍정정서"]:
1145
  profile.variables[var] = random.randint(15, 40)
1146
 
 
 
 
 
 
1147
  # 매력적 결함 설정
1148
  profile.variables["F01_완벽주의불안"] = random.randint(20, 35)
1149
  profile.variables["F08_고집스러움"] = random.randint(15, 30)
@@ -1157,9 +1172,10 @@ class PersonaGenerator:
1157
  for var in ["A06_공감민감성", "R06_친밀감수용도", "D04_공감반응강도"]:
1158
  profile.variables[var] = random.randint(85, 95)
1159
 
1160
- # 유머 차원 약화
1161
- for var in ["H01_언어유희빈도", "H05_아이러니사용", "H09_블랙유머수준"]:
1162
- profile.variables[var] = random.randint(15, 35)
 
1163
 
1164
  # 매력적 결함 설정
1165
  profile.variables["F09_예민함"] = random.randint(15, 30)
@@ -1170,8 +1186,9 @@ class PersonaGenerator:
1170
  for var in ["C02_지능", "C04_창의성", "C06_분석력", "C08_통찰력"]:
1171
  profile.variables[var] = random.randint(80, 95)
1172
 
 
1173
  for var in ["H01_언어유희빈도", "H04_위트반응속도", "H05_아이러니사용", "H07_패러디창작성"]:
1174
- profile.variables[var] = random.randint(75, 90)
1175
 
1176
  # 개방성 강화
1177
  for var in ["O01_상상력", "O05_사고개방성", "O06_가치개방성"]:
@@ -1197,6 +1214,11 @@ class PersonaGenerator:
1197
  for var in ["A01_신뢰", "A05_겸손함", "A06_공감민감성"]:
1198
  profile.variables[var] = random.randint(65, 85)
1199
 
 
 
 
 
 
1200
  # 매력적 결함 설정
1201
  profile.variables["F11_소심함"] = random.randint(20, 35)
1202
  profile.variables["F15_표현서툼"] = random.randint(15, 30)
@@ -1213,17 +1235,24 @@ class PersonaGenerator:
1213
  for var in ["C13_충실함", "C14_성취욕구"]:
1214
  profile.variables[var] = random.randint(80, 90)
1215
 
 
 
 
 
 
1216
  # 매력적 결함 설정
1217
  profile.variables["F08_고집스러움"] = random.randint(10, 20)
1218
 
1219
  elif personality_type == "장난꾸러기_친구":
1220
  # 유머와 외향성 강화, 능력 약화
1221
- for var in ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감"]:
1222
- profile.variables[var] = random.randint(85, 95)
1223
-
1224
  for var in ["E01_사교성", "E02_활동성", "E04_긍정정서"]:
1225
  profile.variables[var] = random.randint(80, 95)
1226
 
 
 
 
 
 
1227
  # 능력 차원 의도적 약화
1228
  for var in ["C01_효율성", "C05_정확성", "C16_신중함"]:
1229
  profile.variables[var] = random.randint(25, 45)
@@ -1244,6 +1273,11 @@ class PersonaGenerator:
1244
  for var in ["E01_사교성", "E02_활동성", "E03_자기주장"]:
1245
  profile.variables[var] = random.randint(20, 40)
1246
 
 
 
 
 
 
1247
  # 매력적 결함 설정
1248
  profile.variables["F13_과거집착"] = random.randint(15, 25)
1249
  profile.variables["F15_표현서툼"] = random.randint(10, 20)
 
1006
  # ✨ 127개 변수 시스템을 활용한 PersonalityProfile 생성
1007
  personality_profile = self._create_comprehensive_personality_profile(image_analysis, object_type)
1008
 
1009
+ # PersonalityProfile에서 기본 특성 추출 (3개 핵심 지표 + 고정 유머감각)
1010
  personality_traits = {
1011
  "온기": personality_profile.get_category_summary("W"),
1012
  "능력": personality_profile.get_category_summary("C"),
1013
  "외향성": personality_profile.get_category_summary("E"),
1014
+ "유머감각": 75, # 🎭 항상 높은 유머감각 (디폴트)
1015
  "친화성": personality_profile.get_category_summary("A"),
1016
  "성실성": personality_profile.get_category_summary("C1"),
1017
  "신경증": personality_profile.get_category_summary("N"),
1018
  "개방성": personality_profile.get_category_summary("O"),
1019
  "창의성": personality_profile.variables.get("C04_창의성", 50),
 
1020
  "공감능력": personality_profile.variables.get("W06_공감능력", 50)
1021
  }
1022
 
 
1055
  personality_hints = image_analysis.get("personality_hints", {})
1056
  warmth_hint = personality_hints.get("warmth_factor", 50)
1057
  competence_hint = personality_hints.get("competence_factor", 50)
1058
+ humor_hint = 75 # 🎭 유머감각은 항상 높게 설정 (디폴트)
1059
 
1060
  # 기본 PersonalityProfile 생성 (기본값들로 시작)
1061
  profile = PersonalityProfile()
1062
 
1063
+ # 🎭 모든 페르소나에 기본 유머 능력 부여
1064
+ for var in ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감", "H04_위트반응속도"]:
1065
+ profile.variables[var] = random.randint(65, 85) # 기본적으로 높은 유머 능력
1066
+
1067
  # 🎯 성격 유형별 127개 변수 조정
1068
  personality_type = self._determine_base_personality_type(warmth_hint, competence_hint, humor_hint)
1069
  profile = self._apply_personality_archetype_to_profile(profile, personality_type)
 
1109
  def _apply_personality_archetype_to_profile(self, profile, personality_type):
1110
  """성격 유형에 따라 127개 변수 조정"""
1111
 
1112
+ # 🎭 모든 성격 유형에 기본 유머 능력 부여 (차별화된 스타일)
1113
+ base_humor_vars = ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감"]
1114
+ for var in base_humor_vars:
1115
+ profile.variables[var] = random.randint(60, 80) # 기본 유머 레벨
1116
+
1117
  # 각 성격 유형별로 127개 변수를 체계적으로 조정
1118
  if personality_type == "열정적_엔터테이너":
1119
  # 온기 차원 강화
 
1124
  for var in ["E01_사교성", "E02_활동성", "E04_긍정정서", "E05_자극추구", "E06_열정성"]:
1125
  profile.variables[var] = random.randint(80, 95)
1126
 
1127
+ # 🎭 표현적이고 활발한 유머 스타일
1128
  for var in ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감"]:
1129
+ profile.variables[var] = random.randint(80, 95)
1130
+ profile.variables["S06_감탄사사용"] = random.randint(85, 95)
1131
 
1132
  # 능력 차원 약화
1133
  for var in ["C01_효율성", "C05_정확성", "C16_신중함"]:
 
1154
  for var in ["E01_사교성", "E02_활동성", "E04_긍정정서"]:
1155
  profile.variables[var] = random.randint(15, 40)
1156
 
1157
+ # 🎭 지적이고 날카로운 유머 스타일
1158
+ profile.variables["H01_언어유희빈도"] = random.randint(75, 90) # 말장난 높음
1159
+ profile.variables["H05_아이러니사용"] = random.randint(70, 85) # 아이러니 높음
1160
+ profile.variables["H09_블랙유머수준"] = random.randint(60, 80) # 블랙유머 적당히
1161
+
1162
  # 매력적 결함 설정
1163
  profile.variables["F01_완벽주의불안"] = random.randint(20, 35)
1164
  profile.variables["F08_고집스러움"] = random.randint(15, 30)
 
1172
  for var in ["A06_공감민감성", "R06_친밀감수용도", "D04_공감반응강도"]:
1173
  profile.variables[var] = random.randint(85, 95)
1174
 
1175
+ # 🎭 따뜻하고 부드러운 유머 스타일
1176
+ profile.variables["H02_상황유머감각"] = random.randint(70, 85) # 상황 유머 적당
1177
+ profile.variables["H05_아이러니사용"] = random.randint(10, 25) # 아이러니 거의 없음
1178
+ profile.variables["H09_블랙유머수준"] = random.randint(5, 15) # 블랙유머 거의 없음
1179
 
1180
  # 매력적 결함 설정
1181
  profile.variables["F09_예민함"] = random.randint(15, 30)
 
1186
  for var in ["C02_지능", "C04_창의성", "C06_분석력", "C08_통찰력"]:
1187
  profile.variables[var] = random.randint(80, 95)
1188
 
1189
+ # 🎭 지적이고 세련된 유머 스타일
1190
  for var in ["H01_언어유희빈도", "H04_위트반응속도", "H05_아이러니사용", "H07_패러디창작성"]:
1191
+ profile.variables[var] = random.randint(80, 95)
1192
 
1193
  # 개방성 강화
1194
  for var in ["O01_상상력", "O05_사고개방성", "O06_가치개방성"]:
 
1214
  for var in ["A01_신뢰", "A05_겸손함", "A06_공감민감성"]:
1215
  profile.variables[var] = random.randint(65, 85)
1216
 
1217
+ # 🎭 은근하고 상상력 있는 유머 스타일
1218
+ profile.variables["H01_언어유희빈도"] = random.randint(65, 80)
1219
+ profile.variables["H07_패러디창작성"] = random.randint(70, 85)
1220
+ profile.variables["S06_감탄사사용"] = random.randint(30, 50) # 표현이 조심스러움
1221
+
1222
  # 매력적 결함 설정
1223
  profile.variables["F11_소심함"] = random.randint(20, 35)
1224
  profile.variables["F15_표현서툼"] = random.randint(15, 30)
 
1235
  for var in ["C13_충실함", "C14_성취욕구"]:
1236
  profile.variables[var] = random.randint(80, 90)
1237
 
1238
+ # 🎭 카리스마틱하고 동기부여하는 유머 스타일
1239
+ profile.variables["H02_상황유머감각"] = random.randint(75, 90)
1240
+ profile.variables["H04_위트반응속도"] = random.randint(80, 95)
1241
+ profile.variables["S06_감탄사사용"] = random.randint(70, 85)
1242
+
1243
  # 매력적 결함 설정
1244
  profile.variables["F08_고집스러움"] = random.randint(10, 20)
1245
 
1246
  elif personality_type == "장난꾸러기_친구":
1247
  # 유머와 외향성 강화, 능력 약화
 
 
 
1248
  for var in ["E01_사교성", "E02_활동성", "E04_긍정정서"]:
1249
  profile.variables[var] = random.randint(80, 95)
1250
 
1251
+ # 🎭 순수하고 장난스러운 유머 스타일 (최고 레벨)
1252
+ for var in ["H01_언어유희빈도", "H02_상황유머감각", "H06_관찰유머능력", "H08_유머타이밍감"]:
1253
+ profile.variables[var] = random.randint(85, 95)
1254
+ profile.variables["S06_감탄사사용"] = random.randint(90, 95)
1255
+
1256
  # 능력 차원 의도적 약화
1257
  for var in ["C01_효율성", "C05_정확성", "C16_신중함"]:
1258
  profile.variables[var] = random.randint(25, 45)
 
1273
  for var in ["E01_사교성", "E02_활동성", "E03_자기주장"]:
1274
  profile.variables[var] = random.randint(20, 40)
1275
 
1276
+ # 🎭 신비롭고 철학적인 유머 스타일
1277
+ profile.variables["H05_아이러니사용"] = random.randint(70, 85)
1278
+ profile.variables["H01_언어유희빈도"] = random.randint(65, 80)
1279
+ profile.variables["H10_문화유머이해"] = random.randint(80, 95)
1280
+
1281
  # 매력적 결함 설정
1282
  profile.variables["F13_과거집착"] = random.randint(15, 25)
1283
  profile.variables["F15_표현서툼"] = random.randint(10, 20)