72 lines
2.2 KiB
Markdown
72 lines
2.2 KiB
Markdown
# Demo runbook
|
|
|
|
The demo uses local PostgreSQL plus the same shared export contract as
|
|
production. It never writes source prices, sellers, availability, or reviews to
|
|
the public catalog.
|
|
|
|
## 1. Start local ingestion
|
|
|
|
```bash
|
|
cp ingestion/.env.example ingestion/.env
|
|
```
|
|
|
|
Set real local passwords in `ingestion/.env`, then use five product requests per
|
|
source for the demonstration:
|
|
|
|
```bash
|
|
INGESTION_PRODUCT_DAILY_BUDGET=5 \
|
|
INGESTION_FETCH_DELAY_MIN_MS=5000 \
|
|
INGESTION_FETCH_DELAY_MAX_MS=5000 \
|
|
docker compose --env-file ingestion/.env -f ingestion/docker-compose.yml up -d --build
|
|
```
|
|
|
|
Follow the worker until the category and product jobs settle:
|
|
|
|
```bash
|
|
docker compose --env-file ingestion/.env -f ingestion/docker-compose.yml logs -f ingestion-worker
|
|
```
|
|
|
|
For a five-card demo, the worker fetches five product cards and marks the rest
|
|
of the discovered category candidates as `rate_limited` for that budget day.
|
|
If MVideo is configured and replies with a CAPTCHA/403/429, it remains paused
|
|
and visible in the queue; do not retry it through a browser or proxy.
|
|
|
|
## 2. Moderate and export
|
|
|
|
Open `http://127.0.0.1:4101/admin`, authenticate with the values from
|
|
`ingestion/.env`, choose **Products**, inspect the source URLs, raw technical
|
|
characteristics, normalized values, and any conflicts. Edit the canonical model
|
|
or canonical name where needed, approve the cards intended for the demo, then
|
|
publish the approved export:
|
|
|
|
```bash
|
|
docker compose --env-file ingestion/.env -f ingestion/docker-compose.yml run --rm ingestion-worker \
|
|
npm run ingestion:export-catalog
|
|
```
|
|
|
|
The artifacts appear under `data/catalog-exports/`:
|
|
|
|
- `manifest.json`
|
|
- `artifacts/<exportId>/catalog.json`
|
|
|
|
## 3. Start the web catalog
|
|
|
|
```bash
|
|
DASHCAM_CATALOG_EXPORT_DIR="$PWD/data/catalog-exports" npm run dev
|
|
```
|
|
|
|
Open `http://localhost:3000`. The root page reads and validates the shared
|
|
catalog at request time, displays approved cards, normalized specs, and links
|
|
back to every source card.
|
|
|
|
## 4. Final checks
|
|
|
|
```bash
|
|
npm test
|
|
npm run typecheck
|
|
npm run build
|
|
curl -fsS http://localhost:3000/health/ready
|
|
curl -u "$INGESTION_ADMIN_USERNAME:$INGESTION_ADMIN_PASSWORD" \
|
|
http://127.0.0.1:4101/admin/api/queue
|
|
```
|