Planning Grid
The main planning grid — the core of ItemSmart. Column definitions, KPI formulas, edit workflow, saved views.
4 screens · 14 configs
Grid Columns & Layout
Defines the full column structure of the planning grid: hierarchy, KPIs, timeframe splits.
Full AG-Grid column definition. Contains column_generation_order, kpi_column_definitions, version_column_config.
Order of column groups: checkbox → hierarchy → product_attributes → plan_version → timeframe.
Default KPI tree structure for the grid column selector.
Column definition for the pivot (flip) view. KPIs as rows instead of columns.
Internal test variant of pivot view.
Max personal views per user (50) and max global views (100).
KPI Formulas
SQL formulas for every KPI in the planning grid. Trusted SQL injected into ClickHouse queries.
Every KPI: SQL formula, aggregation type, dependencies, display metadata. TRUSTED SQL.
Human-readable descriptions for each KPI shown as info icons.
Computed product attributes shown as columns (e.g. brand count, unique-or-count patterns).
JSON array of KPI codes that users can directly edit in the grid.
How each KPI is recalculated when IAF data changes.
Product Lifecycle
Controls how product launch/exit dates affect editability and visibility.
Launch/exit date columns, edit window, and which KPI determines if a row has data.
Edit Panels (Bulk Edit & Match-With)
Side-panel form schemas for the Planning Grid's Bulk Edit and Match-With features. These are UI definitions (ui_definitions table) served via a special planning-grid endpoint that injects date range context.
Form schema for the Bulk Edit side panel on the Planning Grid. Defines all editable fields (KPIs, time period selectors, grand total toggle) shown when a user selects rows and clicks 'Bulk Edit'. The BE injects minDate/maxDate/defaultRange from globalFilters.plan_period before returning to FE.
Form schema for the Match-With side panel on the Planning Grid. Used when mapping a new SKU to a historical SKU for demand transfer. Defines cascading fields (time period, hierarchy selection) with isCascading=true for dependent dropdowns. The BE injects date ranges before returning.