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);