-- DDL: shop_metric_targets
-- Tabela przechowuje targety/progi oceny metryk dla konkretnego sklepu i miesiąca.
-- Jeden rekord = jedna metryka + sklep + miesiąc + autor (admin lub consultant).
-- Przechowuje 3 wartości graniczne definiujące 4 poziomy oceny.
-- Kierunek oceny (lower_is_better) jest stały per metryka — zdefiniowany w MetricDefinitions.php.

CREATE TABLE shop_metric_targets (
    id              INT UNSIGNED      NOT NULL AUTO_INCREMENT,
    id_shop         INT UNSIGNED      NOT NULL,
    metric_key      VARCHAR(50)       NOT NULL,                        -- klucz metryki (np. employee_cost_pct)
    year            SMALLINT UNSIGNED NOT NULL,                        -- rok (np. 2026)
    month           TINYINT UNSIGNED  NOT NULL,                        -- miesiąc 1–12
    author_type     ENUM('admin','consultant') NOT NULL,               -- kto zdefiniował target
    author_id       INT UNSIGNED      NOT NULL,                        -- id użytkownika który zapisał
    threshold_1     DECIMAL(12,4)     NOT NULL,                        -- granica dobry/średni
    threshold_2     DECIMAL(12,4)     NOT NULL,                        -- granica średni/średnio zły
    threshold_3     DECIMAL(12,4)     NOT NULL,                        -- granica średnio zły/zły
    created_at      DATETIME          NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at      DATETIME          NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    PRIMARY KEY (id),

    -- Jeden rekord per metryka / sklep / miesiąc / autor
    UNIQUE KEY uq_target (id_shop, metric_key, year, month, author_type),

    KEY idx_shop_period   (id_shop, year, month),
    KEY idx_author        (author_type, author_id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

