-- ============================================
-- XL监狱综合管理平台 - 数据库迁移脚本 V1
-- 版本: 1.0
-- 日期: 2026-01-21
-- 说明: 基于实体类DO生成，包含所有表的完整字段定义
-- ============================================

-- 开启外键检查（可选，根据需求调整）
SET FOREIGN_KEY_CHECKS = 0;

-- ============================================
-- 1. 罪犯信息表 (prison_prisoner)
-- ============================================
DROP TABLE IF EXISTS `prison_prisoner`;
CREATE TABLE IF NOT EXISTS `prison_prisoner` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '罪犯ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `name` varchar(50) NOT NULL COMMENT '姓名',
    `gender` tinyint NOT NULL COMMENT '性别：1-男 2-女',
    `birthday` date DEFAULT NULL COMMENT '出生日期',
    `id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
    `ethnicity` varchar(50) DEFAULT NULL COMMENT '民族',
    `native_place` varchar(100) DEFAULT NULL COMMENT '籍贯',
    `education` tinyint DEFAULT NULL COMMENT '文化程度：1-文盲 2-小学 3-初中 4-高中 5-中专 6-大专 7-本科 8-硕士 9-博士',
    `occupation` varchar(50) DEFAULT NULL COMMENT '入狱前职业',
    `address` varchar(500) DEFAULT NULL COMMENT '家庭住址',
    `crime` varchar(200) NOT NULL COMMENT '罪名',
    `sentence_years` int DEFAULT 0 COMMENT '刑期（年）',
    `sentence_months` int DEFAULT 0 COMMENT '刑期（月）',
    `life_imprisonment` tinyint DEFAULT 0 COMMENT '是否无期：0-否 1-是',
    `death_sentence_reprieve` tinyint DEFAULT 0 COMMENT '是否死缓：0-否 1-是',
    `court_name` varchar(100) DEFAULT NULL COMMENT '判决法院',
    `judgment_date` date DEFAULT NULL COMMENT '判决日期',
    `judgment_no` varchar(50) DEFAULT NULL COMMENT '判决书编号',
    `original_sentence` varchar(100) DEFAULT NULL COMMENT '原判刑期',
    `imprisonment_date` date DEFAULT NULL COMMENT '入狱日期',
    `release_date` date DEFAULT NULL COMMENT '释放日期',
    `release_type` tinyint DEFAULT 0 COMMENT '释放类型：1-刑满 2-假释 3-暂予监外执行 4-减刑 5-移交 6-死亡',
    `release_reason` varchar(500) DEFAULT NULL COMMENT '释放原因',
    `photo` varchar(512) DEFAULT NULL COMMENT '照片URL',
    `supervision_level` tinyint DEFAULT 2 COMMENT '监管等级：1-严管 2-普管 3-宽管',
    `risk_level` tinyint DEFAULT 1 COMMENT '风险等级：1-低风险 2-中风险 3-高风险 4-极高风险',
    `prison_area_id` bigint DEFAULT NULL COMMENT '监区ID',
    `sub_area_id` bigint DEFAULT NULL COMMENT '分区ID',
    `prison_cell_id` bigint DEFAULT NULL COMMENT '监室ID',
    `marital_status` tinyint DEFAULT NULL COMMENT '婚姻状态：1-未婚 2-已婚 3-离异 4-丧偶',
    `crime_type` varchar(100) DEFAULT NULL COMMENT '罪名类型',
    `sentence` varchar(100) DEFAULT NULL COMMENT '刑期',
    `children` varchar(500) DEFAULT NULL COMMENT '子女情况',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-在押 2-已释放 3-已死亡 4-假释',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_prisoner_no` (`prisoner_no`, `tenant_id`),
    KEY `idx_name` (`name`),
    KEY `idx_id_card` (`id_card`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='罪犯信息表';

-- ============================================
-- 2. 监区信息表 (prison_area)
-- ============================================
DROP TABLE IF EXISTS `prison_area`;
CREATE TABLE IF NOT EXISTS `prison_area` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '监区ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `name` varchar(50) NOT NULL COMMENT '监区名称',
    `code` varchar(50) NOT NULL COMMENT '监区编码',
    `type` tinyint DEFAULT NULL COMMENT '监区类型：1-普通监区 2-严管监区 3-集训监区 4-出监监区 5-医院 6-禁闭室',
    `parent_id` bigint DEFAULT 0 COMMENT '父级ID，0表示顶级监区',
    `level` tinyint DEFAULT 1 COMMENT '级别：1-监区(大队) 2-分监区(中队)',
    `capacity` int DEFAULT NULL COMMENT '容纳人数',
    `current_count` int DEFAULT 0 COMMENT '当前人数',
    `sort` int DEFAULT 0 COMMENT '排序',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`, `tenant_id`),
    KEY `idx_sort` (`sort`),
    KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB COMMENT='监区信息表';

-- ============================================
-- 3. 监室信息表 (prison_cell)
-- ============================================
DROP TABLE IF EXISTS `prison_cell`;
CREATE TABLE IF NOT EXISTS `prison_cell` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '监室ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `area_id` bigint NOT NULL COMMENT '所属监区ID',
    `name` varchar(50) NOT NULL COMMENT '监室名称',
    `code` varchar(50) NOT NULL COMMENT '监室编码',
    `capacity` int DEFAULT NULL COMMENT '床位数量',
    `current_count` int DEFAULT 0 COMMENT '当前人数',
    `sort` int DEFAULT 0 COMMENT '排序',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`, `tenant_id`),
    KEY `idx_area_id` (`area_id`)
) ENGINE=InnoDB COMMENT='监室信息表';

-- ============================================
-- 4. 计分考核表 (prison_score)
-- ============================================
DROP TABLE IF EXISTS `prison_score`;
CREATE TABLE IF NOT EXISTS `prison_score` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `year` int NOT NULL COMMENT '考核年份',
    `month` int NOT NULL COMMENT '考核月份',
    `base_score` decimal(10,2) DEFAULT 0.00 COMMENT '基础分',
    `reward_score` decimal(10,2) DEFAULT 0.00 COMMENT '加分',
    `penalty_score` decimal(10,2) DEFAULT 0.00 COMMENT '扣分',
    `total_score` decimal(10,2) DEFAULT 0.00 COMMENT '总分',
    `level` tinyint DEFAULT NULL COMMENT '考核等级：1-优秀 2-良好 3-合格 4-不合格',
    `assessor_id` bigint DEFAULT NULL COMMENT '考核人ID',
    `assessor_name` varchar(50) DEFAULT NULL COMMENT '考核人姓名',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-待审核 2-已通过 3-已驳回',
    `prison_area_id` bigint DEFAULT NULL COMMENT '监区ID',
    `prison_cell_id` bigint DEFAULT NULL COMMENT '监室ID',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_year_month` (`year`, `month`)
) ENGINE=InnoDB COMMENT='计分考核表';

-- ============================================
-- 5. 考核规则配置表 (prison_score_rule)
-- ============================================
DROP TABLE IF EXISTS `prison_score_rule`;
CREATE TABLE IF NOT EXISTS `prison_score_rule` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '规则ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `category` tinyint NOT NULL COMMENT '类别：1-劳动改造 2-教育改造 3-日常行为 4-卫生纪律 5-加分项 6-扣分项',
    `item_name` varchar(100) NOT NULL COMMENT '项目名称',
    `item_code` varchar(50) NOT NULL COMMENT '项目编码（唯一）',
    `score` decimal(10,2) NOT NULL COMMENT '分值（加分正数，扣分负数）',
    `max_daily_score` decimal(10,2) DEFAULT NULL COMMENT '日最高分限制',
    `max_monthly_score` decimal(10,2) DEFAULT NULL COMMENT '月最高分限制',
    `description` varchar(500) DEFAULT NULL COMMENT '规则说明',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `sort` int DEFAULT 0 COMMENT '排序',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_item_code` (`item_code`, `tenant_id`),
    KEY `idx_category` (`category`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='考核规则配置表';

-- ============================================
-- 6. 考核记录明细表 (prison_score_detail)
-- ============================================
DROP TABLE IF EXISTS `prison_score_detail`;
CREATE TABLE IF NOT EXISTS `prison_score_detail` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `record_date` date NOT NULL COMMENT '记录日期',
    `rule_id` bigint DEFAULT NULL COMMENT '规则ID',
    `score` decimal(10,2) NOT NULL COMMENT '得分',
    `score_type` tinyint NOT NULL COMMENT '类型：1-加分 2-扣分',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `recorder_id` bigint DEFAULT NULL COMMENT '记录人ID',
    `recorder_name` varchar(50) DEFAULT NULL COMMENT '记录人姓名',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-有效 2-作废',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_record_date` (`record_date`),
    KEY `idx_rule_id` (`rule_id`)
) ENGINE=InnoDB COMMENT='考核记录明细表';

-- ============================================
-- 7. 危险评估表 (prison_risk_assessment)
-- ============================================
DROP TABLE IF EXISTS `prison_risk_assessment`;
CREATE TABLE IF NOT EXISTS `prison_risk_assessment` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评估ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `assessment_type` tinyint NOT NULL COMMENT '评估类型：1-入狱评估 2-定期评估 3-专项评估',
    `assessment_date` date NOT NULL COMMENT '评估日期',
    `violence_score` decimal(10,2) DEFAULT 0.00 COMMENT '暴力倾向得分',
    `escape_score` decimal(10,2) DEFAULT 0.00 COMMENT '脱逃倾向得分',
    `suicide_score` decimal(10,2) DEFAULT 0.00 COMMENT '自杀倾向得分',
    `total_score` decimal(10,2) DEFAULT 0.00 COMMENT '综合得分',
    `risk_level` tinyint NOT NULL COMMENT '风险等级：1-低风险 2-中风险 3-高风险 4-极高风险',
    `risk_factors` varchar(500) DEFAULT NULL COMMENT '风险因素',
    `suggestions` varchar(500) DEFAULT NULL COMMENT '管控建议',
    `assessor_id` bigint DEFAULT NULL COMMENT '评估人ID',
    `assessor_name` varchar(50) DEFAULT NULL COMMENT '评估人姓名',
    `next_assessment_date` date DEFAULT NULL COMMENT '下次评估日期',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-待审核 2-已通过',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_assessment_date` (`assessment_date`)
) ENGINE=InnoDB COMMENT='危险评估表';

-- ============================================
-- 8. 消费记录表 (prison_consumption)
-- ============================================
DROP TABLE IF EXISTS `prison_consumption`;
CREATE TABLE IF NOT EXISTS `prison_consumption` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '消费ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `order_no` varchar(64) DEFAULT NULL COMMENT '订单号',
    `type` tinyint NOT NULL COMMENT '类型：1-购物 2-餐饮 3-医疗 4-通讯 5-其他',
    `total_amount` decimal(12,2) NOT NULL COMMENT '订单总金额',
    `balance` decimal(12,2) DEFAULT 0.00 COMMENT '账户余额（消费后）',
    `trade_time` datetime NOT NULL COMMENT '交易时间',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-成功 2-失败',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_trade_time` (`trade_time`),
    KEY `idx_type` (`type`)
) ENGINE=InnoDB COMMENT='消费记录表';

-- ============================================
-- 9. 问卷模板表 (prison_questionnaire)
-- ============================================
DROP TABLE IF EXISTS `prison_questionnaire`;
CREATE TABLE IF NOT EXISTS `prison_questionnaire` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '问卷ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `title` varchar(200) NOT NULL COMMENT '问卷标题',
    `type` tinyint NOT NULL COMMENT '问卷类型：1-心理测评 2-行为评估 3-满意度调查',
    `description` varchar(500) DEFAULT NULL COMMENT '问卷说明',
    `total_score` decimal(10,2) DEFAULT 100.00 COMMENT '总分',
    `pass_score` decimal(10,2) DEFAULT 60.00 COMMENT '及格分',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-草稿 2-已发布 3-已禁用',
    `cover_image` varchar(500) DEFAULT NULL COMMENT '封面图片URL',
    `instruction` varchar(1000) DEFAULT NULL COMMENT '填写说明',
    `estimated_time` int DEFAULT NULL COMMENT '预计耗时（分钟）',
    `part_count` tinyint DEFAULT 1 COMMENT '分区数量',
    `allow_anonymous` tinyint DEFAULT 0 COMMENT '是否允许匿名：0-不允许 1-允许',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_type` (`type`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='问卷模板表';

-- ============================================
-- 10. 问卷问题表 (prison_question)
-- ============================================
DROP TABLE IF EXISTS `prison_question`;
CREATE TABLE IF NOT EXISTS `prison_question` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '问题ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `questionnaire_id` bigint NOT NULL COMMENT '所属问卷ID',
    `title` varchar(500) NOT NULL COMMENT '问题标题',
    `type` tinyint NOT NULL COMMENT '问题类型：1-单选 2-多选 3-填空 4-评分 5-日期 6-数字',
    `options` text COMMENT '选项JSON：[{label:"选项1",score:10,isOther:false},...]',
    `score` decimal(10,2) DEFAULT 0.00 COMMENT '分值',
    `sort` int DEFAULT 0 COMMENT '排序',
    `is_required` tinyint DEFAULT 1 COMMENT '是否必答：0-否 1-是',
    `part_name` varchar(50) DEFAULT NULL COMMENT '分区名称（Part名称），用于将问题分组',
    `part_sort` tinyint DEFAULT 0 COMMENT '分区排序（同一问卷内的分区序号）',
    `help_text` varchar(500) DEFAULT NULL COMMENT '帮助说明文字',
    `placeholder` varchar(200) DEFAULT NULL COMMENT '占位提示（填空题/数字题显示）',
    `default_value` varchar(200) DEFAULT NULL COMMENT '默认值',
    `auto_fill_type` varchar(20) DEFAULT 'NONE' COMMENT '自动填充类型：NONE-无 AUTO-系统自动填充 MANUAL-手动输入',
    `auto_fill_source` varchar(100) DEFAULT NULL COMMENT '自动填充来源：dict:字典类型 / field:字段名',
    `display_condition` text COMMENT '显示条件JSON：{"field":"字段名","operator":">=","value":"值"}',
    `min_value` int DEFAULT NULL COMMENT '最小值（数字/评分题）',
    `max_value` int DEFAULT NULL COMMENT '最大值（数字/评分题）',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_questionnaire_id` (`questionnaire_id`)
) ENGINE=InnoDB COMMENT='问卷问题表';

-- ============================================
-- 11. 问卷答题记录表 (prison_questionnaire_record)
-- ============================================
DROP TABLE IF EXISTS `prison_questionnaire_record`;
CREATE TABLE IF NOT EXISTS `prison_questionnaire_record` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `questionnaire_id` bigint NOT NULL COMMENT '问卷ID',
    `questionnaire_name` varchar(200) DEFAULT NULL COMMENT '问卷名称',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `prisoner_name` varchar(50) DEFAULT NULL COMMENT '罪犯姓名',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-待测评 2-测评中 3-已完成 4-已过期 5-已取消',
    `start_time` datetime DEFAULT NULL COMMENT '开始时间',
    `end_time` datetime DEFAULT NULL COMMENT '结束时间',
    `answer_time` datetime DEFAULT NULL COMMENT '答题时间',
    `deadline` datetime DEFAULT NULL COMMENT '截止日期',
    `objective_score` decimal(10,2) DEFAULT 0.00 COMMENT '客观题得分',
    `subjective_score` decimal(10,2) DEFAULT 0.00 COMMENT '主观题得分',
    `total_score` decimal(10,2) DEFAULT 0.00 COMMENT '总分',
    `pass_score` decimal(10,2) DEFAULT NULL COMMENT '及格分数',
    `pass_status` tinyint DEFAULT NULL COMMENT '及格状态：1-及格 2-不及格 3-待评阅',
    `risk_level` tinyint DEFAULT NULL COMMENT '风险等级：1-高风险 2-中风险 3-低风险',
    `evaluator_id` bigint DEFAULT NULL COMMENT '评阅人ID',
    `evaluator_name` varchar(50) DEFAULT NULL COMMENT '评阅人姓名',
    `evaluate_time` datetime DEFAULT NULL COMMENT '评阅时间',
    `participant_count` int DEFAULT 0 COMMENT '参与人数',
    `completed_count` int DEFAULT 0 COMMENT '完成人数',
    `duration` int DEFAULT 0 COMMENT '答题用时（秒）',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_questionnaire_id` (`questionnaire_id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='问卷答题记录表';

-- ============================================
-- 12. 问卷答题详情表 (prison_answer)
-- ============================================
DROP TABLE IF EXISTS `prison_answer`;
CREATE TABLE IF NOT EXISTS `prison_answer` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '答题记录ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `assessment_record_id` bigint NOT NULL COMMENT '测评记录ID',
    `question_id` bigint NOT NULL COMMENT '问题ID',
    `questionnaire_id` bigint NOT NULL COMMENT '问卷ID（冗余）',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `question_type` tinyint NOT NULL COMMENT '问题类型：1-单选 2-多选 3-填空 4-评分 5-日期 6-数字',
    `answer_text` text COMMENT '答案内容（填空题、评分题等）',
    `option_ids` text COMMENT '选项ID列表（JSON数组，如 [1,2,3]）',
    `score` decimal(10,2) DEFAULT 0.00 COMMENT '得分',
    `is_correct` tinyint DEFAULT NULL COMMENT '是否正确：null-未评分 0-错误 1-正确',
    `duration` int DEFAULT 0 COMMENT '答题时间（秒）',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_assessment_record_id` (`assessment_record_id`),
    KEY `idx_question_id` (`question_id`),
    KEY `idx_prisoner_id` (`prisoner_id`)
) ENGINE=InnoDB COMMENT='问卷答题详情表';

-- ============================================
-- 13. 罪犯监区变动记录表 (prison_prisoner_area_log)
-- ============================================
DROP TABLE IF EXISTS `prison_prisoner_area_log`;
CREATE TABLE IF NOT EXISTS `prison_prisoner_area_log` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `from_area_id` bigint DEFAULT NULL COMMENT '原监区ID',
    `from_sub_area_id` bigint DEFAULT NULL COMMENT '原分监区ID',
    `from_cell_id` bigint DEFAULT NULL COMMENT '原监室ID',
    `to_area_id` bigint NOT NULL COMMENT '新监区ID',
    `to_sub_area_id` bigint DEFAULT NULL COMMENT '新分监区ID',
    `to_cell_id` bigint NOT NULL COMMENT '新监室ID',
    `change_type` tinyint NOT NULL COMMENT '变动类型：1-调入 2-调出 3-临时安置 4-医疗回监 5-初始分配',
    `reason` varchar(500) DEFAULT NULL COMMENT '变动原因',
    `approve_no` varchar(50) DEFAULT NULL COMMENT '批准文号',
    `operate_by` bigint NOT NULL COMMENT '操作人ID',
    `operate_name` varchar(50) DEFAULT NULL COMMENT '操作人姓名',
    `operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_operate_time` (`operate_time`)
) ENGINE=InnoDB COMMENT='罪犯监区变动记录表';

-- ============================================
-- 14. 预警信息表 (prison_warning)
-- ============================================
DROP TABLE IF EXISTS `prison_warning`;
CREATE TABLE IF NOT EXISTS `prison_warning` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '预警ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `title` varchar(200) NOT NULL COMMENT '预警标题',
    `content` text COMMENT '预警内容',
    `type` tinyint NOT NULL COMMENT '预警类型：1-安全预警 2-监管预警 3-改造预警 4-生产预警 5-生活卫生预警 6-其他',
    `level` tinyint NOT NULL COMMENT '预警等级：1-一般 2-重要 3-紧急 4-严重',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '预警状态：1-待核实 2-已核实 3-已处置 4-已解除',
    `source` tinyint DEFAULT NULL COMMENT '预警来源：1-民警报告 2-监控系统 3-举报 4-罪犯自首 5-智能分析 6-其他',
    `situation_id` bigint DEFAULT NULL COMMENT '关联狱情ID',
    `area_id` bigint DEFAULT NULL COMMENT '关联监区ID',
    `cell_id` bigint DEFAULT NULL COMMENT '关联监室ID',
    `alert_time` datetime NOT NULL COMMENT '预警时间',
    `verify_time` datetime DEFAULT NULL COMMENT '核实时间',
    `verifier` varchar(50) DEFAULT NULL COMMENT '核实人',
    `verify_result` varchar(500) DEFAULT NULL COMMENT '核实结果',
    `handle_time` datetime DEFAULT NULL COMMENT '处置时间',
    `handler` varchar(50) DEFAULT NULL COMMENT '处置人',
    `handle_method` varchar(200) DEFAULT NULL COMMENT '处置方式',
    `handle_result` varchar(500) DEFAULT NULL COMMENT '处置结果',
    `release_time` datetime DEFAULT NULL COMMENT '解除时间',
    `releaser` varchar(50) DEFAULT NULL COMMENT '解除人',
    `release_reason` varchar(500) DEFAULT NULL COMMENT '解除原因',
    `occur_time` datetime DEFAULT NULL COMMENT '发生时间',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_type` (`type`),
    KEY `idx_level` (`level`),
    KEY `idx_status` (`status`),
    KEY `idx_area_id` (`area_id`),
    KEY `idx_alert_time` (`alert_time`)
) ENGINE=InnoDB COMMENT='预警信息表';

-- ============================================
-- 15. 狱情收集信息表 (prison_situation)
-- ============================================
DROP TABLE IF EXISTS `prison_situation`;
CREATE TABLE IF NOT EXISTS `prison_situation` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '狱情ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `title` varchar(200) NOT NULL COMMENT '标题',
    `content` text COMMENT '详情内容',
    `category` tinyint NOT NULL COMMENT '分类：1-监管安全 2-教育改造 3-生活卫生 4-生产安全 5-狱内案件 6-其他',
    `level` tinyint NOT NULL COMMENT '等级：1-一般 2-重要 3-紧急',
    `source` tinyint DEFAULT NULL COMMENT '来源：1-民警报告 2-监控系统 3-举报 4-罪犯自首 5-其他',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '处理状态：1-待处理 2-处理中 3-已处理',
    `area_id` bigint DEFAULT NULL COMMENT '关联监区ID',
    `cell_id` bigint DEFAULT NULL COMMENT '关联监室ID',
    `reporter` varchar(50) DEFAULT NULL COMMENT '报告人',
    `handler` varchar(50) DEFAULT NULL COMMENT '处理人',
    `handle_time` datetime DEFAULT NULL COMMENT '处理时间',
    `handle_result` varchar(500) DEFAULT NULL COMMENT '处理结果',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `occur_time` datetime DEFAULT NULL COMMENT '发生时间',
    `type` varchar(50) DEFAULT NULL COMMENT '类型',
    `location` varchar(200) DEFAULT NULL COMMENT '地点',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_category` (`category`),
    KEY `idx_level` (`level`),
    KEY `idx_status` (`status`),
    KEY `idx_area_id` (`area_id`),
    KEY `idx_occur_time` (`occur_time`)
) ENGINE=InnoDB COMMENT='狱情收集信息表';

-- ============================================
-- 16. 评估报告表 (prison_evaluation_report)
-- ============================================
DROP TABLE IF EXISTS `prison_evaluation_report`;
CREATE TABLE IF NOT EXISTS `prison_evaluation_report` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '报告ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `report_no` varchar(50) NOT NULL COMMENT '报告编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `prisoner_name` varchar(50) DEFAULT NULL COMMENT '罪犯姓名',
    `template_id` bigint DEFAULT NULL COMMENT '模板ID',
    `template_name` varchar(100) DEFAULT NULL COMMENT '模板名称',
    `evaluation_type` tinyint DEFAULT NULL COMMENT '评估类型：1-心理评估 2-危险性评估 3-改造表现评估 4-综合评估',
    `evaluation_cycle` tinyint DEFAULT NULL COMMENT '评估周期：1-月评 2-季评 3-半年评 4-年终评 5-入监评估 6-出监评估',
    `evaluation_date` datetime DEFAULT NULL COMMENT '评估日期',
    `evaluator_id` bigint DEFAULT NULL COMMENT '评估人员ID',
    `evaluator_name` varchar(50) DEFAULT NULL COMMENT '评估人员姓名',
    `area_id` bigint DEFAULT NULL COMMENT '监区ID',
    `area_name` varchar(100) DEFAULT NULL COMMENT '监区名称',
    `total_score` decimal(10,2) DEFAULT 0.00 COMMENT '总分',
    `level` tinyint DEFAULT NULL COMMENT '评级：1-优秀 2-良好 3-一般 4-较差 5-危险',
    `risk_level` tinyint DEFAULT NULL COMMENT '风险等级：1-低风险 2-中风险 3-高风险 4-极高风险',
    `risk_score` decimal(10,2) DEFAULT 0.00 COMMENT '风险得分',
    `ai_status` tinyint DEFAULT 1 COMMENT 'AI生成状态：1-待生成 2-生成中 3-已完成 4-生成失败',
    `ai_content` text COMMENT 'AI生成内容',
    `ai_report_content` text COMMENT 'AI生成报告内容',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '报告状态：1-草稿 2-待审核 3-已审核 4-已作废',
    `auditor_id` bigint DEFAULT NULL COMMENT '审核人ID',
    `auditor_name` varchar(50) DEFAULT NULL COMMENT '审核人姓名',
    `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
    `audit_opinion` varchar(500) DEFAULT NULL COMMENT '审核意见',
    `conclusion` text COMMENT '报告结论',
    `suggestions` text COMMENT '改造建议',
    `pdf_path` varchar(500) DEFAULT NULL COMMENT '报告PDF路径',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_report_no` (`report_no`, `tenant_id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_evaluation_date` (`evaluation_date`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='评估报告表';

-- ============================================
-- 17. 快速点评表 (prison_quick_comment)
-- ============================================
DROP TABLE IF EXISTS `prison_quick_comment`;
CREATE TABLE IF NOT EXISTS `prison_quick_comment` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '点评ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `title` varchar(100) NOT NULL COMMENT '点评标题',
    `content` varchar(500) NOT NULL COMMENT '点评内容',
    `category_id` bigint DEFAULT NULL COMMENT '分类ID',
    `sort` int DEFAULT 0 COMMENT '排序',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_category_id` (`category_id`)
) ENGINE=InnoDB COMMENT='快速点评表';

-- ============================================
-- 18. 快速点评分类表 (prison_comment_category)
-- ============================================
DROP TABLE IF EXISTS `prison_comment_category`;
CREATE TABLE IF NOT EXISTS `prison_comment_category` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `name` varchar(50) NOT NULL COMMENT '分类名称',
    `sort` int DEFAULT 0 COMMENT '排序',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='快速点评分类表';

-- ============================================
-- 19. 报告模板表 (prison_report_template)
-- ============================================
DROP TABLE IF EXISTS `prison_report_template`;
CREATE TABLE IF NOT EXISTS `prison_report_template` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '模板ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `name` varchar(100) NOT NULL COMMENT '模板名称',
    `type` tinyint NOT NULL COMMENT '模板类型：1-评估报告 2-月度报告 3-季度报告',
    `content` text COMMENT '模板内容（HTML或Markdown）',
    `fields` text COMMENT '字段配置JSON',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_type` (`type`)
) ENGINE=InnoDB COMMENT='报告模板表';

-- ============================================
-- 20. 报告表 (prison_report)
-- ============================================
DROP TABLE IF EXISTS `prison_report`;
CREATE TABLE IF NOT EXISTS `prison_report` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '报告ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `title` varchar(200) NOT NULL COMMENT '报告标题',
    `type` tinyint NOT NULL COMMENT '报告类型：1-日报告 2-周报告 3-月报告 4-季度报告 5-年度报告',
    `content` text COMMENT '报告内容',
    `prison_area_id` bigint DEFAULT NULL COMMENT '监区ID',
    `report_date` date DEFAULT NULL COMMENT '报告日期',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-草稿 2-已发布 3-已归档',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_type` (`type`),
    KEY `idx_report_date` (`report_date`)
) ENGINE=InnoDB COMMENT='报告表';

-- ============================================
-- 21. 释放登记信息表 (prison_release)
-- ============================================
DROP TABLE IF EXISTS `prison_release`;
CREATE TABLE IF NOT EXISTS `prison_release` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '释放ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
    `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
    `release_type` tinyint NOT NULL COMMENT '释放类型：1-刑满释放 2-假释 3-保外就医 4-减刑 5-暂予监外执行 6-特赦 7-死亡 8-其他',
    `release_date` date NOT NULL COMMENT '释放日期',
    `release_reason` varchar(500) DEFAULT NULL COMMENT '释放原因',
    `approve_no` varchar(50) DEFAULT NULL COMMENT '批准文号',
    `destination` varchar(200) DEFAULT NULL COMMENT '释放去向',
    `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
    `emergency_contact` varchar(100) DEFAULT NULL COMMENT '紧急联系人',
    `emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-待释放 2-已释放 3-已取消',
    `remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_prisoner_id` (`prisoner_id`),
    KEY `idx_release_date` (`release_date`)
) ENGINE=InnoDB COMMENT='释放登记信息表';

-- ============================================
-- 22. 风险评估维度表 (prison_risk)
-- ============================================
DROP TABLE IF EXISTS `prison_risk`;
CREATE TABLE IF NOT EXISTS `prison_risk` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '维度ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `name` varchar(50) NOT NULL COMMENT '维度名称',
    `code` varchar(50) NOT NULL COMMENT '维度编码',
    `description` varchar(500) DEFAULT NULL COMMENT '维度描述',
    `weight` decimal(5,2) DEFAULT NULL COMMENT '权重',
    `max_score` decimal(10,2) DEFAULT 100.00 COMMENT '最高分值',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1-启用 2-禁用',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`, `tenant_id`)
) ENGINE=InnoDB COMMENT='风险评估维度表';

-- ============================================
-- 23. 评估报告维度表 (prison_evaluation_dimension)
-- ============================================
DROP TABLE IF EXISTS `prison_evaluation_dimension`;
CREATE TABLE IF NOT EXISTS `prison_evaluation_dimension` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '维度ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `report_id` bigint NOT NULL COMMENT '报告ID',
    `dimension_name` varchar(100) NOT NULL COMMENT '维度名称',
    `dimension_code` varchar(50) DEFAULT NULL COMMENT '维度编码',
    `score` decimal(10,2) DEFAULT 0.00 COMMENT '得分',
    `max_score` decimal(10,2) DEFAULT 100.00 COMMENT '满分',
    `level` varchar(20) DEFAULT NULL COMMENT '评级',
    `description` text COMMENT '维度描述',
    `suggestion` text COMMENT '建议',
    `sort` int DEFAULT 0 COMMENT '排序',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_report_id` (`report_id`)
) ENGINE=InnoDB COMMENT='评估报告维度表';

-- ============================================
-- 24. 评估报告维度数据表 (prison_evaluation_dimension_data)
-- ============================================
DROP TABLE IF EXISTS `prison_evaluation_dimension_data`;
CREATE TABLE IF NOT EXISTS `prison_evaluation_dimension_data` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '数据ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `dimension_id` bigint NOT NULL COMMENT '维度ID',
    `data_type` varchar(50) NOT NULL COMMENT '数据类型：score-得分 evidence-证据 behavior-行为',
    `content` text COMMENT '内容',
    `score` decimal(10,2) DEFAULT 0.00 COMMENT '得分',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_dimension_id` (`dimension_id`)
) ENGINE=InnoDB COMMENT='评估报告维度数据表';

-- ============================================
-- 25. 报告评价表 (prison_report_comment)
-- ============================================
DROP TABLE IF EXISTS `prison_report_comment`;
CREATE TABLE IF NOT EXISTS `prison_report_comment` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评价ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `report_id` bigint NOT NULL COMMENT '报告ID',
    `type` tinyint NOT NULL COMMENT '评价类型：1-总体评价 2-优点 3-不足 4-建议',
    `content` text NOT NULL COMMENT '评价内容',
    `score` decimal(10,2) DEFAULT NULL COMMENT '评价得分',
    `sort` int DEFAULT 0 COMMENT '排序',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_report_id` (`report_id`)
) ENGINE=InnoDB COMMENT='报告评价表';

-- ============================================
-- 26. 消费明细表 (prison_consumption_detail)
-- ============================================
DROP TABLE IF EXISTS `prison_consumption_detail`;
CREATE TABLE IF NOT EXISTS `prison_consumption_detail` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
    `consumption_id` bigint NOT NULL COMMENT '消费ID',
    `goods_name` varchar(100) NOT NULL COMMENT '商品名称',
    `goods_code` varchar(50) DEFAULT NULL COMMENT '商品编码',
    `quantity` int DEFAULT 1 COMMENT '数量',
    `unit_price` decimal(10,2) NOT NULL COMMENT '单价',
    `total_price` decimal(10,2) NOT NULL COMMENT '总价',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_consumption_id` (`consumption_id`)
) ENGINE=InnoDB COMMENT='消费明细表';

-- 恢复外键检查
SET FOREIGN_KEY_CHECKS = 1;

-- ============================================
-- 索引优化建议
-- ============================================
-- 为常用查询添加复合索引
-- ALTER TABLE prison_prisoner ADD INDEX idx_area_cell (prison_area_id, prison_cell_id);
-- ALTER TABLE prison_score ADD INDEX idx_prisoner_year_month (prisoner_id, year, month);
-- ALTER TABLE prison_warning ADD INDEX idx_type_level_status (type, level, status);

-- ============================================
-- 字段注释更新脚本（可选）
-- ============================================
-- COMMENT ON COLUMN prison_prisoner.children IS '子女情况';
-- COMMENT ON COLUMN prison_questionnaire.cover_image IS '封面图片URL';
-- COMMENT ON COLUMN prison_questionnaire.instruction IS '填写说明';
-- COMMENT ON COLUMN prison_questionnaire.estimated_time IS '预计耗时（分钟）';
-- COMMENT ON COLUMN prison_questionnaire.part_count IS '分区数量';
-- COMMENT ON COLUMN prison_questionnaire.allow_anonymous IS '是否允许匿名：0-不允许 1-允许';
