CREATE TABLE `hairstylist_user` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '发型师主键ID', `username` VARCHAR(50) NOT NULL COMMENT '发型师用户名', `email` VARCHAR(100) NOT NULL COMMENT '登录邮箱', `password` VARCHAR(100) NOT NULL COMMENT '加密后的登录密码', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0未删除,1已删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`,`is_deleted`) COMMENT '用户名唯一(排除已删除)', UNIQUE KEY `uk_email` (`email`,`is_deleted`) COMMENT '邮箱唯一(排除已删除)', KEY `idx_is_deleted` (`is_deleted`) COMMENT '删除状态索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发型师用户信息表'; nicode_ci COMMENT='发型模板制作异步任务表'; CREATE TABLE `customer_treatment_record` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '施术记录主键ID', `customer_id` BIGINT UNSIGNED NOT NULL COMMENT '关联顾客ID,customer表主键', `hairstylist_id` BIGINT UNSIGNED NOT NULL COMMENT '操作发型师ID,hairstylist_user表主键', `treatment_time` DATETIME NOT NULL COMMENT '施术时间', `treatment_title` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '施术标题(如:剪发+漂染护理)', `treatment_detail` TEXT NULL COMMENT '施术详细内容、使用产品、操作备注', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', `is_deleted` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (`id`), KEY `idx_customer_id` (`customer_id`,`is_deleted`) COMMENT '快速查询单个顾客全部施术历史', KEY `idx_hairstylist_id` (`hairstylist_id`,`is_deleted`) COMMENT '查询发型师负责的所有施术记录', KEY `idx_treatment_time` (`treatment_time`,`is_deleted`) COMMENT '按施术时间筛选统计' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='顾客施术历史记录表'; CREATE TABLE `ai_hair_simulation` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模拟记录主键ID', `customer_id` BIGINT UNSIGNED NULL COMMENT '关联顾客ID,可为NULL(匿名无顾客)', `hairstylist_id` BIGINT UNSIGNED NOT NULL COMMENT '操作发型师ID,关联发型师用户表', `origin_image` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '原始照片URL地址', `simulate_remark` TEXT NULL COMMENT '本次发型模拟备注说明', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', `is_deleted` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (`id`), KEY `idx_customer_id` (`customer_id`,`is_deleted`) COMMENT '查询指定顾客所有模拟记录', KEY `idx_hairstylist_id` (`hairstylist_id`,`is_deleted`) COMMENT '查询发型师制作的模拟方案' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI发型模拟记录表'; CREATE TABLE `ai_hair_simulation_task` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '任务主键ID', `simulation_id` BIGINT UNSIGNED NOT NULL COMMENT '关联AI发型模拟表id', `template_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '发型模板ID', `customer_id` BIGINT UNSIGNED NULL COMMENT '关联顾客ID,可为NULL(匿名模拟)', `task_id` VARCHAR(200) NOT NULL COMMENT 'AI服务侧唯一任务ID', `task_status` ENUM('PROCESSING','SUCCESSES','FAILED') NOT NULL DEFAULT 'PROCESSING' COMMENT '任务执行状态:处理中/成功/失败', `result_images` TEXT NULL COMMENT '任务结果图片URL数组,JSON格式存储', `task_start_time` DATETIME NOT NULL COMMENT '任务发起开始时间', `task_finish_time` DATETIME NULL COMMENT '任务执行完成时间,未结束为NULL', `error_msg` TEXT NULL COMMENT '任务失败错误信息,成功则为空', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', `is_deleted` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_id` (`task_id`) COMMENT 'AI任务唯一防重复', KEY `idx_simulation_id` (`simulation_id`,`is_deleted`) COMMENT '根据模拟记录查询所有子任务', KEY `idx_customer_id` (`customer_id`,`is_deleted`) COMMENT '顾客维度筛选模拟任务', KEY `idx_task_status` (`task_status`,`is_deleted`) COMMENT '筛选待处理/失败任务重试' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI发型模拟异步任务表'; CREATE TABLE `hair_template` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板主键ID', `template_name` VARCHAR(100) NOT NULL COMMENT '模板名称(必填)', `cover_url` VARCHAR(500) DEFAULT '' COMMENT '模板封面图URL', `status` ENUM('DRAFT','PUBLIC') NOT NULL DEFAULT 'DRAFT' COMMENT '模板状态:DRAFT草稿 / PUBLIC公开', `category` ENUM('LONG','MEDIUM','SHORT','DYE') NOT NULL DEFAULT 'LONG' COMMENT '分类:长发/中长发/短发/染发', `tags` VARCHAR(500) DEFAULT '' COMMENT '模板标签,逗号分隔存储', `description` TEXT NULL COMMENT '模板详细说明', `model_url` VARCHAR(500) DEFAULT '' COMMENT 'AI模特图片URL', `clothes_url` VARCHAR(500) DEFAULT '' COMMENT '服装素材URL', `background_url` VARCHAR(500) DEFAULT '' COMMENT '背景图片URL', `ref_hair_url` VARCHAR(500) DEFAULT '' COMMENT '参考发型图片URL', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (`id`), KEY `idx_status` (`status`,`is_deleted`) COMMENT '按模板状态筛选', KEY `idx_category` (`category`,`is_deleted`) COMMENT '按发型分类筛选模板' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI发型模板表'; CREATE TABLE `hair_template_make_task` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '本地任务自增主键', `total_task_id` VARCHAR(200) NOT NULL COMMENT '总任务唯一ID', `step1_task_id` VARCHAR(200) DEFAULT '' COMMENT '第一步AI任务ID', `step2_task_id` VARCHAR(200) DEFAULT '' COMMENT '第二步AI任务ID', `task_status` ENUM('WAIT','PROCESSING','STEP1_SUCCESS','STEP2_SUCCESS','FAILED') NOT NULL DEFAULT 'WAIT' COMMENT '任务状态:等待处理/处理中/第一步完成/全部完成/失败', `template_id` BIGINT UNSIGNED NULL COMMENT '关联发型模板ID,模板生成完成后回填', `step1_resource` TEXT NULL COMMENT 'step1任务资源包,JSON字符串存储参数/素材信息', `step2_resource` TEXT NULL COMMENT 'step2任务资源包,JSON字符串存储参数/素材信息', `ref_hair_url` VARCHAR(500) DEFAULT '' COMMENT '参考发型图片URL', `model_url` VARCHAR(500) DEFAULT '' COMMENT 'AI模特图片URL', `clothes_url` VARCHAR(500) DEFAULT '' COMMENT '服装素材URL', `background_url` VARCHAR(500) DEFAULT '' COMMENT '背景图片URL', `step1_result_img` VARCHAR(500) DEFAULT '' COMMENT 'step1输出结果图', `step2_result_img` VARCHAR(500) DEFAULT '' COMMENT 'step2最终合成结果图', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', `is_deleted` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常,1删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_total_task_id` (`total_task_id`) COMMENT '总任务ID唯一防重复提交', KEY `idx_task_status` (`task_status`,`is_deleted`) COMMENT '筛选待执行、失败任务', KEY `idx_template_id` (`template_id`,`is_deleted`) COMMENT '根据模板查询制作任务记录' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发型模板制作异步任务表';