# 🎓 سریع‌ترین راه برای ساخت آزمون

## ۵ دقیقه تا داشتن آزمون کار کننده

### مرحله 1: فایل HTML را کپی کنید

فایل `sample_exam_template.html` را دانلود کرده و ذخیره کنید:
```
exams/my_exam.html
```

### مرحله 2: سوالات را اضافه کنید

سوالات نمونه را با سوالات واقعی جایگزین کنید:

```html
<!-- یافتن این قسمت -->
const questions = [
    {
        id: 1,
        type: 'multiple-choice',
        title: 'سوال 1',
        text: 'متن سوال',
        options: [
            { id: 'a', label: 'گزینه ۱' },
            { id: 'b', label: 'گزینه ۲' }
        ],
        correct: 'a'  // جواب درست
    }
];
```

### مرحله 3: آزمون را آپلود کنید

1. به **داشبورد مدیریت** بروید
2. بخش **افزودن آزمون مدرسه** را پیدا کنید
3. فایل HTML را انتخاب کنید
4. اطلاعات آزمون را پر کنید
5. **بارگذاری آزمون** را کلیک کنید

---

## انواع سوال و نحوه استفاده

### ✅ چندگزینه‌ای (Multiple Choice)

```javascript
{
    id: 1,
    type: 'multiple-choice',
    title: 'سوال 1',
    text: 'کدام عدد اول است؟',
    options: [
        { id: 'a', label: '15' },
        { id: 'b', label: '17' },
        { id: 'c', label: '21' }
    ],
    correct: 'b'
}
```

### ✅ درست / نادرست

```javascript
{
    id: 2,
    type: 'true-false',
    title: 'سوال 2',
    text: 'آیا زمین گرد است؟',
    options: [
        { id: 'true', label: 'درست' },
        { id: 'false', label: 'نادرست' }
    ],
    correct: 'true'
}
```

### ✅ پاسخ کوتاه

```javascript
{
    id: 3,
    type: 'short-answer',
    title: 'سوال 3',
    text: 'پایتخت ایران کجاست؟',
    correct: 'تهران'
}
```

---

## تنظیم توضیحات و زمان

### تغییر عنوان و توضیح

```html
<div class="header">
    <h1>آزمون ریاضی - نوبت اول</h1>
    <p>مدت زمان: 60 دقیقه | تعداد سوالات: 20</p>
</div>
```

### تغییر مدت زمان آزمون

```javascript
const EXAM_DURATION = 60 * 60; // تغییر دهید به تعداد ثانیه‌ها
```

---

## نمودار و مثال عملی کامل

### ساده‌ترین آزمون ممکن

```html
<!DOCTYPE html>
<html dir="rtl" lang="fa">
<head>
    <meta charset="UTF-8">
    <title>آزمون ساده</title>
    <style>
        body { font-family: Arial; direction: rtl; padding: 20px; }
        .question { margin: 20px 0; padding: 10px; border: 1px solid #ddd; }
        button { padding: 10px 20px; background: #667eea; color: white; border: none; border-radius: 5px; cursor: pointer; }
    </style>
</head>
<body>
    <h1>آزمون ریاضی</h1>
    
    <form id="exam-form">
        <div class="question">
            <p>2 + 2 = ?</p>
            <label><input type="radio" name="q1" value="a"> 3</label>
            <label><input type="radio" name="q1" value="b"> 4</label>
            <label><input type="radio" name="q1" value="c"> 5</label>
        </div>
        <button type="submit">ارسال</button>
    </form>
    
    <script>
        document.getElementById('exam-form').addEventListener('submit', function(e) {
            e.preventDefault();
            
            // جمع‌آوری پاسخ‌ها
            const form = new FormData(this);
            const answers = Object.fromEntries(form);
            
            // محاسبه نمره
            let score = 0;
            if (answers.q1 === 'b') score = 100;
            
            // ارسال به سرور
            const data = new FormData();
            data.append('student', window.EXAM_PLATFORM.student.fullName);
            data.append('student_code', window.EXAM_PLATFORM.student.code);
            data.append('score', score);
            data.append('details', JSON.stringify(answers));
            data.append('answers_json', JSON.stringify(answers));
            data.append('duration_seconds', 0);
            
            fetch(window.EXAM_PLATFORM.submitUrl, {
                method: 'POST',
                body: data
            }).then(() => {
                window.location.href = '/student/dashboard';
            });
        });
    </script>
</body>
</html>
```

---

## فایل‌های مثال در پوشه `exams/`

| فایل | توضیح |
|------|--------|
| `sample_exam_template.html` | نمونه کامل با 5 سوال و تایمر |
| `exam_history.html` | آزمون تاریخ (3 سوال) |

---

## بررسی نتایج

### مشاهده نتایج در داشبورد مدیر

```
/admin/exams/{exam_id}/report
```

- **نمودار توزیع نمرات** - میانگین و ایستاده‌های آماری
- **لیست دانش‌آموزان** - نمرات و وضعیت بررسی
- **پاسخ‌های خام** - JSON تمام پاسخ‌ها

---

## 🔍 بررسی خطاها

### مشکل: فیلدهای دانش‌آموز خالی هستند

```javascript
console.log(window.EXAM_PLATFORM);
```

اگر `undefined` است، آزمون بدرون سیستم بارگذاری شده است.

### مشکل: نتایج ثبت نمی‌شوند

1. **Console** را باز کنید (`F12`)
2. **Network** تب را بررسی کنید
3. درخواست `POST` را پیدا کنید
4. Status کد را بررسی کنید (باید `200` باشد)

### مشکل: نمره درست محاسبه نمی‌شود

اطمینان حاصل کنید که:
- نمره بین `0-100` است
- پاسخ‌های صحیح با `correct` فیلد مطابقت دارند

---

## ۱۰ نکته مهم

1. ✅ همیشه از `window.EXAM_PLATFORM` استفاده کنید (خودکار تزریق می‌شود)
2. ✅ نمره را `0-100` محاسبه کنید
3. ✅ `answers_json` را برای ذخیره تفصیلی استفاده کنید
4. ✅ `duration_seconds` را ثبت کنید
5. ✅ زمان را در ثانیه تنظیم کنید (مثلاً `45 * 60 = 2700`)
6. ✅ پاسخ‌ها را validate کنید قبل از ارسال
7. ✅ redirect به `/student/dashboard` انجام دهید بعد از ثبت
8. ✅ از RTL HTML استفاده کنید (`dir="rtl"`)
9. ✅ مطمئن شوید encoding `UTF-8` است
10. ✅ تایمر اختیاری است ولی توصیه می‌شود

---

## منابع

- 📖 [راهنمای کامل ادغام](EXAM_INTEGRATION_GUIDE.md)
- 🎯 [نمونه آزمون تکمیل](exams/sample_exam_template.html)
- 📊 [مشاهده نتایج در گزارش](http://localhost:8000/admin)

---

**حالا آماده هستید! شروع کنید:** 🚀

1. یکی از نمونه‌ها را کپی کنید
2. سوالات خود را اضافه کنید
3. فایل را آپلود کنید
4. نتایج را مشاهده کنید!

