V2026_01_21_02__add_document_elements.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. -- 文档结构化元素表
  2. -- 存储从 Word/PDF 等文档中提取的结构化内容(段落、图片、表格)
  3. CREATE TABLE IF NOT EXISTS document_elements (
  4. id VARCHAR(64) PRIMARY KEY,
  5. document_id VARCHAR(64) NOT NULL,
  6. element_index INT NOT NULL, -- 元素在文档中的顺序
  7. element_type VARCHAR(32) NOT NULL, -- paragraph/heading/heading1-9/list_item/image/table/title/toc
  8. content TEXT, -- 文本内容(文本类型)
  9. style JSONB, -- 样式信息(字体、对齐、缩进等)
  10. -- 图片相关
  11. image_url VARCHAR(500), -- 图片访问URL
  12. image_path VARCHAR(500), -- 图片存储路径
  13. image_alt VARCHAR(255), -- 图片描述
  14. image_width INT, -- 图片宽度(像素)
  15. image_height INT, -- 图片高度(像素)
  16. image_format VARCHAR(16), -- 图片格式
  17. -- 表格相关
  18. table_index INT, -- 表格索引
  19. table_data JSONB, -- 表格数据(行列内容)
  20. table_row_count INT, -- 行数
  21. table_col_count INT, -- 列数
  22. table_text TEXT, -- 表格文本(用于搜索)
  23. -- 审计字段
  24. create_by VARCHAR(64),
  25. create_by_name VARCHAR(128),
  26. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  27. update_by VARCHAR(64),
  28. update_by_name VARCHAR(128),
  29. update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  30. );
  31. -- 索引
  32. CREATE INDEX IF NOT EXISTS idx_document_elements_document_id ON document_elements(document_id);
  33. CREATE INDEX IF NOT EXISTS idx_document_elements_type ON document_elements(element_type);
  34. CREATE INDEX IF NOT EXISTS idx_document_elements_order ON document_elements(document_id, element_index);
  35. -- 注释
  36. COMMENT ON TABLE document_elements IS '文档结构化元素表';
  37. COMMENT ON COLUMN document_elements.element_index IS '元素在文档中的顺序索引';
  38. COMMENT ON COLUMN document_elements.element_type IS '元素类型:paragraph/heading/image/table等';
  39. COMMENT ON COLUMN document_elements.style IS '样式信息JSON:{alignment, fontSize, bold, color等}';
  40. COMMENT ON COLUMN document_elements.table_data IS '表格数据JSON:[[{row,col,text,colSpan},...],...]';
  41. -- 更新 documents 表,添加结构化解析状态
  42. ALTER TABLE documents ADD COLUMN IF NOT EXISTS structured_status VARCHAR(20) DEFAULT 'pending';
  43. ALTER TABLE documents ADD COLUMN IF NOT EXISTS image_count INT DEFAULT 0;
  44. ALTER TABLE documents ADD COLUMN IF NOT EXISTS table_count INT DEFAULT 0;
  45. ALTER TABLE documents ADD COLUMN IF NOT EXISTS element_count INT DEFAULT 0;
  46. COMMENT ON COLUMN documents.structured_status IS '结构化解析状态:pending/completed/failed';
  47. COMMENT ON COLUMN documents.image_count IS '文档中的图片数量';
  48. COMMENT ON COLUMN documents.table_count IS '文档中的表格数量';
  49. COMMENT ON COLUMN documents.element_count IS '文档中的元素总数';