درس ~8 دقیقه

ثبت‌نام سال تحصیلی جدید

فلوی واحد برای ثبت‌نام فرزندان در سال جدید؛ تخفیف‌ها در زمان نمایش خلاصه از روی فیلدهای منبع محاسبه می‌شوند.

هدف

این فلو برای ثبت‌نام فرزندان خانواده در سال تحصیلی جدید (مثلاً ۱۴۰۵-۱۴۰۶) به‌کار می‌رود. تخفیف‌های قابل‌اعمال (همکاری/طلبگی والدین، چندفرزندی، پرداخت یکجا) در هیچ کالکشن جداگانه‌ای snapshot نمی‌شوند؛ هر بار از منابع اصلی (پرچم‌های شخص، تعداد ثبت‌نام، طرح تقسیط خانواده) محاسبه و در همان پیام خلاصهٔ ثبت‌نام نمایش داده و از کل شهریه کسر می‌گردند.

پیش‌شرط‌های ورود (Gate)

  1. خانواده باید مرحلهٔ تکمیل اطلاعات را تمام کرده باشد: family.stage = «نهایی» (done).
  2. ماندهٔ نهایی پس از پرداخت‌های درگاه باید تسویه باشد: family_remaining_after_gateway ≤ ۰.
اگر یکی از دو شرط برقرار نباشد، فلو با پیام راهنما خاتمه می‌یابد و هیچ رکوردی ساخته نمی‌شود.

معماری: اورکستریتور + ۳ زیرفلو

  1. «ثبت نام سال تحصیلی» (اورکستریتور): start → call(A پیش‌نیاز) → cond(gate_ok) → call(U به‌روزرسانی والدین) → call(B ثبت‌نام فرزندان) → پیام پایانی → منوی اصلی.
  2. «پیش‌نیاز ثبت‌نام ۱۴۰۵-۱۴۰۶» (A): لود خانواده، چک stage=done، فراخوانی «چک بدهی خانواده»، چک ثبت‌نام تکراری.
  3. «به‌روزرسانی تخفیف‌های والدین» (U، code=40): از پدر و مادر می‌پرسد «همکار مدرسه هستید؟» و از پدر «طلبه هستید؟»، پاسخ‌ها صرفاً روی فیلدهای is_school_collaborator و is_seminarian کالکشن «اشخاص» ذخیره می‌شود. هیچ رکورد جانبی ساخته نمی‌شود — این پرچم‌ها منبع واحد حقیقت‌اند.
  4. «ثبت‌نام و تخفیف فرزندان» (B، code=36): لود خانواده/والدین/فرزندان، حلقه روی فرزندان، ساخت رکورد enrollment، پرسش مقطع تحصیلی، محاسبهٔ درصد تخفیف از روی پرچم‌های والدین/تعداد فرزند/طرح تقسیط، و نمایش خلاصهٔ شهریه با کسر تخفیف.

منابع تخفیف (همگی محاسباتی، هر کدام ۱۰٪)

  • تخفیف همکاری مدرسه (۱۰٪): اگر هرکدام از والدین persons.is_school_collaborator = yes باشد.
  • تخفیف طلبگی (۱۰٪): اگر هرکدام از والدین persons.is_seminarian = yes باشد.
  • تخفیف چندفرزندی (۱۰٪): اگر تعداد ثبت‌نام‌های امسال (existing_enrs) ≥ ۲ باشد.
  • تخفیف پرداخت یکجا (۱۰٪): اگر families.installment_plan = full باشد.
مجموع تخفیف‌ها با سقف ۱۰۰٪ از کل شهریه کسر و در پیام خلاصهٔ ثبت‌نام به‌صورت شفاف (هر آیتم + جمع) نمایش داده می‌شود. هیچ snapshot یا رکورد جانبی نگه نمی‌داریم.

محل ذخیرهٔ داده‌ها (تک‌منبعه)

  • «اشخاص» (persons): پرچم‌های is_school_collaborator و is_seminarian — منبع حقیقت اعلام والد.
  • «ثبت‌نام‌ها» (enrollments): یک رکورد به ازای هر فرزندِ ثبت‌نام‌شده در سال جدید.
  • «خانواده‌ها» (families): فیلد installment_plan برای طرح پرداخت (full / m3 / m6 / m9 / m12).
  • «وضعیت مالی فرزندان» (children_finance): مقادیر نهایی شهریه/پرداختی/عودت توسط اپراتور مدرسه.

نقطهٔ شروع

یک دکمهٔ مستقل (یا دیپ‌لینک) برای تست؛ بعد از تأیید، به منوی خانواده وصل می‌شود.