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>
61 lines
2.9 KiB
Markdown
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`
|