Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions specs/capabilities/trade-show-signup.capability.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ scope:
- specs/features/mobile-signup.feature
models:
- specs/models/account.model.yaml
- specs/models/account.lifecycle.yaml
- specs/models/trade-show-onboarding.aggregate.model.yaml
- specs/models/trade-show-signup.catalog.model.yaml
- specs/models/shared-value-objects.model.yaml
contracts:
- specs/contracts/openapi/api.yaml
fixtures:
Expand Down
2 changes: 1 addition & 1 deletion specs/features/mobile-signup.feature
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# id: mobile-signup
# type: feature
# story: specs/stories/mobile-signup.story.md
# journey: specs/journeys/trade-show-signup.journey.md
# journey: specs/journeys/trade-show-signup.journey.md (steps 1, 2)
# contract: POST /accounts

Feature: Mobile signup
Expand Down
42 changes: 42 additions & 0 deletions specs/models/account.lifecycle.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
id: account-lifecycle
type: model
entity: Account
description: "State transitions for a trade-show account as signup completes."
sources:
stories:
- specs/stories/mobile-signup.story.md
- specs/stories/quick-start-audit.story.md
journeys:
- specs/journeys/trade-show-signup.journey.md

initial_state: initialized

states:
initialized:
description: "Prospect has opened the flow but has not submitted details."
terminal: false

starting:
description: "Signup request is being processed."
terminal: false

active:
description: "Account is ready for first-audit actions."
terminal: false

abandoned:
description: "Prospect left before completing the signup."
terminal: true

transitions:
submit_signup:
from: [initialized, starting]
to: [starting, active]
trigger: user
description: "The prospect submits or retries the signup form."

abandon:
from: [initialized, starting]
to: abandoned
trigger: system
description: "The flow expires before account activation."
26 changes: 26 additions & 0 deletions specs/models/shared-value-objects.model.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
id: onboarding-shared-value-objects
type: model
description: "Reusable value objects shared across onboarding-oriented model examples."
sources:
stories:
- specs/stories/mobile-signup.story.md
- specs/stories/quick-start-audit.story.md
journeys:
- specs/journeys/trade-show-signup.journey.md

value_objects:
boothCode:
value_object: BoothCode
description: "A booth-specific code that associates a signup with an event interaction."
attributes:
value:
type: string
required: true

prospectContact:
value_object: ProspectContact
description: "Normalized contact details captured during signup."
attributes:
email:
type: email
required: true
40 changes: 40 additions & 0 deletions specs/models/trade-show-onboarding.aggregate.model.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
id: trade-show-onboarding
type: model
aggregate: TradeShowOnboardingAggregate
description: "Aggregate view of the signup conversation and immediate first-audit handoff."
sources:
stories:
- specs/stories/mobile-signup.story.md
- specs/stories/quick-start-audit.story.md
journeys:
- specs/journeys/trade-show-signup.journey.md

entities:
account:
entity: Account
description: "The account created from the trade-show signup flow."

firstAudit:
entity: Audit
description: "The first audit started directly after account activation."

value_objects:
boothContext:
value_object: BoothContext
description: "Context carried through the booth conversation."
attributes:
boothCode:
type: string
required: true
representativeId:
type: string
required: true

rules:
- id: first-audit-requires-active-account
description: "A quick-start audit can only begin after the account becomes active."
enforced: domain

- id: booth-context-is-captured-on-signup
description: "Each signup retains booth metadata for follow-up and attribution."
enforced: domain
23 changes: 23 additions & 0 deletions specs/models/trade-show-signup.catalog.model.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
id: trade-show-signup-catalog
type: model
catalog: TradeShowSignupCatalog
description: "Shared catalog of fields reused across the booth signup examples."
sources:
stories:
- specs/stories/mobile-signup.story.md
journeys:
- specs/journeys/trade-show-signup.journey.md

properties:
boothCode:
type: string
required: true

acquisitionChannel:
type: enum
required: true
values: [qr-code, walk-up]

consentCapturedAt:
type: datetime
required: false
Loading