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.
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
A1 Slovenija tenant seed (Postgres COPY archive, gzipped)
|
||||
|
||||
File: a1-demo-data.sql.gz
|
||||
Company id: 604f23a8-b66e-4b21-8b45-0d72b68f4790
|
||||
Legacy MySQL id: 97e1a309-3d23-4aa2-b518-8e8d7afdfec7
|
||||
|
||||
Source of truth for a clean local DB (2026-08-08 reseed):
|
||||
MySQL dump → C:\Users\Green Eclipse\Downloads\descrybe_new (1).sql
|
||||
Loaded into Laragon MySQL DB `descrybe_new`, then A1-only migrator
|
||||
(`-company 97e1a309-3d23-4aa2-b518-8e8d7afdfec7`) + seed-demo + user cleanup.
|
||||
See docs/migrate-from-descrybe-new.md and docs/demo-user.md.
|
||||
|
||||
Expected A1 snapshot (dump-faithful, no local QA/Iso pollution):
|
||||
companies=1 (A1 Slovenija only, plus internal __platform_settings__)
|
||||
users=3 (demo@descrybe.local, demo@descrybe.test, a1-primary@descrybe.local)
|
||||
memberships=3
|
||||
categories=119 (108 with AI prompts via overlay)
|
||||
attributes=303
|
||||
category_attributes=307
|
||||
input_feeds=12 / feed_mappings=11 / export_feeds=2
|
||||
raw_products=~25355 / processed_products=0 (demo seed clears processed)
|
||||
processing_jobs=0 / processing_job_products=0
|
||||
plan=A1 wallet total=2500 used=163 remaining=2337
|
||||
mapped coverage (typical): description ~98%, feed attrs ~99%, category ~17% (4330 dump-assigned)
|
||||
|
||||
Category assignment (dump -> PG):
|
||||
MySQL processed_products.category holds category unique_id (e.g. 46, 120).
|
||||
Feed XML / feed_mappings do NOT include a category field - assignment was
|
||||
historical processing output. Archive restores raw mapped_data (description,
|
||||
specs/attrs, category when present). seed-a1 then refreshes
|
||||
mapped_data.category from a MySQL dump when available.
|
||||
|
||||
Dump path (first match wins):
|
||||
1. -mysql-dump flag
|
||||
2. SEED_A1_MYSQL_DUMP
|
||||
3. Auto-detect: ~/Downloads/descrybe_new (1).sql or descrybe_new.sql
|
||||
|
||||
One-off without wipe:
|
||||
go run ./cmd/seed-a1 -mode backfill-categories
|
||||
|
||||
That also deletes Postman Elkotex fixture EANs (5905575903198, 6970995789942)
|
||||
from non-A1 tenants (Platform Demo must not mirror them).
|
||||
|
||||
Note: MySQL processed description/attributes are usually NULL; feed-origin
|
||||
original description + specs live on raw_products.mapped_data in the archive.
|
||||
A1 demo seed keeps processed=0 / jobs=0.
|
||||
|
||||
Who sees what:
|
||||
demo@descrybe.local � platform admin + membership on Platform Demo only
|
||||
(switch/impersonate to a1-primary to act on A1; do not use demo API key for A1)
|
||||
a1-primary@descrybe.local � A1 member only (same A1 catalog; no other tenants)
|
||||
|
||||
Category prompts overlay (committed JSON from legacy wp_product_categories):
|
||||
a1-category-prompts.json
|
||||
Applied automatically after every `npm run seed:a1` reimport (match by normalized
|
||||
category name; rewrites {""OPIS IZDELKA""} ? {{description}},
|
||||
{""STARO IME IZDELKA""} ? {{name}}). Skip with -skip-category-prompts, or re-apply
|
||||
without wipe:
|
||||
|
||||
go run ./cmd/seed-a1 -mode apply-category-prompts -file ../../scripts/seed/a1-demo-data.sql.gz
|
||||
|
||||
Normal use (loads DATABASE_URL from repo-root .env if unset):
|
||||
npm run seed:a1 # wipe A1-only rows, import archive, prompts + mapped category backfill
|
||||
npm run reimport:a1 # alias of seed:a1
|
||||
|
||||
Requires migrations already applied. Does not wipe other companies.
|
||||
Does not run export — it only imports scripts/seed/a1-demo-data.sql.gz.
|
||||
|
||||
A1 demo seed skips processed_products / processing_jobs (processed=0, jobs=0).
|
||||
Use -mode recover-jobs only when restoring legacy job history from a MySQL dump.
|
||||
feed_sync_jobs stay ephemeral and are not restored; raw_products.sync_job_id is
|
||||
exported as NULL for that reason. Archive is Postgres COPY text inside gzip, not
|
||||
MySQL dump SQL.
|
||||
|
||||
Full clean rebuild from MySQL dump (when archive is wrong / polluted):
|
||||
1. mysql: DROP/CREATE descrybe_new; stream-import the Adminer dump
|
||||
2. docker: DROP/CREATE postgres descrybe; goose up
|
||||
3. migrator -company <A1 legacy id> -resume -ensure-demo -skip-post-import
|
||||
4. migrator -domains jobs -resume
|
||||
5. go run ./cmd/seed-demo
|
||||
6. keep only demo + a1-primary memberships; delete orphan users / Iso test cos
|
||||
7. go run ./cmd/seed-a1 -mode apply-category-prompts
|
||||
8. npm run seed:a1:export # refresh a1-demo-data.sql.gz then commit
|
||||
|
||||
Export copies EVERY A1 processing_jobs / processing_job_products row (no LIMIT).
|
||||
If the archive only has a couple of jobs, live Postgres was missing history —
|
||||
recover from the MySQL dump first, then re-export:
|
||||
|
||||
set SEED_A1_MYSQL_DUMP=D:\path\descrybe_new.sql
|
||||
go run ./cmd/seed-a1 -mode recover-jobs
|
||||
npm run seed:a1:export
|
||||
|
||||
Maintainer only — regenerate the snapshot when live A1 data must be re-captured:
|
||||
npm run seed:a1:export # snapshot live A1 → a1-demo-data.sql.gz (then commit)
|
||||
Not part of the day-to-day reset workflow.
|
||||
|
||||
Support Knowledge articles (platform FAQ /admin/support/knowledge):
|
||||
support-kb-articles.json � product/user corpus (Agent 6)
|
||||
support-kb-articles-tech.json � technical/ops/admin corpus (Agent 7; tech-* slugs)
|
||||
Markdown sources for tech bodies (optional edit then regenerate JSON):
|
||||
apps/api/cmd/seed-support-kb/content/*.md
|
||||
Seed (from apps/api, DATABASE_URL set):
|
||||
go run ./cmd/seed-support-kb
|
||||
go run ./cmd/seed-support-kb -file ../../scripts/seed/support-kb-articles-tech.json
|
||||
Idempotent ON CONFLICT (slug). Do not reuse product slugs for tech articles.
|
||||
Reference in New Issue
Block a user