Add influence rework, image checkup, debug mode, and fetched paintings.
Support artist and movement influence links with web discovery, a developer checkup table with gallery/detail thumbnails, and debug image search with fix-it workflow. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
0ece1195fa
commit
bf7db9b25e
246 files changed
+2429
-301
No files matched your search
@@ -113,22 +113,68 @@ Renaissance and medieval masters with large museum catalog dumps (e.g. Raphael,
|
||||
|
||||
## Painting influence graph
|
||||
|
||||
Directed edges in `painting_influences` drive:
|
||||
Directed influence links are stored in **`painting_influence_sources`**. Each row connects a painting to a **source** of type `painting`, `artist`, or `movement`, with optional period context (e.g. influence during the work’s creation year).
|
||||
|
||||
- **Painting detail** — *Influenced By* (left) and *Influenced* (right) panels with notes, aspects, and citations
|
||||
- **3D hall exit** — predecessor and successor artists grouped by movement
|
||||
- **3D gallery lamps** — a golden picture light above any frame whose work has an influence edge (`has_influence_links` on painting API responses)
|
||||
The legacy **`painting_influences`** table (painting-to-painting only) is still written for hall navigation compatibility and is backfilled into `painting_influence_sources` on migration.
|
||||
|
||||
Influence data drives:
|
||||
|
||||
- **Painting detail** — *Influenced By* (left) and *Influenced* (right) panels: painting thumbnails, artist portraits, or movement colour swatches, plus notes, aspects, period labels, and citations
|
||||
- **3D hall exit** — predecessor and successor artists grouped by movement (painting edges only)
|
||||
- **3D gallery lamps** — golden picture light above frames with any influence edge (`has_influence_links` on painting API responses)
|
||||
|
||||
### One-time migration
|
||||
|
||||
```bash
|
||||
npm run migrate:influence-sources # create table + backfill legacy painting edges
|
||||
```
|
||||
|
||||
### Curated updates
|
||||
|
||||
`npm run update-influences` runs `scripts/update-influences.js` against `scripts/art-influences-data.js`:
|
||||
|
||||
```bash
|
||||
npm run update-influences # insert edges; create missing artists/paintings
|
||||
npm run update-influences -- --fetch-images # also download images for newly created works
|
||||
npm run update-influences # insert curated edges
|
||||
npm run update-influences -- --fetch-images # also download images for newly created works
|
||||
npm run update-influences -- --discover # curated + web discovery pass
|
||||
npm run discover-influences # discovery only (no curated file pass)
|
||||
npm run update-influences -- --discover --limit=20 # cap discovery to N works
|
||||
```
|
||||
|
||||
Each entry defines a later `work` influenced by an earlier `influencedBy` painting, plus optional curator fields (`notes`, `aspects`, `source_author`, `source`). When `artistMeta` is included, missing artists are created with movement and lifespan. Missing paintings are inserted with `wikipedia_title` for image fetch.
|
||||
Each entry defines a later `work` and one or more `influencedBy` sources. Legacy single-object form is still supported:
|
||||
|
||||
Extend the data file to add lineage chains (e.g. Giotto → Masaccio → Michelangelo → Manet → Picasso → Warhol). New bridge artists may include Géricault, Friedrich, Constable, Giorgione, Poussin, de Chirico, and Böcklin.
|
||||
```javascript
|
||||
{ work: { artist: '...', title: '...', year: 1907 },
|
||||
influencedBy: { artist: 'Giotto', title: 'Lamentation' } }
|
||||
```
|
||||
|
||||
Multi-source form (painting, artist, movement):
|
||||
|
||||
```javascript
|
||||
{
|
||||
work: { artist: 'Pablo Picasso', title: "Les Demoiselles d'Avignon", year: 1907 },
|
||||
influencedBy: [
|
||||
{ type: 'painting', artist: 'Paul Cézanne', title: 'The Bathers' },
|
||||
{ type: 'artist', artist: 'Paul Cézanne', period: { duringCreation: true } },
|
||||
{ type: 'movement', movement: 'Fauvism', period: { start: 1905, end: 1907, note: '...' } },
|
||||
],
|
||||
notes, aspects, source_author, source, source_url,
|
||||
}
|
||||
```
|
||||
|
||||
When `artistMeta` is included, missing artists are created with movement and lifespan. Missing paintings are inserted with `wikipedia_title` for image fetch.
|
||||
|
||||
### Web discovery
|
||||
|
||||
`scripts/influence-discovery.js` searches art-history sources when `--discover` or `--discover-only` is passed:
|
||||
|
||||
- Wikipedia summaries and Wikidata **P737** (influenced by)
|
||||
- Met Museum collection API
|
||||
- DuckDuckGo site-restricted search across TheArtStory, Met, Google Arts & Culture, NGA, Art Institute of Chicago, MoMA, Britannica, JSTOR, Oxford Art Online, WikiArt, and Wikipedia
|
||||
|
||||
Discovered rows are stored with `confidence: discovered` and `discovered_via` (e.g. `wikipedia`, `wikidata`, `met`, `web:theartstory.org`). Period hints are inferred when the source text mentions influence during creation or a date range overlapping the work’s year.
|
||||
|
||||
Extend `art-influences-data.js` for high-quality curated chains; use discovery to suggest additional artist and movement links for manual review.
|
||||
|
||||
## Movement lineage (frontend flow diagram)
|
||||
|
||||
|
||||
Reference in new issue
Block a user