Update app.py
Browse files
app.py
CHANGED
|
@@ -6,72 +6,76 @@ from io import StringIO
|
|
| 6 |
import traceback
|
| 7 |
import inspect
|
| 8 |
|
|
|
|
|
|
|
|
|
|
| 9 |
# 환경변수에서 각 모듈 코드를 불러와서 실행
|
| 10 |
-
def load_and_execute_module(module_name):
|
| 11 |
-
"""환경변수에서 모듈 코드를 불러와서
|
| 12 |
try:
|
| 13 |
module_code = os.getenv(module_name)
|
| 14 |
if not module_code:
|
| 15 |
raise ValueError(f"환경변수 {module_name}이 설정되지 않았습니다.")
|
| 16 |
|
|
|
|
|
|
|
|
|
|
| 17 |
# 모듈 코드 실행
|
| 18 |
exec(module_code, globals())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
print(f"{module_name} 모듈이 성공적으로 로드되었습니다.")
|
|
|
|
| 20 |
|
| 21 |
except Exception as e:
|
| 22 |
print(f"{module_name} 모듈 로드 중 오류: {str(e)}")
|
| 23 |
traceback.print_exc()
|
|
|
|
| 24 |
|
| 25 |
# 각 모듈 로드
|
| 26 |
print("모듈들을 로드하는 중...")
|
| 27 |
|
| 28 |
-
# 정보성 블로그 모듈 로드
|
| 29 |
-
load_and_execute_module("INFO_BLOG_CODE")
|
| 30 |
|
| 31 |
-
# 여행 블로그 모듈 로드
|
| 32 |
-
load_and_execute_module("TRAVEL_BLOG_CODE")
|
| 33 |
|
| 34 |
-
# 상품후기 블로그 모듈 로드
|
| 35 |
-
load_and_execute_module("PRODUCT_REVIEW_BLOG_CODE")
|
| 36 |
|
| 37 |
-
# 핵심기능집중형 블로그 모듈 로드
|
| 38 |
-
load_and_execute_module("FEATURE_FOCUS_BLOG_CODE")
|
| 39 |
|
| 40 |
-
# 방문후기형 블로그 모듈 로드
|
| 41 |
-
load_and_execute_module("VISIT_REVIEW_BLOG_CODE")
|
| 42 |
|
| 43 |
print("모든 모듈 로드 완료!")
|
| 44 |
|
| 45 |
-
#
|
| 46 |
-
|
| 47 |
-
"
|
| 48 |
-
try:
|
| 49 |
-
if func_name in globals():
|
| 50 |
-
func = globals()[func_name]
|
| 51 |
-
# 함수의 시그니처 확인
|
| 52 |
-
sig = inspect.signature(func)
|
| 53 |
-
params = list(sig.parameters.keys())
|
| 54 |
-
|
| 55 |
-
# 매개변수 수에 맞게 호출
|
| 56 |
-
if len(args) <= len(params):
|
| 57 |
-
return func(*args[:len(params)])
|
| 58 |
-
else:
|
| 59 |
-
return func(*args)
|
| 60 |
-
else:
|
| 61 |
-
return f"{func_name} 함수를 찾을 수 없습니다."
|
| 62 |
-
except Exception as e:
|
| 63 |
-
return f"{func_name} 호출 중 오류: {str(e)}"
|
| 64 |
|
| 65 |
-
#
|
| 66 |
|
| 67 |
# 정보성 블로그 래퍼 함수들
|
| 68 |
def generate_outline_1_wrapper(category, style, ref1, ref2, ref3):
|
| 69 |
"""정보성 블로그 아웃라인 생성 래퍼"""
|
| 70 |
try:
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
|
|
|
| 75 |
else:
|
| 76 |
return "정보성 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 77 |
except Exception as e:
|
|
@@ -80,10 +84,10 @@ def generate_outline_1_wrapper(category, style, ref1, ref2, ref3):
|
|
| 80 |
def generate_blog_post_1_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 81 |
"""정보성 블로그 글 생성 래퍼"""
|
| 82 |
try:
|
| 83 |
-
if 'generate_blog_post_1' in
|
| 84 |
-
return generate_blog_post_1(category, style, ref1, ref2, ref3, outline)
|
| 85 |
-
elif 'generate_blog_post' in
|
| 86 |
-
return generate_blog_post(category, style, outline, ref1, ref2, ref3)
|
| 87 |
else:
|
| 88 |
return "정보성 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 89 |
except Exception as e:
|
|
@@ -93,10 +97,10 @@ def generate_blog_post_1_wrapper(category, style, ref1, ref2, ref3, outline):
|
|
| 93 |
def generate_outline_2_wrapper(category, style, ref1, ref2, ref3):
|
| 94 |
"""여행 블로그 아웃라인 생성 래퍼"""
|
| 95 |
try:
|
| 96 |
-
if 'generate_outline_2' in
|
| 97 |
-
return generate_outline_2(category, style, ref1, ref2, ref3)
|
| 98 |
-
elif 'generate_outline' in
|
| 99 |
-
return generate_outline(category, style, ref1, ref2, ref3)
|
| 100 |
else:
|
| 101 |
return "여행 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 102 |
except Exception as e:
|
|
@@ -105,10 +109,10 @@ def generate_outline_2_wrapper(category, style, ref1, ref2, ref3):
|
|
| 105 |
def generate_blog_post_2_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 106 |
"""여행 블로그 글 생성 래퍼"""
|
| 107 |
try:
|
| 108 |
-
if 'generate_blog_post_2' in
|
| 109 |
-
return generate_blog_post_2(category, style, ref1, ref2, ref3, outline)
|
| 110 |
-
elif 'generate_blog_post' in
|
| 111 |
-
return generate_blog_post(category, style, outline, ref1, ref2, ref3)
|
| 112 |
else:
|
| 113 |
return "여행 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 114 |
except Exception as e:
|
|
@@ -118,10 +122,10 @@ def generate_blog_post_2_wrapper(category, style, ref1, ref2, ref3, outline):
|
|
| 118 |
def generate_outline_3_wrapper(category, style, ref1, ref2, ref3):
|
| 119 |
"""상품후기 블로그 아웃라인 생성 래퍼"""
|
| 120 |
try:
|
| 121 |
-
if 'generate_outline_3' in
|
| 122 |
-
return generate_outline_3(category, style, ref1, ref2, ref3)
|
| 123 |
-
elif 'generate_outline' in
|
| 124 |
-
return generate_outline(category, style, ref1, ref2, ref3)
|
| 125 |
else:
|
| 126 |
return "상품후기 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 127 |
except Exception as e:
|
|
@@ -130,10 +134,10 @@ def generate_outline_3_wrapper(category, style, ref1, ref2, ref3):
|
|
| 130 |
def generate_blog_post_3_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 131 |
"""상품후기 블로그 글 생성 래퍼"""
|
| 132 |
try:
|
| 133 |
-
if 'generate_blog_post_3' in
|
| 134 |
-
return generate_blog_post_3(category, style, ref1, ref2, ref3, outline)
|
| 135 |
-
elif 'generate_blog_post' in
|
| 136 |
-
return generate_blog_post(category, style, outline, ref1, ref2, ref3)
|
| 137 |
else:
|
| 138 |
return "상품후기 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 139 |
except Exception as e:
|
|
@@ -143,14 +147,14 @@ def generate_blog_post_3_wrapper(category, style, ref1, ref2, ref3, outline):
|
|
| 143 |
def generate_outline_4_wrapper(category, style, ref1, ref2, ref3):
|
| 144 |
"""핵심기능집중형 블로그 아웃라인 생성 래퍼"""
|
| 145 |
try:
|
| 146 |
-
if 'generate_outline_4' in
|
| 147 |
-
result = generate_outline_4(category, style, ref1, ref2, ref3)
|
| 148 |
if isinstance(result, tuple) and len(result) == 3:
|
| 149 |
return result
|
| 150 |
else:
|
| 151 |
return (str(result), "", "")
|
| 152 |
-
elif 'generate_outline' in
|
| 153 |
-
result = generate_outline(category, style, ref1, ref2, ref3)
|
| 154 |
return (str(result), "", "")
|
| 155 |
else:
|
| 156 |
return ("핵심기능집중형 블로그 아웃라인 생성 함수를 찾을 수 없습니다.", "", "")
|
|
@@ -160,10 +164,10 @@ def generate_outline_4_wrapper(category, style, ref1, ref2, ref3):
|
|
| 160 |
def generate_blog_post_4_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 161 |
"""핵심기능집중형 블로그 글 생성 래퍼"""
|
| 162 |
try:
|
| 163 |
-
if 'generate_blog_post_4' in
|
| 164 |
-
return generate_blog_post_4(category, style, ref1, ref2, ref3, outline)
|
| 165 |
-
elif 'generate_blog_post' in
|
| 166 |
-
return generate_blog_post(category, style, outline, ref1, ref2, ref3)
|
| 167 |
else:
|
| 168 |
return "핵심기능집중형 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 169 |
except Exception as e:
|
|
@@ -173,15 +177,10 @@ def generate_blog_post_4_wrapper(category, style, ref1, ref2, ref3, outline):
|
|
| 173 |
def generate_outline_5_wrapper(category, style, ref1, ref2, ref3, photo_recommendations):
|
| 174 |
"""방문후기형 블로그 아웃라인 생성 래퍼"""
|
| 175 |
try:
|
| 176 |
-
if 'generate_outline_5' in
|
| 177 |
-
return generate_outline_5(category, style, ref1, ref2, ref3, photo_recommendations)
|
| 178 |
-
elif 'generate_outline' in
|
| 179 |
-
|
| 180 |
-
sig = inspect.signature(generate_outline)
|
| 181 |
-
if len(sig.parameters) >= 6:
|
| 182 |
-
return generate_outline(category, style, ref1, ref2, ref3, photo_recommendations)
|
| 183 |
-
else:
|
| 184 |
-
return generate_outline(category, style, ref1, ref2, ref3)
|
| 185 |
else:
|
| 186 |
return "방문후기형 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 187 |
except Exception as e:
|
|
@@ -190,15 +189,10 @@ def generate_outline_5_wrapper(category, style, ref1, ref2, ref3, photo_recommen
|
|
| 190 |
def generate_blog_post_5_wrapper(category, style, ref1, ref2, ref3, outline, photo_recommendations):
|
| 191 |
"""방문후기형 블로그 글 생성 래퍼"""
|
| 192 |
try:
|
| 193 |
-
if 'generate_blog_post_5' in
|
| 194 |
-
return generate_blog_post_5(category, style, ref1, ref2, ref3, outline, photo_recommendations)
|
| 195 |
-
elif 'generate_blog_post' in
|
| 196 |
-
|
| 197 |
-
sig = inspect.signature(generate_blog_post)
|
| 198 |
-
if len(sig.parameters) >= 7:
|
| 199 |
-
return generate_blog_post(category, style, ref1, ref2, ref3, outline, photo_recommendations)
|
| 200 |
-
else:
|
| 201 |
-
return generate_blog_post(category, style, outline, ref1, ref2, ref3)
|
| 202 |
else:
|
| 203 |
return "방문후기형 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 204 |
except Exception as e:
|
|
|
|
| 6 |
import traceback
|
| 7 |
import inspect
|
| 8 |
|
| 9 |
+
# 각 모듈의 함수들을 저장할 딕셔너리
|
| 10 |
+
module_functions = {}
|
| 11 |
+
|
| 12 |
# 환경변수에서 각 모듈 코드를 불러와서 실행
|
| 13 |
+
def load_and_execute_module(module_name, module_key):
|
| 14 |
+
"""환경변수에서 모듈 코드를 불러와서 실행하고 함수들을 저장"""
|
| 15 |
try:
|
| 16 |
module_code = os.getenv(module_name)
|
| 17 |
if not module_code:
|
| 18 |
raise ValueError(f"환경변수 {module_name}이 설정되지 않았습니다.")
|
| 19 |
|
| 20 |
+
# 모듈 실행 전 현재 globals 상태 저장
|
| 21 |
+
before_globals = set(globals().keys())
|
| 22 |
+
|
| 23 |
# 모듈 코드 실행
|
| 24 |
exec(module_code, globals())
|
| 25 |
+
|
| 26 |
+
# 모듈 실행 후 새로 추가된 함수들 찾기
|
| 27 |
+
after_globals = set(globals().keys())
|
| 28 |
+
new_functions = after_globals - before_globals
|
| 29 |
+
|
| 30 |
+
# 새로 추가된 함수들을 모듈별로 저장
|
| 31 |
+
module_functions[module_key] = {}
|
| 32 |
+
for func_name in new_functions:
|
| 33 |
+
if callable(globals()[func_name]) and not func_name.startswith('_'):
|
| 34 |
+
module_functions[module_key][func_name] = globals()[func_name]
|
| 35 |
+
|
| 36 |
print(f"{module_name} 모듈이 성공적으로 로드되었습니다.")
|
| 37 |
+
print(f"로드된 함수들: {list(module_functions[module_key].keys())}")
|
| 38 |
|
| 39 |
except Exception as e:
|
| 40 |
print(f"{module_name} 모듈 로드 중 오류: {str(e)}")
|
| 41 |
traceback.print_exc()
|
| 42 |
+
module_functions[module_key] = {}
|
| 43 |
|
| 44 |
# 각 모듈 로드
|
| 45 |
print("모듈들을 로드하는 중...")
|
| 46 |
|
| 47 |
+
# 정보성 블로그 모듈 로드
|
| 48 |
+
load_and_execute_module("INFO_BLOG_CODE", "info_blog")
|
| 49 |
|
| 50 |
+
# 여행 블로그 모듈 로드
|
| 51 |
+
load_and_execute_module("TRAVEL_BLOG_CODE", "travel_blog")
|
| 52 |
|
| 53 |
+
# 상품후기 블로그 모듈 로드
|
| 54 |
+
load_and_execute_module("PRODUCT_REVIEW_BLOG_CODE", "product_review_blog")
|
| 55 |
|
| 56 |
+
# 핵심기능집중형 블로그 모듈 로드
|
| 57 |
+
load_and_execute_module("FEATURE_FOCUS_BLOG_CODE", "feature_focus_blog")
|
| 58 |
|
| 59 |
+
# 방문후기형 블로그 모듈 로드
|
| 60 |
+
load_and_execute_module("VISIT_REVIEW_BLOG_CODE", "visit_review_blog")
|
| 61 |
|
| 62 |
print("모든 모듈 로드 완료!")
|
| 63 |
|
| 64 |
+
# 각 모듈의 함수 확인
|
| 65 |
+
for module_key, functions in module_functions.items():
|
| 66 |
+
print(f"{module_key}: {list(functions.keys())}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
|
| 68 |
+
# 래퍼 함수들 정의
|
| 69 |
|
| 70 |
# 정보성 블로그 래퍼 함수들
|
| 71 |
def generate_outline_1_wrapper(category, style, ref1, ref2, ref3):
|
| 72 |
"""정보성 블로그 아웃라인 생성 래퍼"""
|
| 73 |
try:
|
| 74 |
+
# 정보성 블로그 모듈에서 함수 찾기
|
| 75 |
+
if 'generate_outline_1' in module_functions.get('info_blog', {}):
|
| 76 |
+
return module_functions['info_blog']['generate_outline_1'](category, style, ref1, ref2, ref3)
|
| 77 |
+
elif 'generate_outline' in module_functions.get('info_blog', {}):
|
| 78 |
+
return module_functions['info_blog']['generate_outline'](category, style, ref1, ref2, ref3)
|
| 79 |
else:
|
| 80 |
return "정보성 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 81 |
except Exception as e:
|
|
|
|
| 84 |
def generate_blog_post_1_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 85 |
"""정보성 블로그 글 생성 래퍼"""
|
| 86 |
try:
|
| 87 |
+
if 'generate_blog_post_1' in module_functions.get('info_blog', {}):
|
| 88 |
+
return module_functions['info_blog']['generate_blog_post_1'](category, style, ref1, ref2, ref3, outline)
|
| 89 |
+
elif 'generate_blog_post' in module_functions.get('info_blog', {}):
|
| 90 |
+
return module_functions['info_blog']['generate_blog_post'](category, style, outline, ref1, ref2, ref3)
|
| 91 |
else:
|
| 92 |
return "정보성 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 93 |
except Exception as e:
|
|
|
|
| 97 |
def generate_outline_2_wrapper(category, style, ref1, ref2, ref3):
|
| 98 |
"""여행 블로그 아웃라인 생성 래퍼"""
|
| 99 |
try:
|
| 100 |
+
if 'generate_outline_2' in module_functions.get('travel_blog', {}):
|
| 101 |
+
return module_functions['travel_blog']['generate_outline_2'](category, style, ref1, ref2, ref3)
|
| 102 |
+
elif 'generate_outline' in module_functions.get('travel_blog', {}):
|
| 103 |
+
return module_functions['travel_blog']['generate_outline'](category, style, ref1, ref2, ref3)
|
| 104 |
else:
|
| 105 |
return "여행 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 106 |
except Exception as e:
|
|
|
|
| 109 |
def generate_blog_post_2_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 110 |
"""여행 블로그 글 생성 래퍼"""
|
| 111 |
try:
|
| 112 |
+
if 'generate_blog_post_2' in module_functions.get('travel_blog', {}):
|
| 113 |
+
return module_functions['travel_blog']['generate_blog_post_2'](category, style, ref1, ref2, ref3, outline)
|
| 114 |
+
elif 'generate_blog_post' in module_functions.get('travel_blog', {}):
|
| 115 |
+
return module_functions['travel_blog']['generate_blog_post'](category, style, outline, ref1, ref2, ref3)
|
| 116 |
else:
|
| 117 |
return "여행 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 118 |
except Exception as e:
|
|
|
|
| 122 |
def generate_outline_3_wrapper(category, style, ref1, ref2, ref3):
|
| 123 |
"""상품후기 블로그 아웃라인 생성 래퍼"""
|
| 124 |
try:
|
| 125 |
+
if 'generate_outline_3' in module_functions.get('product_review_blog', {}):
|
| 126 |
+
return module_functions['product_review_blog']['generate_outline_3'](category, style, ref1, ref2, ref3)
|
| 127 |
+
elif 'generate_outline' in module_functions.get('product_review_blog', {}):
|
| 128 |
+
return module_functions['product_review_blog']['generate_outline'](category, style, ref1, ref2, ref3)
|
| 129 |
else:
|
| 130 |
return "상품후기 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 131 |
except Exception as e:
|
|
|
|
| 134 |
def generate_blog_post_3_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 135 |
"""상품후기 블로그 글 생성 래퍼"""
|
| 136 |
try:
|
| 137 |
+
if 'generate_blog_post_3' in module_functions.get('product_review_blog', {}):
|
| 138 |
+
return module_functions['product_review_blog']['generate_blog_post_3'](category, style, ref1, ref2, ref3, outline)
|
| 139 |
+
elif 'generate_blog_post' in module_functions.get('product_review_blog', {}):
|
| 140 |
+
return module_functions['product_review_blog']['generate_blog_post'](category, style, outline, ref1, ref2, ref3)
|
| 141 |
else:
|
| 142 |
return "상품후기 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 143 |
except Exception as e:
|
|
|
|
| 147 |
def generate_outline_4_wrapper(category, style, ref1, ref2, ref3):
|
| 148 |
"""핵심기능집중형 블로그 아웃라인 생성 래퍼"""
|
| 149 |
try:
|
| 150 |
+
if 'generate_outline_4' in module_functions.get('feature_focus_blog', {}):
|
| 151 |
+
result = module_functions['feature_focus_blog']['generate_outline_4'](category, style, ref1, ref2, ref3)
|
| 152 |
if isinstance(result, tuple) and len(result) == 3:
|
| 153 |
return result
|
| 154 |
else:
|
| 155 |
return (str(result), "", "")
|
| 156 |
+
elif 'generate_outline' in module_functions.get('feature_focus_blog', {}):
|
| 157 |
+
result = module_functions['feature_focus_blog']['generate_outline'](category, style, ref1, ref2, ref3)
|
| 158 |
return (str(result), "", "")
|
| 159 |
else:
|
| 160 |
return ("핵심기능집중형 블로그 아웃라인 생성 함수를 찾을 수 없습니다.", "", "")
|
|
|
|
| 164 |
def generate_blog_post_4_wrapper(category, style, ref1, ref2, ref3, outline):
|
| 165 |
"""핵심기능집중형 블로그 글 생성 래퍼"""
|
| 166 |
try:
|
| 167 |
+
if 'generate_blog_post_4' in module_functions.get('feature_focus_blog', {}):
|
| 168 |
+
return module_functions['feature_focus_blog']['generate_blog_post_4'](category, style, ref1, ref2, ref3, outline)
|
| 169 |
+
elif 'generate_blog_post' in module_functions.get('feature_focus_blog', {}):
|
| 170 |
+
return module_functions['feature_focus_blog']['generate_blog_post'](category, style, outline, ref1, ref2, ref3)
|
| 171 |
else:
|
| 172 |
return "핵심기능집중형 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 173 |
except Exception as e:
|
|
|
|
| 177 |
def generate_outline_5_wrapper(category, style, ref1, ref2, ref3, photo_recommendations):
|
| 178 |
"""방문후기형 블로그 아웃라인 생성 래퍼"""
|
| 179 |
try:
|
| 180 |
+
if 'generate_outline_5' in module_functions.get('visit_review_blog', {}):
|
| 181 |
+
return module_functions['visit_review_blog']['generate_outline_5'](category, style, ref1, ref2, ref3, photo_recommendations)
|
| 182 |
+
elif 'generate_outline' in module_functions.get('visit_review_blog', {}):
|
| 183 |
+
return module_functions['visit_review_blog']['generate_outline'](category, style, ref1, ref2, ref3, photo_recommendations)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 184 |
else:
|
| 185 |
return "방문후기형 블로그 아웃라인 생성 함수를 찾을 수 없습니다."
|
| 186 |
except Exception as e:
|
|
|
|
| 189 |
def generate_blog_post_5_wrapper(category, style, ref1, ref2, ref3, outline, photo_recommendations):
|
| 190 |
"""방문후기형 블로그 글 생성 래퍼"""
|
| 191 |
try:
|
| 192 |
+
if 'generate_blog_post_5' in module_functions.get('visit_review_blog', {}):
|
| 193 |
+
return module_functions['visit_review_blog']['generate_blog_post_5'](category, style, ref1, ref2, ref3, outline, photo_recommendations)
|
| 194 |
+
elif 'generate_blog_post' in module_functions.get('visit_review_blog', {}):
|
| 195 |
+
return module_functions['visit_review_blog']['generate_blog_post'](category, style, ref1, ref2, ref3, outline, photo_recommendations)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
else:
|
| 197 |
return "방문후기형 블로그 글 생성 함수를 찾을 수 없습니다."
|
| 198 |
except Exception as e:
|