Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
74 lines
3.4 KiB
Markdown
74 lines
3.4 KiB
Markdown
# 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
|