Files

145 lines
7.7 KiB
SQL
Raw Permalink Normal View History

2026-07-10 18:55:55 +08:00
-- 自动生成: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.jpgOSShttps://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)
);