-- =========================================================
-- 食谱计算器表结构变更 SQL
-- 版本：v1.0
-- 日期：2026-02-01
-- 说明：根据开发文档优化后，需要新增以下字段
-- =========================================================

-- 检查并添加 bmi_status 字段
ALTER TABLE `v2_calculator_results` 
ADD COLUMN IF NOT EXISTS `bmi_status` VARCHAR(20) DEFAULT NULL COMMENT 'BMI状态描述：体型过轻/正常/超重/肥胖' 
AFTER `bmi`;

-- 检查并添加 food_list_json 字段
ALTER TABLE `v2_calculator_results` 
ADD COLUMN IF NOT EXISTS `food_list_json` TEXT DEFAULT NULL COMMENT '食物份数建议 JSON' 
AFTER `energy_intake`;

-- 检查并添加 tips_json 字段
ALTER TABLE `v2_calculator_results` 
ADD COLUMN IF NOT EXISTS `tips_json` TEXT DEFAULT NULL COMMENT '重要提示 JSON' 
AFTER `meal_plan_json`;

-- 如果表不存在，创建完整表结构
CREATE TABLE IF NOT EXISTS `v2_calculator_results` (
  `result_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '计算结果ID',
  `user_id` BIGINT NOT NULL COMMENT '用户ID',
  
  -- 输入参数
  `gender` VARCHAR(10) NOT NULL COMMENT '性别：male/female',
  `age` INT NOT NULL COMMENT '年龄（岁）',
  `height` INT NOT NULL COMMENT '身高（cm）',
  `weight` DECIMAL(5,2) DEFAULT NULL COMMENT '体重（kg）',
  `has_dialysis` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否透析：0-否 1-是',
  `dialysis_type` VARCHAR(20) DEFAULT NULL COMMENT '透析类型：hemodialysis/peritoneal',
  `dry_weight` DECIMAL(5,2) NOT NULL COMMENT '干体重（kg）',
  `creatinine` DECIMAL(8,2) NOT NULL COMMENT '血肌酐（μmol/L）',
  
  -- 计算结果
  `egfr` DECIMAL(6,2) NOT NULL COMMENT 'eGFR（ml/min/1.73m²）',
  `standard_weight` DECIMAL(5,2) NOT NULL COMMENT '标准体重（kg）',
  `bmi` DECIMAL(4,1) NOT NULL COMMENT 'BMI',
  `bmi_status` VARCHAR(20) DEFAULT NULL COMMENT 'BMI状态描述',
  `ckd_stage` VARCHAR(50) NOT NULL COMMENT 'CKD分期',
  `protein_intake` DECIMAL(5,1) NOT NULL COMMENT '每日蛋白质目标（g）',
  `energy_intake` INT NOT NULL COMMENT '每日能量目标（kcal）',
  
  -- JSON 数据
  `food_list_json` TEXT DEFAULT NULL COMMENT '食物份数建议 JSON',
  `meal_plan_json` TEXT DEFAULT NULL COMMENT '配餐方案 JSON',
  `tips_json` TEXT DEFAULT NULL COMMENT '重要提示 JSON',
  
  -- 状态字段
  `is_adopted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已采纳：0-未采纳 1-已采纳',
  `adopted_at` DATETIME DEFAULT NULL COMMENT '采纳时间',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  
  PRIMARY KEY (`result_id`),
  INDEX `idx_user_id` (`user_id`),
  INDEX `idx_created_at` (`created_at`),
  INDEX `idx_is_adopted` (`is_adopted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营养计算结果表';

-- 营养计划表（如果不存在则创建）
CREATE TABLE IF NOT EXISTS `v2_nutrition_plans` (
  `plan_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '营养计划ID',
  `user_id` BIGINT NOT NULL COMMENT '用户ID',
  `result_id` BIGINT DEFAULT NULL COMMENT '关联的计算结果ID',
  
  -- 健康数据（冗余存储，便于查询）
  `gender` VARCHAR(10) DEFAULT NULL COMMENT '性别',
  `age` INT DEFAULT NULL COMMENT '年龄',
  `height` INT DEFAULT NULL COMMENT '身高（cm）',
  `weight` DECIMAL(5,2) DEFAULT NULL COMMENT '体重（kg）',
  `has_dialysis` TINYINT(1) DEFAULT 0 COMMENT '是否透析',
  `dialysis_type` VARCHAR(20) DEFAULT NULL COMMENT '透析类型',
  `creatinine` DECIMAL(8,2) DEFAULT NULL COMMENT '血肌酐',
  
  -- 计算结果
  `egfr` DECIMAL(6,2) DEFAULT NULL COMMENT 'eGFR',
  `standard_weight` DECIMAL(5,2) DEFAULT NULL COMMENT '标准体重',
  `bmi` DECIMAL(4,1) DEFAULT NULL COMMENT 'BMI',
  `ckd_stage` VARCHAR(50) DEFAULT NULL COMMENT 'CKD分期',
  `protein_intake` DECIMAL(5,1) DEFAULT NULL COMMENT '蛋白质目标',
  `energy_intake` INT DEFAULT NULL COMMENT '能量目标',
  
  -- 配餐方案
  `meal_plan_json` TEXT DEFAULT NULL COMMENT '配餐方案 JSON',
  
  -- 计划状态
  `status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态：active/completed/abandoned',
  `start_date` DATE NOT NULL COMMENT '开始日期',
  `end_date` DATE NOT NULL COMMENT '结束日期',
  
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  
  PRIMARY KEY (`plan_id`),
  INDEX `idx_user_id` (`user_id`),
  INDEX `idx_result_id` (`result_id`),
  INDEX `idx_status` (`status`),
  INDEX `idx_start_date` (`start_date`),
  UNIQUE INDEX `uk_user_result` (`user_id`, `result_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营养计划表';
