معماری چندکسبوکاری، تجاری و تجارت الکترونیک · فصل ۴ — IA، Configurator، Lead، Audit و Research · 243
Plan Configurator and Structured Lead Intent
Build a plan configurator contract that separates product/plan identity, selectable dimensions, option constraints, quantities, price semantics, eligibility, derived intent and handoff payload; preserve invalid and unknown states; and verify that a submitted configuration can be reconstructed without trusting presentation text. میتواند «Plan Configurator و Structured Lead Intent» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
Lesson summary
Build a plan configurator contract that separates product/plan identity, selectable dimensions, option constraints, quantities, price semantics, eligibility, derived intent and handoff payload; preserve invalid and unknown states; and verify that a submitted configuration can be reconstructed without trusting presentation text.
میتواند «Plan Configurator و Structured Lead Intent» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
This lesson produces
میتواند «Plan Configurator و Structured Lead Intent» را برای یک workflow محدود با state/contract/approval و verification مناسب طراحی کند.
Who it is for
Foundation
Use a field map, one worked scenario and explicit state vocabulary before independent construction.
Repair
Identify the failed evidence dimension, use the smallest mutated fixture and rerun only the affected gate.
Experienced
Compress definitions; require trade-off defense, counterexample analysis and changed-context transfer.
Prerequisites
1) The problem this lesson solves
If a configurator stores only cards, display labels and a rendered total, you cannot later prove which plan, price, quantity and options the prospect selected or why that combination was valid.
2) Lesson boundary
The owned artifact is Plan Configurator Intent Contract v1. This lesson does not own the preceding information architecture or the following CRM handoff and performs no live checkout, billing or production mutation.
3) Fact: Product and Price are different objects
Stripe models products and prices separately. A Product identifies what is sold while a Price carries amount, unit and billing terms. Do not replace product_id and price_id with a human-facing plan label.
4) Fact: pricing model and price lifecycle need durable identity
Stripe documents flat-rate, per-seat and usage-based models. Current Stripe guidance says a changed amount should use a new Price while the previous Price can be archived to preserve historical records. A stored total without price_id and price_version is therefore weak reconstruction evidence.
5) Fact: form-like controls need identifiable labels and feedback
W3C guidance calls for labels or instructions for inputs and identifiable interaction feedback. That governs usable controls; it does not define plan eligibility, dependency rules or pricing.
6) Inference: reconstruct the submission without trusting the UI
If the only stored value is “Pro Annual — 490,” a later rename or price change makes the governing commercial object ambiguous. Auditability requires stable identifiers, version evidence and typed validation state.
7) Design: preserve session and selection identity
config_session_id ties a submission to the exact plan, price, quantity and options selected at that time. Human labels are useful presentation but are not durable keys.
8) Separate price identity from the estimated total
estimated_price is an output. price_id, pricing_model, billing_period and price_version are contractual inputs. A cached total must not hide a version mismatch.
9) Evaluate dependency and incompatibility explicitly
For example, a new add-on may be allowed only on annual billing. A monthly selection should become INVALID_DEPENDENCY; hiding the option in UI is not a substitute for retained constraint evidence.
10) Preserve quantity and pricing-model semantics
The number 25 could mean seats or a usage quantity. quantity_dimension records what the quantity means so price and intent can be reconstructed correctly.
11) Keep eligibility and quote-required distinct from acceptance
Enterprise can be QUOTE_REQUIRED, while eligibility can remain UNKNOWN. Missing evidence must not be coerced into eligible or invalid; preserve a bounded non-success state.
12) Core Evidence Contract
The artifact has 22 dimensions, 16 critical. The compact table shows a baseline, an invalid dependency and a historical reconstruction; JSON/CSV retains the complete field map.
| 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) Build Structured Lead Intent from selections
intent_payload is derived from plan, quantity, options, constraint results and validation state. Do not reverse-engineer intent from a headline, card title or rendered total.
14) Typed states prevent false certainty
ACCEPT requires sufficient evidence. QUOTE_REQUIRED, HOLD_ELIGIBILITY_UNKNOWN, HOLD_PRICE_STALE, HOLD_PRICE_VERSION_MISMATCH, INVALID_DEPENDENCY and BLOCKED_EVIDENCE_MISSING are valid outcomes too.
15) Lab and transfer
The lab has eight fixtures and 48 assertions. In transfer, a usage-based add-on appears, an old price is archived and one option becomes annual-only. A new submission must not reuse the old price, while a historical lead is reconstructable only with exact identifiers, submission time and version evidence.
Assessment
There is no answer key in this lesson pack; answer it yourself and mark honestly. "Needs review" sends the lesson to your review queue.
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.
Assessment 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.
References & freshness
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.
Lesson visuals
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.
Lab files
python run_checks.py را اجرا کنید. بررسی کنید چرا هر fixture به ACCEPT، HOLD، INVALID، QUOTE_REQUIRED یا HISTORICAL_RECONSTRUCTED میرسد. price، eligibility یا option rule گمشده را حدس نزنید.