-- PR График публикации (календарь тем для постов) CREATE TABLE IF NOT EXISTS pr_post_topics ( id BIGSERIAL PRIMARY KEY, title TEXT NOT NULL, description TEXT, scheduled_date DATE, -- дата планируемой публикации (может быть NULL для старых записей) month VARCHAR(7) NOT NULL, -- формат YYYY-MM для фильтрации status VARCHAR(20) NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'pending_approval', 'approved', 'rejected')), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), created_by TEXT, approved_at TIMESTAMPTZ, approved_by TEXT, rejection_reason TEXT, created_at_month VARCHAR(7) GENERATED ALWAYS AS (TO_CHAR(created_at, 'YYYY-MM')) STORED ); CREATE INDEX IF NOT EXISTS idx_pr_post_topics_month ON pr_post_topics(month DESC); CREATE INDEX IF NOT EXISTS idx_pr_post_topics_scheduled_date ON pr_post_topics(scheduled_date); CREATE INDEX IF NOT EXISTS idx_pr_post_topics_status ON pr_post_topics(status); COMMENT ON TABLE pr_post_topics IS 'График публикации (календарь тем) - план публикаций на месяц. По этим темам создаются посты с контентом.';