creation_knowledge.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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_<content_id>,同帖唯一,复用为 ingest source.id
  15. platform text, -- xiaohongshu 等
  16. url text, -- 原始链接
  17. raw jsonb, -- fetch_post_detail 原始响应
  18. extracted jsonb, -- extract_content 多模态产物
  19. screening jsonb, -- screen_post 结果 {passed,score,reason}
  20. stage text NOT NULL DEFAULT 'fetched', -- fetched/extracted/screened/split/done/rejected/failed
  21. created_at timestamptz NOT NULL DEFAULT now(),
  22. updated_at timestamptz NOT NULL DEFAULT now(),
  23. PRIMARY KEY (id)
  24. ) DISTRIBUTED BY (id);
  25. CREATE INDEX IF NOT EXISTS idx_ck_post_stage ON ck_post (stage);
  26. CREATE INDEX IF NOT EXISTS idx_ck_post_platform ON ck_post (platform);
  27. -- 每条知识片段一行:拆分+解构产物,以及组装好的 ingest payload(开发期的最终落点)
  28. CREATE TABLE IF NOT EXISTS ck_knowledge_item (
  29. id bigserial, -- 片段自增 ID
  30. post_id text NOT NULL, -- → ck_post.id(同帖多片段复用同一 source)
  31. item jsonb, -- 拆分结果 title/knowledge_types/what/why/how/evidence
  32. deconstruction jsonb, -- 解构结果 stages/scopes/reason
  33. ingest_payload jsonb, -- 组装后的 ingest 请求体(开发期最终产物)
  34. ingest_status text NOT NULL DEFAULT 'pending', -- pending(未发送) / ingested / failed
  35. knowledge_id text, -- ingest API 返回的知识 ID(上线后才有)
  36. created_at timestamptz NOT NULL DEFAULT now(),
  37. updated_at timestamptz NOT NULL DEFAULT now(),
  38. PRIMARY KEY (id)
  39. ) DISTRIBUTED BY (id);
  40. CREATE INDEX IF NOT EXISTS idx_ck_item_post ON ck_knowledge_item (post_id);
  41. CREATE INDEX IF NOT EXISTS idx_ck_item_status ON ck_knowledge_item (ingest_status);
  42. -- 回滚:DROP SCHEMA creation_knowledge CASCADE;