-- 文档结构化元素表
-- 存储从 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 '文档中的元素总数';
