-- 已有库完成 004/005/006 后执行;最新空库基线包含此结构,不执行本文件。 -- 不用创建时间/升级时间冒充首次发布,不将功能历史计数分摊到资源。 BEGIN; SET LOCAL TIME ZONE 'UTC'; SET LOCAL lock_timeout = '5s'; SET LOCAL search_path = public, pg_catalog; ALTER TABLE public.worksheets ADD COLUMN first_published_at timestamptz(3); ALTER TABLE public.worksheet_resources ADD COLUMN first_published_at timestamptz(3), ADD COLUMN downloads bigint NOT NULL DEFAULT 0, ADD CONSTRAINT worksheet_resources_downloads_check CHECK (downloads >= 0); COMMENT ON COLUMN public.worksheets.first_published_at IS '首次公开发布时间;新功能由发布事务写入,重发/新增资源不重置;旧时间未知保持 NULL'; COMMENT ON COLUMN public.worksheets.is_new IS '旧版新品兼容标记;新功能新品由首次发布时间及时间窗口派生,不作为新业务权威值'; COMMENT ON COLUMN public.worksheets.is_hot IS '功能级人工运营推荐标记,不是下载排行榜计算结果,不自动传递给资源'; COMMENT ON COLUMN public.worksheets.downloads IS '功能累计成功保存次数;保留旧累计值,资源下载也计入,不等于资源计数总和'; COMMENT ON COLUMN public.worksheet_resources.first_published_at IS '内容首次公开发布时间;用于资源新品判断,草稿/重发不重置,未知旧时间保持 NULL'; COMMENT ON COLUMN public.worksheet_resources.downloads IS '内容累计成功保存次数;仅有可信资源归属的新事件递增,不分摊功能旧计数,不因个人日志删除回减'; COMMIT;