-- PR Отложенные посты (для одобрения перед публикацией) CREATE TABLE IF NOT EXISTS pr_scheduled_posts ( id BIGSERIAL PRIMARY KEY, title TEXT NOT NULL, content TEXT NOT NULL, channel_ids JSONB DEFAULT '[]', -- массив ID каналов из pr_smm_channels scheduled_at TIMESTAMPTZ NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'pending_approval', 'approved', 'rejected', 'edited', 'published')), topic_id BIGINT REFERENCES pr_post_topics(id) ON DELETE SET NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), created_by TEXT, approved_at TIMESTAMPTZ, approved_by TEXT, rejection_reason TEXT, edited_content TEXT, -- если статус edited, здесь новая версия published_at TIMESTAMPTZ ); CREATE INDEX IF NOT EXISTS idx_pr_scheduled_posts_scheduled ON pr_scheduled_posts(scheduled_at DESC); CREATE INDEX IF NOT EXISTS idx_pr_scheduled_posts_status ON pr_scheduled_posts(status); CREATE INDEX IF NOT EXISTS idx_pr_scheduled_posts_topic ON pr_scheduled_posts(topic_id); COMMENT ON TABLE pr_scheduled_posts IS 'Отложенные посты для одобрения перед публикацией';