Просмотр исходного кода

fix: convert content-bearing VARCHAR columns to TEXT to prevent Data too long errors

- Changed all description, remark, notes, reject_reason, cancel_reason,
  audit_reason, summary, advice, overall_assessment, config_value fields
  from VARCHAR(255/500/200) to TEXT across ~40 tables
- Added idempotent modifyColumnToText() migrations in DatabaseInitializer
  (~55 ALTER TABLE MODIFY COLUMN calls) for production database sync
- Primary fix: activities.description was the original crash site but
  many other columns had the same truncation risk
Xiaogang Liao 3 месяцев назад
Родитель
Сommit
084e41af92

+ 114 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -3049,6 +3049,120 @@ log.info("已添加template_id列到tasks表");
         } catch (Exception e) {
         } catch (Exception e) {
             log.warn("检查/添加articles表审核字段失败: {}", e.getMessage());
             log.warn("检查/添加articles表审核字段失败: {}", e.getMessage());
         }
         }
+
+        // 迁移20240709-01: content字段扩为TEXT - 用户输入内容可能超VARCHAR上限
+        // activities.description
+        modifyColumnToText("activities", "description", "活动描述");
+        // tasks.description
+        modifyColumnToText("tasks", "description", "任务描述");
+        // wishes.description, reject_reason, cancel_reason
+        modifyColumnToText("wishes", "description", "心愿描述");
+        modifyColumnToText("wishes", "reject_reason", "拒绝原因");
+        modifyColumnToText("wishes", "cancel_reason", "取消原因");
+        // reward_wishlists.description
+        modifyColumnToText("reward_wishlists", "description", "心愿描述");
+        // products.description, reject_reason
+        modifyColumnToText("products", "description", "商品描述");
+        modifyColumnToText("products", "reject_reason", "审核拒绝原因");
+        // product_orders.remark
+        modifyColumnToText("product_orders", "remark", "备注");
+        // articles.summary
+        modifyColumnToText("articles", "summary", "摘要");
+        // activities.audit_reason
+        modifyColumnToText("activities", "audit_reason", "驳回原因");
+        // guide_applications.reject_reason
+        modifyColumnToText("guide_applications", "reject_reason", "拒绝原因");
+        // guide_application_records.remark
+        modifyColumnToText("guide_application_records", "remark", "备注/原因");
+        // user_operation_log.description
+        modifyColumnToText("user_operation_log", "description", "操作描述");
+        // follow_up.description, teacher_review
+        modifyColumnToText("follow_up", "description", "描述");
+        modifyColumnToText("follow_up", "teacher_review", "规划师点评");
+        // energy_log.description
+        modifyColumnToText("energy_log", "description", "描述");
+        // sys_config.description
+        modifyColumnToText("sys_config", "description", "配置说明");
+        // points_log.description
+        modifyColumnToText("points_log", "description", "描述");
+        // insurance_policies.remark
+        modifyColumnToText("insurance_policies", "remark", "备注");
+        // health_reports.remark
+        modifyColumnToText("health_reports", "remark", "备注");
+        // guide_service_logs.notes
+        modifyColumnToText("guide_service_logs", "notes", "服务记录");
+        // guide_packages.description
+        modifyColumnToText("guide_packages", "description", "套餐说明");
+        // guide_package_templates.description
+        modifyColumnToText("guide_package_templates", "description", "说明");
+        // service_types.description
+        modifyColumnToText("service_types", "description", "描述");
+        // commission_records.remark
+        modifyColumnToText("commission_records", "remark", "备注");
+        // zodiac_pairing.description, advice
+        modifyColumnToText("zodiac_pairing", "description", "配对解读");
+        modifyColumnToText("zodiac_pairing", "advice", "相处建议");
+        // blood_type_pairing.description, advice
+        modifyColumnToText("blood_type_pairing", "description", "配对描述");
+        modifyColumnToText("blood_type_pairing", "advice", "相处建议");
+        // life_number_relationship.description, advice
+        modifyColumnToText("life_number_relationship", "description", "关系解读");
+        modifyColumnToText("life_number_relationship", "advice", "相处建议");
+        // daily_health_checkin.remark
+        modifyColumnToText("daily_health_checkin", "remark", "备注");
+        // health_sleep_record.remark
+        modifyColumnToText("health_sleep_record", "remark", "备注");
+        // health_exercise_record.remark
+        modifyColumnToText("health_exercise_record", "remark", "备注");
+        // finance_checkins.note
+        modifyColumnToText("finance_checkins", "note", "备注");
+        // guide_packages.description (old duplicate)
+        // assessment_appointments.remark
+        modifyColumnToText("assessment_appointments", "remark", "备注");
+        // withdrawal_requests.remark
+        modifyColumnToText("withdrawal_requests", "remark", "备注");
+        // supply_settlements.remark
+        modifyColumnToText("supply_settlements", "remark", "备注");
+        // content_sections.description
+        modifyColumnToText("content_sections", "description", "描述说明");
+        // education_systems.description
+        modifyColumnToText("education_systems", "description", "描述");
+        // dimension_config.description
+        modifyColumnToText("dimension_config", "description", "描述");
+        // energy_rules.description
+        modifyColumnToText("energy_rules", "description", "规则描述");
+        // team_goals.description
+        modifyColumnToText("team_goals", "description", "团队描述");
+        // product_dimension_config.remark
+        modifyColumnToText("product_dimension_config", "remark", "备注");
+        // indicator_values.remark
+        modifyColumnToText("indicator_values", "remark", "备注");
+        // tongue_records.overall_assessment
+        modifyColumnToText("tongue_records", "overall_assessment", "总体评估");
+        // system_config.description, config_value
+        modifyColumnToText("system_config", "description", "说明");
+        modifyColumnToText("system_config", "config_value", "配置值");
+        // supply_system.description
+        modifyColumnToText("supply_system", "description", "描述");
+        // supply_settlement.remark
+        modifyColumnToText("supply_settlement", "remark", "备注");
+        // growth_task.description
+        modifyColumnToText("growth_task", "description", "描述");
+        // distribution_systems.description
+        modifyColumnToText("distribution_systems", "description", "团队描述");
+        // mini_games.description
+        modifyColumnToText("mini_games", "description", "游戏描述");
+        // blood_type_config.description
+        modifyColumnToText("blood_type_config", "description", "性格描述");
+    }
+
+    private void modifyColumnToText(String table, String column, String comment) {
+        try {
+            jdbcTemplate.execute("ALTER TABLE " + table + " MODIFY COLUMN " + column + " TEXT COMMENT '" + comment + "'");
+            log.info("已修改{}.{}为TEXT类型", table, column);
+        } catch (Exception e) {
+            log.warn("修改{}.{}为TEXT失败: {}", table, column, e.getMessage());
+        }
     }
     }
 
 
     private void initializeDefaultData() {
     private void initializeDefaultData() {

+ 45 - 45
cfc-backend/src/main/resources/schema.sql

@@ -71,7 +71,7 @@ CREATE TABLE IF NOT EXISTS tasks (
     executor_type VARCHAR(20) COMMENT '执行者类型: child/parent',
     executor_type VARCHAR(20) COMMENT '执行者类型: child/parent',
     executor_id BIGINT COMMENT '执行者ID',
     executor_id BIGINT COMMENT '执行者ID',
     title VARCHAR(200) NOT NULL,
     title VARCHAR(200) NOT NULL,
-    description VARCHAR(500),
+    description TEXT,
     points TINYINT DEFAULT 2 COMMENT '任务积分1-10',
     points TINYINT DEFAULT 2 COMMENT '任务积分1-10',
     deadline DATETIME NOT NULL,
     deadline DATETIME NOT NULL,
     repeat_type ENUM('none', 'daily', 'weekly') DEFAULT 'none',
     repeat_type ENUM('none', 'daily', 'weekly') DEFAULT 'none',
@@ -98,8 +98,8 @@ CREATE TABLE IF NOT EXISTS points_log (
     task_id BIGINT,
     task_id BIGINT,
     amount INT NOT NULL COMMENT '积分数量正负',
     amount INT NOT NULL COMMENT '积分数量正负',
     type ENUM('earn', 'spend', 'bonus', 'penalty', 'adjust', 'reset', 'refund') NOT NULL,
     type ENUM('earn', 'spend', 'bonus', 'penalty', 'adjust', 'reset', 'refund') NOT NULL,
-    category VARCHAR(20) DEFAULT 'task' COMMENT '积分分类: task-任务积分, system-系统积分',
-    description VARCHAR(255),
+    category VARCHAR(20) DEFAULT 'task' COMMENT '积分分类: task-任务积分, system-系统积分',
+    description TEXT,
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     INDEX idx_child_id_created (child_id, created_at),
     INDEX idx_child_id_created (child_id, created_at),
     INDEX idx_type (type)
     INDEX idx_type (type)
@@ -476,7 +476,7 @@ CREATE TABLE IF NOT EXISTS reward_wishlists (
     user_id BIGINT NOT NULL COMMENT '创建者用户ID',
     user_id BIGINT NOT NULL COMMENT '创建者用户ID',
     family_id BIGINT NOT NULL COMMENT '家庭ID',
     family_id BIGINT NOT NULL COMMENT '家庭ID',
     title VARCHAR(100) NOT NULL COMMENT '心愿名称',
     title VARCHAR(100) NOT NULL COMMENT '心愿名称',
-    description VARCHAR(500) COMMENT '心愿描述',
+    description TEXT COMMENT '心愿描述',
     points_required INT NOT NULL COMMENT '所需积分',
     points_required INT NOT NULL COMMENT '所需积分',
     category VARCHAR(32) COMMENT '分类',
     category VARCHAR(32) COMMENT '分类',
     image_url VARCHAR(255) COMMENT '图片链接',
     image_url VARCHAR(255) COMMENT '图片链接',
@@ -883,7 +883,7 @@ CREATE TABLE IF NOT EXISTS guide_applications (
     bank_card VARCHAR(50) COMMENT '银行卡号',
     bank_card VARCHAR(50) COMMENT '银行卡号',
     bank_name VARCHAR(100) COMMENT '开户行',
     bank_name VARCHAR(100) COMMENT '开户行',
     status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending-待审核, approved-已通过, rejected-已拒绝',
     status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending-待审核, approved-已通过, rejected-已拒绝',
-    reject_reason VARCHAR(500) COMMENT '拒绝原因',
+    reject_reason TEXT COMMENT '拒绝原因',
     reviewed_at DATETIME COMMENT '审核时间',
     reviewed_at DATETIME COMMENT '审核时间',
     reviewed_by BIGINT COMMENT '审核人ID',
     reviewed_by BIGINT COMMENT '审核人ID',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@@ -901,7 +901,7 @@ CREATE TABLE IF NOT EXISTS guide_application_records (
     action VARCHAR(50) NOT NULL COMMENT '操作: submit/approve/reject/withdraw/resubmit',
     action VARCHAR(50) NOT NULL COMMENT '操作: submit/approve/reject/withdraw/resubmit',
     from_status VARCHAR(20) COMMENT '操作前状态',
     from_status VARCHAR(20) COMMENT '操作前状态',
     to_status VARCHAR(20) NOT NULL COMMENT '操作后状态',
     to_status VARCHAR(20) NOT NULL COMMENT '操作后状态',
-    remark VARCHAR(500) COMMENT '备注/原因',
+    remark TEXT COMMENT '备注/原因',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     INDEX idx_application_id (application_id),
     INDEX idx_application_id (application_id),
     INDEX idx_user_id (user_id),
     INDEX idx_user_id (user_id),
@@ -917,7 +917,7 @@ CREATE TABLE IF NOT EXISTS mini_games (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     game_code VARCHAR(20) NOT NULL UNIQUE COMMENT '游戏代码',
     game_code VARCHAR(20) NOT NULL UNIQUE COMMENT '游戏代码',
     game_name VARCHAR(50) NOT NULL COMMENT '游戏名称',
     game_name VARCHAR(50) NOT NULL COMMENT '游戏名称',
-    description VARCHAR(255) COMMENT '游戏描述',
+    description TEXT COMMENT '游戏描述',
     icon VARCHAR(50) COMMENT '图标emoji',
     icon VARCHAR(50) COMMENT '图标emoji',
     default_duration INT DEFAULT 5 COMMENT '默认时长(分钟)',
     default_duration INT DEFAULT 5 COMMENT '默认时长(分钟)',
     default_points INT DEFAULT 5 COMMENT '默认奖励积分',
     default_points INT DEFAULT 5 COMMENT '默认奖励积分',
@@ -967,7 +967,7 @@ CREATE TABLE IF NOT EXISTS user_operation_logs (
     user_id BIGINT COMMENT '用户ID',
     user_id BIGINT COMMENT '用户ID',
     nickname VARCHAR(50) COMMENT '用户昵称',
     nickname VARCHAR(50) COMMENT '用户昵称',
     operation_type VARCHAR(20) NOT NULL COMMENT '操作类型: login/logout/create/update/delete/query等',
     operation_type VARCHAR(20) NOT NULL COMMENT '操作类型: login/logout/create/update/delete/query等',
-    description VARCHAR(500) COMMENT '操作描述',
+    description TEXT COMMENT '操作描述',
     request_path VARCHAR(200) COMMENT '请求路径',
     request_path VARCHAR(200) COMMENT '请求路径',
     request_method VARCHAR(10) COMMENT '请求方法',
     request_method VARCHAR(10) COMMENT '请求方法',
     request_params TEXT COMMENT '请求参数(脱敏)',
     request_params TEXT COMMENT '请求参数(脱敏)',
@@ -1007,7 +1007,7 @@ CREATE TABLE IF NOT EXISTS wishes (
     created_by BIGINT COMMENT '创建者用户ID',
     created_by BIGINT COMMENT '创建者用户ID',
     creator_type VARCHAR(20) COMMENT '创建者类型: child/parent',
     creator_type VARCHAR(20) COMMENT '创建者类型: child/parent',
     title VARCHAR(200) NOT NULL COMMENT '心愿标题',
     title VARCHAR(200) NOT NULL COMMENT '心愿标题',
-    description VARCHAR(500) COMMENT '心愿描述',
+    description TEXT COMMENT '心愿描述',
     category VARCHAR(32) COMMENT '心愿分类',
     category VARCHAR(32) COMMENT '心愿分类',
     points_required INT COMMENT '所需积分',
     points_required INT COMMENT '所需积分',
     points_set_by BIGINT COMMENT '定价者ID',
     points_set_by BIGINT COMMENT '定价者ID',
@@ -1022,11 +1022,11 @@ CREATE TABLE IF NOT EXISTS wishes (
     child_confirmed_at DATETIME COMMENT '孩子确认收货时间',
     child_confirmed_at DATETIME COMMENT '孩子确认收货时间',
     rejected_by BIGINT COMMENT '拒绝者ID',
     rejected_by BIGINT COMMENT '拒绝者ID',
     rejected_at DATETIME COMMENT '拒绝时间',
     rejected_at DATETIME COMMENT '拒绝时间',
-    reject_reason VARCHAR(500) COMMENT '拒绝原因',
+    reject_reason TEXT COMMENT '拒绝原因',
     reject_count INT DEFAULT 0 COMMENT '被拒绝次数',
     reject_count INT DEFAULT 0 COMMENT '被拒绝次数',
     cancelled_by BIGINT COMMENT '取消者ID',
     cancelled_by BIGINT COMMENT '取消者ID',
     cancelled_at DATETIME COMMENT '取消时间',
     cancelled_at DATETIME COMMENT '取消时间',
-    cancel_reason VARCHAR(500) COMMENT '取消原因',
+    cancel_reason TEXT COMMENT '取消原因',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     INDEX idx_family_id (family_id),
     INDEX idx_family_id (family_id),
@@ -1042,7 +1042,7 @@ CREATE TABLE IF NOT EXISTS wishes (
 CREATE TABLE IF NOT EXISTS products (
 CREATE TABLE IF NOT EXISTS products (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     name VARCHAR(200) NOT NULL COMMENT '商品名称',
     name VARCHAR(200) NOT NULL COMMENT '商品名称',
-    description VARCHAR(1000) COMMENT '商品描述',
+    description TEXT COMMENT '商品描述',
     intro TEXT COMMENT '详细介绍',
     intro TEXT COMMENT '详细介绍',
     cover_image VARCHAR(500) COMMENT '封面图片',
     cover_image VARCHAR(500) COMMENT '封面图片',
     images TEXT COMMENT '多张图片JSON',
     images TEXT COMMENT '多张图片JSON',
@@ -1053,7 +1053,7 @@ CREATE TABLE IF NOT EXISTS products (
     vendor_id BIGINT COMMENT '供应商ID',
     vendor_id BIGINT COMMENT '供应商ID',
     vendor_name VARCHAR(100) COMMENT '供应商名称',
     vendor_name VARCHAR(100) COMMENT '供应商名称',
     status VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT '状态: draft/pending/approved/rejected/on_shelf/off_shelf',
     status VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT '状态: draft/pending/approved/rejected/on_shelf/off_shelf',
-    reject_reason VARCHAR(500) COMMENT '审核拒绝原因',
+    reject_reason TEXT COMMENT '审核拒绝原因',
     member_price INT COMMENT '会员价(分)',
     member_price INT COMMENT '会员价(分)',
     member_eligible VARCHAR(32) DEFAULT 'none' COMMENT '会员资格: all/budget/none',
     member_eligible VARCHAR(32) DEFAULT 'none' COMMENT '会员资格: all/budget/none',
     domain VARCHAR(32) COMMENT '五维领域: action/mind/body/wisdom/wealth',
     domain VARCHAR(32) COMMENT '五维领域: action/mind/body/wisdom/wealth',
@@ -1082,7 +1082,7 @@ CREATE TABLE IF NOT EXISTS product_orders (
     total_amount INT NOT NULL COMMENT '总金额(分)',
     total_amount INT NOT NULL COMMENT '总金额(分)',
     status VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/paid/completed/cancelled/refunded',
     status VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/paid/completed/cancelled/refunded',
     payment_method VARCHAR(32) COMMENT '支付方式: wechat/points/membership',
     payment_method VARCHAR(32) COMMENT '支付方式: wechat/points/membership',
-    remark VARCHAR(500) COMMENT '备注',
+    remark TEXT COMMENT '备注',
     paid_at DATETIME COMMENT '支付时间',
     paid_at DATETIME COMMENT '支付时间',
     supply_system_id BIGINT COMMENT '所属供应商体系ID',
     supply_system_id BIGINT COMMENT '所属供应商体系ID',
     supplier_id BIGINT COMMENT '收款供应商用户ID',
     supplier_id BIGINT COMMENT '收款供应商用户ID',
@@ -1110,7 +1110,7 @@ CREATE TABLE IF NOT EXISTS sys_config (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     config_key VARCHAR(64) NOT NULL UNIQUE COMMENT '配置键',
     config_key VARCHAR(64) NOT NULL UNIQUE COMMENT '配置键',
     config_value TEXT COMMENT '配置值',
     config_value TEXT COMMENT '配置值',
-    description VARCHAR(500) COMMENT '配置说明',
+    description TEXT COMMENT '配置说明',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
 
 
@@ -1142,7 +1142,7 @@ CREATE TABLE IF NOT EXISTS articles (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键 ID',
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键 ID',
     category_id BIGINT DEFAULT 0 COMMENT '所属分类 ID',
     category_id BIGINT DEFAULT 0 COMMENT '所属分类 ID',
     title VARCHAR(200) NOT NULL COMMENT '标题',
     title VARCHAR(200) NOT NULL COMMENT '标题',
-    summary VARCHAR(500) DEFAULT '' COMMENT '摘要',
+    summary TEXT DEFAULT '' COMMENT '摘要',
     cover_image VARCHAR(500) DEFAULT '' COMMENT '封面图 URL',
     cover_image VARCHAR(500) DEFAULT '' COMMENT '封面图 URL',
     content LONGTEXT COMMENT '富文本内容',
     content LONGTEXT COMMENT '富文本内容',
     tags VARCHAR(200) DEFAULT '' COMMENT '标签 JSON 数组',
     tags VARCHAR(200) DEFAULT '' COMMENT '标签 JSON 数组',
@@ -1209,7 +1209,7 @@ CREATE TABLE IF NOT EXISTS energy_log (
     source_id BIGINT COMMENT '来源ID',
     source_id BIGINT COMMENT '来源ID',
     ref_id BIGINT COMMENT '关联旧流水ID(覆盖时标记)',
     ref_id BIGINT COMMENT '关联旧流水ID(覆盖时标记)',
     expires_at DATETIME COMMENT '过期时间(空=永不过期)',
     expires_at DATETIME COMMENT '过期时间(空=永不过期)',
-    description VARCHAR(500) COMMENT '描述',
+    description TEXT COMMENT '描述',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     INDEX idx_child_dim (child_id, dimension_id),
     INDEX idx_child_dim (child_id, dimension_id),
     INDEX idx_created (created_at),
     INDEX idx_created (created_at),
@@ -1245,7 +1245,7 @@ CREATE TABLE IF NOT EXISTS commission_records (
     profit_rate INT DEFAULT 0 COMMENT '利润率(千分比,如235=23.5%)',
     profit_rate INT DEFAULT 0 COMMENT '利润率(千分比,如235=23.5%)',
     commission_amount INT NOT NULL COMMENT '佣金金额(分)',
     commission_amount INT NOT NULL COMMENT '佣金金额(分)',
     status VARCHAR(16) NOT NULL DEFAULT 'settled' COMMENT '状态: pending/settled',
     status VARCHAR(16) NOT NULL DEFAULT 'settled' COMMENT '状态: pending/settled',
-    remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
+    remark TEXT DEFAULT NULL COMMENT '备注',
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     settled_at DATETIME DEFAULT NULL COMMENT '结算时间',
     settled_at DATETIME DEFAULT NULL COMMENT '结算时间',
     withdrawn_at DATETIME DEFAULT NULL COMMENT '提现时间',
     withdrawn_at DATETIME DEFAULT NULL COMMENT '提现时间',
@@ -1263,7 +1263,7 @@ CREATE TABLE IF NOT EXISTS withdrawal_requests (
     status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/approved/rejected',
     status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/approved/rejected',
     audit_by BIGINT DEFAULT NULL COMMENT '审核人ID',
     audit_by BIGINT DEFAULT NULL COMMENT '审核人ID',
     audit_at DATETIME DEFAULT NULL COMMENT '审核时间',
     audit_at DATETIME DEFAULT NULL COMMENT '审核时间',
-    remark VARCHAR(255) DEFAULT NULL COMMENT '审核备注',
+    remark TEXT DEFAULT NULL COMMENT '审核备注',
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     INDEX idx_user (user_id),
     INDEX idx_user (user_id),
     INDEX idx_status (status)
     INDEX idx_status (status)
@@ -1293,7 +1293,7 @@ CREATE TABLE IF NOT EXISTS service_types (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     name VARCHAR(100) NOT NULL COMMENT '类型名称',
     name VARCHAR(100) NOT NULL COMMENT '类型名称',
     icon VARCHAR(50) COMMENT '图标',
     icon VARCHAR(50) COMMENT '图标',
-    description VARCHAR(500) COMMENT '描述',
+    description TEXT COMMENT '描述',
     sort_order INT DEFAULT 0 COMMENT '排序',
     sort_order INT DEFAULT 0 COMMENT '排序',
     status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
     status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@@ -1321,7 +1321,7 @@ CREATE TABLE IF NOT EXISTS guide_package_templates (
     validity_months INT COMMENT '有效期(月)',
     validity_months INT COMMENT '有效期(月)',
     reference_price INT COMMENT '参考价格(分)',
     reference_price INT COMMENT '参考价格(分)',
     min_price INT COMMENT '最低售价(分)',
     min_price INT COMMENT '最低售价(分)',
-    description VARCHAR(500) COMMENT '说明',
+    description TEXT COMMENT '说明',
     status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
     status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
@@ -1349,7 +1349,7 @@ CREATE TABLE IF NOT EXISTS guide_packages (
     price INT NOT NULL COMMENT '销售价格(分)',
     price INT NOT NULL COMMENT '销售价格(分)',
     validity_months INT COMMENT '有效期(月)',
     validity_months INT COMMENT '有效期(月)',
     validity_days INT DEFAULT 0 COMMENT '有效期天数',
     validity_days INT DEFAULT 0 COMMENT '有效期天数',
-    description VARCHAR(500) COMMENT '套餐说明',
+    description TEXT COMMENT '套餐说明',
     status VARCHAR(20) DEFAULT 'DRAFT' COMMENT '状态: DRAFT/PUBLISHED/PAUSED',
     status VARCHAR(20) DEFAULT 'DRAFT' COMMENT '状态: DRAFT/PUBLISHED/PAUSED',
     sort_order INT DEFAULT 0 COMMENT '排序',
     sort_order INT DEFAULT 0 COMMENT '排序',
     sales_count INT DEFAULT 0 COMMENT '销量',
     sales_count INT DEFAULT 0 COMMENT '销量',
@@ -1399,7 +1399,7 @@ CREATE TABLE IF NOT EXISTS guide_service_logs (
     family_id BIGINT NOT NULL COMMENT '家庭ID',
     family_id BIGINT NOT NULL COMMENT '家庭ID',
     order_id BIGINT COMMENT '订单ID',
     order_id BIGINT COMMENT '订单ID',
     service_content_id BIGINT NOT NULL COMMENT '服务内容ID',
     service_content_id BIGINT NOT NULL COMMENT '服务内容ID',
-    notes VARCHAR(500) COMMENT '服务记录',
+    notes TEXT COMMENT '服务记录',
     duration INT COMMENT '服务时长(分钟)',
     duration INT COMMENT '服务时长(分钟)',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务记录表';
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务记录表';
@@ -1432,7 +1432,7 @@ CREATE TABLE IF NOT EXISTS finance_checkins (
     checkin_date DATE NOT NULL COMMENT '打卡日期',
     checkin_date DATE NOT NULL COMMENT '打卡日期',
     amount INT COMMENT '金额(分,收支记录)',
     amount INT COMMENT '金额(分,收支记录)',
     category VARCHAR(50) COMMENT '收支分类',
     category VARCHAR(50) COMMENT '收支分类',
-    note VARCHAR(200) COMMENT '备注',
+    note TEXT COMMENT '备注',
     mood VARCHAR(20) COMMENT '心情',
     mood VARCHAR(20) COMMENT '心情',
     earned_energy INT DEFAULT 0 COMMENT '获得的能量值',
     earned_energy INT DEFAULT 0 COMMENT '获得的能量值',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@@ -1456,7 +1456,7 @@ CREATE TABLE IF NOT EXISTS insurance_policies (
     renewal_type VARCHAR(20) DEFAULT 'annual' COMMENT '续费类型: annual/monthly/single',
     renewal_type VARCHAR(20) DEFAULT 'annual' COMMENT '续费类型: annual/monthly/single',
     status VARCHAR(20) DEFAULT 'active' COMMENT '状态: active/expired/cancelled',
     status VARCHAR(20) DEFAULT 'active' COMMENT '状态: active/expired/cancelled',
     policy_no VARCHAR(100) COMMENT '保单号',
     policy_no VARCHAR(100) COMMENT '保单号',
-    remark VARCHAR(500) COMMENT '备注',
+    remark TEXT COMMENT '备注',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     INDEX idx_user (user_id),
     INDEX idx_user (user_id),
@@ -1484,7 +1484,7 @@ CREATE TABLE IF NOT EXISTS health_reports (
     gut_type VARCHAR(50) COMMENT '肠型',
     gut_type VARCHAR(50) COMMENT '肠型',
     file_url VARCHAR(500) COMMENT '报告文件URL',
     file_url VARCHAR(500) COMMENT '报告文件URL',
     status VARCHAR(20) DEFAULT 'active' COMMENT '状态: active/archived',
     status VARCHAR(20) DEFAULT 'active' COMMENT '状态: active/archived',
-    remark VARCHAR(500) COMMENT '备注',
+    remark TEXT COMMENT '备注',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     INDEX idx_user_id (user_id),
     INDEX idx_user_id (user_id),
@@ -1543,7 +1543,7 @@ CREATE TABLE IF NOT EXISTS education_systems (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     name VARCHAR(32) NOT NULL UNIQUE COMMENT '编码(key)',
     name VARCHAR(32) NOT NULL UNIQUE COMMENT '编码(key)',
     label VARCHAR(50) NOT NULL COMMENT '显示名称',
     label VARCHAR(50) NOT NULL COMMENT '显示名称',
-    description VARCHAR(200) COMMENT '描述说明',
+    description TEXT COMMENT '描述说明',
     sort_order INT DEFAULT 0 COMMENT '排序',
     sort_order INT DEFAULT 0 COMMENT '排序',
     status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
     status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@@ -1614,7 +1614,7 @@ CREATE TABLE IF NOT EXISTS bazi_config (
 CREATE TABLE IF NOT EXISTS blood_type_config (
 CREATE TABLE IF NOT EXISTS blood_type_config (
     id               BIGINT AUTO_INCREMENT PRIMARY KEY,
     id               BIGINT AUTO_INCREMENT PRIMARY KEY,
     blood_type       VARCHAR(5)   NOT NULL UNIQUE COMMENT '血型: A/B/AB/O',
     blood_type       VARCHAR(5)   NOT NULL UNIQUE COMMENT '血型: A/B/AB/O',
-    description      VARCHAR(200) COMMENT '性格描述',
+    description      TEXT COMMENT '性格描述',
     mind_base        INT DEFAULT 0 COMMENT '心先天基础分(百分位)',
     mind_base        INT DEFAULT 0 COMMENT '心先天基础分(百分位)',
     wisdom_base      INT DEFAULT 0 COMMENT '智先天基础分(百分位)',
     wisdom_base      INT DEFAULT 0 COMMENT '智先天基础分(百分位)',
     body_modifier    INT DEFAULT 0 COMMENT '身修正系数(千分比)',
     body_modifier    INT DEFAULT 0 COMMENT '身修正系数(千分比)',
@@ -1659,7 +1659,7 @@ CREATE TABLE IF NOT EXISTS energy_rule (
     priority INT DEFAULT 0 COMMENT '优先级(数字越大越优先匹配)',
     priority INT DEFAULT 0 COMMENT '优先级(数字越大越优先匹配)',
     conditions JSON COMMENT '触发条件(JSON表达式)',
     conditions JSON COMMENT '触发条件(JSON表达式)',
     status TINYINT DEFAULT 1 COMMENT '状态: 1=启用 0=禁用',
     status TINYINT DEFAULT 1 COMMENT '状态: 1=启用 0=禁用',
-    description VARCHAR(500) COMMENT '规则描述',
+    description TEXT COMMENT '规则描述',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     INDEX idx_event_type (event_type),
     INDEX idx_event_type (event_type),
@@ -1670,7 +1670,7 @@ CREATE TABLE IF NOT EXISTS energy_rule (
 CREATE TABLE IF NOT EXISTS activities (
 CREATE TABLE IF NOT EXISTS activities (
     id               BIGINT AUTO_INCREMENT PRIMARY KEY,
     id               BIGINT AUTO_INCREMENT PRIMARY KEY,
     title            VARCHAR(100) NOT NULL COMMENT '活动标题',
     title            VARCHAR(100) NOT NULL COMMENT '活动标题',
-    description      VARCHAR(500) COMMENT '活动描述',
+    description      TEXT COMMENT '活动描述',
     cover_image      VARCHAR(500) COMMENT '封面图片URL',
     cover_image      VARCHAR(500) COMMENT '封面图片URL',
     dimension_code   VARCHAR(20) COMMENT '维度代码: body/mind/wisdom/action/wealth',
     dimension_code   VARCHAR(20) COMMENT '维度代码: body/mind/wisdom/action/wealth',
     activity_type    VARCHAR(20) DEFAULT 'offline' COMMENT '活动类型: offline/online/campaign',
     activity_type    VARCHAR(20) DEFAULT 'offline' COMMENT '活动类型: offline/online/campaign',
@@ -1696,7 +1696,7 @@ ALTER TABLE activities
     COMMENT '状态:draft(草稿)/pending(待审核)/rejected(已驳回)/published(发布中)/withdrawn(已撤回)',
     COMMENT '状态:draft(草稿)/pending(待审核)/rejected(已驳回)/published(发布中)/withdrawn(已撤回)',
   ADD COLUMN audit_status VARCHAR(20) DEFAULT NULL
   ADD COLUMN audit_status VARCHAR(20) DEFAULT NULL
     COMMENT '审核状态:approved/pending/rejected',
     COMMENT '审核状态:approved/pending/rejected',
-  ADD COLUMN audit_reason VARCHAR(500) DEFAULT NULL
+  ADD COLUMN audit_reason TEXT DEFAULT NULL
     COMMENT '驳回原因',
     COMMENT '驳回原因',
   ADD COLUMN auditor_id BIGINT DEFAULT NULL
   ADD COLUMN auditor_id BIGINT DEFAULT NULL
     COMMENT '审核人 ID',
     COMMENT '审核人 ID',
@@ -1811,7 +1811,7 @@ CREATE TABLE IF NOT EXISTS growth_task (
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
     type VARCHAR(16) NOT NULL COMMENT 'DAILY/NEWBIE',
     type VARCHAR(16) NOT NULL COMMENT 'DAILY/NEWBIE',
     title VARCHAR(100) NOT NULL,
     title VARCHAR(100) NOT NULL,
-    description VARCHAR(255),
+    description TEXT,
     reward_points INT DEFAULT 0,
     reward_points INT DEFAULT 0,
     reward_energy INT DEFAULT 0,
     reward_energy INT DEFAULT 0,
     target_value INT DEFAULT 1,
     target_value INT DEFAULT 1,
@@ -1906,7 +1906,7 @@ CREATE TABLE IF NOT EXISTS referral_leaderboard (
 CREATE TABLE IF NOT EXISTS `distribution_systems` (
 CREATE TABLE IF NOT EXISTS `distribution_systems` (
     `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
     `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
     `name` VARCHAR(100) NOT NULL COMMENT '团队名称',
     `name` VARCHAR(100) NOT NULL COMMENT '团队名称',
-    `description` VARCHAR(500) COMMENT '团队描述',
+    `description` TEXT COMMENT '团队描述',
     `owner_id` BIGINT COMMENT '创建人(服务商用户ID)',
     `owner_id` BIGINT COMMENT '创建人(服务商用户ID)',
     `profit_rate` INT DEFAULT 0 COMMENT '利润分成比例(bps, 如2000=20%)',
     `profit_rate` INT DEFAULT 0 COMMENT '利润分成比例(bps, 如2000=20%)',
     `enabled` TINYINT(1) DEFAULT 1 COMMENT '是否启用',
     `enabled` TINYINT(1) DEFAULT 1 COMMENT '是否启用',
@@ -1946,8 +1946,8 @@ CREATE TABLE IF NOT EXISTS zodiac_pairing (
     zodiac_code_2    VARCHAR(20) NOT NULL COMMENT '生肖代码2',
     zodiac_code_2    VARCHAR(20) NOT NULL COMMENT '生肖代码2',
     pairing_type     VARCHAR(20) NOT NULL COMMENT '配对类型: liuhe/sanhe/banhe/liuchong/xianghai/xiangxing/ping',
     pairing_type     VARCHAR(20) NOT NULL COMMENT '配对类型: liuhe/sanhe/banhe/liuchong/xianghai/xiangxing/ping',
     compatibility_score INT DEFAULT 50 COMMENT '兼容分 0-100',
     compatibility_score INT DEFAULT 50 COMMENT '兼容分 0-100',
-    description      VARCHAR(500) COMMENT '配对解读',
-    advice           VARCHAR(500) COMMENT '相处建议',
+    description      TEXT COMMENT '配对解读',
+    advice           TEXT COMMENT '相处建议',
     created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
     created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
     UNIQUE KEY uk_zodiac_pair (zodiac_code_1, zodiac_code_2)
     UNIQUE KEY uk_zodiac_pair (zodiac_code_1, zodiac_code_2)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生肖配对规则表';
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生肖配对规则表';
@@ -2014,8 +2014,8 @@ CREATE TABLE IF NOT EXISTS blood_type_pairing (
     blood_type_1     VARCHAR(5) NOT NULL COMMENT '血型1',
     blood_type_1     VARCHAR(5) NOT NULL COMMENT '血型1',
     blood_type_2     VARCHAR(5) NOT NULL COMMENT '血型2',
     blood_type_2     VARCHAR(5) NOT NULL COMMENT '血型2',
     compatibility_score INT DEFAULT 50 COMMENT '兼容分 0-100',
     compatibility_score INT DEFAULT 50 COMMENT '兼容分 0-100',
-    description      VARCHAR(500) COMMENT '配对描述',
-    advice           VARCHAR(500) COMMENT '相处建议',
+    description      TEXT COMMENT '配对描述',
+    advice           TEXT COMMENT '相处建议',
     created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
     created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
     UNIQUE KEY uk_blood_pair (blood_type_1, blood_type_2)
     UNIQUE KEY uk_blood_pair (blood_type_1, blood_type_2)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='血型配对表';
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='血型配对表';
@@ -2037,8 +2037,8 @@ CREATE TABLE IF NOT EXISTS life_number_relationship (
     id               BIGINT AUTO_INCREMENT PRIMARY KEY,
     id               BIGINT AUTO_INCREMENT PRIMARY KEY,
     relationship_number INT NOT NULL COMMENT '关系数字 1-9',
     relationship_number INT NOT NULL COMMENT '关系数字 1-9',
     title            VARCHAR(100) COMMENT '关系主题',
     title            VARCHAR(100) COMMENT '关系主题',
-    description      VARCHAR(500) COMMENT '关系解读',
-    advice           VARCHAR(500) COMMENT '相处建议',
+    description      TEXT COMMENT '关系解读',
+    advice           TEXT COMMENT '相处建议',
     color_hex        VARCHAR(10) COMMENT '代表色',
     color_hex        VARCHAR(10) COMMENT '代表色',
     created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
     created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
     UNIQUE KEY uk_relationship_num (relationship_number)
     UNIQUE KEY uk_relationship_num (relationship_number)
@@ -2079,7 +2079,7 @@ CREATE TABLE IF NOT EXISTS indicator_values (
     definition_id BIGINT NOT NULL COMMENT 'FK→indicator_definitions.id',
     definition_id BIGINT NOT NULL COMMENT 'FK→indicator_definitions.id',
     value VARCHAR(200) COMMENT '值',
     value VARCHAR(200) COMMENT '值',
     numeric_value DECIMAL(10,2) COMMENT '数值(number类型时用)',
     numeric_value DECIMAL(10,2) COMMENT '数值(number类型时用)',
-    remark VARCHAR(500) COMMENT '备注',
+    remark TEXT COMMENT '备注',
     recorded_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     recorded_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     INDEX idx_source (source_type, source_id),
     INDEX idx_source (source_type, source_id),
     INDEX idx_definition (definition_id)
     INDEX idx_definition (definition_id)
@@ -2091,7 +2091,7 @@ CREATE TABLE IF NOT EXISTS tongue_records (
     member_id BIGINT NOT NULL COMMENT '家庭成员ID',
     member_id BIGINT NOT NULL COMMENT '家庭成员ID',
     child_id BIGINT COMMENT '孩子ID',
     child_id BIGINT COMMENT '孩子ID',
     image_url VARCHAR(500) COMMENT '舌象图片URL',
     image_url VARCHAR(500) COMMENT '舌象图片URL',
-    overall_assessment VARCHAR(500) COMMENT '总体评估',
+    overall_assessment TEXT COMMENT '总体评估',
     status VARCHAR(20) DEFAULT 'draft' COMMENT 'draft/confirmed',
     status VARCHAR(20) DEFAULT 'draft' COMMENT 'draft/confirmed',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
@@ -2125,8 +2125,8 @@ ALTER TABLE activities ADD COLUMN energy_penalty_unregistered INT DEFAULT 5 COMM
 CREATE TABLE IF NOT EXISTS system_config (
 CREATE TABLE IF NOT EXISTS system_config (
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
     config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
     config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
-    config_value VARCHAR(500) COMMENT '配置值',
-    description VARCHAR(255) COMMENT '说明',
+    config_value TEXT COMMENT '配置值',
+    description TEXT COMMENT '说明',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
@@ -2216,7 +2216,7 @@ CREATE TABLE IF NOT EXISTS supply_system (
     admin_id BIGINT NOT NULL COMMENT '管理员用户ID',
     admin_id BIGINT NOT NULL COMMENT '管理员用户ID',
     settlement_period_days INT NOT NULL DEFAULT 30 COMMENT '账期(天)',
     settlement_period_days INT NOT NULL DEFAULT 30 COMMENT '账期(天)',
     platform_profit_rate DECIMAL(5,2) NOT NULL DEFAULT 0 COMMENT '平台留利比例(%)',
     platform_profit_rate DECIMAL(5,2) NOT NULL DEFAULT 0 COMMENT '平台留利比例(%)',
-    description VARCHAR(500) COMMENT '描述',
+    description TEXT COMMENT '描述',
     status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active/disabled',
     status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active/disabled',
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
@@ -2244,7 +2244,7 @@ CREATE TABLE IF NOT EXISTS supply_settlement (
     supplier_payout INT NOT NULL DEFAULT 0 COMMENT '供应商实付(分)',
     supplier_payout INT NOT NULL DEFAULT 0 COMMENT '供应商实付(分)',
     status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/settled',
     status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/settled',
     settled_at DATETIME COMMENT '结算时间',
     settled_at DATETIME COMMENT '结算时间',
-    remark VARCHAR(500) COMMENT '备注',
+    remark TEXT COMMENT '备注',
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     KEY idx_system_id (system_id),
     KEY idx_system_id (system_id),
     KEY idx_period (period_start, period_end)
     KEY idx_period (period_start, period_end)