-- 创建数据订单表
-- 用于记录用户提交的数据需求订单

CREATE TABLE IF NOT EXISTS public.data_orders (
    id SERIAL PRIMARY KEY,
    
    -- 订单基本信息
    order_no VARCHAR(50) NOT NULL UNIQUE,  -- 订单编号，格式：DO + 年月日 + 4位序号
    title VARCHAR(200) NOT NULL,  -- 订单标题
    description TEXT NOT NULL,  -- 需求描述
    
    -- LLM 提取结果
    extracted_domains JSONB,  -- 提取的业务领域列表
    extracted_fields JSONB,   -- 提取的数据字段列表
    extraction_purpose TEXT,  -- 提取的数据用途
    
    -- 图谱分析结果
    graph_analysis JSONB,  -- 连通性分析结果
    can_connect BOOLEAN,   -- 是否可连通
    connection_path JSONB, -- 连通路径
    
    -- 状态管理
    -- pending-待处理, analyzing-分析中, processing-加工中,
    -- completed-完成, rejected-驳回, need_supplement-待补充,
    -- manual_review-待人工处理, updated-已更新
    status VARCHAR(50) NOT NULL DEFAULT 'pending',
    
    reject_reason TEXT,  -- 驳回原因
    
    -- 关联数据
    result_product_id INTEGER,  -- 生成的数据产品ID
    result_dataflow_id INTEGER, -- 生成的数据流ID
    
    -- 审计字段
    created_by VARCHAR(100) NOT NULL DEFAULT 'user',
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    processed_by VARCHAR(100),  -- 处理人
    processed_at TIMESTAMP      -- 处理时间
);

-- 创建索引
CREATE INDEX IF NOT EXISTS idx_data_orders_order_no ON public.data_orders(order_no);
CREATE INDEX IF NOT EXISTS idx_data_orders_status ON public.data_orders(status);
CREATE INDEX IF NOT EXISTS idx_data_orders_created_at ON public.data_orders(created_at DESC);
CREATE INDEX IF NOT EXISTS idx_data_orders_created_by ON public.data_orders(created_by);

-- 添加表注释
COMMENT ON TABLE public.data_orders IS '数据订单表，记录用户提交的数据需求订单';
COMMENT ON COLUMN public.data_orders.order_no IS '订单编号，格式：DO + 年月日 + 4位序号，如 DO202412290001';
COMMENT ON COLUMN public.data_orders.title IS '订单标题';
COMMENT ON COLUMN public.data_orders.description IS '需求描述，用户输入的数据需求详情';
COMMENT ON COLUMN public.data_orders.extracted_domains IS 'LLM 提取的业务领域列表，JSON 数组格式';
COMMENT ON COLUMN public.data_orders.extracted_fields IS 'LLM 提取的数据字段列表，JSON 数组格式';
COMMENT ON COLUMN public.data_orders.extraction_purpose IS 'LLM 提取的数据用途描述';
COMMENT ON COLUMN public.data_orders.graph_analysis IS '图谱连通性分析结果，包含匹配的节点和连接信息';
COMMENT ON COLUMN public.data_orders.can_connect IS '是否可通过共同字段连通';
COMMENT ON COLUMN public.data_orders.connection_path IS '连通路径信息，包含可用于 JOIN 的字段';
COMMENT ON COLUMN public.data_orders.status IS '订单状态：pending/analyzing/processing/completed/rejected/need_supplement/manual_review/updated';
COMMENT ON COLUMN public.data_orders.reject_reason IS '驳回原因';
COMMENT ON COLUMN public.data_orders.result_product_id IS '生成的数据产品ID，关联 data_products 表';
COMMENT ON COLUMN public.data_orders.result_dataflow_id IS '生成的数据流ID，关联 Neo4j 中的 DataFlow 节点';
COMMENT ON COLUMN public.data_orders.created_by IS '创建人';
COMMENT ON COLUMN public.data_orders.created_at IS '创建时间';
COMMENT ON COLUMN public.data_orders.updated_at IS '更新时间';
COMMENT ON COLUMN public.data_orders.processed_by IS '处理人';
COMMENT ON COLUMN public.data_orders.processed_at IS '处理时间';

