TorbatYar/docs/experience-phase-11-6.md
Mortezakoohjani 203671a7bf feat(experience): ship Experience Platform phases 11.0-11.10
Add the experience service with sites through analytics/AI hooks, migrations through 0011, and phase docs/manifests marking the track complete.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 11:43:10 +03:30

61 lines
2.9 KiB
Markdown

# Phase: Experience Forms, Surveys & Appointments (11.6)
| Field | Value |
| --- | --- |
| Identifier | `experience-11.6` |
| Status | Complete |
| Owner | Platform |
| Module(s) | Forms, Form Submissions, Surveys, Survey Responses, Appointment Pages, Booking Refs |
| Service(s) | `experience` (Torbat Pages) |
| Depends On | `experience-11.5` |
| ADR(s) | [ADR-016](architecture/adr/ADR-016.md) |
| Manifest | [phase-manifest.yaml](ai-framework/phase-manifest.yaml) |
## Enterprise Phase Discovery Record
| Input | Finding |
| --- | --- |
| Roadmap / manifest | Next unfinished Experience phase = `experience-11.6` Forms, Surveys & Appointments |
| Prior handover | [phase-11-5.md](phase-handover/phase-11-5.md) — locales/media complete; no form/survey/appointment engines |
| Boundaries | Experience owns page shells + submission/booking **refs**; CRM/Communication/scheduling engines remain external (API/Events only) |
| Existing codebase | Page types include `form` / `appointment`; component kind `form_shell`; permissions had placeholder `experience.forms.*` |
| Missing vs DoD | No form/survey/appointment aggregates, APIs, policies, or submission/booking-ref shells |
Derived capabilities: define forms/surveys as page shells; receive submissions/responses with CRM/Communication refs; define appointment pages with provider/service refs; store external booking refs. **Not** SEO/PWA, deep CRM, or native scheduling ownership.
## Objective
Deliver Forms, Surveys, and Appointment page shells on `experience_db` with submission/booking references only — no ownership of CRM contacts or vertical booking engines.
## Scope
### In Scope
- `ExperienceForm` + `FormSubmission` (payload + crm/communication/external refs)
- `ExperienceSurvey` + `SurveyResponse`
- `ExperienceAppointmentPage` + `AppointmentBookingRef` (`external_booking_ref` required)
- Policies rejecting inactive definitions for intake; validators rejecting ownership keys (`crm_contact_id`, `booking_engine`, …)
- Permissions `experience.forms.*` / `experience.surveys.*` / `experience.appointments.*`
- Events for create/update/archive + submission/response/booking-ref lifecycle
- Alembic `0007_phase_116_forms_surveys_appointments`; version `0.11.6.0`
### Out of Scope
- SEO / sitemap / PWA — Phase 11.7
- Owning CRM contacts, Communication providers, or scheduling calendars
- Deep form-builder UI / CMS field graphs
### APIs
| Path | Permission |
| --- | --- |
| `/api/v1/forms` · `/api/v1/form-submissions` | `experience.forms.*` |
| `/api/v1/surveys` · `/api/v1/survey-responses` | `experience.surveys.*` |
| `/api/v1/appointment-pages` · `/api/v1/appointment-booking-refs` | `experience.appointments.*` |
## Completion Criteria
- [x] Forms/surveys/appointment APIs + tests green
- [x] No deep CRM/scheduling ownership; refs only
- [x] Docs + handover + manifests at `0.11.6.0`