-- 文档结构化元素表 -- 存储从 Word/PDF 等文档中提取的结构化内容(段落、图片、表格) CREATE TABLE IF NOT EXISTS document_elements ( id VARCHAR(64) PRIMARY KEY, document_id VARCHAR(64) NOT NULL, element_index INT NOT NULL, -- 元素在文档中的顺序 element_type VARCHAR(32) NOT NULL, -- paragraph/heading/heading1-9/list_item/image/table/title/toc content TEXT, -- 文本内容(文本类型) style JSONB, -- 样式信息(字体、对齐、缩进等) -- 图片相关 image_url VARCHAR(500), -- 图片访问URL image_path VARCHAR(500), -- 图片存储路径 image_alt VARCHAR(255), -- 图片描述 image_width INT, -- 图片宽度(像素) image_height INT, -- 图片高度(像素) image_format VARCHAR(16), -- 图片格式 -- 表格相关 table_index INT, -- 表格索引 table_data JSONB, -- 表格数据(行列内容) table_row_count INT, -- 行数 table_col_count INT, -- 列数 table_text TEXT, -- 表格文本(用于搜索) -- 审计字段 create_by VARCHAR(64), create_by_name VARCHAR(128), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_by VARCHAR(64), update_by_name VARCHAR(128), update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 索引 CREATE INDEX IF NOT EXISTS idx_document_elements_document_id ON document_elements(document_id); CREATE INDEX IF NOT EXISTS idx_document_elements_type ON document_elements(element_type); CREATE INDEX IF NOT EXISTS idx_document_elements_order ON document_elements(document_id, element_index); -- 注释 COMMENT ON TABLE document_elements IS '文档结构化元素表'; COMMENT ON COLUMN document_elements.element_index IS '元素在文档中的顺序索引'; COMMENT ON COLUMN document_elements.element_type IS '元素类型:paragraph/heading/image/table等'; COMMENT ON COLUMN document_elements.style IS '样式信息JSON:{alignment, fontSize, bold, color等}'; COMMENT ON COLUMN document_elements.table_data IS '表格数据JSON:[[{row,col,text,colSpan},...],...]'; -- 更新 documents 表,添加结构化解析状态 ALTER TABLE documents ADD COLUMN IF NOT EXISTS structured_status VARCHAR(20) DEFAULT 'pending'; ALTER TABLE documents ADD COLUMN IF NOT EXISTS image_count INT DEFAULT 0; ALTER TABLE documents ADD COLUMN IF NOT EXISTS table_count INT DEFAULT 0; ALTER TABLE documents ADD COLUMN IF NOT EXISTS element_count INT DEFAULT 0; COMMENT ON COLUMN documents.structured_status IS '结构化解析状态:pending/completed/failed'; COMMENT ON COLUMN documents.image_count IS '文档中的图片数量'; COMMENT ON COLUMN documents.table_count IS '文档中的表格数量'; COMMENT ON COLUMN documents.element_count IS '文档中的元素总数';