Files
descrybe/docs/process-and-sell-summary.md
greeneclipse 8580c996c3 Initial commit of Descrybe v2 without local scratch artifacts.
Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
2026-08-09 22:47:43 +02:00

5.3 KiB

Process & sell — end-to-end summary (Descrybe v2)

Last updated: 2026-08-04
Repo: f:/laragon/www/_MY/descrybe-v2

Short guide for verifying the parallel feature work: standard fields, feed auto-map, sync+process (including EPREL/specs), export, and the public API + docs.

Prerequisites

cd f:/laragon/www/_MY/descrybe-v2
docker compose up -d   # Postgres on host :5433 (healthy)

$env:DATABASE_URL = "postgres://descrybe:descrybe@localhost:5433/descrybe?sslmode=disable"
# Goose migrations through 009 (008 standard fields config, 009 processing step progress; 007 already applied)
cd apps/api
go run github.com/pressly/goose/v3/cmd/goose@v3.24.3 -dir sql/schema postgres $env:DATABASE_URL up

# API + worker (separate terminals)
go run ./cmd/api
go run ./cmd/worker

# Web
cd ../web
npm install
npm run dev

Demo credentials

From demo-user.md:

Field Value
Email demo@descrybe.test
Password DemoPass123!
Role Platform admin; Platform Demo only (not A1)
Default company Platform Demo (sandbox; see safe-test-fixtures.md)
Demo API key dk_demo_local_descrybe_test_key_v1 → Platform Demo only

Re-seed anytime:

cd apps/api
$env:DATABASE_URL = "postgres://descrybe:descrybe@localhost:5433/descrybe?sslmode=disable"
go run ./cmd/seed-demo -postgres $env:DATABASE_URL

seed-demo assigns the Platform Demo plan (~1M AI credits). Do not top up or rename A1 Slovenija. Resolve Platform Demo company_id from SQL//api/auth/me before any wallet UPDATE.

How to test (happy path)

  1. Login at http://localhost:5174/login with the demo credentials → land on /dashboard (company Platform Demo).
  2. Standard fields → open /standard-fields, enable the recommended standard fields (company config from migration 008).
  3. Open a feed/feeds, pick an input feed with URL data → /feeds/{feedId} (and /feeds/{feedId}/mapping).
  4. Auto-map → run auto-map on the feed mapping so source columns/paths bind to product + standard fields.
  5. Sync + process a sample → sync the feed (URL CSV/XML → raw_products), then start a small processing job (dashboard Background Tasks /processing, or select raw products and process). Keep the worker running.
  6. See EPREL / specs → open a processed product; when EPREL_ENABLED=true and an EPREL id is present, attributes include eprel_* / nested eprel; specs come from the parse_specs / fill_fields steps. See eprel.md.
  7. Export/export-feeds, generate or open the public XML/CSV stream for a template that maps eprel_* / attribute sources.
  8. Public API + docs → browse http://localhost:5174/docs (RapiDoc) and smoke:
curl -s -H "Authorization: Bearer dk_demo_local_descrybe_test_key_v1" \
  "http://localhost:8080/api/v1/products?limit=1"

Processing via public API (same pipeline as the dashboard):

  • POST /api/v1/process
  • GET /api/v1/process/{id}

Env flags

Set on the API and especially the worker (enrichment runs in ProcessJob):

Variable Default Purpose
EPREL_ENABLED false Turn on EPREL enrichment step
EPREL_TIMEOUT 10s HTTP client timeout
EPREL_BASE_URL https://eprel.ec.europa.eu/api Override for tests/proxies
EPREL_FICHE_LANGUAGE EN Product fiche language
EPREL_API_KEY (empty) Optional X-API-KEY — never log
OPENAI_API_KEY (empty) Enables OpenAI enhance; without it, heuristic fallback still runs
OPENAI_MODEL gpt-4o-mini Chat model
OPENAI_BASE_URL https://api.openai.com/v1 Override for proxies

Example worker env:

$env:DATABASE_URL = "postgres://descrybe:descrybe@localhost:5433/descrybe?sslmode=disable"
$env:EPREL_ENABLED = "true"
$env:OPENAI_API_KEY = "sk-..."   # optional
go run ./cmd/worker

What was deferred

Not in scope for this reconcile / parallel feature pass (see status-and-gaps.md):

  • Stripe checkout / subscriptions (manual credits + plans only)
  • River job client (DB claim + NOTIFY remains)
  • Feed FTP / Excel / uploaded-file ingest; export schedule / object storage
  • Rich WooCommerce mapping UI + live store E2E
  • Production cutover blockers: Clerk email patch, membership role promotion, SMTP set-password smoke
  • Org export/import, WebSocket live updates, GitHub Actions CI
  • Structured-descriptions / vector-categories backend APIs (UI shells exist)
  • Pinecone index tuning (optional; needs config)

Build smoke (reconcile)

cd apps/api; go build ./...
cd ../web; npm run check

Expected: Go packages compile; svelte-check reports 0 errors / 0 warnings.