Master data (ingested)
Catalog and transactional entities are populated by the data platform’s ETL from POS systems (Polaris, Kezia) and are read-only in the app. They are organization-scoped.| Entity | Nature |
|---|---|
| Shops, brands, products, product variants, collections, suppliers | Catalog dimensions |
| Inventory items | Product × shop stock identity |
| Sales lines, order lines, movement lines | Transactional facts |
| Stock ledger, stock snapshot | Stock over time / point-in-time |
Analytics layers
The data platform exposes these as silver (cleaned/normalized) and gold (business-ready) tables — e.g.fact_sales_lines, fact_order_lines,
fact_movement_lines, stock_ledger, stock_snapshot, the dim_* dimensions,
*_shop_analytics summaries, sales_forecasts, and decision_vector. The app reads
these for dashboards, KPIs, search, alerts, and recommendations.
Because catalog data is ingested, you don’t create shops/products/variants in the app —
they arrive through ingestion. See the Data layer.
App-managed data (created in Solya)
Everything you create lives in PostgreSQL and is org-scoped: inventory plans and their items, business rules and rulesets, budget envelopes, size curves, markdown calendars, supplier constraints, approval/return policies, org lists, alerts, tags and tagging rules, workflows, settings, navigation templates, and the audit log. Each new table documents how its data is populated, modified, and access-controlled.Plan status enumerations
The exact statuses per plan type (used by the API and surfaced in the UI):| Plan | Statuses |
|---|---|
| Restock | DRAFT → VALIDATED → SENT → RECEIVED → CLOSED |
| Rebalance | DRAFT → VALIDATED → SENT |
| Markdown | DRAFT → VALIDATED → CLOSED |
| Pre-season | DRAFT → VALIDATED → SENT → CLOSED |
| Supplier return | DRAFT → SENT → CREDITED → CLOSED |
| Supplier exchange | DRAFT → PROPOSED → AGREED → IN_TRANSIT → SETTLED → CLOSED |
TO_REVIEW and READY_FOR_ORDER. Supplier-side plans
carry extra enumerations — return reason codes (e.g. defect, transit damage, wrong
SKU/quantity, recall, QC fail, other), return source types (restock, pre-season), and
exchange sides (return, receive).
These status values are stable identifiers you can branch on. The conceptual lifecycle
(reversible transitions, decision moments, approvals) is described in
Inventory plans → lifecycle.

