-- DDL: franchisee_employee_evaluation
-- Tabela przechowuje oceny pracownicze powiązane z konkretnymi wpisami harmonogramu.
-- Nadmiarowe pola (evaluated_date, start_hour, end_hour) celowo zachowane —
-- zapewniają integralność historyczną nawet po usunięciu wpisu z harmonogramu.

CREATE TABLE franchisee_employee_evaluation (
    id             INT UNSIGNED     NOT NULL AUTO_INCREMENT,
    id_schedule    INT UNSIGNED     NOT NULL,           -- FK → franchisee_employee_schedule.id (opcjonalna, soft)
    id_employee    INT UNSIGNED     NOT NULL,           -- FK → franchisee_employee.id (redundantne dla historii)
    evaluated_date DATE             NOT NULL,           -- kopia work_date ze schedule (redundantna)
    start_hour     TIME             NOT NULL,           -- kopia start_hour ze schedule (redundantna)
    end_hour       TIME             NOT NULL,           -- kopia end_hour ze schedule (redundantna)
    rating         TINYINT UNSIGNED NOT NULL,           -- 1–5 (gwiazdki)
    note           TEXT             NULL,               -- opcjonalna notatka menadżera
    evaluated_by   INT UNSIGNED     NOT NULL,           -- id użytkownika panelu który wystawił ocenę
    created_at     DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at     DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    PRIMARY KEY (id),

    -- Jedna ocena na zmianę (wpis harmonogramu)
    UNIQUE KEY uq_schedule (id_schedule),

    KEY idx_employee_date (id_employee, evaluated_date),
    KEY idx_evaluated_date (evaluated_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

