주관식 입력 폼 검증

This commit is contained in:
peregr1nus
2025-12-12 16:14:35 +09:00
parent 4db67170f7
commit 8ab14e951a
3 changed files with 93 additions and 0 deletions

44
app.py
View File

@@ -107,6 +107,15 @@ def step3():
"""3단계: 이단 일반 교리 점검"""
if request.method == 'POST':
data = request.get_json()
# 7번 문항 검증 (기타의견란에 작성 필요)
other_opinions = data.get('other_opinions', '').strip()
if not other_opinions or '7번:' not in other_opinions:
return jsonify({
'success': False,
'message': '7번 문항은 기타의견란에 "7번: "으로 시작하여 답변해주세요.'
}), 400
session['general_cult_doctrine'] = data
# 기본 정보에서 이단교단 확인
@@ -128,6 +137,41 @@ def step4():
"""4단계: 출신 이단별 교리 점검"""
if request.method == 'POST':
data = request.get_json()
# 세션에서 출신 이단 정보 가져오기
basic_info = session.get('basic_info', {})
cult_name = basic_info.get('cult', '')
# 이단별 상세점검 문항 가져오기
questions = app.config.get('CULT_DETAIL_QUESTIONS', {}).get(cult_name, [])
# 기타의견란에 작성해야 하는 문항 번호 찾기
required_question_numbers = []
for i, question in enumerate(questions, 1):
if '기타의견란' in question or '기타의견' in question:
required_question_numbers.append(i)
# 기타의견란 검증
if required_question_numbers:
other_opinions = data.get('other_opinions', '').strip()
if not other_opinions:
return jsonify({
'success': False,
'message': f'{", ".join([str(n) + "" for n in required_question_numbers])} 문항은 기타의견란에 작성해주세요.'
}), 400
# 각 필수 문항 번호가 기타의견란에 포함되어 있는지 확인
missing_questions = []
for q_num in required_question_numbers:
if f'{q_num}번:' not in other_opinions:
missing_questions.append(q_num)
if missing_questions:
return jsonify({
'success': False,
'message': f'{", ".join([str(n) + "" for n in missing_questions])} 문항은 기타의견란에 "{", ".join([str(n) + "번:" for n in missing_questions])}"으로 시작하여 답변해주세요.'
}), 400
session['specific_cult_doctrine'] = data
return jsonify({'success': True, 'next_step': '/step5'})