From 6a6d0200d203bcc08efa4665c54a174e6d9876cf Mon Sep 17 00:00:00 2001 From: Zareian Date: Tue, 22 Sep 2026 03:49:32 +0330 Subject: [PATCH] complete the quiz path for grades 8 through 12, and close three gaps in the API contract MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content ------- Every node in grades 8, 9, 10, 11 and 12 now holds a full four-question quiz — 121 more questions, filling the two حسابان دوازدهم nodes in فصل ۵: کاربردهای مشتق that were empty and the two ریاضی هشتم nodes that were short. The repo's own seed guard was already failing on those two empty nodes; it passes now. Grades 3, 6 and 7 are the other team's books and were left alone. 39 of their 145 nodes still hold fewer than four questions, but none is empty, so every node on the map still plays. An audit over all 1,593 questions in grades 8–12 found no structural fault: no question with the wrong number of options, no question with zero or two correct answers, no empty or duplicated option, no leftover LaTeX, and no two identical questions inside one lesson. Contract -------- Three endpoints were missing or malformed in the OpenAPI schema, which matters more than it looks: that schema is the contract the frontend generates its client from, so a view missing there is a view the other repo cannot call. - NotificationMarkReadView was dropped from the schema entirely, because spectacular could not guess a request body for its PATCH and gives up on the whole view rather than the one field. It declares request=None. - PaymentRedirectView was dropped for the same reason; it answers with a 302 and no JSON body, which it now says. - /api/health and /api/health/ collided on operationId and were emitted as health_retrieve and health_retrieve_2. The slash variant exists only for a monitor that calls it that way, so it is excluded from the schema. `spectacular` now runs clean — no errors, no warnings. Tidying ------- Condensed the two longest comment blocks (18 and 14 lines) in rag_verify_solutions and settings, keeping the measurement and the rule and dropping the retelling. README gains the bulk question-authoring workflow; the playbook's subagent section now points at the real tool instead of describing the steps by hand. 458 tests pass. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 16 +- README.md | 22 + config/settings.py | 16 +- config/urls.py | 7 +- content/seed/questions.json | 2057 +++++++++++++++++ docs/extraction-playbook.md | 28 +- notifications/views.py | 6 +- payment/views.py | 5 + .../commands/rag_verify_solutions.py | 24 +- 9 files changed, 2140 insertions(+), 41 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4d18433..7f26625 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -170,8 +170,8 @@ actually connected without asking a human. ## Content: where it lives and how it gets to a server `content/seed/` holds the whole curriculum and question bank as committed JSON — -`curriculum.json` (6 grades, 48 units, 230 nodes, 1,928 lessons) and `questions.json` -(1,441 multiple-choice questions). `deploy.sh` runs `seed_content` on every release, so a +`curriculum.json` (8 grades, 58 units, 263 nodes, 2,617 lessons) and `questions.json` +(2,463 multiple-choice questions). `deploy.sh` runs `seed_content` on every release, so a fresh server fills itself with one command: **no Qdrant, no AI credit, no SSH session.** `seed_content` is idempotent and never deletes. Questions bind to lessons **by title path** @@ -243,7 +243,9 @@ reliably pull the final answer out of a solution and produced ~40% broken output - Throttle rates need periodic review against real traffic. - `DEV_MASTER_OTP` (`0000`) must stay gated behind `DEBUG` — never enabled in prod. - No video content exists yet, though `Lesson.kind`/`video_url` can express it. -- 58 of 230 nodes still hold fewer than four questions; their verified chunks ran out. +- Grades 8–12 are fully covered: every node holds a four-question quiz. 39 of the 145 + nodes in grades 3/6/7 (the other team's books) still hold fewer than four; none is + empty, so every node still plays. - Kavenegar is unconfigured, so `POST /api/auth/otp/request` returns 503. With `DEBUG=0` there is no way to log into the API without creating an `OTPCode` row in the admin (`/admin/accounts/otpcode/add/`) — this is how to hand a tester a working login. @@ -404,11 +406,7 @@ branch, no rendering anywhere. Do not build content for it without asking first. کاربر تصمیمِ محصولی را گرفت و هر دو پایه ساخته شدند. `seed_curriculum_from_textbook` اسکلت را رایگان ساخت — یازدهم ۵ فصل/۲۱ نود/۳۶۹ درس، دوازدهم ۵ فصل/۱۲ نود/۳۲۰ درس — و سوال‌ها با subagentهای Sonnet نوشته شدند: **۵۵۹ سوال** (یازدهم ۳۲۲، دوازدهم ۲۳۷). -هر ۲۱ نودِ یازدهم آزمونِ کاملِ چهارسوالی دارند؛ از دوازدهم ۱۰ نود از ۱۲. - -⚠️ **دو نودِ باقی‌مانده، هر دو در «فصل ۵: کاربردهای مشتق»** («جهت تقعر نمودار…» و -«رسم نمودار تابع»): سوال ندارند چون سقفِ هفتگیِ Sonnet وسطِ کار پر شد، نه چون داده کم -است. جفت‌هایشان آماده‌اند — دو دسته‌ی آخرِ همان اجرای `--export`. +هر ۳۳ نودِ هر دو پایه آزمونِ کاملِ چهارسوالی دارند. `GRADE_STYLE` حالا برای یازدهم/دوازدهم رنگ دارد (فیروزه‌ای و نیلی، عمداً جدا از شش پایه‌ی عمومی چون حسابان فقط کتابِ رشته‌ی ریاضی‌فیزیک است). @@ -420,7 +418,7 @@ branch, no rendering anywhere. Do not build content for it without asking first. عینِ همان PROMPTی که به مدلِ پولی می‌رفت می‌نویسد، تا کیفیتِ دو شاخه از هم جدا نیفتد. خروجیِ subagent با `content.question_io` وارد می‌شود (فایلِ بد هیچ‌چیز نمی‌نویسد). -بازده روی ۶۳۰ ورودی: **۵۵۹ سوال، ۸۹٪** — بقیه عمداً رد شدند، بیشترشان مسئله‌هایی که +بازده روی ۷۷۸ ورودی: **۶۸۰ سوال، ۸۷٪** — بقیه عمداً رد شدند، بیشترشان مسئله‌هایی که بدونِ شکلِ کتاب خودکفا نمی‌شوند. چند subagent خطایِ حسابِ خودِ کتاب را هم گرفتند (راه‌حلی که √ را ۶ نوشته بود ولی ۶٫۵ بود؛ راه‌حلی که می‌گفت حد وجود ندارد درحالی‌که داشت) — یعنی `solution_verdict='agrees'` تضمینِ کامل نیست، فقط فیلترِ اول است. diff --git a/README.md b/README.md index ec2db41..7a2d84e 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,28 @@ curl https:///api/health - **برنامه‌ی درسی:** چیزی پاک نمی‌شود. هر چه در فایل هست ساخته/به‌روز می‌شود و هر چه نیست دست‌نخورده می‌ماند، پس یک فایلِ ناقص محتوای سرور را از بین نمی‌برد. +### ساختِ انبوهِ سوال از کتاب + +وقتی کتابی تازه روی Qdrant آمده و باید برایش سوال ساخته شود، مسیرِ رایگان این است: + +```bash +# اسکلتِ برنامه‌ی درسی از فهرستِ خودِ کتاب (بدونِ هزینه) +python manage.py seed_curriculum_from_textbook --subject ریاضی --grade نهم --dry-run +python manage.py seed_curriculum_from_textbook --subject ریاضی --grade نهم + +# جفت‌های (درس، مسئله‌ی تأییدشده) را برای سوال‌نویسی بیرون بده (بدونِ هزینه) +python manage.py generate_questions_from_chunks --subject ریاضی --grade نهم --export /tmp/batches +``` + +خروجی چند فایلِ JSON است به‌علاوه‌ی یک `*-RULES.txt` که قواعدِ ساختِ سوال را +دارد. سوال‌ها را با آن قواعد بنویسید و از «وارد کردنِ فله‌ای سوال» در جدولِ +بالا واردشان کنید. همان فرمان بدونِ `--export` کار را به مدلِ پولی می‌سپارد، +ولی گران‌تر است و کیفیتِ بهتری نمی‌دهد. جزئیات و هزینه‌های اندازه‌گیری‌شده در +`docs/extraction-playbook.md`. + +`--dry-run` روی هر دو فرمان کار می‌کند و پیش از هر نوشتنی نشان می‌دهد چه ساخته +خواهد شد. + ### داده‌ی تستی روی سرور `seed_test_data` فقط برای محیطِ لوکال است و **نباید** روی سروری که کاربرِ واقعی diff --git a/config/settings.py b/config/settings.py index 153dfcf..2bfa837 100644 --- a/config/settings.py +++ b/config/settings.py @@ -537,17 +537,13 @@ BAZAAR_API_BASE = os.environ.get('BAZAAR_API_BASE', 'https://pardakht.cafebazaar # ----------------------------------------------------------------------- # Zarinpal (درگاهِ اصلیِ پرداختِ ما — Payment API v4) # ----------------------------------------------------------------------- -# آدرسِ عمومیِ خودِ بک‌اند؛ هم برای ساختنِ paymentUrlی که به کلاینت برمی‌گردد -# (PaymentRedirectView) و هم برای callback_url که به زرین‌پال می‌فرستیم لازم -# است. +# آدرسِ عمومیِ بک‌اند: هم paymentUrlی که به کلاینت برمی‌گردد از آن ساخته +# می‌شود، هم callback_urlی که به زرین‌پال می‌رود. # -# چرا پیش‌فرض دارد: خالی بودنش سرویس را نمی‌خواباند، فقط مسیرِ پرداخت را -# بی‌سروصدا می‌شکند — paymentUrl نسبی می‌شود و زرین‌پال callback خالی -# می‌گیرد. این دقیقاً همان دسته خطاست که فقط موقعِ اولین پرداختِ واقعی معلوم -# می‌شود. دامنه‌ی خودمان از قبل معلوم است، پس حدس زدنی نیست. -# .strip() اول لازم است: کلید در .env سرور وجود دارد ولی خالی است، و -# os.environ.get فقط وقتی کلید *نباشد* پیش‌فرض می‌دهد — مقدارِ خالی آن را -# خنثی می‌کرد و مسیرِ پرداخت باز هم بی‌صدا می‌شکست. +# پیش‌فرض دارد چون خالی بودنش سرویس را نمی‌خواباند، فقط مسیرِ پرداخت را +# بی‌صدا می‌شکند و تا اولین پرداختِ واقعی معلوم نمی‌شود. `.strip() or` هم +# لازم است: کلید در .env سرور هست ولی خالی، و os.environ.get فقط وقتی کلید +# *نباشد* پیش‌فرض می‌دهد. PUBLIC_BASE_URL = ( os.environ.get('PUBLIC_BASE_URL', '').strip() or 'https://api.math.tadrisino2.ir' ).rstrip('/') diff --git a/config/urls.py b/config/urls.py index 227965d..6814d8e 100644 --- a/config/urls.py +++ b/config/urls.py @@ -10,6 +10,8 @@ from django.contrib import admin from django.http import JsonResponse from django.urls import include, path from django.views import defaults as django_default_views +from drf_spectacular.utils import extend_schema + from config.health import HealthView from drf_spectacular.views import ( SpectacularAPIView, @@ -50,7 +52,10 @@ urlpatterns = [ # هر `git pull` بعدی روی همین فایل گیر می‌کرد. یک مسیرِ اضافه ارزانش # است در برابرِ یک فایلِ دست‌کاری‌شده روی پروداکشن. path('api/health', HealthView.as_view(), name='health'), - path('api/health/', HealthView.as_view(), name='health-slash'), + # همان ویو، فقط برای پایشی که با اسلش صدا می‌زند. از اسکیما بیرون است تا دو + # مسیرِ یکسان operationIdهای health_retrieve و health_retrieve_2 نسازند. + path('api/health/', extend_schema(exclude=True)(HealthView).as_view(), + name='health-slash'), # OpenAPI schema + Swagger UI + Redoc path('api/schema/', SpectacularAPIView.as_view(), name='schema'), diff --git a/content/seed/questions.json b/content/seed/questions.json index 51ea8cd..3301411 100644 --- a/content/seed/questions.json +++ b/content/seed/questions.json @@ -39813,6 +39813,2063 @@ "۱" ], "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۲: مثلثات", + "تناوب و تانژانت", + "تشخیص ضریب و دوره تناوب توابع سینوسی و کسینوسی" + ], + "prompt": "دوره‌ی تناوب تابع f(x) = sin x چند است؟", + "type": "multiple_choice", + "choices": [ + "۲π", + "π", + "۴π", + "(π)/(۲)" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۲: مثلثات", + "تناوب و تانژانت", + "مقایسه مقادیر سینوس و تانژانت در بازه‌های مختلف" + ], + "prompt": "دامنه (بیشینه‌ی نوسان) و دوره‌ی تناوب تابع y = (۱)/(۲) sin x در بازه‌ی [-π,π] کدام است؟", + "type": "multiple_choice", + "choices": [ + "دامنه ۲ و دوره ۲π", + "دامنه ۰.۵ و دوره ۲π", + "دامنه ۰.۵ و دوره π", + "دامنه ۱ و دوره ۲π" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۲: مثلثات", + "معادله‌های مثلثاتی", + "رابطه بین زاویه دید و فاصله افقی در مثلثات" + ], + "prompt": "دوربینی در فاصله‌ی افقی x از دیوار قرار دارد. لبه‌ی پایین پنجره در ارتفاع ۰.۵ متر و لبه‌ی بالای آن در ارتفاع ۲.۵ متر (نسبت به ارتفاع دوربین) است. اگر β زاویه‌ی دید بین دو لبه‌ی پنجره باشد و x=۱ متر، مقدار tan β کدام است؟", + "type": "multiple_choice", + "choices": [ + "۲", + "-۱۲", + "(۸)/(۹)", + "(۹)/(۸)" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۲: مثلثات", + "معادله‌های مثلثاتی", + "محاسبه تعداد مثلث‌های ممکن با شرایط داده شده" + ], + "prompt": "معادله‌ی sin x = ۰ را حل کنید. پاسخِ کلیِ آن کدام است؟", + "type": "multiple_choice", + "choices": [ + "x = ۲kπ", + "x = (kπ)/(۲)", + "x = (π)/(۲) + kπ", + "x = kπ" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۳: حدهای نامتناهی ـ حد در بی‌نهایت", + "حدهای نامتناهی", + "محاسبه مجانب قائم تابع" + ], + "prompt": "مقدارِ lim(x→۰⁺) (۱)/(x) کدام است؟", + "type": "multiple_choice", + "choices": [ + "+∞", + "-∞", + "۰", + "۱" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۳: حدهای نامتناهی ـ حد در بی‌نهایت", + "حدهای نامتناهی", + "رسم نمودار توابع با مجانب قائم" + ], + "prompt": "جدولی رفتار تابع f را نشان می‌دهد: به‌ازای x = ۰.۱، ۰.۰۱، ۰.۰۰۱ و ۰.۰۰۰۱، مقدار f(x) به ترتیب ۱۰، ۱۰۰، ۱۰۰۰ و ۱۰۰۰۰ است. حدِ تابع f وقتی x از سمتِ مثبت به صفر میل می‌کند کدام است؟", + "type": "multiple_choice", + "choices": [ + "-∞", + "+∞", + "۰", + "۱۰۰۰۰" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۳: حدهای نامتناهی ـ حد در بی‌نهایت", + "حدهای نامتناهی", + "تحلیل و تشخیص نمودار تابع با توجه به مجانب قائم" + ], + "prompt": "برای تابع f(x) = x/(x³ - x + ۱)، آیا نمودار تابع در x=۱ مجانب قائم دارد؟", + "type": "multiple_choice", + "choices": [ + "بله، چون مخرج در x=۱ صفر می‌شود", + "بله، چون صورت کسر در x=۱ صفر است", + "خیر، چون مخرج در x=۱ صفر نمی‌شود", + "نمی‌توان بدون رسمِ نمودار تعیین کرد" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۳: حدهای نامتناهی ـ حد در بی‌نهایت", + "حد در بی‌نهایت", + "حد جمع و ضرب توابع با حدهای نامتناهی" + ], + "prompt": "برای تابع f(x) = (۱)/(x) در بازه‌ی (۰,+∞)، x را باید حداقل بزرگ‌تر از چه عددی بگیریم تا فاصله‌ی f(x) از محورِ x‌ها کمتر از (۱)/(۵) شود؟", + "type": "multiple_choice", + "choices": [ + "(۱)/(۵)", + "۱۰", + "۲۵", + "۵" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آشنایی با مفهوم مشتق", + "محاسبه شیب خط" + ], + "prompt": "خطی از نقطه‌ی (-۵,-۲) تا نقطه‌ی (۵,۲) می‌گذرد. شیبِ این خط را بیابید.", + "type": "multiple_choice", + "choices": [ + "(۲)/(۵)", + "(۵)/(۲)", + "-(۲)/(۵)", + "۲" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آشنایی با مفهوم مشتق", + "مرتب‌سازی شیب‌ها از کوچک‌ترین به بزرگ‌ترین" + ], + "prompt": "تابع f(x) = -x² + ۱۰ داده شده است. اگر A(۲,f(۲)) و B(۶,f(۶))، شیبِ خطِ AB (یعنی m_AB) چند است؟", + "type": "multiple_choice", + "choices": [ + "۸", + "-۸", + "-۳۲", + "-۲" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آشنایی با مفهوم مشتق", + "تعیین مقادیر مشتق در نقاط مشخص نمودار" + ], + "prompt": "تابع f(x) = -x² + ۱۰x را در نظر بگیرید. نقاطِ A و B روی نمودار به‌ازای x_A=۲ و x_B=۶ قرار دارند. شیبِ خطِ AB چند است؟", + "type": "multiple_choice", + "choices": [ + "۸", + "(۱)/(۲)", + "۲", + "-۲" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آشنایی با مفهوم مشتق", + "تشخیص ویژگی‌های نقاط روی نمودار تابع" + ], + "prompt": "مقدارِ lim(h→۰⁺) (f(۲+h)-f(۲))/h را برای f(x) = -x² + ۱۰x - ۱۶ بیابید.", + "type": "multiple_choice", + "choices": [ + "-۶", + "۱۰", + "۲", + "۶" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آشنایی با مفهوم مشتق", + "تحلیل شیب منحنی در نقاط مختلف" + ], + "prompt": "شیبِ خطِ مماس بر منحنیِ تابع f در نقطه‌ی A(a,f(a)) برابرِ کدام عبارت است؟", + "type": "multiple_choice", + "choices": [ + "lim(h→۰) (f(a+h)-f(a))/h", + "lim(h→۰) (f(a+h)+f(a))/h", + "lim(h→۰) (f(a)-f(a+h))/h", + "(f(a+h)-f(a))/h" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آشنایی با مفهوم مشتق", + "یافتن مختصات نقاط روی نمودار با استفاده از مشتق و مقدار تابع" + ], + "prompt": "معادله‌ی خطِ مماس بر منحنیِ f(x) = -x³ + ۱۰x + ۱ در نقطه‌ی A(۲,f(۲)) کدام است؟", + "type": "multiple_choice", + "choices": [ + "y = -۲x + ۱۳", + "y = -۲x + ۱۷", + "y = ۲x + ۱۷", + "y = -۱۲x + ۳۷" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آهنگ متوسط تغییر و آهنگ لحظه‌ای تغییر", + "محاسبه آهنگ متوسط تغییر یک کمیت با استفاده از نمودار" + ], + "prompt": "میانگینِ تعدادِ فرزندانِ هر مادر در سالِ ۱۳۶۴ حدودِ ۶.۵ و در سالِ ۱۳۷۹ حدودِ ۳.۵ بوده است. آهنگِ متوسطِ تغییرِ باروری در این بازه چند است؟", + "type": "multiple_choice", + "choices": [ + "۰.۲", + "-۳", + "-۰.۲", + "-۵" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۴: مشتق", + "آهنگ متوسط تغییر و آهنگ لحظه‌ای تغییر", + "محاسبه تغییر متوسط و تغییر لحظه‌ای حجم مایع با استفاده از تابع حجم" + ], + "prompt": "اتومبیلی مسافتِ ۲۸۰ کیلومتر را در ۴ ساعت طی می‌کند. سرعتِ متوسطِ آن چند کیلومتر بر ساعت است؟", + "type": "multiple_choice", + "choices": [ + "۶۰", + "۸۰", + "۱۱۲۰", + "۷۰" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تحلیل رفتار تابع با استفاده از مشتق اول" + ], + "prompt": "اگر سرعتِ لحظه‌ایِ یک اتومبیل برابرِ مشتقِ اولِ تابعِ مکان s(t) باشد، نقاطِ سرعتِ صفر با کدام شرط مشخص می‌شوند؟", + "type": "multiple_choice", + "choices": [ + "s'(t) = ۰", + "s''(t) = ۰", + "s(t) = ۰", + "s'(t) تعریف نشده باشد" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تعیین جهت تقعر و نقاط عطف با مشتق دوم" + ], + "prompt": "نقاطِ عطفِ نمودارِ مکان-زمان (تغییرِ جهتِ تقعر) با کدام شرط مشخص می‌شوند؟", + "type": "multiple_choice", + "choices": [ + "s'(t) = ۰", + "s''(t)=۰ و تغییرِ علامتِ آن", + "s(t) = ۰", + "s''(t) همواره مثبت باشد" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تشخیص نقاط ماکزیمم و مینیمم نسبی و مطلق از نمودار" + ], + "prompt": "طبق تعریف، اگر f یک تابع باشد و I یک همسایگی بازِ نقطه‌ی c باشد و برای هر x∈I داشته باشیم f(x) ≤ f(c)، آنگاه f(c) را چه می‌نامند؟", + "type": "multiple_choice", + "choices": [ + "ماکزیمم نسبی", + "مینیمم نسبی", + "نقطه عطف", + "مشتق صفر" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تحلیل نقاطی که مشتق وجود دارد یا ندارد و اکسترمم نسبی" + ], + "prompt": "مقدار مینیمم نسبی (کمینه‌ی نسبی) تابع y = x⁴ − ۴x² چند است؟", + "type": "multiple_choice", + "choices": [ + "۰", + "−۴", + "−۸", + "۴" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "یافتن نقاط بحرانی و ماکزیمم مطلق تابع" + ], + "prompt": "برای تابع f(x) = x⁴ روی مجموعه‌ی اعداد حقیقی R، کدام گزینه درست است؟", + "type": "multiple_choice", + "choices": [ + "بیشینه ۰، بدون کمینه", + "بدون بیشینه و کمینه", + "کمینه ۰، بدون بیشینه", + "کمینه و بیشینه هر دو دارد" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تعیین بازه‌های مثبت و منفی بودن مشتق تابع" + ], + "prompt": "مقدار ماکزیمم مطلق تابع f(x) = (۱)/(۳) x³ − x در بازه‌ی [−۲, ۲] چند است؟", + "type": "multiple_choice", + "choices": [ + "−(۲)/(۳)", + "۲", + "−۲", + "(۲)/(۳)" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تعیین بازه‌های صعودی، نزولی و ثابت بودن تابع با استفاده از مشتق" + ], + "prompt": "مقدار ماکزیمم مطلق تابع f(x) = |x² − ۱| در بازه‌ی [−۲, ۲] چند است؟", + "type": "multiple_choice", + "choices": [ + "۳", + "۱", + "۰", + "۴" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تشخیص نقاط بحرانی و نقاط ماکزیمم و مینیمم نسبی" + ], + "prompt": "کره‌ای به شعاع R داریم و استوانه‌ای با شعاع قاعده‌ی r و ارتفاعِ h داخلِ آن محاط شده، به‌طوری که r² + (h/۲)² = R² است. برای بیشینه شدن حجم استوانه، مقدار h باید چند باشد؟", + "type": "multiple_choice", + "choices": [ + "h = R/√۲", + "h = (۲R)/(√۳)", + "h = R√۳", + "h = (۲R)/۳" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "رسم نمودار تابع پیوسته با ماکزیمم و مینیمم مطلق" + ], + "prompt": "تابع f(x) = ۱/x را در نظر بگیرید. آیا این تابع در تمام دامنه‌ی خود (یعنی R − {۰}) اکیداً نزولی است؟", + "type": "multiple_choice", + "choices": [ + "بله، در همه‌جا نزولی است", + "بله، چون کاهشی به‌نظر می‌رسد", + "خیر، دو بازه به‌هم مرتبط نیست", + "خیر، مشتق مثبت است" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "بررسی صعودی بودن تابع‌های چندجمله‌ای و تابع‌های بخش‌بندی شده" + ], + "prompt": "تابع f(x) به‌صورت f(x)=x² برای x≥۱ و f(x)=x برای x<۱ تعریف شده و در تمامِ R صعودی است، ولی در x=۱ مشتق‌پذیر نیست. این مثال کدام گزینه را نشان می‌دهد؟", + "type": "multiple_choice", + "choices": [ + "هر تابع صعودی مشتق‌پذیر است", + "صعودی و مشتق‌پذیر یعنی مشتق مثبت است", + "مشتق‌پذیر بودن یعنی صعودی بودن", + "می‌تواند صعودی و غیرمشتق‌پذیر باشد" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "رسم نمودار تابع با ماکزیمم مطلق و بدون ماکزیمم مطلق" + ], + "prompt": "برگ کاغذِ مستطیلی با اضلاع x و y داریم که xy = ۱۰۰ سانتی‌مترمربع است. با بریدنِ چهار مربع به ضلعِ h=۲ سانتی‌متر از گوشه‌ها و تازدنِ اضلاع، یک جعبه ساخته می‌شود. برای بیشینه شدنِ حجمِ جعبه، مقدارِ x چند سانتی‌متر باید باشد؟", + "type": "multiple_choice", + "choices": [ + "۱۰", + "۵", + "۸", + "۲۰" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "یافتن نقاط اکسترمم نسبی و مطلق توابع داده شده در بازه‌ها" + ], + "prompt": "مستطیلی در یک نیم‌دایره به شعاعِ ۴ سانتی‌متر محاط شده است (قاعده‌ی مستطیل روی قطرِ نیم‌دایره قرار دارد). بیشینه‌ی مساحتِ این مستطیل چند سانتی‌متر مربع است؟", + "type": "multiple_choice", + "choices": [ + "۸", + "۱۶", + "۳۲", + "۴" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "یافتن ضرایب تابع برای داشتن مینیمم نسبی در نقطه مشخص" + ], + "prompt": "تابعِ f(x) = x³ + ax + b در نقطه‌ی (۱, ۲) مینیمم نسبی دارد. مقدارِ a چند است؟", + "type": "multiple_choice", + "choices": [ + "۳", + "۱", + "−۳", + "−۱" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "رسم نمودار تابع با اکسترمم نسبی و پیوستگی در بازه" + ], + "prompt": "تابعِ f(x) = x³ + ax + b در نقطه‌ی (۱, ۲) مینیمم نسبی دارد. مقدارِ b چند است؟", + "type": "multiple_choice", + "choices": [ + "۶", + "۲", + "−۴", + "۴" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "رسم نمودار تابع با شرایط داده شده و تعیین ماکزیمم نسبی" + ], + "prompt": "تابع f(x) = x/(x − ۲) در کدام بازه(ها) نزولی است؟", + "type": "multiple_choice", + "choices": [ + "(−∞, ۲) و (۲, +∞)", + "(۰, +∞)", + "(−∞, ۰)", + "در هیچ بازه‌ای نزولی نیست" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "تعیین بازه‌های صعود و نزول توابع چندجمله‌ای و کسری" + ], + "prompt": "تابع f(x) = x/(x − ۲) در کدام نقطه تعریف نشده و مشتق ندارد؟", + "type": "multiple_choice", + "choices": [ + "x = ۰", + "x = ۲", + "x = ۱", + "x = −۲" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "بهینه‌سازی حجم مکعب ساخته شده از کاغذ مستطیل با ابعاد متغیر" + ], + "prompt": "برگ کاغذِ مستطیلی با اضلاع x و y داریم که xy = ۱۰۰ سانتی‌مترمربع است. با بریدنِ چهار مربع به ضلعِ h=۲ سانتی‌متر از گوشه‌ها و تازدنِ اضلاع، یک جعبه ساخته می‌شود. بیشینه‌ی حجمِ این جعبه چند سانتی‌متر مکعب است؟", + "type": "multiple_choice", + "choices": [ + "۴۸", + "۱۰۰", + "۷۲", + "۶۴" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "بهینه‌سازی مساحت مستطیل محاط در نیم‌دایره با شعاع داده شده" + ], + "prompt": "مستطیلی در یک نیم‌دایره به شعاعِ ۴ سانتی‌متر محاط شده است. برای بیشینه شدنِ مساحت، طولِ ضلعِ روی قطرِ نیم‌دایره (x) چند سانتی‌متر است؟", + "type": "multiple_choice", + "choices": [ + "۴", + "۸", + "۲√۲", + "۴√۲" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "جهت تقعر نمودار یک تابع و نقطه عطف آن" + ], + "prompt": "برای تابعِ f(x) = x³، نقطه‌ی عطف در x=۰ است. جهتِ تقعرِ نمودار برای x<۰ چگونه است؟", + "type": "multiple_choice", + "choices": [ + "رو به پایین", + "رو به بالا", + "معلوم نیست", + "بدون تقعر" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تحلیل تغییرات شیب خطوط مماس و جهت تقعر منحنی‌ها" + ], + "prompt": "جهتِ تقعرِ نمودارِ تابعِ g(x)=√x در بازه‌ی (۰, +∞) چگونه است؟", + "type": "multiple_choice", + "choices": [ + "رو به بالا", + "رو به پایین", + "ثابت (بدون تقعر)", + "ابتدا بالا سپس پایین" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تعیین صعودی یا نزولی بودن تابع با استفاده از مشتق اول" + ], + "prompt": "تابعِ h(x) = x² را در بازه‌ی (۰, +∞) در نظر بگیرید. این تابع صعودی است یا نزولی؟", + "type": "multiple_choice", + "choices": [ + "نزولی", + "ثابت", + "صعودی", + "نه صعودی نه نزولی" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تعیین علامت مشتق اول و دوم و ارتباط آن با صعودی یا نزولی بودن و جهت تقعر تابع" + ], + "prompt": "اگر f′ در بازه‌ی I منفی باشد، تابعِ f در آن بازه چگونه است؟", + "type": "multiple_choice", + "choices": [ + "صعودی", + "ثابت", + "دارای اکسترمم نسبی", + "نزولی" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تعیین جهت تقعر نمودار تابع با استفاده از مشتق دوم" + ], + "prompt": "جهتِ تقعرِ نمودارِ تابعِ f(x) = ۱/x در بازه‌ی (۰, +∞) چگونه است؟", + "type": "multiple_choice", + "choices": [ + "رو به بالا", + "رو به پایین", + "بدون تقعرِ مشخص", + "در نقطه‌ی عطف است" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تحلیل تغییرات نمودار با استفاده از مشتق دوم" + ], + "prompt": "نقطه‌ی عطفِ تابعِ g(x) = x³ + ۳x² + ۱ در کجاست؟", + "type": "multiple_choice", + "choices": [ + "x = ۰", + "x = −۱", + "x = ۱", + "x = −۲" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "اکسترمم‌های یک تابع و توابع صعودی و نزولی", + "رسم نمودار تابع صعودی و نزولی در بازه‌های مشخص" + ], + "prompt": "تابعِ f در بازه‌ی (−۳, ۴) تعریف شده است. طبقِ جدولِ تغییرات: از x=−۳ (که f=−۲۷ است) تا x=−۲/۳ تابع صعودی است و به مقدارِ (۲۰۲)/(۲۷) می‌رسد؛ سپس تا x=۲ نزولی است و به مقدارِ −۲ می‌رسد؛ سپس تا x=۴ (که f=۲۲ است) صعودی است. مقدارِ ماکزیمم نسبیِ تابعِ f چند است؟", + "type": "multiple_choice", + "choices": [ + "−۲", + "۲۲", + "(۲۰۲)/(۲۷)", + "−۲۷" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "رسم نمودار تابع با شرایط مشتق دوم و مقادیر تابع" + ], + "prompt": "تابعِ y = f(x) در شرایطِ f(۰) = f(۱) = f(۲) = ۰ صدق می‌کند. در بازه‌ی (−∞، ۱) مشتقِ دومِ تابع منفی و در بازه‌ی (۱، +∞) مثبت است. نقطه‌ی عطفِ نمودار در کدام x است؟", + "type": "multiple_choice", + "choices": [ + "x = ۰", + "x = ۲", + "تابع نقطه‌ی عطف ندارد", + "x = ۱" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "یافتن نقطه عطف نمودار تابع" + ], + "prompt": "برایِ تابعِ f(x) = x³، مشتقِ دومِ تابع یعنی f''(x) کدام است؟", + "type": "multiple_choice", + "choices": [ + "۳x²", + "۶x²", + "۳x", + "۶x" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تشخیص و رسم نقاط عطف و خطوط مماس بر منحنی" + ], + "prompt": "کدام گزاره درباره‌ی نقطه‌ی عطف نادرست است؟", + "type": "multiple_choice", + "choices": [ + "هر تغییرِ f''، نقطه‌ی عطف است", + "در عطف، علامتِ f'' عوض می‌شود", + "تابع می‌تواند چند عطف داشته باشد", + "هر صفر شدنِ f''، نقطه‌ی عطف است" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تشخیص درست یا نادرست بودن گزاره‌های مربوط به نقاط عطف" + ], + "prompt": "کدام گزاره درباره‌ی نقطه‌ی عطف نادرست است؟", + "type": "multiple_choice", + "choices": [ + "تابعِ صعودیِ اکید عطف ندارد", + "عطف به تغییرِ تقعر مربوط است", + "تابع می‌تواند چند عطف داشته باشد", + "در عطف علامتِ f'' تغییر می‌کند" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تعیین جهت تقعر و نقاط عطف تابع" + ], + "prompt": "برایِ تابعِ f(x) = x³ − ۶x² + ۱۵، نقطه‌ی عطفِ نمودار در کدام x قرار دارد؟", + "type": "multiple_choice", + "choices": [ + "x = ۰", + "x = ۱", + "x = ۲", + "x = ۳" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تحلیل نمودار مشتق اول و تعیین نقاط عطف" + ], + "prompt": "برایِ تابعِ f(x) = ∛x، در بازه‌ی x > ۰ جهتِ تقعرِ نمودار چگونه است؟", + "type": "multiple_choice", + "choices": [ + "تقعر به پایین", + "تقعر به بالا", + "بدونِ تقعر (خطِ راست)", + "نمی‌توان تعیین کرد" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تحلیل تغییرات و نقاط عطف تابع با استفاده از مشتق دوم" + ], + "prompt": "برایِ تابعِ f(x) = ∛x، در بازه‌ی x < ۰ جهتِ تقعرِ نمودار چگونه است؟", + "type": "multiple_choice", + "choices": [ + "تقعر به پایین", + "بدونِ تقعر (خطِ راست)", + "تقعر به بالا", + "نمی‌توان تعیین کرد" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "جهت تقعر نمودار یک تابع و نقطه‌ی عطف آن", + "تشخیص نمودار تابع از نمودار مشتق" + ], + "prompt": "نمودارِ مشتقِ f' یک سهمیِ رو به بالاست با ریشه‌هایِ x = −۲ و x = ۲؛ بینِ این دو ریشه f' منفی و بیرونِ آن مثبت است. تابعِ f در x = −۲ چه اکسترممی دارد؟", + "type": "multiple_choice", + "choices": [ + "نقطه‌ی عطف", + "مینیمم موضعی", + "هیچ اکسترممی ندارد", + "ماکزیمم موضعی" + ], + "correct": 3 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "تحلیل رفتار تابع با استفاده از مشتق اول و دوم" + ], + "prompt": "تابعِ f در x = (−۶)/(۵) ماکزیمم، در x = (−۱)/(۳) عطف و در x = (۱)/(۲) مینیمم دارد. تابع در کدام بازه نزولی است؟", + "type": "multiple_choice", + "choices": [ + "از (−۶)/(۵) تا (۱)/(۲)", + "از −∞ تا (−۶)/(۵)", + "از (۱)/(۲) تا +∞", + "از (−۱)/(۳) تا (۱)/(۲)" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "رسم جدول رفتار و نمودار تابع چندجمله‌ای" + ], + "prompt": "برایِ تابعِ f(x) = (x − ۱)² (x + ۳)، مقدارِ f(۰) کدام است؟", + "type": "multiple_choice", + "choices": [ + "۱", + "۴", + "۳", + "۰" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "تحلیل نقاط بحرانی و نقاط عطف تابع" + ], + "prompt": "برایِ تابعِ f با f''(x) = ۶x + ۲، مقدارِ تابع در نقطه‌ی ماکزیمم x=(−۵)/(۳) برابرِ (۲۵۶)/(۲۷) است. مقدارِ تابع در نقطه‌ی عطف x=(−۱)/(۳) کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۲۵۶)/(۲۷)", + "(۱۲۸)/(۲۷)", + "۰", + "x = (−۱)/(۳)" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "تحلیل و رسم نمودار تابع هم‌گرافیک" + ], + "prompt": "برایِ تابعِ f(x) = (x + ۲)/(x − ۱)، مجانبِ افقیِ نمودار کدام است؟", + "type": "multiple_choice", + "choices": [ + "y = ۱", + "y = ۰", + "y = −۱", + "y = ۲" + ], + "correct": 0 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "رسم نمودار تابع با استفاده از جدول تغییرات" + ], + "prompt": "برایِ تابعِ f(x) = (۳x + ۴)/(−x + ۱)، مجانبِ افقیِ نمودار کدام است؟", + "type": "multiple_choice", + "choices": [ + "y = ۳", + "y = −۳", + "y = ۴", + "y = ۱" + ], + "correct": 1 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "تحلیل رفتار تابع با استفاده از مشتق دوم" + ], + "prompt": "تابعِ f در همه‌جا مشتق‌پذیر است. ریشه‌هایِ f' برابرِ x=(۱)/(۲) و x=(−۶)/(۵) هستند؛ بینِ این دو ریشه f' منفی و بیرونِ آن مثبت است. در x=(−۶)/(۵) تابعِ f چه اکسترممی دارد؟", + "type": "multiple_choice", + "choices": [ + "مینیمم موضعی", + "نقطه‌ی عطف", + "ماکزیمم موضعی", + "بدونِ اکسترمم" + ], + "correct": 2 + }, + { + "path": [ + "پایه دوازدهم", + "فصل ۵: کاربردهای مشتق", + "رسم نمودار تابع", + "رسم جدول و نمودار توابع" + ], + "prompt": "برایِ تابعِ f(x) = x³، نقطه‌یِ x = ۰ چه ویژگی‌ای دارد؟", + "type": "multiple_choice", + "choices": [ + "اکسترممِ موضعی است", + "نقطه‌ی عطف است، نه اکسترمم", + "نقطه‌ی ناپیوستگی است", + "مجانبِ قائم است" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "جمع بردارها", + "جمع بردارها" + ], + "prompt": "نقطه A با بردار انتقال a به نقطه B و سپس با بردار انتقال b به نقطه C منتقل می‌شود. بردار انتقال مستقیم A به C را c می‌نامیم. کدام رابطه بین c و a و b درست است؟", + "type": "multiple_choice", + "choices": [ + "c = a − b", + "c = a + b", + "c = b − a", + "c = ۲a + b" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "جمع بردارها", + "بردار صفر" + ], + "prompt": "امیر برای جمع بردارهای مساوی a و b، بردار b را از انتهای a رسم کرد و به نتیجه c رسید. رضا بردار a را از انتهای b رسم کرد و باز همان c به دست آمد. این نشان‌دهنده‌ی کدام خاصیت جمع بردارهاست؟", + "type": "multiple_choice", + "choices": [ + "خاصیت شرکت‌پذیری", + "خاصیت پخش‌پذیری", + "خاصیت جابجایی‌پذیری", + "خاصیت وارون‌پذیری" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "جمع بردارها", + "تعیین جهت حرکت" + ], + "prompt": "رباتی روی نقطه A با مختصات (۴, ۲) قرار دارد. ابتدا ۴ واحد به راست و سپس ۲ واحد به بالا حرکت می‌کند. مختصات نقطه‌ی جدید B کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۸, ۴)", + "(۶, ۴)", + "(۴, ۴)", + "(۸, ۰)" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "جمع بردارها", + "تعیین جهت حرکت" + ], + "prompt": "دانش‌آموزان جمع سه بردار a، b و c را به چند روش نوشتند: (a+b)+c ، (b+c)+a و c+b+a. همه‌ی این عبارت‌ها با هم برابرند. این تساوی نتیجه‌ی کدام خاصیت جمع بردارهاست؟", + "type": "multiple_choice", + "choices": [ + "خاصیت پخش‌پذیری", + "خاصیت خنثی‌پذیری", + "خاصیت وارون‌پذیری", + "خاصیت جابجایی و شرکت‌پذیری" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "جمع بردارها", + "حل معادلات برداری" + ], + "prompt": "روش سمانه برای جمع دو بردار: بردار a با مختصات (۲, ۲) و بردار b با مختصات (۴, ۰) را مؤلفه به مؤلفه جمع می‌کند. حاصل c = a + b کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۲, ۲)", + "(۶, ۲)", + "(۸, ۲)", + "(۶, ۰)" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "جمع بردارها", + "حل معادلات برداری" + ], + "prompt": "بردار a و بردار b قرینه‌ی یکدیگرند (یعنی a + b برابر بردار صفر است). حاصل جمع a + b + c با کدام گزینه برابر است؟", + "type": "multiple_choice", + "choices": [ + "بردار صفر", + "−c", + "بردار c", + "۲c" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "جمع بردارها" + ], + "prompt": "طبق راه‌حل‌های امیر و رضا برای جمع بردارهای مساوی a و b از نقاط شروع متفاوت، کدام رابطه‌ی زیر همواره درست است؟", + "type": "multiple_choice", + "choices": [ + "a + b = ۲a", + "a + b = a − b", + "a + b = ۲b", + "a + b = b + a" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "ترکیب بردارها" + ], + "prompt": "بردار حرکت یک خودرو را v می‌نامیم. اگر خودرو سه برابر همان مسافت را در جهت مخالف حرکت کند، بردار حرکت جدید بر حسب v کدام است؟", + "type": "multiple_choice", + "choices": [ + "−۳v", + "۳v", + "(۱)/(۳) v", + "−(۱)/(۳) v" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "ترکیب بردارها" + ], + "prompt": "بردار c به‌صورت c = ۲a − ۳b تعریف شده است. بردار −۳b نسبت به بردار b چه رابطه‌ای دارد؟", + "type": "multiple_choice", + "choices": [ + "هم‌جهت با b، اندازه ۳ برابر", + "مخالف جهت b، اندازه ۳ برابر", + "مخالف جهت b، اندازه (۱)/(۳)", + "هم‌جهت با b، اندازه (۱)/(۳)" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "رسم بردارها" + ], + "prompt": "بردارهای x و y بردارهای واحد در جهت محورهای افقی و عمودی‌اند. اگر z = ۳x + ۲y باشد، مختصات بردار z کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۲, ۳)", + "(۵, ۰)", + "(۳, ۲)", + "(۰, ۵)" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "رسم بردارها" + ], + "prompt": "اگر بردار c = ۳a + ۳b و بردار d = (−۲)a + ۳b باشد، حاصل c − d بر حسب a و b کدام است؟", + "type": "multiple_choice", + "choices": [ + "۵a", + "a", + "۵a + ۶b", + "−a" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "محاسبه حاصل ضرب بردارها" + ], + "prompt": "معادله‌ی برداری ۴x = [۱۲ ، −۸] را حل کنید. بردار x کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۳, ۲)", + "(۴۸, −۳۲)", + "(−۳, ۲)", + "(۳, −۲)" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "ضرب عدد در بردار", + "حل معادلات مختصات" + ], + "prompt": "بردار a = (۲, ۱) و بردار b = (−۲, ۳) داده شده‌اند. مختصات بردار c = a − ۲b کدام است؟", + "type": "multiple_choice", + "choices": [ + "(−۲, ۷)", + "(۶, −۵)", + "(۶, ۷)", + "(−۶, ۵)" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "حل معادلات برداری" + ], + "prompt": "بردار a = ۴i + ۲j است. مختصات بردار a کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۲, ۴)", + "(۴, −۲)", + "(۴, ۲)", + "(۶, ۰)" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "نوشتن مختصات بردار" + ], + "prompt": "برای اندازه‌گیری زاویه معمولاً از کدام واحد استفاده می‌شود؟", + "type": "multiple_choice", + "choices": [ + "درجه", + "کیلوگرم", + "ثانیه", + "سانتی‌متر" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "نوشتن مختصات بردار" + ], + "prompt": "بردار ۲i + ۳j را به صورت مختصاتی بنویسید.", + "type": "multiple_choice", + "choices": [ + "(۳, ۲)", + "(۵, ۰)", + "(۲, −۳)", + "(۲, ۳)" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "رسم بردار و تعیین مختصات" + ], + "prompt": "معادله‌ی برداری ۲i − j + ۳x = [−۶ ، ۳] را حل کنید. بردار x کدام است؟", + "type": "multiple_choice", + "choices": [ + "−۸i + ۴j", + "(−۸)/(۳) i + (۴)/(۳) j", + "(۸)/(۳) i − (۴)/(۳) j", + "(−۴)/(۳) i + (۸)/(۳) j" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "جمع بردارها و تعیین مختصات" + ], + "prompt": "بردار ستونی c = [۵؛ −۱] را با استفاده از i و j بنویسید.", + "type": "multiple_choice", + "choices": [ + "c = ۵i + j", + "c = −i + ۵j", + "c = ۵i − j", + "c = i − ۵j" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "رسم شکل تقریبی بردار" + ], + "prompt": "بردار c = [۵؛ −۱] از مبدأ مختصات رسم می‌شود. نقطه‌ی انتهایی این بردار کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۵, −۱)", + "(−۵, ۱)", + "(۱, ۵)", + "(۵, ۱)" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "یافتن معادله بردار" + ], + "prompt": "بردار a = [۲؛ ۱] و بردار b = [−۱؛ ۳] داده شده‌اند. اگر c = ۳a + ۲b باشد، مختصات c کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۸, ۹)", + "(۴, ۳)", + "(۱, ۹)", + "(۴, ۹)" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "تحلیل حرکت ربات" + ], + "prompt": "اگر بردار a = ۳i − ۲j و بردار b = [−۱، ۲] باشد، بردار x را از معادله‌ی ۲x − j = ۲a − b به دست آورید.", + "type": "multiple_choice", + "choices": [ + "۷i − ۵j", + "(۷)/(۲) i − (۵)/(۲) j", + "(۷)/(۲) i + (۵)/(۲) j", + "(۵)/(۲) i − (۷)/(۲) j" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "جمع بردارها" + ], + "prompt": "امیر بردار b را از انتهای a رسم کرد و به c رسید؛ رضا بردار a را از انتهای b رسم کرد و باز به همان c رسید. ترتیب جمع بردارها روی نتیجه‌ی نهایی چه تأثیری دارد؟", + "type": "multiple_choice", + "choices": [ + "نتیجه را دو برابر می‌کند", + "فقط برای بردارهای عمود صادق است", + "هیچ تأثیری ندارد", + "نتیجه را متفاوت می‌کند" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۵: بردار و مختصات", + "بردارهای واحد مختصات", + "جمع و تفریق بردارها" + ], + "prompt": "اگر بردار b = [۲، ۵] و بردار a = i − j باشد، مختصات بردار x را از رابطه‌ی ۲a − b = ۳x پیدا کنید.", + "type": "multiple_choice", + "choices": [ + "(۰ ، (−۷)/(۳))", + "(۰ ، −۷)", + "(۴ ، (−۷)/(۳))", + "(۰ ، (۷)/(۳))" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "قوانین توان‌ها" + ], + "prompt": "حاصل عبارت ۱۲۵ × ۱۸³ × ((−۱)/(۹))³ را به صورت توان‌دار (یک پایه به توان ۳) بنویسید.", + "type": "multiple_choice", + "choices": [ + "۱۰³", + "۹۰³", + "(−۲)³", + "(−۱۰)³" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "تشخیص درستی یا نادرستی توان‌ها" + ], + "prompt": "حجم مکعبی به ضلع ۲a چند برابر حجم مکعبی به ضلع a است؟", + "type": "multiple_choice", + "choices": [ + "۲ برابر", + "۸ برابر", + "۴ برابر", + "۶ برابر" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "محاسبه حاصل‌ضرب توان‌ها" + ], + "prompt": "حاصل (۳²)⁴ با کدام عبارت برابر است؟", + "type": "multiple_choice", + "choices": [ + "۳۶", + "۳¹۶", + "۳۸", + "۳²" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "تعیین عدد مناسب در جای خالی" + ], + "prompt": "عبارت [(۱/۲)³]⁴ را به صورت توانِ ساده بنویسید. حاصل کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۱/۲)⁷", + "(۱/۲)¹²", + "(۱/۲)¹", + "(۱/۲)³" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "نوشتن عدد به صورت توان‌دار" + ], + "prompt": "عبارت [(−۲)³]⁷ را به صورت توانِ ساده بنویسید. حاصل کدام است؟", + "type": "multiple_choice", + "choices": [ + "(−۲)¹⁰", + "(−۲)⁴", + "(−۲)²¹", + "۲²¹" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "نامساوی با توان" + ], + "prompt": "عبارت [(ab)³]² را به صورت توانِ ساده بنویسید. حاصل کدام است؟", + "type": "multiple_choice", + "choices": [ + "a⁵ × b⁵", + "a⁶ × b²", + "a¹ × b¹", + "a⁶ × b⁶" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "جایگذاری اعداد" + ], + "prompt": "حاصلِ عبارتِ (−۵)² × [(−۵)³]² برابرِ کدام است؟", + "type": "multiple_choice", + "choices": [ + "(−۵)⁸", + "−۵⁸", + "(−۵)⁷", + "(−۵)⁶" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "توان", + "محاسبه مقدار عددی" + ], + "prompt": "حجمِ مکعبی به ضلعِ ۸ سانتی‌متر را به‌صورتِ یک عددِ توان‌دار با پایه‌ی ۲ بنویسید.", + "type": "multiple_choice", + "choices": [ + "۲⁶", + "۲³", + "۲⁹", + "۲²⁷" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "نوشتن به صورت توان" + ], + "prompt": "حاصلِ (۳/۵)⁵ ÷ (۳/۵)² کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۳/۵)⁷", + "(۳/۵)³", + "(۳/۵)⁵", + "(۳/۵)¹⁰" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "جایگذاری عدد مناسب" + ], + "prompt": "در تساویِ ۲¹⁵ ÷ (۲³)ⁿ = ۱، مقدارِ n کدام است؟", + "type": "multiple_choice", + "choices": [ + "۱۵", + "۴۵", + "۵", + "۱۲" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "ساده‌سازی عبارات توان‌دار" + ], + "prompt": "حاصلِ (xy)⁷ ÷ (xy)² کدام است؟", + "type": "multiple_choice", + "choices": [ + "(xy)⁹", + "(xy)¹⁴", + "(xy)²", + "(xy)⁵" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "نوشتن اعداد به صورت یک عدد توان‌دار" + ], + "prompt": "حاصلِ ۱۲⁴ ÷ ۶⁴ کدام است؟", + "type": "multiple_choice", + "choices": [ + "۲⁴", + "۲⁰", + "۲⁸", + "۲" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "نوشتن به صورت عددی توان‌دار" + ], + "prompt": "حاصلِ ۵⁷ ÷ ۵³ کدام است؟", + "type": "multiple_choice", + "choices": [ + "۵¹⁰", + "۵⁴", + "۵²¹", + "۵³" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "مقایسه و ترتیب اعداد توان‌دار" + ], + "prompt": "حاصلِ (۲/۳)⁸ ÷ (۲/۳)⁵ کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۲/۳)¹³", + "(۲/۳)⁴⁰", + "(۲/۳)³", + "(۲/۳)⁵" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "تشخیص تساوی‌های درست و نادرست" + ], + "prompt": "عددِ ۸۱ را به‌صورتِ یک عددِ توان‌دار با پایه‌ی ۳ بنویسید.", + "type": "multiple_choice", + "choices": [ + "۳³", + "۳⁴", + "۳⁵", + "۳⁶" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "تقسیم اعداد توان‌دار", + "محاسبه عبارات توان‌دار" + ], + "prompt": "حاصلِ ساده‌شده‌ی [(۲/۳)⁵]⁷ کدام است؟", + "type": "multiple_choice", + "choices": [ + "(۲/۳)⁸", + "(۲/۳)¹²", + "(۲/۳)²", + "(۲/۳)³⁵" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "مقایسه جذر اعداد" + ], + "prompt": "√۳۴ بینِ کدام دو عددِ طبیعیِ متوالی قرار دارد؟", + "type": "multiple_choice", + "choices": [ + "بینِ ۴ و ۵", + "بینِ ۶ و ۷", + "بینِ ۵ و ۶", + "بینِ ۵ و ۷" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "محاسبه جذر تقریبی" + ], + "prompt": "اگر √۳۴ ≈ ۵.۸۳۰۹۵ باشد، کدام رابطه بینِ ۵.۸ و √۳۴ درست است؟", + "type": "multiple_choice", + "choices": [ + "۵.۸ > √۳۴", + "۵.۸ < √۳۴", + "۵.۸ = √۳۴", + "نمی‌توان این دو عدد را مقایسه کرد" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "مقایسه جذرها" + ], + "prompt": "مقدارِ √۹۹ تا سه رقمِ اعشار کدام است؟", + "type": "multiple_choice", + "choices": [ + "۹.۸۴۹", + "۹.۹۹۴", + "۱۰.۹۴۹", + "۹.۹۴۹" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "محاسبه مقدار تقریبی جذر" + ], + "prompt": "مقدارِ √۱۵۰ را تا یک رقمِ اعشار به‌دست آورید.", + "type": "multiple_choice", + "choices": [ + "۱۲.۲", + "۱۲.۵", + "۱۱.۲", + "۱۲.۸" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "مقایسه مقادیر جذر" + ], + "prompt": "کدام رابطه بینِ √۱۷ و ۴.۰۳ درست است؟", + "type": "multiple_choice", + "choices": [ + "√۱۷ < ۴.۰۳", + "√۱۷ > ۴.۰۳", + "√۱۷ = ۴.۰۳", + "نمی‌توان این دو عدد را مقایسه کرد" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "تعیین مکان اعداد روی محور" + ], + "prompt": "رویِ محورِ اعداد، نقطه‌ی A در ۹.۵ قرار دارد. کدام یک از این اعداد به A نزدیک‌تر است؟", + "type": "multiple_choice", + "choices": [ + "√۷۹", + "√۸۵", + "√۹۸", + "√۸۱" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "جذر تقریبی", + "نزدیک‌ترین عدد به نقطه مشخص شده" + ], + "prompt": "رویِ محورِ اعداد، نقطه‌ی B در −۴.۵ قرار دارد. کدام یک از این اعداد به B نزدیک‌تر است؟", + "type": "multiple_choice", + "choices": [ + "−√۱۲۸", + "−√۱۷۰", + "−√۱۵۰", + "−√۳۸" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "نمایش اعداد رادیکالی روی محور اعداد", + "نمایش اعداد رادیکالی روی محور اعداد" + ], + "prompt": "یک مثلثِ قائم‌الزاویه‌ی متساوی‌الساقین با دو ضلعِ قائمه به طولِ ۱ رسم شده و طولِ وترش √۲ است. مثلثِ بعدی طوری رسم می‌شود که یک ضلعِ قائمه‌اش برابرِ وترِ مثلثِ قبلی و ضلعِ قائمه‌ی دیگرش ۱ باشد. طولِ وترِ مثلثِ دوم چقدر است؟", + "type": "multiple_choice", + "choices": [ + "√۲", + "۲", + "√۳", + "√۵" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "نمایش اعداد رادیکالی روی محور اعداد", + "رسم اعداد رادیکالی به صورت خطی" + ], + "prompt": "برایِ نمایشِ عددِ ۲ − √۳ رویِ محورِ اعداد، طبقِ تساویِ ۲ − √۳ = −√۳ + ۲، چه حرکتی از مبدأ باید انجام داد؟", + "type": "multiple_choice", + "choices": [ + "√۳ واحد به چپ، سپس ۲ واحد به راست", + "√۳ واحد به راست، سپس ۲ واحد به چپ", + "۲ واحد به چپ، سپس √۳ واحد به چپ", + "۲ واحد به راست، سپس √۳ واحد به راست" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "تساوی‌های رادیکالی" + ], + "prompt": "√۷ × √۸ کدام است؟", + "type": "multiple_choice", + "choices": [ + "√۱۵", + "√۵۶", + "۵۶", + "√۶۳" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "مقایسه ریشه‌های دوم اعداد" + ], + "prompt": "کدام گزینه درباره‌ی √۵۰ درست است؟", + "type": "multiple_choice", + "choices": [ + "√۵۰ = ۲۵", + "√۵۰ = ۱۰ × √۵", + "√۵۰ = ۵ × √۲", + "√۵۰ = ۲ × √۲۵" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "بررسی درستی روابط ریشه دوم" + ], + "prompt": "√۷۵ را به ساده‌ترین شکل (عدد × رادیکال) بنویسید.", + "type": "multiple_choice", + "choices": [ + "۵√۳", + "۳√۵", + "۲۵√۳", + "۵√۱۵" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "تعیین موقعیت تقریبی اعداد رادیکالی روی محور" + ], + "prompt": "برایِ a=۱۶ و b=۹ داریم: √(a/b) = √۱۶/√۹ = ۴/۳. بر همین اساس، برایِ هر دو عددِ مثبتِ a و b کدام رابطه‌ی کلی برقرار است؟", + "type": "multiple_choice", + "choices": [ + "√(a/b) = √a × √b", + "√(a/b) = √a / √b", + "√(a/b) = a/√b", + "√(a/b) = √a − √b" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "یافتن نزدیک‌ترین عدد طبیعی به جذر" + ], + "prompt": "کدام گزینه درباره‌ی √(۹/۱۶) درست است؟", + "type": "multiple_choice", + "choices": [ + "√(۹/۱۶) = ۳/۴", + "√(۹/۱۶) = ۹/۱۶", + "√(۹/۱۶) = ۴/۳", + "√(۹/۱۶) = ۳/۸" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "رسم محور اعداد و مشخص کردن جذر تقریبی" + ], + "prompt": "√(۴۹/۱۶) کدام است؟", + "type": "multiple_choice", + "choices": [ + "۴۹/۱۶", + "۴/۷", + "۷/۱۶", + "۷/۴" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "محاسبه مجموع اعداد در جدول" + ], + "prompt": "نزدیک‌ترین عددِ طبیعی به √۴۰۱ کدام است؟", + "type": "multiple_choice", + "choices": [ + "۱۹", + "۲۱", + "۲۰", + "۴۰۱" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "محاسبه حاصل ضرب توان‌ها" + ], + "prompt": "کدام یک از عددهای زیر بزرگ‌ترین مقدار را دارد؟", + "type": "multiple_choice", + "choices": [ + "√۱۴۰", + "-√۱۷", + "√۲۴۰", + "-√۳" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "محاسبه جذر به‌صورت اعشاری" + ], + "prompt": "جذر ۷۰۰ را تا یک رقم اعشار به‌دست آورید.", + "type": "multiple_choice", + "choices": [ + "۲۶٫۵", + "۲۶٫۴", + "۲۵٫۵", + "۲۶٫۶" + ], + "correct": 0 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "یافتن دو عدد طبیعی بین جذرها" + ], + "prompt": "کدام گزینه دو عدد طبیعیِ بینِ √۵ و √۱۷ است؟", + "type": "multiple_choice", + "choices": [ + "۲ و ۳", + "۴ و ۵", + "۱ و ۲", + "۳ و ۴" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "یافتن پنج عدد بین جذرها" + ], + "prompt": "√۲۰۰ را به‌صورت ضربِ یک عددِ طبیعی در یک رادیکال بنویسید.", + "type": "multiple_choice", + "choices": [ + "۱۰۰√۲", + "۲√۱۰۰", + "۱۰√۲", + "۲۰√۱۰" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "نوشتن اعداد رادیکالی به‌صورت ضرب در عدد طبیعی" + ], + "prompt": "حاصلِ عبارتِ (-۳)⁵ × ۴³ × ۸ را به‌دست آورید.", + "type": "multiple_choice", + "choices": [ + "۱۲۴٬۴۱۶", + "-۲۳٬۳۲۸", + "-۱۲۴٬۴۱۶", + "-۷٬۶۸۰" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "محاسبه حاصل ضرب و تقسیم توان‌ها" + ], + "prompt": "حاصلِ عبارتِ زیر را به‌دست آورید: (۳¹⁰ × ((۱)/(۲۷))³) ÷ (۵⁴ × ((۱)/(۲۵))²)³", + "type": "multiple_choice", + "choices": [ + "(۱)/(۳)", + "۱", + "۹", + "۳" + ], + "correct": 3 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "محاسبه جذر عدد" + ], + "prompt": "جذرِ عددِ ۹۳ را تا دو رقمِ اعشار به‌دست آورید.", + "type": "multiple_choice", + "choices": [ + "۹٫۶۳", + "۹٫۶۴", + "۹٫۶۵", + "۹٫۴۶" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "ساده کردن عبارت توان‌دار" + ], + "prompt": "کدام یک از عددهای زیر کوچک‌ترین مقدار را دارد؟ ۴³، ۳⁵، √۳۵، (-۲)⁴، ((۲)/(۵))⁴", + "type": "multiple_choice", + "choices": [ + "(-۲)⁴", + "((۲)/(۵))⁴", + "۳⁵", + "√۳۵" + ], + "correct": 1 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "پیدا کردن اعداد روی محور" + ], + "prompt": "کدام یک از عددهای زیر بینِ ۱۰ و ۲۰ روی محورِ اعداد قرار می‌گیرد؟", + "type": "multiple_choice", + "choices": [ + "۴³", + "√۴۷", + "(-۲)⁴", + "۳⁵" + ], + "correct": 2 + }, + { + "path": [ + "پایه هشتم", + "فصل ۷: توان و جذر", + "خواص ضرب و تقسیم رادیکال‌ها", + "محاسبه مقدار عددی عبارت توان‌دار" + ], + "prompt": "با x = -۲، y = ۶، a = -۱ و b = (۱)/(۲)، مقدارِ عبارتِ (ax³ - b(x - y³)) / (۲axy + ((y)/(x))³ - ((۳)/(b))³) را به‌دست آورید.", + "type": "multiple_choice", + "choices": [ + "۰٫۴۶۱", + "-۰٫۴۶۱", + "-۰٫۵۴۹", + "-۰٫۵۳۴" + ], + "correct": 3 } ] } diff --git a/docs/extraction-playbook.md b/docs/extraction-playbook.md index 6aaac5d..1b9031e 100644 --- a/docs/extraction-playbook.md +++ b/docs/extraction-playbook.md @@ -90,9 +90,31 @@ regexِ اولیه شاملِ `شکل|جدول|روبه‌رو|مقابل|زیر روی ۳۴۵ ورودی **۹۲٪** بود. Haiku برای این کار مناسب نیست — جوابِ نهایی را از راه‌حل بیرون نمی‌کشد. -مسیر: جفت‌های (درس، مسئله‌ی تأییدشده) را به JSON بیرون بدهید، subagent فایلِ -خروجی بنویسد، و از `content.question_io` واردش کنید — که اعتبارسنجی دارد و -فلسفه‌اش این است که **فایلِ بد هیچ‌چیز نمی‌نویسد**. +مسیر حالا ابزار دارد و دستی نیست: + +```bash +# ۱. جفت‌های (درس، مسئله‌ی تأییدشده) را بیرون بده — رایگان، هیچ فراخوانیِ پولی +python manage.py generate_questions_from_chunks \ + --subject حسابان --grade یازدهم --export /tmp/batches +# ۲. برای هر فایلِ دسته یک subagentِ Sonnet بگذار که خروجی را در /tmp/out بنویسد +# ۳. وارد کن (اعتبارسنجی دارد؛ فایلِ بد هیچ‌چیز نمی‌نویسد) +# از پنلِ ادمین: /admin/content/question/ → «وارد کردنِ سوال‌ها از فایل» +# ۴. به فایلِ ریپو منتقل کن و کامیت کن +python manage.py seed_content --export --only questions +``` + +`--export` کنارِ دسته‌ها یک `*-RULES.txt` هم می‌نویسد که **عینِ همان PROMPTی است +که به مدلِ پولی می‌رفت**؛ پس کیفیتِ دو شاخه از هم جدا نمی‌افتد. اندازه‌ی دسته با +`--batch-size` تنظیم می‌شود (پیش‌فرض ۳۰). + +⚠️ **سقفِ هفتگیِ Sonnet واقعی است و ناگهانی می‌رسد.** هر ۳۰ سوال حدودِ ۹۵ هزار +توکن می‌برد، پس ۲۰ subagentِ هم‌زمان ≈ ۲ میلیون توکن در یک نشست. قبل از شروع +حساب کنید؛ دسته‌ها را کوچک نگه دارید و بینشان نتیجه را وارد کنید. + +**یک سوال بسازید، نه یک ترجمه.** subagentها چند بار خطای حسابِ خودِ کتاب را +گرفتند (راه‌حلی که ریشه را ۶ نوشته بود ولی ۶٫۵ بود؛ راه‌حلی که می‌گفت حد وجود +ندارد درحالی‌که داشت). یعنی `solution_verdict='agrees'` فیلترِ اول است، نه تضمین — +در پرامپت صریح بخواهید که جواب را مستقل حل کند و اگر نخواند، ردیف را رد کند. --- diff --git a/notifications/views.py b/notifications/views.py index ce1ccf2..544bf8e 100644 --- a/notifications/views.py +++ b/notifications/views.py @@ -48,7 +48,11 @@ class NotificationMarkReadView(APIView): permission_classes = [IsAuthenticated] - @extend_schema(responses=MarkReadResponseSerializer, tags=['Notifications (notifications)']) + # request=None لازم است: بدونِ آن spectacular نمی‌تواند بدنه‌ی PATCH را حدس + # بزند و **کلِ ویو را از اسکیما کنار می‌گذارد** — یعنی این مسیر در قراردادی + # که فرانت از آن کلاینت می‌سازد اصلاً دیده نمی‌شود. + @extend_schema(request=None, responses=MarkReadResponseSerializer, + tags=['Notifications (notifications)']) def patch(self, request, id): notification = get_object_or_404(Notification, pk=id, user_id=request.user.id) if not notification.is_read: diff --git a/payment/views.py b/payment/views.py index 55a89e1..31ea0d9 100644 --- a/payment/views.py +++ b/payment/views.py @@ -191,6 +191,11 @@ class PaymentRedirectView(APIView): throttle_scope = 'payment_pay' throttle_classes = [ScopedRateThrottle] + @extend_schema( + responses={302: OpenApiTypes.NONE}, + description='به درگاهِ زرین‌پال ریدایرکت می‌کند؛ بدنه‌ی JSON ندارد.', + tags=['Payment (payment)'], + ) def get(self, request, order_id): order = get_object_or_404(Order, pk=order_id, provider='gateway') diff --git a/rag/management/commands/rag_verify_solutions.py b/rag/management/commands/rag_verify_solutions.py index 62efa3f..1b02665 100644 --- a/rag/management/commands/rag_verify_solutions.py +++ b/rag/management/commands/rag_verify_solutions.py @@ -82,24 +82,14 @@ def is_account_limit(exc) -> bool: return '403' in text and 'insufficient' in text -# مسئله‌ای که به شکل/جدولِ کتاب ارجاع می‌دهد و **محتوای آن را ننوشته** بدونِ -# تصویر قابلِ حل نیست؛ فرستادنش هم پول می‌سوزاند هم آمار را خراب می‌کند. +# مسئله‌ای که به شکلِ کتاب ارجاع می‌دهد و محتوایش را ننوشته، بدونِ تصویر +# قابلِ حل نیست؛ فرستادنش هم پول می‌سوزاند هم آمار را خراب می‌کند. # -# ⚠️ نسخه‌ی اولِ این محافظ یک regexِ تخت بود: -# شکل|جدول|نمودار|روبه‌رو|روبرو|مقابل|...|زیر را|بالا را -# و فاجعه‌بار گشاد بود. سه نمونه از چیزهایی که بی‌دلیل رد می‌کرد: -# «زاویه‌های روبه‌رو در لوزی برابرند؟» ← «روبه‌رو» یعنی مقابل، نه شکل -# «کسرهای زیر را گویا کنید: ۲/√۳» ← داده همان‌جاست -# «به شکل مخروطی با شعاع ۴ و ارتفاع ۱۲» ← «به شکلِ ...» یعنی شبیهِ -# اندازه‌گیری (۱۴۰۵/۰۶/۲۹، نمونه‌ی ۵۰تایی از کتاب‌های بازخوانی‌شده): از -# مسئله‌هایی که این محافظ رد کرده بود، **۸۴٪ واقعاً قابلِ قضاوت بودند** — -# یعنی ~۷۸۴ مسئله‌ی سالم بی‌صدا از چرخه‌ی ساختِ سوال بیرون مانده بودند. -# -# قاعده‌ی تازه دو شرط دارد، و هر دو باید برقرار باشند: -# ۱. ارجاعِ صریح به چیزی بیرونِ متن باشد («شکل زیر»، «جدول روبه‌رو») -# ۲. بعد از آن ارجاع، توصیفی نیامده باشد (نه «که ...»، نه عدد، نه نماد) -# شرطِ دوم همان چیزی است که قاعده‌ی self-contained تولید می‌کند: مدل حالا -# می‌نویسد «با توجه به شکل مقابل **که شامل {a,1} است**». +# ⚠️ این محافظ باید دو شرطی بماند — ارجاعِ صریح به بیرونِ متن، *و* نیامدنِ +# توصیف بعد از آن. نسخه‌ی اولش یک regexِ تخت روی «شکل|جدول|روبه‌رو|…» بود و +# «زاویه‌های روبه‌رو در لوزی» یا «کسرهای زیر را گویا کنید: ۲/√۳» را هم می‌گرفت: +# در نمونه‌ی ۵۰تایی ۸۴٪ از ردشده‌ها واقعاً قابلِ قضاوت بودند، یعنی ~۷۸۴ مسئله‌ی +# سالم بی‌صدا از چرخه‌ی ساختِ سوال بیرون مانده بود. _FIGURE_REFERENCE = re.compile( r'(شکل|جدول|نمودار|تصویر|نقشه)\s*(ِ|های|‌های)?\s*' r'(زیر|بالا|روبه\u200cرو|روبرو|مقابل|فوق|داده\s*شده)'