from flask import Flask, render_template_string, request, jsonify, session, redirect, url_for
import os
import fitz  # PyMuPDF
import re
import json
from werkzeug.utils import secure_filename
from datetime import datetime

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key-here'
app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024  # 100MB
app.config['UPLOAD_FOLDER'] = 'uploads'

# uploads 폴더 생성
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)

class MmpiExtractor:
    def extract_name(self, page):
        try:
            text = page.get_text("text")
            match = re.search(r"(?:이름|성명)\s*:\s*(\S+)", text)
            if match: 
                return match.group(1)
            blocks = page.get_text("blocks")
            if blocks: 
                return blocks[0][4].strip().split('\n')[0]
        except Exception: 
            pass
        return "이름모름"

    def reformat_numeric_blocks(self, text):
        lines = text.split('\n')
        if not lines: 
            return ""
        new_lines = [lines[0]]
        for i in range(1, len(lines)):
            line, stripped_line = lines[i], lines[i].strip()
            is_numeric = False
            if stripped_line and ' ' not in stripped_line:
                try: 
                    float(stripped_line)
                    is_numeric = True
                except ValueError: 
                    is_numeric = False
            if is_numeric and new_lines and new_lines[-1].strip():
                new_lines[-1] += f" {stripped_line}"
            else:
                new_lines.append(line)
        return "\n".join(new_lines)

    def process_files(self, file_paths):
        results = {}
        pages_to_extract = [1, 2, 3, 4]
        
        for i, file_path in enumerate(file_paths):
            try:
                doc = fitz.open(file_path)
                if doc.page_count < 5:
                    continue
                    
                name = self.extract_name(doc.load_page(0))
                if name in results:
                    name = f"{name}_{i+1}"
                
                combined_raw_text = ""
                for page_num in pages_to_extract:
                    combined_raw_text += doc.load_page(page_num).get_text("text") + "\n"
                
                lines = combined_raw_text.split('\n')
                unique_lines = []
                seen_lines = set()
                for line in lines:
                    stripped_line = line.strip()
                    if stripped_line and stripped_line not in seen_lines:
                        seen_lines.add(stripped_line)
                        unique_lines.append(line)
                    elif not stripped_line:
                        unique_lines.append(line)
                
                deduplicated_text = "\n".join(unique_lines)
                formatted_text = self.reformat_numeric_blocks(deduplicated_text)
                results[name] = formatted_text
                
                doc.close()
            except Exception as e:
                print(f"Error processing {file_path}: {e}")
                continue
        
        return results

# HTML 템플릿들
MAIN_TEMPLATE = '''
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MMPI-2 종합 분석 시스템</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <style>
        body { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; }
        .main-container { background: rgba(255,255,255,0.95); border-radius: 15px; box-shadow: 0 15px 35px rgba(0,0,0,0.1); }
        .service-card { transition: transform 0.3s ease; border: none; border-radius: 15px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); }
        .service-card:hover { transform: translateY(-5px); box-shadow: 0 15px 35px rgba(0,0,0,0.2); }
        .service-icon { font-size: 3rem; margin-bottom: 1rem; }
        .gradient-btn { background: linear-gradient(45deg, #667eea, #764ba2); border: none; border-radius: 25px; padding: 12px 30px; }
        .gradient-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0,0,0,0.2); }
    </style>
</head>
<body>
    <div class="container py-5">
        <div class="main-container p-5">
            <div class="text-center mb-5">
                <h1 class="display-4 fw-bold text-primary mb-3">
                    <i class="fas fa-brain"></i> MMPI-2 종합 분석 시스템
                </h1>
                <p class="lead text-muted">심리검사 데이터 추출부터 유형 분석까지 원스톱 서비스</p>
            </div>
            
            <div class="row g-4">
                <!-- PDF 추출 서비스 -->
                <div class="col-md-4">
                    <div class="card service-card h-100">
                        <div class="card-body text-center p-4">
                            <div class="service-icon text-danger">
                                <i class="fas fa-file-pdf"></i>
                            </div>
                            <h4 class="card-title">PDF 데이터 추출</h4>
                            <p class="card-text">MMPI-2 PDF 보고서에서 텍스트 데이터를 자동 추출합니다.</p>
                            <a href="{{ url_for('pdf_upload') }}" class="btn gradient-btn text-white">
                                <i class="fas fa-upload"></i> PDF 업로드
                            </a>
                        </div>
                    </div>
                </div>
                
                <!-- 수동 입력 서비스 -->
                <div class="col-md-4">
                    <div class="card service-card h-100">
                        <div class="card-body text-center p-4">
                            <div class="service-icon text-success">
                                <i class="fas fa-keyboard"></i>
                            </div>
                            <h4 class="card-title">직접 데이터 입력</h4>
                            <p class="card-text">이름과 MMPI 점수를 직접 입력해서 분석을 진행합니다.</p>
                            <a href="{{ url_for('manual_input') }}" class="btn gradient-btn text-white">
                                <i class="fas fa-edit"></i> 직접 입력
                            </a>
                        </div>
                    </div>
                </div>
                
                <!-- 유형 분석 서비스 -->
                <div class="col-md-4">
                    <div class="card service-card h-100">
                        <div class="card-body text-center p-4">
                            <div class="service-icon text-info">
                                <i class="fas fa-chart-line"></i>
                            </div>
                            <h4 class="card-title">유형 분석</h4>
                            <p class="card-text">20-30대 미혼 집단 대상 20가지 유형으로 분류 분석합니다.</p>
                            <a href="{{ url_for('type_analysis') }}" class="btn gradient-btn text-white">
                                <i class="fas fa-search"></i> 유형 분석
                            </a>
                        </div>
                    </div>
                </div>
            </div>
            
            <div class="row mt-5">
                <div class="col-12">
                    <div class="card">
                        <div class="card-body">
                            <h5 class="card-title"><i class="fas fa-info-circle text-primary"></i> 시스템 특징</h5>
                            <div class="row">
                                <div class="col-md-3">
                                    <h6><i class="fas fa-shield-alt text-success"></i> 보안</h6>
                                    <small class="text-muted">개인정보는 처리 후 즉시 삭제</small>
                                </div>
                                <div class="col-md-3">
                                    <h6><i class="fas fa-rocket text-warning"></i> 빠른 처리</h6>
                                    <small class="text-muted">수 초 내 분석 결과 제공</small>
                                </div>
                                <div class="col-md-3">
                                    <h6><i class="fas fa-brain text-info"></i> CBTTR 기반</h6>
                                    <small class="text-muted">20년+ 검증된 치료 기법</small>
                                </div>
                                <div class="col-md-3">
                                    <h6><i class="fas fa-users text-primary"></i> 전문성</h6>
                                    <small class="text-muted">20-30대 특화 분석</small>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
'''

MANUAL_INPUT_TEMPLATE = '''
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MMPI 데이터 직접 입력</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; }
        .form-container { background: white; border-radius: 15px; box-shadow: 0 15px 35px rgba(0,0,0,0.1); }
        .scale-input { margin-bottom: 10px; }
        .scale-group { background: #f8f9fa; padding: 15px; border-radius: 10px; margin-bottom: 20px; }
    </style>
</head>
<body>
    <div class="container py-4">
        <div class="form-container p-4">
            <div class="d-flex justify-content-between align-items-center mb-4">
                <h2><i class="fas fa-keyboard text-primary"></i> MMPI 데이터 직접 입력</h2>
                <a href="{{ url_for('index') }}" class="btn btn-outline-secondary">
                    <i class="fas fa-arrow-left"></i> 메인으로
                </a>
            </div>
            
            <form method="POST" id="mmpiForm">
                <!-- 기본 정보 -->
                <div class="scale-group">
                    <h5 class="text-primary mb-3"><i class="fas fa-user"></i> 기본 정보</h5>
                    <div class="row">
                        <div class="col-md-4">
                            <label class="form-label">이름</label>
                            <input type="text" class="form-control" name="name" required>
                        </div>
                        <div class="col-md-2">
                            <label class="form-label">나이</label>
                            <input type="number" class="form-control" name="age" min="20" max="35">
                        </div>
                        <div class="col-md-2">
                            <label class="form-label">성별</label>
                            <select class="form-control" name="gender">
                                <option value="M">남성</option>
                                <option value="F">여성</option>
                            </select>
                        </div>
                        <div class="col-md-4">
                            <label class="form-label">현재 상황</label>
                            <input type="text" class="form-control" name="situation" placeholder="예: 구직중, 직장인, 학생">
                        </div>
                    </div>
                </div>
                
                <!-- 타당도 척도 -->
                <div class="scale-group">
                    <h5 class="text-success mb-3"><i class="fas fa-shield-alt"></i> 타당도 척도</h5>
                    <div class="row">
                        {% for scale, desc in [
                            ('L', '거짓말 척도'), ('F', 'F척도'), ('K', 'K척도'),
                            ('VRIN', '비일관성'), ('TRIN', '응답 편향')
                        ] %}
                        <div class="col-md-4 scale-input">
                            <label class="form-label">{{ scale }} ({{ desc }})</label>
                            <input type="number" class="form-control" name="{{ scale }}" min="30" max="120" placeholder="T점수">
                        </div>
                        {% endfor %}
                    </div>
                </div>
                
                <!-- 기본 임상척도 -->
                <div class="scale-group">
                    <h5 class="text-danger mb-3"><i class="fas fa-stethoscope"></i> 기본 임상척도</h5>
                    <div class="row">
                        {% for scale, desc in [
                            ('Hs', '건강염려증'), ('D', '우울증'), ('Hy', '히스테리'),
                            ('Pd', '정신병질적 이탈'), ('Mf', '남성성-여성성'),
                            ('Pa', '편집증'), ('Pt', '강박증'), ('Sc', '조현병'),
                            ('Ma', '경조증'), ('Si', '사회적 내향성')
                        ] %}
                        <div class="col-md-4 scale-input">
                            <label class="form-label">{{ scale }} ({{ desc }})</label>
                            <input type="number" class="form-control" name="{{ scale }}" min="30" max="120" placeholder="T점수">
                        </div>
                        {% endfor %}
                    </div>
                </div>
                
                <!-- 주요 호소 -->
                <div class="scale-group">
                    <h5 class="text-warning mb-3"><i class="fas fa-comments"></i> 주요 호소사항</h5>
                    <textarea class="form-control" name="complaints" rows="3" 
                              placeholder="현재 겪고 있는 주요 문제나 어려움을 자유롭게 적어주세요."></textarea>
                </div>
                
                <div class="text-center">
                    <button type="submit" class="btn btn-primary btn-lg px-5">
                        <i class="fas fa-search"></i> 분석 시작
                    </button>
                    <button type="reset" class="btn btn-outline-secondary btn-lg px-5 ms-3">
                        <i class="fas fa-redo"></i> 초기화
                    </button>
                </div>
            </form>
        </div>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        document.getElementById('mmpiForm').addEventListener('submit', function(e) {
            const inputs = this.querySelectorAll('input[type="number"]');
            let hasScores = false;
            inputs.forEach(input => {
                if (input.value && input.value.trim() !== '') {
                    hasScores = true;
                }
            });
            
            if (!hasScores) {
                e.preventDefault();
                alert('최소 하나 이상의 척도 점수를 입력해주세요.');
            }
        });
    </script>
</body>
</html>
'''

PDF_UPLOAD_TEMPLATE = '''
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PDF 업로드</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; }
        .upload-container { background: white; border-radius: 15px; box-shadow: 0 15px 35px rgba(0,0,0,0.1); }
        .drop-zone { border: 2px dashed #ccc; border-radius: 15px; padding: 40px; text-align: center; transition: all 0.3s ease; }
        .drop-zone:hover { border-color: #007bff; background: #f8f9ff; }
        .drop-zone.dragover { border-color: #007bff; background: #e3f2fd; }
    </style>
</head>
<body>
    <div class="container py-4">
        <div class="upload-container p-4">
            <div class="d-flex justify-content-between align-items-center mb-4">
                <h2><i class="fas fa-file-pdf text-danger"></i> PDF 파일 업로드</h2>
                <a href="{{ url_for('index') }}" class="btn btn-outline-secondary">
                    <i class="fas fa-arrow-left"></i> 메인으로
                </a>
            </div>
            
            <form method="POST" enctype="multipart/form-data" id="uploadForm">
                <div class="drop-zone mb-4" id="dropZone">
                    <input type="file" name="files" id="fileInput" multiple accept=".pdf" style="display: none;">
                    <i class="fas fa-cloud-upload-alt fa-3x text-muted mb-3"></i>
                    <h4>PDF 파일을 드래그하거나 클릭해서 선택하세요</h4>
                    <p class="text-muted">여러 개의 MMPI-2 PDF 보고서를 동시에 업로드할 수 있습니다.</p>
                    <button type="button" class="btn btn-primary" onclick="document.getElementById('fileInput').click()">
                        <i class="fas fa-folder-open"></i> 파일 선택
                    </button>
                </div>
                
                <div id="fileList" class="mb-4" style="display: none;">
                    <h5>선택된 파일:</h5>
                    <ul id="selectedFiles" class="list-group"></ul>
                </div>
                
                <div class="text-center">
                    <button type="submit" class="btn btn-success btn-lg px-5" id="submitBtn" disabled>
                        <i class="fas fa-upload"></i> 업로드 및 분석
                    </button>
                </div>
            </form>
            
            <div id="progress" style="display: none;" class="mt-4">
                <div class="progress">
                    <div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 0%"></div>
                </div>
                <p class="text-center mt-2">처리 중...</p>
            </div>
        </div>
    </div>
    
    <script>
        const dropZone = document.getElementById('dropZone');
        const fileInput = document.getElementById('fileInput');
        const fileList = document.getElementById('fileList');
        const selectedFiles = document.getElementById('selectedFiles');
        const submitBtn = document.getElementById('submitBtn');
        
        dropZone.addEventListener('click', () => fileInput.click());
        
        dropZone.addEventListener('dragover', (e) => {
            e.preventDefault();
            dropZone.classList.add('dragover');
        });
        
        dropZone.addEventListener('dragleave', () => {
            dropZone.classList.remove('dragover');
        });
        
        dropZone.addEventListener('drop', (e) => {
            e.preventDefault();
            dropZone.classList.remove('dragover');
            fileInput.files = e.dataTransfer.files;
            updateFileList();
        });
        
        fileInput.addEventListener('change', updateFileList);
        
        function updateFileList() {
            const files = fileInput.files;
            if (files.length > 0) {
                selectedFiles.innerHTML = '';
                for (let i = 0; i < files.length; i++) {
                    const li = document.createElement('li');
                    li.className = 'list-group-item d-flex justify-content-between align-items-center';
                    li.innerHTML = `
                        <span><i class="fas fa-file-pdf text-danger"></i> ${files[i].name}</span>
                        <span class="badge bg-primary">${(files[i].size / 1024 / 1024).toFixed(1)} MB</span>
                    `;
                    selectedFiles.appendChild(li);
                }
                fileList.style.display = 'block';
                submitBtn.disabled = false;
            } else {
                fileList.style.display = 'none';
                submitBtn.disabled = true;
            }
        }
        
        document.getElementById('uploadForm').addEventListener('submit', function() {
            document.getElementById('progress').style.display = 'block';
            submitBtn.disabled = true;
        });
    </script>
</body>
</html>
'''

@app.route('/')
def index():
    return render_template_string(MAIN_TEMPLATE)

@app.route('/pdf-upload', methods=['GET', 'POST'])
def pdf_upload():
    if request.method == 'GET':
        return render_template_string(PDF_UPLOAD_TEMPLATE)
    
    try:
        files = request.files.getlist('files')
        if not files or all(f.filename == '' for f in files):
            return jsonify({'success': False, 'error': 'No files selected'})

        file_paths = []
        for file in files:
            if file and file.filename.lower().endswith('.pdf'):
                filename = secure_filename(file.filename)
                file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
                file.save(file_path)
                file_paths.append(file_path)

        if not file_paths:
            return jsonify({'success': False, 'error': 'No valid PDF files'})

        extractor = MmpiExtractor()
        results = extractor.process_files(file_paths)

        # 임시 파일들 삭제
        for file_path in file_paths:
            try:
                os.remove(file_path)
            except:
                pass

        session['results'] = results
        return redirect(url_for('results'))

    except Exception as e:
        return jsonify({'success': False, 'error': str(e)})

@app.route('/manual-input', methods=['GET', 'POST'])
def manual_input():
    if request.method == 'GET':
        return render_template_string(MANUAL_INPUT_TEMPLATE)
    
    try:
        # 폼 데이터 수집
        form_data = request.form.to_dict()
        
        # MMPI 점수만 추출
        mmpi_scales = ['L', 'F', 'K', 'VRIN', 'TRIN', 'Hs', 'D', 'Hy', 'Pd', 'Mf', 'Pa', 'Pt', 'Sc', 'Ma', 'Si']
        mmpi_scores = {}
        
        for scale in mmpi_scales:
            if scale in form_data and form_data[scale]:
                try:
                    mmpi_scores[scale] = int(form_data[scale])
                except ValueError:
                    continue
        
        if not mmpi_scores:
            return render_template_string(MANUAL_INPUT_TEMPLATE + '''
                <script>alert('최소 하나 이상의 척도 점수를 입력해주세요.'); history.back();</script>
            ''')
        
        # 세션에 데이터 저장
        session['manual_data'] = {
            'name': form_data.get('name', '이름없음'),
            'age': form_data.get('age', ''),
            'gender': form_data.get('gender', ''),
            'situation': form_data.get('situation', ''),
            'complaints': form_data.get('complaints', ''),
            'mmpi_scores': mmpi_scores
        }
        
        return redirect(url_for('analysis'))
        
    except Exception as e:
        return render_template_string(MANUAL_INPUT_TEMPLATE + f'''
            <script>alert('오류가 발생했습니다: {str(e)}'); history.back();</script>
        ''')

@app.route('/analysis')
def analysis():
    manual_data = session.get('manual_data')
    if not manual_data:
        return redirect(url_for('index'))
    
    # 여기서 실제 분석 로직 구현
    # 지금은 간단한 예시만
    analysis_result = analyze_mmpi_data(manual_data)
    
    return render_template_string(ANALYSIS_RESULT_TEMPLATE, 
                                data=manual_data, 
                                result=analysis_result)

def analyze_mmpi_data(data):
    """간단한 MMPI 분석 함수 (실제로는 더 복잡하게 구현)"""
    mmpi_scores = data['mmpi_scores']
    
    # 간단한 분석 예시
    elevated_scales = []
    for scale, score in mmpi_scores.items():
        if score > 65:
            elevated_scales.append(f"{scale}({score})")
    
    # 코드타입 간단 분석
    clinical_scales = {k: v for k, v in mmpi_scores.items() if k in ['Hs', 'D', 'Hy', 'Pd', 'Mf', 'Pa', 'Pt', 'Sc', 'Ma', 'Si']}
    if clinical_scales:
        sorted_scales = sorted(clinical_scales.items(), key=lambda x: x[1], reverse=True)
        code_type = f"{sorted_scales[0][0]}-{sorted_scales[1][0] if len(sorted_scales) > 1 else '?'}"
    else:
        code_type = "분석불가"
    
    return {
        'elevated_scales': elevated_scales,
        'code_type': code_type,
        'primary_concerns': ["우울감", "불안감", "사회적 위축"] if mmpi_scores.get('D', 0) > 65 else ["정상범위"],
        'recommendations': ["전문가 상담 권고", "인지행동치료 고려", "정기적 모니터링"]
    }

ANALYSIS_RESULT_TEMPLATE = '''
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MMPI 분석 결과</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body class="bg-light">
    <div class="container py-4">
        <div class="row">
            <div class="col-12">
                <div class="card">
                    <div class="card-header bg-primary text-white">
                        <h3><i class="fas fa-chart-line"></i> MMPI-2 분석 결과</h3>
                    </div>
                    <div class="card-body">
                        <div class="row mb-4">
                            <div class="col-md-6">
                                <h5>기본 정보</h5>
                                <table class="table table-sm">
                                    <tr><td>이름:</td><td><strong>{{ data.name }}</strong></td></tr>
                                    <tr><td>나이:</td><td>{{ data.age }}세</td></tr>
                                    <tr><td>성별:</td><td>{{ '남성' if data.gender == 'M' else '여성' if data.gender == 'F' else '-' }}</td></tr>
                                    <tr><td>상황:</td><td>{{ data.situation }}</td></tr>
                                </table>
                            </div>
                            <div class="col-md-6">
                                <h5>분석 요약</h5>
                                <p><strong>코드타입:</strong> {{ result.code_type }}</p>
                                <p><strong>상승 척도:</strong> {{ ', '.join(result.elevated_scales) or '없음' }}</p>
                                <p><strong>주요 특징:</strong> {{ ', '.join(result.primary_concerns) }}</p>
                            </div>
                        </div>
                        
                        <div class="row">
                            <div class="col-12 mb-4">
                                <h5>척도 프로파일</h5>
                                <canvas id="mmpiChart" width="400" height="200"></canvas>
                            </div>
                        </div>
                        
                        <div class="row">
                            <div class="col-md-6">
                                <h5>주요 호소</h5>
                                <p>{{ data.complaints or '기록된 호소사항이 없습니다.' }}</p>
                            </div>
                            <div class="col-md-6">
                                <h5>권고사항</h5>
                                <ul>
                                {% for rec in result.recommendations %}
                                    <li>{{ rec }}</li>
                                {% endfor %}
                                </ul>
                            </div>
                        </div>
                        
                        <div class="text-center mt-4">
                            <a href="{{ url_for('index') }}" class="btn btn-primary">새로운 분석</a>
                            <button onclick="window.print()" class="btn btn-secondary">결과 출력</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script>
        const ctx = document.getElementById('mmpiChart').getContext('2d');
        const mmpiData = {{ data.mmpi_scores | tojsonfilter }};
        
        const chart = new Chart(ctx, {
            type: 'line',
            data: {
                labels: Object.keys(mmpiData),
                datasets: [{
                    label: 'T 점수',
                    data: Object.values(mmpiData),
                    borderColor: 'rgb(75, 192, 192)',
                    backgroundColor: 'rgba(75, 192, 192, 0.2)',
                    tension: 0.1
                }]
            },
            options: {
                responsive: true,
                scales: {
                    y: {
                        beginAtZero: false,
                        min: 30,
                        max: 120,
                        ticks: {
                            callback: function(value) {
                                if (value === 65) return value + ' (임상선)';
                                return value;
                            }
                        }
                    }
                },
                plugins: {
                    annotation: {
                        annotations: {
                            line1: {
                                type: 'line',
                                yMin: 65,
                                yMax: 65,
                                borderColor: 'red',
                                borderWidth: 2,
                                borderDash: [5, 5]
                            }
                        }
                    }
                }
            }
        });
    </script>
</body>
</html>
'''

@app.route('/type-analysis')
def type_analysis():
    return render_template_string('''
    <div class="container py-5">
        <div class="text-center">
            <h2>20-30대 미혼 집단 유형 분석</h2>
            <p class="lead">개발 중입니다...</p>
            <a href="{{ url_for('index') }}" class="btn btn-primary">메인으로 돌아가기</a>
        </div>
    </div>
    ''')

@app.route('/results')
def results():
    results = session.get('results', {})
    if not results:
        return redirect(url_for('index'))
    
    # 간단한 결과 페이지
    return render_template_string('''
    <div class="container py-4">
        <h2>PDF 추출 결과</h2>
        {% for name, content in results.items() %}
        <div class="card mb-3">
            <div class="card-header"><strong>{{ name }}</strong></div>
            <div class="card-body">
                <pre style="white-space: pre-wrap; max-height: 300px; overflow-y: auto;">{{ content }}</pre>
            </div>
        </div>
        {% endfor %}
        <a href="{{ url_for('index') }}" class="btn btn-primary">메인으로</a>
    </div>
    ''', results=results)

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)