cocottetech/@platform/codebase/@features/ai-copilot/docs/tryst-profile-editor.screen.md

110 lines
6.6 KiB
Markdown
Raw Normal View History

# tryst-profile-editor.screen
The structured profile editor for Tryst — about-me + rates + services + hours + tour cities + photos slot picker. Implements [surface-tryst.brief.md §3, §11](./surface-tryst.brief.md). Extends [brief H §H2](./H-recurring-chores.brief.md) diff-card pattern for tabular fields. Voice: working.
## Layout (full-screen, sectioned and scrollable)
```
┌─────────────────────────────────────────────────┐
│ Cancel Edit Tryst profile Preview │ 56pt
├─────────────────────────────────────────────────┤
│ │
│ ─── About-me ─── │
│ ╭───────────────────────────────────────╮ │
│ │ Independent escort based in the Bay │ │
│ │ Area. Trans, femme, real, no rush. │ │
│ ╰───────────────────────────────────────╯ │
│ 432 / 500 ✓ no banned phrases per K2 │
│ │
│ ─── Rates ─── │
│ Incall 1h: [ $400 ] 2h: [ $700 ] │
│ Outcall 1h: [ $500 ] 2h: [ $850 ] │
│ Overnight: [ $2,500 ] │
│ Currency: [ USD ▼ ] │
│ │
│ ─── Services ─── │
│ [☑ GFE] [☑ Companionship] [☐ Couples] │
│ [☑ Tours] [☐ Overnight] [☑ Multi-hour] │
│ (chips from Tryst-side taxonomy) │
│ │
│ ─── Hours ─── │
│ Mon: [ 10:0002:00 ] Tue: [ closed ] │
│ Wed: [ 12:0022:00 ] … │
│ │
│ ─── Tour cities (next 14d) ─── │
│ • Berlin (Oct 37) · pending publish │
│ [ Edit tours → ] │ routes to H §H3
│ │
│ ─── Photos ─── │
│ [ Manage photos → ] │ routes to tryst-photo-manager
│ │
└─────────────────────────────────────────────────┘
```
## Components
| Component | Notes |
|---|---|
| About-me | Free-text with char count + K2 phrase-blocklist check (per [brief K §K2](./K-safety-blocklist.brief.md)). Tabular fields below. |
| Rates | Per-tier numeric inputs with currency picker. Validates positive integers. |
| Services | Multi-select chips from Tryst's fixed taxonomy. |
| Hours | Per-weekday time-range pickers; "closed" toggle per day. |
| Tour cities | Read-only summary; edits route to [H §H3 multi-surface fan-out](./H-recurring-chores.brief.md). |
| Photos | Read-only count; edits route to [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md). |
## States
1. **Loaded (no edits)** — current values shown; Preview disabled, Cancel = Done.
2. **Editing** — at least one field changed; Preview enabled (route to [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md)); Cancel warns "Discard?"
3. **K2 phrase hit** — yellow chip inline: "Your about-me contains 'real name' (per your blocklist). Edit or override?"
4. **Validation error** — rate ≤ 0, time-range invalid, etc. Inline.
5. **Saving (after Preview → Approve)** — banner: "Pushing to Tryst..."
6. **Save success** — sheet dismisses; receipt: "Tryst profile updated. Live in ~2 minutes."
7. **Save failed** — per brief M: banner with retry.
8. **Conflict** (concurrent edit from another device) — per M §M7 3-way diff.
9. **Tryst-side rejection** (photo / phrase / format) — inline error on the affected field.
10. **VoiceOver** — sections read in declared order; rates announce as table rows.
## Interactions
- **Tap any field** → opens its editor.
- **Tap "Preview"** → [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md) with the proposed state.
- **Tap "Edit tours →"** → [tour-leg-detail.screen.md](./tour-leg-detail.screen.md) or H §H3 compose.
- **Tap "Manage photos →"** → [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md).
- **Swipe-down** → "Discard?" if dirty.
## Edge cases
- **Tryst's taxonomy changes** (new service added / removed) — chip set re-pulled at sheet-open; deprecated chips greyed.
- **Currency mismatch** (Quinn's setting says USD but Tryst's market is EUR) — inline warning.
- **K2 blocklist phrase appearing only after edit** — chip pulses to draw attention before save.
- **Multi-tier rate inconsistency** (overnight cheaper than 2h) — inline warning: "Your overnight is less than 2h. Confirm?"
- **Profile too short** (about-me < 50 chars) Tryst-side rejection; warn before save.
## *Generalization callout*
Other directories' profile editors are structurally similar but with different field sets:
- **TS4Rent**: rates table similar; adds Sumsub-verified-name handling.
- **Slixa**: simpler rates (no incall/outcall split).
- **Eros**: city-tier rates (per neighborhood).
- **OnlyFans**: subscription tiers + PPV pricing (totally different schema; profile-editor variant is much more involved).
Per-surface brief documents the schema; this screen pattern generalizes to *any* tabular profile editor.
## Related
- [surface-tryst.brief.md §3, §11](./surface-tryst.brief.md) — parent.
- [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md) — preview/approve target.
- [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md) — photos sub-editor.
- [Brief H §H2](./H-recurring-chores.brief.md) — diff-card pattern parent.
- [Brief K §K2](./K-safety-blocklist.brief.md) — phrase blocklist enforcement.
- [Brief M §M7](./M-error-degraded-modes.brief.md) — conflict resolution.
- [Brief I](./I-audit-trust-replay.brief.md) — every save = audit row.
## Out of scope
- Photo upload UX (separate screen).
- Tour compose (H §H3 / tour-leg-detail).
- A/B-testing variants of profile copy (P3+).