数据库设计.md 11 KB

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(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', update_time DATETIME(3) NOT NULL COMMENT '更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0未删除,1已删除', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发型师用户信息表';

CREATE TABLE customer ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '顾客主键ID', hairstylist_id BIGINT UNSIGNED NOT NULL COMMENT '所属发型师ID', name VARCHAR(30) NOT NULL COMMENT '顾客姓名(必填)', name_pronunciation VARCHAR(50) NOT NULL DEFAULT '' COMMENT '姓名读音', phone VARCHAR(20) NOT NULL COMMENT '联系电话(必填)', email VARCHAR(100) NOT NULL DEFAULT '' COMMENT '邮箱', birthday DATE NULL COMMENT '生日', avatar VARCHAR(500) NOT NULL DEFAULT '' COMMENT '顾客头像图片URL地址', expect_contact ENUM('LINE', 'PHONE', 'EMAIL', 'NONE') NOT NULL DEFAULT 'NONE' COMMENT '期望联系方式:LINE/电话/邮箱/未设置', hair_length ENUM('SHORT', 'MEDIUM', 'LONG', 'UNCONFIRM') NOT NULL DEFAULT 'UNCONFIRM' COMMENT '当前头发长度:短发/中长发/长发/未确认', hair_texture ENUM('UNCONFIRM', 'THIN', 'NORMAL', 'HARD_CRUDE', 'CURLY') NOT NULL DEFAULT 'UNCONFIRM' COMMENT '发质:未确认/细/普通/粗硬/有自然卷', notice TEXT NULL COMMENT '发型护理注意事项', allergy VARCHAR(500) NOT NULL DEFAULT '' COMMENT '过敏史/过敏产品', inner_remark TEXT NULL COMMENT '门店内部备注(仅内部查看)', follow_content TEXT NULL COMMENT '跟进内容', next_follow_date DATE NULL COMMENT '下次跟进日期', recommend_visit_date DATE NULL COMMENT '推荐到店日', first_suggest_hair ENUM('AUTO', 'LONG', 'MEDIUM', 'SHORT') NOT NULL DEFAULT 'AUTO' COMMENT '首次建议发型模板:自动推荐/长发/中长发/短发', plan_date DATE NULL COMMENT '到店计划日', is_first_register TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否首次登记:0否,1是', visit_purpose ENUM('CUT_DYE', 'CUT', 'DYE', 'CONSULT_SIM') NULL COMMENT '到店目的:剪发+染发/剪发/染发/模拟咨询', trouble TEXT NULL COMMENT '发质/发型烦恼', consult_content TEXT NULL COMMENT '详细咨询内容', expect_look TEXT NULL COMMENT '期望发型形象描述', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', update_time DATETIME(3) NOT NULL COMMENT '更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除 0正常 1删除', PRIMARY KEY (id), UNIQUE KEY uk_phone_del (phone, is_deleted), KEY idx_is_deleted (is_deleted), KEY idx_hairstylist_is_deleted (hairstylist_id, is_deleted), KEY idx_next_follow (next_follow_date, is_deleted), KEY idx_recommend_visit (recommend_visit_date, is_deleted), KEY idx_plan_date (plan_date, is_deleted) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_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(3) NOT NULL COMMENT '施术时间', treatment_title VARCHAR(200) NOT NULL COMMENT '施术标题(如:剪发+漂染护理)', treatment_detail TEXT NULL COMMENT '施术详细内容、使用产品、操作备注', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录创建时间', update_time DATETIME(3) NOT NULL COMMENT '记录更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (id) ) 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 COMMENT '原始照片URL地址', template_ids TEXT NOT NULL COMMENT '本次模拟使用的模板ID列表', simulate_remark TEXT NULL COMMENT '本次发型模拟备注说明', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录创建时间', update_time DATETIME(3) NOT NULL COMMENT '记录更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (id) ) 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 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 COMMENT '任务执行状态:处理中/成功/失败', result_images TEXT NULL COMMENT '任务结果图片URL数组,JSON格式存储', task_start_time DATETIME(3) NOT NULL COMMENT '任务发起开始时间', task_finish_time DATETIME(3) NULL COMMENT '任务执行完成时间,未结束为NULL', error_msg TEXT NULL COMMENT '任务失败错误信息,成功则为空', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录创建时间', update_time DATETIME(3) NOT NULL COMMENT '记录更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (id) ) 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) NOT NULL DEFAULT '' COMMENT '模板封面图URL', status ENUM('DRAFT', 'PUBLIC') NOT NULL COMMENT '模板状态:DRAFT草稿 / PUBLIC公开', category ENUM('LONG', 'MEDIUM', 'SHORT', 'DYE') NOT NULL COMMENT '分类:长发/中长发/短发/染发', tags VARCHAR(500) NOT NULL DEFAULT '' COMMENT '模板标签,逗号分隔存储', description TEXT NULL COMMENT '模板详细说明', model_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'AI模特图片URL', clothes_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT '服装素材URL', background_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT '背景图片URL', ref_hair_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT '参考发型图片URL', hairstylist_id BIGINT UNSIGNED NULL COMMENT '创建发型师ID,系统模板为空', template_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT '完整模板预览页面URL', used_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '模板累计使用次数', is_system_template ENUM('YES', 'NO') NOT NULL DEFAULT 'NO' COMMENT '是否系统模板:YES系统模板,NO门店自定义模板', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', update_time DATETIME(3) NOT NULL COMMENT '更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (id), KEY idx_category (category, is_deleted), KEY idx_hairstylist_id (hairstylist_id, is_deleted), KEY idx_status (status, is_deleted) ) 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) NOT NULL DEFAULT '' COMMENT '第一步AI任务ID', step2_task_id VARCHAR(200) NOT NULL DEFAULT '' COMMENT '第二步AI任务ID', task_status ENUM('WAIT', 'PROCESSING', 'STEP1_SUCCESS', 'STEP2_SUCCESS', 'FAILED') NOT NULL 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) NOT NULL DEFAULT '' COMMENT '参考发型图片URL', model_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'AI模特图片URL', clothes_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT '服装素材URL', background_url VARCHAR(500) NOT NULL DEFAULT '' COMMENT '背景图片URL', step1_result_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'step1输出结果图', step2_result_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'step2最终合成结果图', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录创建时间', update_time DATETIME(3) NOT NULL COMMENT '记录更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常,1删除', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发型模板制作异步任务表';

CREATE TABLE system_config ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '配置主键ID', config_key VARCHAR(100) NOT NULL COMMENT '配置唯一键,英文标识', config_name VARCHAR(200) NOT NULL COMMENT '配置中文名称', config_group VARCHAR(50) NOT NULL COMMENT '配置分组', config_value TEXT NULL COMMENT '配置值,文本/数字/JSON都存这里', value_type ENUM('STRING', 'NUMBER', 'BOOLEAN', 'JSON') NOT NULL DEFAULT 'STRING' COMMENT '值类型:字符串/数字/布尔/JSON数组对象', sort INT NOT NULL DEFAULT 0 COMMENT '排序号,后台展示顺序', remark VARCHAR(500) NULL DEFAULT '' COMMENT '配置说明备注', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', update_time DATETIME(3) NOT NULL COMMENT '更新时间', is_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1删除', PRIMARY KEY (id), UNIQUE KEY uk_config_key (config_key, is_deleted), KEY idx_config_group (config_group, is_deleted) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统全局配置表';