-- ----------------------------
-- Table structure for cm_contract_template
-- 合同模板表
-- ----------------------------
CREATE TABLE cm_contract_template (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '模板ID',
    template_code VARCHAR(50) NOT NULL UNIQUE COMMENT '模板编码',
    template_name VARCHAR(200) NOT NULL COMMENT '模板名称',
    template_type VARCHAR(20) NOT NULL COMMENT '模板类型: SALE-销售, PURCHASE-采购, LEASE-租赁, SERVICE-服务, PROJECT-项目',
    contract_category VARCHAR(20) NOT NULL COMMENT '合同分类: INCOME-收入, EXPENSE-支出',
    business_domain VARCHAR(50) COMMENT '业务领域',
    version VARCHAR(20) NOT NULL COMMENT '版本号',
    status VARCHAR(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态: DRAFT-草稿, ACTIVE-生效, INACTIVE-失效',
    
    -- 模板配置
    description TEXT COMMENT '模板描述',
    component_config JSON COMMENT '组件配置',
    field_config JSON COMMENT '字段配置',
    validation_rules JSON COMMENT '验证规则',
    
    -- 版本控制
    base_template_id BIGINT COMMENT '基于哪个模板创建',
    effective_date DATE COMMENT '生效日期',
    expiration_date DATE COMMENT '失效日期',
    
    -- 系统字段
    created_by BIGINT NOT NULL COMMENT '创建人',
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_by BIGINT COMMENT '更新人',
    updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    is_deleted TINYINT(1) DEFAULT 0 COMMENT '删除标志',
    
    INDEX idx_template_type (template_type),
    INDEX idx_status (status),
    INDEX idx_business_domain (business_domain)
) COMMENT='合同模板表';

CREATE TABLE template_component (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关系ID',
    template_id BIGINT NOT NULL COMMENT '模板ID',
    component_code VARCHAR(50) NOT NULL COMMENT '组件编码',
    component_type VARCHAR(50) NOT NULL COMMENT '组件类型: BASIC-基础信息, PARTY-合同主体, SUBJECT-标的物, BILLING-计费, TERMS-商务条款, RECEIVABLE-应收明细, DOCUMENT-文档',
    display_order INT NOT NULL DEFAULT 0 COMMENT '显示顺序',
    is_required TINYINT(1) DEFAULT 1 COMMENT '是否必填',
    is_visible TINYINT(1) DEFAULT 1 COMMENT '是否可见',
    is_editable TINYINT(1) DEFAULT 1 COMMENT '是否可编辑',
    
    -- 组件配置
    component_config JSON COMMENT '组件配置',
    data_rules JSON COMMENT '数据规则',
    ui_config JSON COMMENT 'UI配置',
    
    -- 关联关系
    parent_component_code VARCHAR(50) COMMENT '父组件编码',
    dependency_rules JSON COMMENT '依赖规则',
    
    -- 系统字段
    created_by BIGINT NOT NULL COMMENT '创建人',
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_by BIGINT COMMENT '更新人',
    updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    INDEX idx_template_id (template_id),
    INDEX idx_component_code (component_code),
    UNIQUE KEY uk_template_component (template_id, component_code),
    FOREIGN KEY (template_id) REFERENCES contract_template(id) ON DELETE CASCADE
) COMMENT='模板组件关系表';