creation_knowledge.sql 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. -- 创作知识 · 过程库建表 DDL
  2. -- 目标实例:open_aigc(阿里云 AnalyticDB for PostgreSQL / Greenplum 7.0.0,PG12 内核,新加坡)
  3. -- 连接:OPEN_AIGC_PG_*(用户 aiddit_aigc 已确认有 CREATE 权限)
  4. --
  5. -- Greenplum 注意事项:
  6. -- 1. 每张表需 DISTRIBUTED BY;主键/唯一键必须包含分布列。
  7. -- 2. 不依赖外键强约束(Greenplum 不强制 FK),post_id ↔ ck_post.id 的关系由应用维护。
  8. -- 3. updated_at 由应用在更新时写入(不用触发器,保持简单)。
  9. -- 4. 本实例无 pgvector;embedding 一期不做,需要时另议(非 pgvector 路线)。
  10. CREATE SCHEMA IF NOT EXISTS creation_knowledge;
  11. SET search_path TO creation_knowledge;
  12. -- 每帖一行:各环节产物存 JSONB,stage 记录处理到哪一步
  13. CREATE TABLE IF NOT EXISTS ck_post (
  14. id text NOT NULL, -- xhs_/dy_/ks_/bili_<content_id>,同帖唯一,复用为 ingest source.id
  15. platform text, -- xiaohongshu/douyin/kuaishou/bilibili
  16. url text, -- 原始链接
  17. raw jsonb, -- fetch_post_detail 原始响应
  18. cards jsonb, -- 统一卡片列表 [{index,kind,url,timestamp,start,end}](图/帧/段)
  19. extracted jsonb, -- extract_content 多模态产物
  20. screening jsonb, -- screen_post 结果 {passed,score,reason}
  21. stage text NOT NULL DEFAULT 'fetched', -- fetched/extracted/screened/split/done/rejected/failed/skipped
  22. created_at timestamptz NOT NULL DEFAULT now(),
  23. updated_at timestamptz NOT NULL DEFAULT now(),
  24. PRIMARY KEY (id)
  25. ) DISTRIBUTED BY (id);
  26. CREATE INDEX IF NOT EXISTS idx_ck_post_stage ON ck_post (stage);
  27. CREATE INDEX IF NOT EXISTS idx_ck_post_platform ON ck_post (platform);
  28. -- 每条知识片段一行:拆分+解构产物,以及组装好的 ingest payload(开发期的最终落点)
  29. CREATE TABLE IF NOT EXISTS ck_knowledge_item (
  30. id bigserial, -- 片段自增 ID
  31. post_id text NOT NULL, -- → ck_post.id(同帖多片段复用同一 source)
  32. item jsonb, -- 拆分结果 title/knowledge_types/what/why/how/evidence
  33. deconstruction jsonb, -- 解构结果 stages/scopes/reason
  34. ingest_payload jsonb, -- 组装后的 ingest 请求体(开发期最终产物)
  35. ingest_status text NOT NULL DEFAULT 'pending', -- pending(未发送) / ingested / failed
  36. knowledge_id text, -- ingest API 返回的知识 ID(上线后才有)
  37. created_at timestamptz NOT NULL DEFAULT now(),
  38. updated_at timestamptz NOT NULL DEFAULT now(),
  39. PRIMARY KEY (id)
  40. ) DISTRIBUTED BY (id);
  41. CREATE INDEX IF NOT EXISTS idx_ck_item_post ON ck_knowledge_item (post_id);
  42. CREATE INDEX IF NOT EXISTS idx_ck_item_status ON ck_knowledge_item (ingest_status);
  43. -- 迁移(表已存在时补列,幂等):卡片溯源
  44. ALTER TABLE ck_post ADD COLUMN IF NOT EXISTS cards jsonb;
  45. -- 回滚:DROP SCHEMA creation_knowledge CASCADE;