-- 自动生成:incid_db 建库建表脚本 CREATE DATABASE IF NOT EXISTS incid_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE incid_db; CREATE TABLE accid_list ( id INTEGER NOT NULL COMMENT '主键ID,自增' AUTO_INCREMENT, ticket_id VARCHAR(50) NOT NULL COMMENT '工单ID', model VARCHAR(100) COMMENT '型号', vin VARCHAR(50) NOT NULL COMMENT '车辆识别码(VIN)', creator VARCHAR(50) NOT NULL COMMENT '创建人(用户名,如ZHANMEN)', create_time DATETIME NOT NULL COMMENT '工单新建时间', occur_datetime DATETIME NOT NULL COMMENT '问题发生时间', case_description TEXT NOT NULL COMMENT 'Case描述', fo_solution TEXT NOT NULL COMMENT 'Fo解答', category VARCHAR(100) NOT NULL COMMENT '分类', keywords VARCHAR(200) NOT NULL COMMENT '关键词(多个用逗号分隔)', handle_status VARCHAR(20) COMMENT '处理状态:已完成/未完成', create_at DATETIME COMMENT '记录插入数据库时间', update_at DATETIME COMMENT '记录最后更新时间', bmbs_name VARCHAR(50) COMMENT 'BMBS联系人', accident_level ENUM('P1','P2','P3') COMMENT '事故评级', rdca_reporter VARCHAR(50) COMMENT 'RDCA报告人', carline VARCHAR(100) COMMENT '车系(关联字典表dict_code=carline)', software_version VARCHAR(50) COMMENT '软件版本', labels VARCHAR(100) COMMENT '事故类型标签(关联字典表dict_code=labels)', attachment_url VARCHAR(255) COMMENT '附件地址(多个用逗号分隔)', assignee_name VARCHAR(50) COMMENT '经办人(关联字典表/用户表)', affects_versions VARCHAR(100) COMMENT '受影响的版本(关联字典表dict_code=affects_versions)', components VARCHAR(100) COMMENT '零部件/组件(关联字典表dict_code=components)', fix_versions VARCHAR(100) COMMENT '修复方案对应的版本(关联字典表dict_code=fix_versions)', subtasks VARCHAR(200) NOT NULL COMMENT '子任务(多个用逗号分隔)', linked_work_items VARCHAR(200) NOT NULL COMMENT '关联的工作项(格式:类型:ID,类型:ID)', descriptions VARCHAR(255) NOT NULL COMMENT '补充描述(区别于case_description)', mviz_link VARCHAR(255) NOT NULL COMMENT 'mviz的链接', system_function VARCHAR(255) NOT NULL COMMENT 'system_function字段', image_ids VARCHAR(255) NOT NULL COMMENT '关联图片ID串,逗号分隔(如:1,2,3)', PRIMARY KEY (id) )CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC ENGINE=InnoDB COLLATE utf8mb4_unicode_ci; CREATE INDEX idx_carline ON accid_list (carline); CREATE INDEX idx_labels ON accid_list (labels); CREATE INDEX idx_components ON accid_list (components); CREATE INDEX idx_ticket_id ON accid_list (ticket_id); CREATE INDEX idx_affects_versions ON accid_list (affects_versions); CREATE INDEX idx_accident_level ON accid_list (accident_level); CREATE INDEX idx_create_time ON accid_list (create_time); CREATE INDEX idx_fix_versions ON accid_list (fix_versions); CREATE INDEX idx_creator ON accid_list (creator); CREATE INDEX idx_assignee_name ON accid_list (assignee_name); CREATE TABLE dict_type ( id INTEGER NOT NULL COMMENT '主键ID' AUTO_INCREMENT, dict_code VARCHAR(50) NOT NULL COMMENT '字典编码(对应accid_list的字段名,如carline、labels)', dict_name VARCHAR(50) NOT NULL COMMENT '字典名称(字段中文名称,如车系、事故类型)', remark VARCHAR(200) COMMENT '备注(如“事故工单-车系下拉选项”)', status INTEGER NOT NULL COMMENT '状态:1-启用,0-禁用', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间', PRIMARY KEY (id), CONSTRAINT uk_dict_code UNIQUE (dict_code) )CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='字典类型表(管理需要下拉的字段)' ROW_FORMAT=Dynamic COLLATE utf8mb4_unicode_ci; CREATE TABLE file_uploads ( id INTEGER NOT NULL COMMENT '主键(自增数值ID)' AUTO_INCREMENT, file_name VARCHAR(255) NOT NULL COMMENT '原始文件名(如:事故图片1.jpg)', file_alias VARCHAR(255) NOT NULL COMMENT '存储别名(避免重名,如:20260210_153950_89782.jpg)', file_path VARCHAR(512) NOT NULL COMMENT '存储路径/访问URL(本地:/uploads/202602/xxx.jpg;OSS:https://xxx.oss-cn-beijing.aliyuncs.com/xxx.jpg)', file_size INTEGER NOT NULL COMMENT '文件大小(字节)', file_type VARCHAR(50) NOT NULL COMMENT '文件MIME类型(如:image/jpeg、image/png)', business_type VARCHAR(50) COMMENT '关联业务类型(如:case=案例、user=用户头像)', business_id INTEGER COMMENT '关联业务主键(案例ID/用户ID等,初始为NULL)', create_time DATETIME NOT NULL COMMENT '上传时间', create_by VARCHAR(50) COMMENT '上传人(用户ID/用户名)', status INTEGER NOT NULL COMMENT '状态:1=有效,0=逻辑删除', PRIMARY KEY (id) )CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC ENGINE=InnoDB COLLATE utf8mb4_unicode_ci; CREATE INDEX idx_business_type_id ON file_uploads (business_type, business_id); CREATE INDEX idx_create_time ON file_uploads (create_time); CREATE INDEX idx_status ON file_uploads (status); CREATE TABLE users ( id INTEGER NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL, status INTEGER COMMENT '用户状态:1-正常,0-禁用', created_at DATETIME COMMENT '创建时间', updated_at DATETIME COMMENT '更新时间', email VARCHAR(255) COMMENT '邮箱', avatar VARCHAR(255) COMMENT '头像(通常存储图片URL)', region VARCHAR(255) COMMENT '国家地区', phone VARCHAR(255) COMMENT '电话', brief VARCHAR(255) COMMENT '个人简介', third_party_account VARCHAR(255) COMMENT '第三方账号(如微信、QQ等)', position VARCHAR(255) COMMENT '职务', department VARCHAR(255) COMMENT '部门', label VARCHAR(255) COMMENT '个人标签(多个标签可逗号分隔)', created_by INTEGER, updated_by INTEGER, PRIMARY KEY (id), UNIQUE (username), FOREIGN KEY(created_by) REFERENCES users (id), FOREIGN KEY(updated_by) REFERENCES users (id) ); CREATE TABLE dict_item ( id INTEGER NOT NULL COMMENT '主键ID' AUTO_INCREMENT, dict_id INTEGER NOT NULL COMMENT '关联字典类型表的ID', item_value VARCHAR(100) NOT NULL COMMENT '选项值(存储到accid_list的实际值,如“大众帕萨特”“P1”)', item_label VARCHAR(100) NOT NULL COMMENT '选项标签(前端显示的文本,如“大众帕萨特(车系)”)', sort INTEGER COMMENT '排序号(前端下拉框显示顺序,数字越小越靠前)', status INTEGER NOT NULL COMMENT '状态:1-启用,0-禁用(禁用后前端不显示)', remark VARCHAR(200) COMMENT '备注(如“2025款帕萨特专属”)', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间', PRIMARY KEY (id), FOREIGN KEY(dict_id) REFERENCES dict_type (id) )CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='字典项表(管理每个字段的具体下拉选项)' ROW_FORMAT=Dynamic COLLATE utf8mb4_unicode_ci; CREATE INDEX idx_item_value ON dict_item (item_value); CREATE INDEX idx_dict_id ON dict_item (dict_id); CREATE TABLE roles ( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL COMMENT '角色名称', description VARCHAR(255) COMMENT '角色描述', status INTEGER COMMENT '状态:1-启用,0-禁用', created_at DATETIME, updated_at DATETIME, created_by INTEGER, updated_by INTEGER, PRIMARY KEY (id), UNIQUE (name), FOREIGN KEY(created_by) REFERENCES users (id), FOREIGN KEY(updated_by) REFERENCES users (id) ); CREATE TABLE user_roles ( user_id INTEGER NOT NULL, role_id INTEGER NOT NULL, created_at DATETIME, created_by INTEGER, PRIMARY KEY (user_id, role_id), FOREIGN KEY(user_id) REFERENCES users (id), FOREIGN KEY(role_id) REFERENCES roles (id), FOREIGN KEY(created_by) REFERENCES users (id) );