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>
82 lines
5 KiB
Markdown
82 lines
5 KiB
Markdown
# 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 4–6 · 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 3–7 · 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 3–7 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 4–6 to Oct 11–13. 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).
|