معماری چندکسبوکاری، تجاری و تجارت الکترونیک · فصل ۵ — Editorial Cell، SEO، QA، Approval و Onboarding · 261
Guided Onboarding و Progressive Disclosure
workflow تجاری را به UI یا integration منفرد تقلیل میدهد و state، rights، approval و measurement را یکپارچه نمیکند. موضوع جاری: «Guided Onboarding و Progressive Disclosure». میتواند «Guided Onboarding و Progressive Disclosure» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
خلاصهٔ درس
workflow تجاری را به UI یا integration منفرد تقلیل میدهد و state، rights، approval و measurement را یکپارچه نمیکند. موضوع جاری: «Guided Onboarding و Progressive Disclosure».
میتواند «Guided Onboarding و Progressive Disclosure» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
خروجی این درس
میتواند «Guided Onboarding و Progressive Disclosure» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
1) مسئله: onboarding کوتاهتر، اما نه مبهمتر
یک onboarding بد معمولاً در یکی از دو افراط میافتد: یا از همان صفحهٔ اول هر دادهای را که شاید روزی لازم شود میپرسد، یا برای «تمیز و مینیمال» دیدهشدن، اطلاعات مهم را پشت بخشهای اختیاری پنهان میکند. اولی بار شناختی و حریم خصوصی را بالا میبرد؛ دومی باعث میشود کاربر نفهمد چه چیزی لازم است، چه چیزی اختیاری است و چه چیزی برای consent، پرداخت یا approval اهمیت حیاتی دارد.
هدف این درس ساخت Guided Onboarding Progressive Disclosure Contract v1 است؛ قراردادی که جمعآوری داده را بر اساس purpose و role محدود کند، مراحل را منطقی بچیند، required/optional و progress را آشکار نگه دارد و فقط انتخابهای ثانویه یا وابسته به context را بهصورت progressive reveal نشان دهد.
قاعدهٔ مرکزی: Progressive disclosure برای کاهش شلوغی است، نه برای پنهانکردن الزام، رضایت، پرداخت، approval یا وضعیت ناقص کار.
2) مرز درس
COM-020 مالک قرارداد onboarding و disclosure است. COM-019 به Safe Workflow Lab مربوط است و COM-021 به Talent Profile و Capability Evidence. این درس نه live signup اجرا میکند، نه مبنای حقوقی را اختراع میکند و نه conformance کامل accessibility را صرفاً از روی چند الگوی UI ادعا میکند.
3) مدل ذهنی: Purpose + Role → Minimum Needed → Guided Steps → Conditional Disclosure → Review
برای هر onboarding flow این ترتیب را حفظ کن:
- Purpose — دقیقاً این flow برای چه هدفی است؟
- Role — این persona چه کاری واقعاً باید انجام دهد؟
- Minimum required data — فقط چه دادهای برای همان هدف لازم است؟
- Logical step — فیلدها در چه گروه منطقی قرار میگیرند؟
- Required / Optional visibility — وضعیت هر ورودی برای کاربر واضح است؟
- Progress + instructions — کاربر میداند کجاست، چه مانده و فرمت ورودی چیست؟
- Disclosure trigger — بخش پیشرفته دقیقاً چه زمانی relevance پیدا میکند؟
- Validation + recovery — خطا چطور اصلاح میشود بدون پاکشدن دادهٔ سالم؟
- Notice / consent / approval boundary — اطلاعات حیاتی همیشه آشکار و قابلردیابی است؟
- Review summary + completion — قبل از اتمام، کاربر چه چیزی را میتواند بازبینی کند؟
| onboarding_flow_id | persona_or_role | purpose | step_id | step_order | step_title | required_fields | optional_fields | data_purpose_map | disclosure_trigger | advanced_section_id | skip_allowed | back_allowed | progress_indicator | instruction_ref | accessibility_label_ref | validation_rule | error_recovery | consent_or_notice_ref | completion_state | review_summary_ref | evidence_ref |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FLOW-20 | CLIENT_ADMIN | create content workspace | S1 | 1 | Purpose and role | role,company_name | department | company_name:create_workspace;role:scope_steps | ALWAYS | NONE | False | True | 1/4 | INST-S1 | LBL-S1 | role in allowed_roles; company_name nonempty | preserve valid fields; focus first error | NOTICE-PRIVACY-1 | IN_PROGRESS | REV-SUM-1 | REF-S1 |
| FLOW-20 | CLIENT_ADMIN | configure optional integration | S3 | 3 | Integrations | integration_choice | advanced_options | integration_choice:select_integration;credential:only_when_selected | integration_choice != NONE | ADV-INTEGRATION | True | True | 3/4 | INST-S3 | LBL-S3 | credential only if trigger active | return to integration choice without clearing prior steps | NOTICE-INTEGRATION-1 | IN_PROGRESS | REV-SUM-3 | REF-S3 |
| FLOW-20 | REVIEWER_ONLY | review and approve | S2R | 2 | Approval access | approval_identity | review_preferences | approval_identity:authorize_reviewer | ROLE=REVIEWER_ONLY | NONE | False | True | 2/3 | INST-S2R | LBL-S2R | approval_identity verified synthetically | retain review draft; explain invalid identity | NOTICE-APPROVAL-1 | READY_FOR_REVIEW | REV-SUM-R | REF-S2R |
4) Required با «هر چیزی که شاید مفید باشد» فرق دارد
یک فیلد زمانی required است که برای purpose فعلی لازم باشد، نه اینکه صرفاً برای تیم محصول جالب باشد. اگر integration هنوز انتخاب نشده، credential آن نباید از قبل خواسته شود. اگر reviewer فقط approval انجام میدهد، تنظیمات analytics و publishing نباید به او تحمیل شود.
برای هر فیلد حداقل این سه سؤال را جواب بده:
- این داده برای چه purposeای لازم است؟
- اگر جمع نشود، کدام outcome واقعی غیرممکن میشود؟
- آیا همان outcome با دادهٔ کمتر یا در مرحلهٔ دیرتر قابلدستیابی است؟
5) progressive disclosure چه چیزی را میتواند پنهان کند؟
معمولاً فقط secondary یا context-dependent choices را. مثال: تنظیمات پیشرفتهٔ یک integration بعد از اینکه خود integration انتخاب شد. در مقابل، این موارد نباید پشت accordion اختیاری یا «More details» گم شوند:
- required task information؛
- material notices؛
- consent یا approval boundary؛
- payment-critical information؛
- completion state و هر چیزی که مانع اتمام معتبر میشود.
اگر کاربر بدون دیدن یک notice حیاتی بتواند به completion برسد، طراحی شکست خورده است حتی اگر UI ظاهراً ساده باشد.
6) راهنمای W3C برای فرم چندمرحلهای
W3C WAI توصیه میکند فرمهای طولانی به مراحل کوچک و منطقی تقسیم شوند، مراحل اختیاری قابلشناسایی و قابلskip باشند و کاربر از progress آگاه بماند. همچنین instructions باید required/optional بودن و فرمتهای مرتبط را روشن کنند و labels برای controlها قابلدسترسی باشند.
این guidance به ما الگوی usability/accessibility میدهد؛ اما بهتنهایی تعیین نمیکند یک داده از نظر حقوقی لازم است یا چه lawful basisی دارد.
7) data minimisation و privacy by design
EDPB data minimisation را در کنار purpose limitation و accountability از اصول پایهٔ پردازش داده میداند. در راهنمای Data Protection by Design and by Default نیز تأکید میشود که حفاظت از داده باید از ابتدا در طراحی وارد شود و بهصورت مستمر بازبینی شود.
برای این درس نتیجهٔ عملی این است: پیشفرض onboarding نباید از کاربر دادهای بگیرد که برای purpose انتخابشده لازم نیست. بااینحال، تشخیص حقوقی نهایی همیشه به context و بررسی متخصص وابسته است.
8) مثال پایه: صفحهٔ 42 فیلدی را بازطراحی کن
فرض کن onboarding فعلی از client جدید، در یک صفحه company profile، publishing preferences، analytics access، optional integrations، billing و team permissions را میخواهد. چند فیلد optional شبیه mandatory دیده میشوند و credential مربوط به integration حتی وقتی integration انتخاب نشده درخواست میشود.
بازطراحی بهتر:
- Step 1 — Purpose & role: هدف و نقش را مشخص کن.
- Step 2 — Core company profile: فقط دادهٔ لازم برای ایجاد workspace.
- Step 3 — Publishing: فقط اگر role و purpose به publishing نیاز دارد.
- Step 4 — Integrations: ابتدا انتخاب integration؛ سپس تنظیمات همان integration reveal شود.
- Step 5 — Billing / notice: هر اطلاعات payment/notice لازم آشکار و غیرقابلابهام.
- Step 6 — Review: summary، امکان Back و اصلاح قبل از completion.
در هر step، progress، instructions، validation و recovery باید صریح باشند.
9) shortcutهای خطرناک
Shortcut A — credential اختیاری را زودتر بگیر
غلط است. اگر trigger هنوز فعال نشده، این جمعآوری premature و بدون purpose فعلی است.
Shortcut B — consent را داخل «Advanced» بگذار
غلط است. اگر consent یا approval برای completion لازم است، نباید optional به نظر برسد یا پشت disclosure ثانویه پنهان شود.
Shortcut C — progress را حذف کن چون flow «کوتاه» است
اگر flow چندمرحلهای است، نبودن progress orientation را ضعیف میکند و میتواند کاربر را دربارهٔ مقدار باقیمانده سردرگم کند.
Shortcut D — همهٔ فیلدها را required کن
این کار مسئله را حل نمیکند؛ فقط distinction بین minimum necessary و nice-to-have را نابود میکند.
10) Evidence Contract و stateها
Artifact این درس 22 بُعد دارد: onboarding_flow_id, persona_or_role, purpose, step_id, step_order, step_title, required_fields, optional_fields, data_purpose_map, disclosure_trigger, advanced_section_id, skip_allowed, back_allowed, progress_indicator, instruction_ref, accessibility_label_ref, validation_rule, error_recovery, consent_or_notice_ref, completion_state, review_summary_ref, evidence_ref.
19 فیلد از اینها برای تصمیم بحرانیاند. اگر evidence حیاتی ناقص باشد، نتیجه باید HOLD / UNKNOWN / PARTIAL / BLOCKED بماند؛ نباید completion موفق ساخته شود.
11) آزمایش عملی
Lab آفلاین 8 fixture دارد و هیچ API یا دادهٔ واقعی استفاده نمیکند. mutationها شامل این مواردند:
- credential اختیاری قبل از trigger درخواست شود؛
- consent/approval boundary داخل بخش اختیاری پنهان شود؛
- progress از flow چندمرحلهای حذف شود؛
- همهٔ فیلدها بدون purpose روشن required شوند؛
- accessible label حذف شود؛
- persona به reviewer-only تغییر کند و flow باید دوباره محاسبه شود.
Evaluator فقط از evidence قابلمشاهده استفاده میکند و 48 assertion قطعی اجرا میشود.
12) تمرین انتقال: persona دوم
Persona دوم فقط review/approval میخواهد. او نباید analytics یا publishing را configure کند. flow را طوری بازسازی کن که:
- contract همان contract بماند؛
- fieldهای نامرتبط expose نشوند؛
- approval-critical notice همچنان visible باشد؛
- completion evidence با role جدید سازگار شود؛
- baseline client-admin path کورکورانه کپی نشود.
13) جمعبندی
Guided onboarding یعنی کمتر پرسیدن، بهتر گروهبندیکردن و هیچ الزام مهمی را پنهان نکردن. Purpose و role را اول مشخص کن، minimum necessary data را جدا کن، progress و instructions را روشن نگه دار، advanced choice را فقط با trigger مناسب reveal کن، recovery و review را حفظ کن و completion را فقط زمانی ثبت کن که evidence بحرانی کامل باشد.
منابع و تازگی
- W3C WAI, Forms Tutorial — rechecked 2026-09-15.
- W3C WAI, Multi-page Forms — rechecked 2026-09-15.
- W3C WAI, Form Instructions — rechecked 2026-09-15.
- EDPB, Privacy by design and by default + Basic principles — rechecked 2026-09-15.
- EDPB Guidelines 4/2019 and 2026 business-owner summary used as supporting context; specific legal applicability remains context-dependent.
ارزیابی
پاسخنامهی این درس در بستهی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار میفرستد.
Q1 retrieval
What may progressive disclosure defer, and what must remain explicit?
Q2 diagnosis
An optional integration credential is collected before the integration is selected. Which contract rule fails and what is the minimal repair?
Q3 transfer
Recompute the onboarding path for a reviewer-only persona without exposing analytics/publishing configuration or hiding approval-critical notices.
ملاکهای ارزیابی (rubric)
Pass requires: explicit lesson boundary; purpose-to-field mapping; visible required/optional and progress states; no hidden consent/payment/approval-critical information; conditional advanced disclosure only after a relevant trigger; accessible labels/instructions; bounded non-success states when evidence is missing; and role-aware recomputation for the transfer case.
منابع و تازگی
مطالعهٔ موارد (case studies)
تصاویر درس
فایلهای آزمایشگاه
دستور python run_checks.py را اجرا کنید. برای هر mutation مشخص کنید کدام evidence field مانع completion غیرقابلپشتیبانی میشود.