CREATE TABLE dispute_timeline
(
    id         BIGINT PRIMARY KEY,
    dispute_id BIGINT      NOT NULL REFERENCES disputes (id),
    event_type VARCHAR(30) NOT NULL,
    actor_id   BIGINT,
    actor_name VARCHAR(100),
    details    JSONB,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),

    CONSTRAINT chk_event_type CHECK (event_type IN ('created', 'response', 'reviewing', 'resolved', 'appealed'))
);

CREATE INDEX idx_timeline_dispute ON dispute_timeline (dispute_id, created_at);
CREATE INDEX idx_timeline_dispute_created ON dispute_timeline (dispute_id, created_at);
CREATE INDEX idx_timeline_details ON dispute_timeline USING gin(details);