📖 Admin Help Guide

SelfQuiz Admin Panel এর সম্পূর্ণ গাইড — API Keys, Preview Mode, Python Script এবং আরও অনেক কিছু।

📑 বিষয়সূচি
1. 🏠 Overview — প্ল্যাটফর্ম পরিচিতি 2. 👁️ Preview Mode — কুইজ প্রিভিউ 3. 🔑 API Keys — তৈরি ও ব্যবস্থাপনা 4. 🐍 Python Script — অটোমেটেড কুইজ ড্রাফটিং 5. 📋 Quiz JSON Format — সঠিক ফরম্যাট 6. 🤖 AI Prompt Template — AI দিয়ে কুইজ তৈরি 7. 🔒 Security — নিরাপত্তা নির্দেশিকা 8. 🛠️ Troubleshooting — সমস্যা সমাধান

🏠 Overview

SelfQuiz Admin Panel দিয়ে আপনি:

👁️ Preview Mode

Preview Mode দিয়ে আপনি কুইজ পাবলিশ করার আগে বা Draft অবস্থায় কুইজটি খেলে দেখতে পারবেন।

Builder থেকে Preview

  1. Quiz Builder এ যান এবং প্রশ্ন তৈরি করুন
  2. Action bar এ ▶ Preview বাটনে ক্লিক করুন
  3. একটি নতুন ট্যাবে কুইজটি লাইভভাবে খেলা যাবে
  4. Preview mode এ কোনো রেকর্ড সংরক্ষিত হবে না

Admin Panel থেকে Preview

  1. Admin Panel → Quizzes এ যান
  2. যেকোনো কুইজ কার্ডে বাটনে ক্লিক করুন
  3. Draft বা Published যেকোনো কুইজ প্রিভিউ করা যাবে
💡 টিপ: Preview mode এ একটি হলুদ ব্যানার দেখাবে "PREVIEW MODE" — এটি নিশ্চিত করে যে কোনো রেকর্ড সেভ হচ্ছে না।

🔑 API Keys

API Keys দিয়ে আপনি বাইরে থেকে (Python script, automation tool) স্বয়ংক্রিয়ভাবে Draft কুইজ তৈরি করতে পারবেন।

Key তৈরি করা

  1. Admin Panel → 🔑 API Keys ট্যাবে যান
  2. একটি নাম দিন (যেমন: "GPT Script", "Batch Import")
  3. 🔑 Generate New Key বাটনে ক্লিক করুন
  4. ⚠️ সাথে সাথে Key কপি করুন! — এটি শুধু একবার দেখানো হবে
⚠️ গুরুত্বপূর্ণ: API Key শুধু একবার দেখানো হয়। কপি না করলে আর দেখা যাবে না। নতুন Key জেনারেট করতে হবে।

Key Management

অ্যাকশন বিবরণ
Active Key সক্রিয় — script এ ব্যবহার করা যাবে
Revoked Key বাতিল — script এ আর কাজ করবে না, তবে রেকর্ড থাকবে
🚫 Revoke একটি Key নিষ্ক্রিয় করুন (আবার সক্রিয় করা যায় না)
🗑️ Delete Key স্থায়ীভাবে মুছে ফেলুন
💡 নিরাপত্তা: Key গুলো SHA-256 হ্যাশ করে সংরক্ষণ করা হয়। কেউ ডাটাবেস দেখলেও আসল Key জানতে পারবে না।

🐍 Python Script — quiz_drafter.py

এই script দিয়ে JSON ফাইল থেকে একাধিক Draft কুইজ স্বয়ংক্রিয়ভাবে তৈরি করা যায়।

প্রয়োজনীয়তা

pip install requests

ফাইলের অবস্থান

SelfQuiz Website/ ├── tools/ │ ├── quiz_drafter.py ← মূল script │ └── sample_quiz.json ← নমুনা JSON

ব্যবহার

JSON ফাইল থেকে কুইজ তৈরি:

python quiz_drafter.py --key sqk_YourKeyHere --file quizzes.json

Interactive mode (JSON পেস্ট করুন):

python quiz_drafter.py --key sqk_YourKeyHere --interactive

Dry Run (তৈরি না করে শুধু যাচাই):

python quiz_drafter.py --key sqk_YourKeyHere --file quizzes.json --dry-run
💡 টিপ: প্রথমবার --dry-run দিয়ে চালান। এটি JSON ভ্যালিডেশন করবে কিন্তু কোনো কুইজ তৈরি করবে না।

Script কীভাবে কাজ করে?

  1. Firebase Anonymous Auth দিয়ে সাইন ইন করে
  2. আপনার API Key ভ্যালিডেট করে (Firestore এ হ্যাশ চেক)
  3. Usage count আপডেট করে
  4. প্রতিটি কুইজ Firestore REST API দিয়ে তৈরি করে
  5. সবসময় Draft হিসেবে তৈরি হয় — কখনো auto-publish হয় না
⚠️ সব কুইজ Draft হিসেবে তৈরি হয়। Admin Panel এ গিয়ে রিভিউ করে Publish করতে হবে।

📋 Quiz JSON Format

Python script বা JSON Editor এ এই ফরম্যাট ব্যবহার করুন:

একক কুইজ

{ "title": "কুইজের শিরোনাম", "classId": "hsc2026", "subject": "Physics 1st Paper", "chapter": "Chapter 2: Vector", "topic": "", "subtopic": "", "timerSeconds": 30, "questions": [ { "question": "প্রশ্নের টেক্সট (supports $LaTeX$)", "options": ["অপশন ক", "অপশন খ", "অপশন গ", "অপশন ঘ"], "correct": 0, "explanation": "সঠিক উত্তরের ব্যাখ্যা", "difficulty": "medium", "referenceTags": ["বোর্ড-২০২৩"] } ] }

একাধিক কুইজ (Array)

[ { "title": "Quiz 1", ... }, { "title": "Quiz 2", ... } ]

ফিল্ড রেফারেন্স

ফিল্ড টাইপ প্রয়োজনীয় বিবরণ
title string ✅ হ্যাঁ কুইজের শিরোনাম
classId string ✅ হ্যাঁ ক্লাস ID (Admin Panel এ দেখুন)
subject string ⚡ প্রস্তাবিত বিষয়ের নাম (Layout অনুযায়ী)
chapter string ⚡ প্রস্তাবিত অধ্যায়ের নাম
topic string ❌ ঐচ্ছিক টপিক
timerSeconds number ❌ ঐচ্ছিক প্রতি প্রশ্নে সময় (সেকেন্ড), ডিফল্ট: 30
questions array ✅ হ্যাঁ প্রশ্নের তালিকা
correct number ✅ হ্যাঁ সঠিক অপশনের ইনডেক্স (0=ক, 1=খ, 2=গ, 3=ঘ)
difficulty string ⚡ প্রস্তাবিত easy, medium, বা hard
referenceTags array ❌ ঐচ্ছিক রেফারেন্স ট্যাগের তালিকা

🤖 AI Prompt Template

ChatGPT, Gemini বা অন্য AI এ নিচের prompt দিন। AI আপনার জন্য সম্পূর্ণ quiz JSON তৈরি করে দেবে!

Generate a JSON array of MCQ quiz objects for [YOUR TOPIC]. Each quiz object should follow this exact schema: { "title": "Quiz Title", "classId": "[YOUR_CLASS_ID]", "subject": "[SUBJECT_NAME]", "chapter": "[CHAPTER_NAME]", "topic": "", "subtopic": "", "timerSeconds": 30, "questions": [ { "question": "Question text (supports $LaTeX$)", "options": ["Option A", "Option B", "Option C", "Option D"], "correct": 0, "explanation": "Why this answer is correct", "difficulty": "easy|medium|hard", "referenceTags": ["tag1"] } ] } Rules: - correct is 0-indexed (0=A, 1=B, 2=C, 3=D) - difficulty must be exactly: easy, medium, or hard - Each quiz should have 10-20 questions - Include explanations for each question - Use LaTeX for math: $\vec{F} = m\vec{a}$ - Output ONLY valid JSON, no markdown or extra text Generate [NUMBER] quizzes with [NUMBER] questions each about [TOPIC].

ব্যবহারের ধাপ

  1. উপরের prompt কপি করুন এবং [YOUR TOPIC], [YOUR_CLASS_ID] ইত্যাদি পরিবর্তন করুন
  2. ChatGPT / Gemini এ পেস্ট করুন
  3. AI এর output JSON কে একটি .json ফাইলে সেভ করুন
  4. Python script দিয়ে ড্রাফট তৈরি করুন:
    python quiz_drafter.py --key YOUR_KEY --file ai_output.json --dry-run python quiz_drafter.py --key YOUR_KEY --file ai_output.json
  5. Admin Panel এ গিয়ে Draft কুইজগুলো রিভিউ করে Publish করুন

🔒 Security

API Key নিরাপত্তা

Safety Features

🚨 সতর্কতা: আপনার API Key যদি লিক হয়ে যায়, সাথে সাথে Admin Panel থেকে Revoke করুন এবং নতুন Key তৈরি করুন।

🛠️ Troubleshooting

সমস্যা সমাধান
❌ Invalid API key Key সঠিক কিনা চেক করুন। নতুন Key জেনারেট করুন।
❌ API key revoked এই Key বাতিল করা হয়েছে। নতুন Key তৈরি করুন।
❌ Invalid JSON --dry-run দিয়ে JSON ভ্যালিডেট করুন। AI output এ কখনো কখনো markdown থাকে — শুধু JSON অংশ রাখুন।
❌ Anonymous auth failed ইন্টারনেট সংযোগ চেক করুন। Firebase project সক্রিয় কিনা নিশ্চিত করুন।
Preview কাজ করছে না Builder এ কমপক্ষে ১টি প্রশ্ন থাকতে হবে। Pop-up blocker বন্ধ করুন।
Draft কুইজ দেখা যাচ্ছে না Admin Panel → Quizzes এ সঠিক ক্লাস নির্বাচন করুন। কুইজের classId সঠিক কিনা চেক করুন।
pip install requests কাজ করছে না Python 3 ইনস্টল আছে কিনা চেক করুন: python --version