Files
descrybe/docs/process-and-sell-summary.md
T
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

129 lines
5.3 KiB
Markdown

# 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
```powershell
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
```
- Web: http://localhost:5174
- API: http://localhost:8080
- API docs (RapiDoc): http://localhost:5174/docs
- OpenAPI YAML: http://localhost:8080/api/v1/openapi.yaml
## Demo credentials
From [demo-user.md](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](safe-test-fixtures.md)) |
| Demo API key | `dk_demo_local_descrybe_test_key_v1` → Platform Demo only |
Re-seed anytime:
```powershell
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](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:
```bash
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:
```powershell
$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](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)
## Related docs
- [demo-user.md](demo-user.md) — credentials, API key, company counts
- [eprel.md](eprel.md) — EPREL step, export aliases, tests
- [status-and-gaps.md](status-and-gaps.md) — full gap list
- [go-live-checklist.md](go-live-checklist.md) — cutover gates
- Root [README.md](../README.md) — quick start
## Build smoke (reconcile)
```powershell
cd apps/api; go build ./...
cd ../web; npm run check
```
Expected: Go packages compile; `svelte-check` reports 0 errors / 0 warnings.