Add guided tours and unify left-to-right hall wall hang.

Visitors walk published tours in a 3D hall with stop notes; curators edit drafts via Tour editor. All galleries (artist, movement, tour) place the first work left of the entrance view and the last on the right.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Danila Khodjaef
2026-07-16 20:27:36 +03:00
co-authored by Cursor
parent 48bd17e985
commit 5ddc3fd7f0
31 changed files with 1890 additions and 124 deletions
+27
View File
@@ -136,6 +136,33 @@ Short art-history notes shown on painting detail (`PaintingAnnotations.tsx`).
Applied by `npm run dev:migrate:painting-annotations` (`db/migrate-painting-annotations.sql`). Load data with `npm run dev:update-painting-annotations` (curated entries in `scripts/painting-annotations-data.js`; add `--wikipedia` for intro sentences from each works `wikipedia_title`).
### `tours` / `tour_stops`
Curated guided tours. See [tours.md](tours.md).
**`tours`**
| Column | Type | Notes |
|--------|------|-------|
| `id` | SERIAL PK | |
| `title` | VARCHAR(200) | |
| `description` | TEXT | Default `''` |
| `status` | VARCHAR(20) | `draft` \| `published` |
| `cover_painting_id` | FK → `paintings` | ON DELETE SET NULL |
| `created_at` / `updated_at` | TIMESTAMPTZ | `updated_at` via trigger |
**`tour_stops`**
| Column | Type | Notes |
|--------|------|-------|
| `id` | SERIAL PK | |
| `tour_id` | FK → `tours` | ON DELETE CASCADE |
| `painting_id` | FK → `paintings` | ON DELETE CASCADE; UNIQUE with `tour_id` |
| `sort_order` | INTEGER | Visitor / editor order |
| `body` | TEXT | English tour notes for the stop (v1) |
Applied by `npm run dev:migrate` (`db/migrate-tours.sql`).
### `painting_influences`
Directed edges: *this painting* was influenced by *that painting*.