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,73 @@
|
||||
# Feature checklist (phases A–E)
|
||||
|
||||
Short parity checklist for Descrybe v2. Detailed gaps: **[status-and-gaps.md](status-and-gaps.md)**. Cutover: [cutover.md](cutover.md). Schema: [schema-map.md](schema-map.md).
|
||||
|
||||
Legend: `[x]` done · `[~]` partial/stub · `[ ]` missing
|
||||
|
||||
## Phase 0 — Scaffold
|
||||
|
||||
- [x] Monorepo: `apps/api`, `apps/web`, docs/scripts (migrator under `apps/api/cmd/migrator`)
|
||||
- [x] Docker Compose PostgreSQL 16
|
||||
- [x] goose migrations + sqlc generate
|
||||
- [x] `cmd/api`, `cmd/worker`, `cmd/migrator`
|
||||
- [x] SvelteKit shell + `PUBLIC_API_URL` + CSRF-aware client
|
||||
- [x] ID map JSON format documented ([schema-map.md](schema-map.md))
|
||||
- [ ] CI (`go test`, sqlc check, `svelte-check`)
|
||||
- [ ] Automated tests
|
||||
|
||||
## Phase A — Platform
|
||||
|
||||
- [x] Email/password auth (argon2id), login/logout, session cookies (scs)
|
||||
- [x] Invite accept + set-password (`must_set_password`)
|
||||
- [x] Companies + memberships (replace Clerk orgs / profiles)
|
||||
- [~] Team invite / revoke / remove member (invite + remove yes; revoke/list pending incomplete)
|
||||
- [~] Settings: profile, company (language, merge-by-GTIN) — company yes; profile update thin
|
||||
- [~] API keys CRUD (dashboard keys yes; **`/api/v1` product API missing**)
|
||||
- [~] Billing/usage read + credit consume (overview + consume yes; plans/cycles/cron incomplete)
|
||||
- [ ] `is_platform_admin` gate + migrator from `admin_users`
|
||||
- [x] Health: `/healthz` + `/readyz` (Postgres `pool.Ping`)
|
||||
- [x] Svelte: login, accept-invite, settings, billing overview, API keys
|
||||
- [~] Migrator: companies, users, memberships, plans (+ dry-run) — needs real MySQL validation
|
||||
- [ ] Invite / set-password emails (SMTP)
|
||||
|
||||
## Phase B — Catalog
|
||||
|
||||
- [~] Categories tree + CSV upload (CRUD + formulas API; no tree UI / CSV)
|
||||
- [~] Attributes hierarchy + category links (CRUD; linking UI incomplete)
|
||||
- [~] Custom variables + title/description formula editors (API yes; rich UI missing)
|
||||
- [~] Products list/search/edit (API list/get/patch; UI basic)
|
||||
- [ ] File uploads (products / EANs) + object storage
|
||||
- [~] Migrator: categories, attributes, variables, products (best-effort; files incomplete)
|
||||
|
||||
## Phase C — Feeds / export
|
||||
|
||||
- [~] Input feeds (URL / file / FTP), mapping, schema extraction (CRUD + mapping JSON; sync/FTP/extract missing)
|
||||
- [~] Sync jobs via River (DB job row stub; River not wired)
|
||||
- [~] Export feed builder (XML/CSV) + public URLs (create + stub body)
|
||||
- [ ] Preview APIs
|
||||
- [~] Migrator: feeds, export feeds (mappings incomplete)
|
||||
|
||||
## Phase D — AI processing
|
||||
|
||||
- [~] Pipeline workers: categorize → attributes → enhance (**stub** marks processed)
|
||||
- [~] Credits, rate limits, cancel/retry (credits + cancel yes; rate limits/retry incomplete)
|
||||
- [ ] OpenAI / Pinecone behind interfaces
|
||||
- [~] Job controls UI (list/start/cancel basic; no admin visibility)
|
||||
|
||||
## Phase E — WooCommerce + admin / cutover
|
||||
|
||||
- [~] WooCommerce sync (config only; test/sync stubs)
|
||||
- [ ] Admin: users, billing, jobs, stuck cleanup
|
||||
- [ ] Final ETL verification + count reports on real data
|
||||
- [ ] Cutover runbook executed ([cutover.md](cutover.md))
|
||||
- [ ] Clerk decommissioned; MySQL retained 30 days
|
||||
|
||||
## Suggested next milestones
|
||||
|
||||
1. Validate migrator `-dry-run` on production MySQL dump
|
||||
2. Implement real feed sync (URL + CSV)
|
||||
3. Implement real export XML/CSV
|
||||
4. AI pipeline MVP behind interfaces
|
||||
5. Port `/api/v1` for existing API clients
|
||||
6. Catalog CSV + formula UI + product edit parity
|
||||
7. Admin + Woo (if needed) → cutover
|
||||
Reference in New Issue
Block a user