cocottetech/@platform/codebase/@features/ai-copilot/docs/event-detail.screen.md
natalie 1b719e1fd7 chore(bootstrap): initial V4 commit
Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac
working tree at ~/Code/@projects/@cocottetech/. node_modules and build
artifacts excluded via .gitignore.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 08:11:41 -07:00

82 lines
5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# event-detail.screen
Single event from `event-scrapers` aggregator. Implements [brief R §R2c](./R-tours-events-hotels.brief.md). Reached from tour-leg-detail.screen.md anchor row, from the touring drawer's Events tab, or from a discovery card. Voice: working with hearth on rich event content.
## Layout (full-screen drawer)
```
┌─────────────────────────────────────────────────┐
│ ◄ Touring ⋯ │ 56pt
├─────────────────────────────────────────────────┤
│ Anime-Berlin │ event title
│ Oct 46 · Berlin · convention center │ date / city / venue
│ Source: animecons · last scouted 2h ago │ provenance + freshness
│ │
│ ─── Audience overlap ─── │
│ High · matches "anime-adjacent kink" │ strategist inference
│ Prior leg: Anime-LA (Apr) booked $11.8k │ historical anchor
│ │
│ ─── Anchored legs ─── │
│ ▢ Berlin Oct 37 · in planning (this leg) │ tap → tour-leg-detail
│ ✓ Anime-LA (Apr 2026) · closed · $11.8k │ past leg shortcut
│ │
│ ─── Event signal ─── │
│ Tags: anime · convention · trans-friendly │
│ Expected attendance: 18,000 │
│ [ Open source page ↗ ] │
│ │
│ ─── Actions ─── │
│ [ Anchor a new leg to this event ] │
│ [ Add to watchlist ] │ doesn't commit a leg yet
│ [ Hide this event ] │ suppresses future suggestions
│ │
└─────────────────────────────────────────────────┘
```
## Components
| Component | Notes |
|---|---|
| Top bar | Back + overflow (share, copy URL, report-stale). |
| Title block | Event name + date + city + venue. |
| Provenance | Which `event-scrapers` source + last scout time. |
| Audience overlap | strategist's inference + historical anchor data when available. |
| Anchored legs | Tour legs currently or historically anchored to this event. |
| Event signal | Tags + expected attendance + source-page link. |
| Actions | 3 buttons: anchor leg / watchlist / hide. |
## States
1. **Default** — full layout.
2. **Stale** (last scouted >24h) — provenance chip pulses; "Re-scout" button appears.
3. **No anchored legs** — Anchored section empty: "No leg yet. Anchor one to start planning."
4. **Conflict** (event date overlaps with another active leg) — top inline pill: "⚠ Overlaps Berlin Oct 37 leg already." Tap → resolve.
5. **Hidden** — sheet shows muted; banner: "You hid this event. Unhide?"
6. **Watchlisted** — small chip "On your watchlist."
7. **Source unreachable** (per brief M §M2) — provenance chip red; "Couldn't reach {source} for refresh."
8. **VoiceOver** — title → provenance → overlap → legs → signal → actions.
## Interactions
- **Tap "Open source page ↗"** → in-app browser (or external Safari, per user preference).
- **Tap anchored leg row** → tour-leg-detail.screen.md.
- **Tap "Anchor a new leg"** → starts ai-copilot conversation with this event as context; produces a draft leg.
- **Tap "Add to watchlist"** → recorded in `events_watchlist`; future scouts surface changes.
- **Tap "Hide this event"** → suppresses + records `agent_actions` row; reversible via watchlist screen.
## Edge cases
- **Event canceled by source** — banner: "Source marked this event canceled on {date}. Your leg may need re-planning."
- **Date changed in source** — banner: "Date shifted from Oct 46 to Oct 1113. Update your leg?"
- **Event scraped from multiple sources, sources disagree** — Provenance shows primary + "(conflicts with N other sources)"; tap to see disagreement.
- **Coop intel on the event's neighborhood** — chip per brief N: "🛡 1 coop report flagged this venue area."
## Related
- [Brief R §R2c, §R1a discovery](./R-tours-events-hotels.brief.md) — parent.
- [tour-leg-detail.screen.md](./tour-leg-detail.screen.md) — sibling.
- [strategist contract](./specialist-strategist.contract.md) — audience overlap inference source.
- [Brief J](./_engineering-v2-port-map.md) — v2 `event-scrapers` port.
## Out of scope
- The watchlist root view (a list of watchlisted events; defer to its own screen).
- Event-discovery feed (proactive surfacing by ai-copilot; brief R §R1a covers conceptually).