Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
2.5 KiB
2.5 KiB
Descrybe v2 easy expansions
High-value, low-complexity catalog→sell expansions shipped without new DB tables.
Navigation groupings
Dashboard sidebar (primary + More):
| Area | Links |
|---|---|
| Primary | Dashboard, Products, Stores (/stores), Export, Billing |
| More → Marketing | Campaigns, Calendar, SEO, Brand, Reviews |
| More → Catalog | Categories, Attributes, Standard Fields |
| More → Ops | Processing, Settings, AI provider, Email sending, Admin |
Stores hub cards: WooCommerce, Shopify (sibling), Feed URL, CSV upload, Export/REST.
Connector contract: store-connectors.md.
Collision note
Email campaigns own /campaigns and /api/campaigns. Content calendar uses:
- UI:
/marketing/calendar - API:
GET/POST /api/marketing/calendar(+/api/v1/marketing/calendarfor API keys)
Do not mount content calendar under /api/v1/campaigns or /campaigns.
1. Content calendar stub
- UI:
/marketing/calendar - Presets: Black Friday (week around BF), Christmas (Dec 1–26), computed per year
- Persistence: Campaign meta is stored on the export feed
template._campaignJSON (no migration) - API:
GET /api/marketing/calendar?year=2026— presets + prepared campaigns for the companyPOST /api/marketing/calendar/prepare— body{ "preset_id": "black_friday" | "christmas", "year"?, "format"?: "csv"|"xml", "force_new"?: boolean }
2. Product quality score
- UI: Quality column on the products list (0–100 badge + tooltip of missing SEO/completeness checks)
- Weights: title 20, description 20, meta title 15, meta description 15, category 10, attributes 10, image 10
- Lib:
apps/api/internal/marketing/quality.go - API:
GET /api/products/quality(and/api/v1/products/quality) — paginated products withquality_score/quality_grade/quality_checks- Optional
?min_score=60 - Also exposed on
GET /api/products(processed) viaquality_score/quality_grade/quality_checks
3. One-click Prepare Black Friday
- Dashboard: “Prepare Black Friday” button creates (or reuses) a CSV export feed named
Black Friday {year}with Google Shopping-style default mappings and calendar dates intemplate._campaign - Also: Content Calendar cards call the same prepare endpoint
- Idempotent: Re-prepare returns the existing feed unless
force_newis set
Verification
cd apps/api && go test ./internal/marketing/ && go build ./...
cd apps/web && npm run check