معماری چندکسبوکاری، تجاری و تجارت الکترونیک · فصل ۴ — IA، Configurator، Lead، Audit و Research · 243
Plan Configurator و Structured Lead Intent
workflow تجاری را به UI یا integration منفرد تقلیل میدهد و state، rights، approval و measurement را یکپارچه نمیکند. موضوع جاری: «Plan Configurator و Structured Lead Intent». میتواند «Plan Configurator و Structured Lead Intent» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
خلاصهٔ درس
workflow تجاری را به UI یا integration منفرد تقلیل میدهد و state، rights، approval و measurement را یکپارچه نمیکند. موضوع جاری: «Plan Configurator و Structured Lead Intent».
میتواند «Plan Configurator و Structured Lead Intent» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
خروجی این درس
میتواند «Plan Configurator و Structured Lead Intent» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
پیشنیازها
1) مسئلهای که این درس حل میکند
اگر configurator فقط کارت، label و یک total نمایشی ذخیره کند، بعداً نمیتوان با اطمینان گفت کاربر دقیقاً چه plan، price، quantity و optionهایی را انتخاب کرده یا چرا آن ترکیب معتبر بوده است.
2) مرز درس
خروجی این درس Plan Configurator Intent Contract v1 است. این درس مالک Information Architecture درس قبل یا CRM Handoff درس بعد نیست و هیچ checkout، billing یا mutation واقعی انجام نمیدهد.
3) Fact: Product و Price یک چیز نیستند
Stripe محصول و قیمت را جدا مدل میکند. Product میگوید چه چیزی فروخته میشود و Price شرایط مبلغ/واحد/دوره را نگه میدارد. پس product_id و price_id را نباید با نام نمایشی plan جایگزین کرد.
4) Fact: pricing model و lifecycle قیمت باید قابل ردیابی باشد
Stripe مدلهای flat-rate، per-seat و usage-based را مستند میکند. برای تغییر مبلغ، راهنمای فعلی Stripe ساخت Price جدید و archive کردن Price قبلی را برای حفظ سابقه توصیه میکند. بنابراین total ذخیرهشده بدون price_id و price_version evidence کافی نیست.
5) Fact: کنترلهای form-like باید label و feedback قابل شناسایی داشته باشند
W3C برای inputها label/instruction و برای interaction feedback قابل تشخیص میخواهد. این الزام به خود UI مربوط است؛ eligibility، dependency یا قیمت را تعریف نمیکند.
6) Inference: submission باید بدون اعتماد به UI قابل بازسازی باشد
اگر فقط متن «Pro Annual — 490» ذخیره شده باشد، بعد از rename یا تغییر price معلوم نیست کدام قرارداد واقعی حاکم بوده است. auditable بودن یعنی از identifier و version و state بتوان تصمیم را دوباره ساخت.
7) Design: هویت session و selection را حفظ کن
config_session_id باید submission را به plan، price، quantity و optionهای همان لحظه متصل کند. labelهای انسانی کمککنندهاند، اما کلید پایدار نیستند.
8) Price identity را از estimated total جدا کن
estimated_price یک نتیجه است؛ price_id، pricing_model، billing_period و price_version ورودیهای قراردادیاند. cached total نباید بتواند version mismatch را پنهان کند.
9) Dependency و incompatibility را صریح ارزیابی کن
مثلاً add-on جدید فقط برای annual plan مجاز است. اگر monthly انتخاب شده، state باید INVALID_DEPENDENCY باشد؛ UI نباید صرفاً option را مخفی کند و evidence را حذف کند.
10) Quantity و pricing model semantics را حفظ کن
عدد 25 ممکن است seat count باشد یا usage quantity. quantity_dimension مشخص میکند quantity چه معنایی دارد. بدون آن، بازسازی قیمت و intent قابل اعتماد نیست.
11) Eligibility و quote-required را با acceptance یکی نکن
Enterprise میتواند QUOTE_REQUIRED باشد و eligibility ممکن است UNKNOWN بماند. نبود evidence نباید به eligible یا invalid تبدیل شود؛ state محدودکننده را حفظ کن.
12) Core Evidence Contract
این قرارداد 22 بُعد دارد که 16 بُعد آن critical است. جدول زیر baseline، invalid dependency و historical reconstruction را خلاصه میکند؛ فایل JSON/CSV mapping کامل را نگه میدارد.
| session | plan | price | billing | options | dependency | eligibility | validation |
|---|---|---|---|---|---|---|---|
| CFG-243-001 | PLAN-PRO | PRICE-PRO-ANNUAL-V2 | annual | support=priority; retention=90d | PASS | ELIGIBLE | ACCEPT |
| CFG-243-002 | PLAN-PRO | PRICE-PRO-MONTHLY-V2 | monthly | usage_addon=enabled | FAIL_ANNUAL_ONLY | ELIGIBLE | INVALID_DEPENDENCY |
| CFG-OLD-2026-01 | PLAN-PRO | PRICE-PRO-ANNUAL-V1 | annual | support=standard | PASS | ELIGIBLE | HISTORICAL_RECONSTRUCTED |
13) Structured Lead Intent را از selection بساز
intent_payload باید از plan، quantity، option، constraint result و validation state ساخته شود. intent را از headline، card title یا total نمایشی reverse-engineer نکن.
14) Typed state از false certainty جلوگیری میکند
ACCEPT فقط برای evidence کافی است. QUOTE_REQUIRED، HOLD_ELIGIBILITY_UNKNOWN، HOLD_PRICE_STALE، HOLD_PRICE_VERSION_MISMATCH، INVALID_DEPENDENCY و BLOCKED_EVIDENCE_MISSING همگی stateهای معتبرند.
15) Lab و Transfer
Lab هشت fixture و 48 assertion دارد. در transfer یک usage-based add-on اضافه میشود، price قدیمی archive میشود و option خاص فقط annual میشود. submission جدید باید از price قدیمی متوقف شود، اما lead تاریخی فقط وقتی قابل بازسازی است که identifier، زمان submission و version evidence دقیق داشته باشد.
ارزیابی
پاسخنامهی این درس در بستهی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار میفرستد.
COM-002-S1 retrieval
What does COM-002 own, and why is a rendered total insufficient to reconstruct a submitted configuration?
COM-002-S2 application
Build Plan Configurator Intent Contract v1 for the baseline synthetic selection.
COM-002-S3 diagnosis
A usage add-on becomes annual-only while a cached monthly UI still shows the old total. Which evidence and states prevent false acceptance?
COM-002-S4 transfer
An old Price is archived after a new amount is introduced. Prove whether a historical lead can still be reconstructed and whether a new lead may use that old Price.
ملاکهای ارزیابی (rubric)
A passing artifact must preserve stable product/plan/price identities, pricing and quantity semantics, constraint/eligibility results, price version evidence, structured intent, typed validation state and a traceable handoff reference. Missing decisive evidence must remain non-success.
منابع و تازگی
مطالعهٔ موارد (case studies)
A Pro annual selection persists stable product, plan and price identifiers plus seat count and option IDs.
A cached UI total matches the old price amount, so the implementation submits an archived Price ID for a new lead.
An old lead references an archived historical Price ID while a new usage add-on becomes annual-only.
تصاویر درس
Plan and price identifiers plus options and quantity flow through constraint and eligibility checks, then either produce structured intent and a handoff reference or a typed non-success state.
فایلهای آزمایشگاه
python run_checks.py را اجرا کنید. بررسی کنید چرا هر fixture به ACCEPT، HOLD، INVALID، QUOTE_REQUIRED یا HISTORICAL_RECONSTRUCTED میرسد. price، eligibility یا option rule گمشده را حدس نزنید.