3de882f06e
Co-Authored-By: Claude Code <noreply@anthropic.com>
526 lines
30 KiB
SQL
526 lines
30 KiB
SQL
-- ============================================================
|
||
-- SuperLink 基准建库脚本(Fresh Install Base Schema) v1.0.51
|
||
-- 用途:全新部署时一次性建立全部业务表(当前形态,含历次迁移结果)。
|
||
-- 由仓库"增量迁移缺失基准 schema"这一现状补建:主业务表定义从
|
||
-- api 代码字段白名单 + INSERT/SELECT 语句反推,字典/属性/计划等表
|
||
-- 直接采用迁移文件中的 CREATE TABLE 原文。
|
||
-- 约定:v1.0.16 后所有业务表时间字段为 DATE;id 一律 INT UNSIGNED AUTO_INCREMENT;
|
||
-- 字符集 utf8mb4 / 排序 utf8mb4_unicode_ci。
|
||
-- 执行顺序:本文件 → dict_seed.sql → 系统初始数据(admin)。
|
||
-- ============================================================
|
||
|
||
SET NAMES utf8mb4;
|
||
SET FOREIGN_KEY_CHECKS = 0;
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 0) 数据字典(定义见 migration_v1.0.16 / v1.0.18,数据由 dict_seed.sql 注入)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `data_dict_country` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`code` VARCHAR(50) NOT NULL COMMENT '国家/地区编码',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '国家/地区中文名',
|
||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_code` (`code`),
|
||
KEY `idx_name` (`name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='国家地区编码字典';
|
||
|
||
CREATE TABLE IF NOT EXISTS `data_dict_area` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`code` VARCHAR(50) NOT NULL COMMENT '行政区划编码',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '行政区划名称',
|
||
`parent_code` VARCHAR(50) DEFAULT NULL COMMENT '上级行政区划编码',
|
||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_code` (`code`),
|
||
KEY `idx_parent` (`parent_code`),
|
||
KEY `idx_name` (`name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='行政区划编码字典';
|
||
|
||
CREATE TABLE IF NOT EXISTS `data_dict_industry` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`code` VARCHAR(50) NOT NULL COMMENT '行业编码',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '行业名称',
|
||
`parent_code` VARCHAR(50) DEFAULT NULL COMMENT '上级行业编码',
|
||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_code` (`code`),
|
||
KEY `idx_parent` (`parent_code`),
|
||
KEY `idx_name` (`name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='招标行业分类字典';
|
||
|
||
CREATE TABLE IF NOT EXISTS `data_dict_certificate` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`code` VARCHAR(50) NULL DEFAULT NULL COMMENT '证书类型枚举编码',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '证书类型名称',
|
||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_code` (`code`),
|
||
KEY `idx_name` (`name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='证书类型枚举字典';
|
||
|
||
CREATE TABLE IF NOT EXISTS `data_dict_company_type` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`code` VARCHAR(50) NULL DEFAULT NULL COMMENT '企业类型编码',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '企业类型名称',
|
||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_code` (`code`),
|
||
KEY `idx_name` (`name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业类型字典(对应 companies.legal_form)';
|
||
|
||
CREATE TABLE IF NOT EXISTS `source_channels` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`name` VARCHAR(50) NOT NULL COMMENT '渠道名称',
|
||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_name` (`name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='来源渠道字典';
|
||
|
||
-- 来源渠道默认数据
|
||
INSERT INTO `source_channels` (`name`, `sort_order`) VALUES
|
||
('展会', 1), ('SNS/社交媒体', 2), ('竞价广告', 3), ('搜索引擎自然流量', 4),
|
||
('行业媒体/门户', 5), ('转介绍', 6), ('电话销售', 7), ('邮件营销', 8),
|
||
('地推', 9), ('代理商/渠道', 10), ('官网咨询', 11), ('其他', 99);
|
||
|
||
-- 企业类型字典默认数据
|
||
INSERT INTO `data_dict_company_type` (`code`, `name`, `sort_order`) VALUES
|
||
('llc', '有限责任公司', 1), ('joint_stock', '股份有限公司', 2), ('partnership', '合伙企业', 3),
|
||
('sole_proprietorship', '个人独资企业', 4), ('state_owned', '国有企业', 5), ('collective', '集体所有制企业', 6),
|
||
('foreign_invested', '外商投资企业', 7), ('joint_venture', '中外合资企业', 8), ('other', '其他', 99);
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 1) 客户主体:企业
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `companies` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`display_name` VARCHAR(191) NOT NULL DEFAULT '' COMMENT '显示名称',
|
||
`name_zh` VARCHAR(191) DEFAULT NULL COMMENT '中文名',
|
||
`business_role` VARCHAR(50) DEFAULT NULL COMMENT '业务类型',
|
||
`country` VARCHAR(100) DEFAULT NULL COMMENT '国家/地区',
|
||
`registration_number` VARCHAR(100) DEFAULT NULL COMMENT '统一社会信用代码/注册号',
|
||
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
|
||
`legal_form` VARCHAR(50) DEFAULT NULL COMMENT '企业类型(公司)',
|
||
`legal_representative` VARCHAR(100) DEFAULT NULL COMMENT '法定代表人',
|
||
`business_scope` TEXT DEFAULT NULL COMMENT '经营范围',
|
||
`established_date` DATE DEFAULT NULL COMMENT '成立日期',
|
||
`registered_capital` VARCHAR(50) DEFAULT NULL COMMENT '注册资本',
|
||
`industry` VARCHAR(100) DEFAULT NULL COMMENT '行业',
|
||
`industry_subdivision` VARCHAR(100) DEFAULT NULL COMMENT '行业细分',
|
||
`latest_employee_count` INT DEFAULT NULL COMMENT '最新员工数',
|
||
`latest_annual_revenue` VARCHAR(50) DEFAULT NULL COMMENT '年营收',
|
||
`is_listed` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否上市 0/1',
|
||
`stock_code` VARCHAR(30) DEFAULT NULL COMMENT '股票代码',
|
||
`website` VARCHAR(255) DEFAULT NULL COMMENT '官网',
|
||
`source_channel` VARCHAR(50) DEFAULT NULL COMMENT '来源渠道',
|
||
`source_detail` VARCHAR(255) DEFAULT NULL COMMENT '来源详情',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
`is_incomplete` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '完整度不达标标记',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
`updated_at` DATE DEFAULT NULL COMMENT '更新日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_is_active` (`is_active`),
|
||
KEY `idx_source_channel` (`source_channel`),
|
||
KEY `idx_name_zh` (`name_zh`),
|
||
KEY `idx_industry` (`industry`),
|
||
KEY `idx_created_at` (`created_at`),
|
||
KEY `idx_incomplete` (`is_incomplete`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 2) 客户主体:人员
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `persons` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`union_id` VARCHAR(64) DEFAULT NULL COMMENT '外部/统一ID(去重线索)',
|
||
`full_name` VARCHAR(100) DEFAULT NULL COMMENT '姓名',
|
||
`gender` VARCHAR(20) DEFAULT NULL COMMENT '性别(男/女/未知)',
|
||
`nationality` VARCHAR(50) DEFAULT NULL COMMENT '国籍',
|
||
`id_type` VARCHAR(30) DEFAULT NULL COMMENT '证件类型',
|
||
`id_number` VARCHAR(100) DEFAULT NULL COMMENT '身份证号码',
|
||
`education` VARCHAR(30) DEFAULT NULL COMMENT '学历',
|
||
`graduated_from` VARCHAR(191) DEFAULT NULL COMMENT '毕业院校',
|
||
`hometown` VARCHAR(100) DEFAULT NULL COMMENT '家乡',
|
||
`work_location` VARCHAR(100) DEFAULT NULL COMMENT '工作所在地',
|
||
`source_channel` VARCHAR(50) DEFAULT NULL COMMENT '来源渠道',
|
||
`source_detail` VARCHAR(255) DEFAULT NULL COMMENT '来源详情',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
`is_incomplete` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '完整度不达标标记',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
`updated_at` DATE DEFAULT NULL COMMENT '更新日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_is_active` (`is_active`),
|
||
KEY `idx_full_name` (`full_name`),
|
||
KEY `idx_source_channel` (`source_channel`),
|
||
KEY `idx_work_location` (`work_location`),
|
||
KEY `idx_incomplete` (`is_incomplete`),
|
||
KEY `idx_created_at` (`created_at`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人员表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 3) 社媒/联系方式(多态归属:owner_type='company'|'person',platform 可为 phone/email/社媒名)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `social_accounts` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`owner_type` VARCHAR(20) NOT NULL COMMENT '归属类型 company/person',
|
||
`owner_id` INT UNSIGNED NOT NULL COMMENT '归属主体ID',
|
||
`platform` VARCHAR(30) NOT NULL COMMENT '平台:phone/email/wechat/weibo/douyin/...',
|
||
`account_id` VARCHAR(191) NOT NULL COMMENT '账号号/手机/邮箱',
|
||
`profile_url` VARCHAR(500) DEFAULT NULL COMMENT '主页链接',
|
||
`remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
`is_primary` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否常用 1/0',
|
||
`is_defult` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否常用(备用字段)1/0',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
`is_incomplete`TINYINT(1) NOT NULL DEFAULT 0 COMMENT '完整度标记',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_owner` (`owner_type`, `owner_id`),
|
||
KEY `idx_platform` (`platform`),
|
||
KEY `idx_account` (`account_id`),
|
||
KEY `idx_incomplete` (`is_incomplete`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='社媒账号/联系方式表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 4) 媒体商业属性(一人/一账号的多条商业评估)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `media_commercial_attributes` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`social_account_id` INT UNSIGNED NOT NULL COMMENT '关联 social_accounts.id',
|
||
`account_level` VARCHAR(50) DEFAULT NULL COMMENT '账号等级',
|
||
`content_categories` VARCHAR(255) DEFAULT NULL COMMENT '内容领域',
|
||
`follower_count` INT DEFAULT NULL COMMENT '粉丝数',
|
||
`avg_read_count` INT DEFAULT NULL COMMENT '平均阅读',
|
||
`certification_type` VARCHAR(50) DEFAULT NULL COMMENT '认证类型',
|
||
`special_requirements` TEXT DEFAULT NULL COMMENT '特殊要求',
|
||
`media_remark` TEXT DEFAULT NULL COMMENT '评估备注',
|
||
`is_incomplete` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '完整度标记',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_social_account` (`social_account_id`),
|
||
KEY `idx_incomplete` (`is_incomplete`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='媒体商业属性表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 5) 需求(企业需求线索)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `company_needs` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED DEFAULT NULL COMMENT '关联企业',
|
||
`contact_person` VARCHAR(100) DEFAULT NULL COMMENT '联系人',
|
||
`contact_phone` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
|
||
`contact_email` VARCHAR(100) DEFAULT NULL COMMENT '联系邮箱',
|
||
`need_category` VARCHAR(100) DEFAULT NULL COMMENT '需求类别',
|
||
`target_product_category` VARCHAR(100) DEFAULT NULL COMMENT '目标产品品类',
|
||
`application_scenario` VARCHAR(255) DEFAULT NULL COMMENT '应用场景',
|
||
`description` TEXT DEFAULT NULL COMMENT '需求描述',
|
||
`status` VARCHAR(30) DEFAULT NULL COMMENT '状态',
|
||
`is_valid` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用 0/1',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
`updated_at` DATE DEFAULT NULL COMMENT '更新日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_company` (`company_id`),
|
||
KEY `idx_category` (`need_category`),
|
||
KEY `idx_is_valid` (`is_valid`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='需求表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 6) 人员工作履历
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `person_work_experiences` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`person_id` INT UNSIGNED NOT NULL COMMENT '关联人员',
|
||
`company_id` INT UNSIGNED DEFAULT NULL COMMENT '任职企业',
|
||
`position` VARCHAR(191) DEFAULT NULL COMMENT '职位',
|
||
`department` VARCHAR(100) DEFAULT NULL COMMENT '部门',
|
||
`job_level` VARCHAR(50) DEFAULT NULL COMMENT '职级',
|
||
`start_date` DATE DEFAULT NULL COMMENT '开始时间',
|
||
`end_date` DATE DEFAULT NULL COMMENT '结束时间',
|
||
`is_current` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否现任 1/0',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用 1/0',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_person` (`person_id`),
|
||
KEY `idx_company` (`company_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人员工作履历表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 7) 企业产品(类别 + 定位 + 系列)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `company_products` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED NOT NULL COMMENT '关联企业',
|
||
`category_name` VARCHAR(100) NOT NULL COMMENT '产品类别名',
|
||
`category_description` VARCHAR(255) DEFAULT NULL COMMENT '类别说明',
|
||
`positioning` TEXT DEFAULT NULL COMMENT '产品基本定位(商业定位介绍)',
|
||
`series` VARCHAR(200) DEFAULT NULL COMMENT '包含系列',
|
||
`is_core` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否核心产品',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用 0/1',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_company` (`company_id`),
|
||
KEY `idx_core` (`is_core`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业产品表';
|
||
|
||
-- 产品参数 EAV(定义见 migration_v1.0.18)
|
||
CREATE TABLE IF NOT EXISTS `company_products_attr` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`industry` VARCHAR(100) NOT NULL,
|
||
`attr_name` VARCHAR(50) NOT NULL,
|
||
`attr_type` ENUM('string','number','boolean','date') NOT NULL DEFAULT 'string',
|
||
`unit` VARCHAR(20) DEFAULT NULL,
|
||
`sort_order` INT NOT NULL DEFAULT 0,
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_industry_attr` (`industry`, `attr_name`),
|
||
KEY `idx_industry` (`industry`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品参数属性定义表(EAV)';
|
||
|
||
CREATE TABLE IF NOT EXISTS `company_products_attr_value` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`product_id` INT UNSIGNED NOT NULL,
|
||
`attr_id` INT UNSIGNED NOT NULL,
|
||
`value_string` TEXT DEFAULT NULL,
|
||
`value_number` DECIMAL(20,4) DEFAULT NULL,
|
||
`value_boolean` TINYINT(1) DEFAULT NULL,
|
||
`value_date` DATE DEFAULT NULL,
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_product_attr` (`product_id`, `attr_id`),
|
||
KEY `idx_product` (`product_id`),
|
||
KEY `idx_attr` (`attr_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品参数值表(EAV)';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 8) 企业文档
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `company_documents` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED DEFAULT NULL COMMENT '关联企业',
|
||
`doc_name` VARCHAR(255) NOT NULL COMMENT '文档名称',
|
||
`storage_path` VARCHAR(500) DEFAULT NULL COMMENT '存储路径',
|
||
`file_type` VARCHAR(30) DEFAULT NULL COMMENT '文件类型(pdf/word/xlsx/图片)',
|
||
`is_current` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否现行 1/0',
|
||
`document_source` VARCHAR(100) DEFAULT NULL COMMENT '文档来源',
|
||
`tags` VARCHAR(255) DEFAULT NULL COMMENT '标签',
|
||
`publish_date` DATE DEFAULT NULL COMMENT '发布日期',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_company` (`company_id`),
|
||
KEY `idx_file_type` (`file_type`),
|
||
KEY `idx_active` (`is_active`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业文档表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 9) 财务与资质
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `company_financials` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED NOT NULL COMMENT '关联企业',
|
||
`fiscal_year` INT NOT NULL COMMENT '财年',
|
||
`employee_count` INT DEFAULT NULL,
|
||
`total_revenue` DECIMAL(20,2) DEFAULT NULL,
|
||
`net_profit` DECIMAL(20,2) DEFAULT NULL,
|
||
`total_assets` DECIMAL(20,2) DEFAULT NULL,
|
||
`total_liabilities` DECIMAL(20,2) DEFAULT NULL,
|
||
`owner_equity` DECIMAL(20,2) DEFAULT NULL,
|
||
`gross_margin` DECIMAL(10,4) DEFAULT NULL,
|
||
`net_margin` DECIMAL(10,4) DEFAULT NULL,
|
||
`debt_ratio` DECIMAL(10,4) DEFAULT NULL,
|
||
`financial_report_url` VARCHAR(500) DEFAULT NULL,
|
||
`data_source` VARCHAR(100) DEFAULT '手动录入',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_company_year` (`company_id`, `fiscal_year`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业年度财务明细表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `company_certifications` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED NOT NULL COMMENT '关联企业',
|
||
`certification_type_id` INT UNSIGNED DEFAULT NULL COMMENT '证书类型(字典)',
|
||
`certificate_number` VARCHAR(100) DEFAULT NULL COMMENT '证书编号',
|
||
`level` VARCHAR(50) DEFAULT NULL COMMENT '级别',
|
||
`issuing_authority` VARCHAR(200) DEFAULT NULL COMMENT '颁证机构',
|
||
`issue_date` DATE DEFAULT NULL COMMENT '发证日期',
|
||
`expiry_date` DATE DEFAULT NULL COMMENT '有效期至',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_company` (`company_id`),
|
||
KEY `idx_cert_type` (`certification_type_id`),
|
||
CONSTRAINT `fk_company_cert_dict` FOREIGN KEY (`certification_type_id`)
|
||
REFERENCES `data_dict_certificate` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业资质认证表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `company_relations` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED DEFAULT NULL COMMENT '企业A',
|
||
`related_company_id` INT UNSIGNED DEFAULT NULL COMMENT '关联企业B',
|
||
`related_company_name` VARCHAR(191) DEFAULT NULL COMMENT '关联企业名称',
|
||
`relation_type` VARCHAR(50) DEFAULT NULL COMMENT '关系类型',
|
||
`established_date` DATE DEFAULT NULL COMMENT '关系建立日期',
|
||
`note` VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
`created_at` DATE DEFAULT NULL COMMENT '创建日期',
|
||
`updated_at` DATE DEFAULT NULL COMMENT '更新日期',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_company` (`company_id`),
|
||
KEY `idx_related` (`related_company_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业关联关系表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 10) 硬数据碎片(preliminary_data,v1.0.48 重构后形态)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `preliminary_data` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`source_type` VARCHAR(20) DEFAULT NULL COMMENT '碎片类型 company/person/product/need/mixed',
|
||
`company_name` VARCHAR(191) DEFAULT NULL COMMENT '企业名(核心)',
|
||
`person_name` VARCHAR(100) DEFAULT NULL COMMENT '联系人(核心)',
|
||
`contact_phone` VARCHAR(50) DEFAULT NULL COMMENT '联系电话(核心)',
|
||
`contact_email` VARCHAR(100) DEFAULT NULL COMMENT '联系邮箱(核心)',
|
||
`industry` VARCHAR(100) DEFAULT NULL COMMENT '行业',
|
||
`registration_number` VARCHAR(100) DEFAULT NULL COMMENT '注册号(重要)',
|
||
`business_role` VARCHAR(50) DEFAULT NULL COMMENT '业务类型(重要)',
|
||
`country` VARCHAR(100) DEFAULT NULL COMMENT '国家/地区(重要)',
|
||
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址(重要)',
|
||
`work_location` VARCHAR(100) DEFAULT NULL COMMENT '工作所在地(重要)',
|
||
`id_number` VARCHAR(100) DEFAULT NULL COMMENT '身份证号码(重要)',
|
||
`platform` VARCHAR(50) DEFAULT NULL COMMENT '社媒平台(核心)',
|
||
`account_id` VARCHAR(200) DEFAULT NULL COMMENT '社媒账号ID(核心)',
|
||
`profile_url` VARCHAR(500) DEFAULT NULL COMMENT '主页链接(重要)',
|
||
`source_channel` VARCHAR(50) DEFAULT NULL COMMENT '来源渠道',
|
||
`source_detail` VARCHAR(255) DEFAULT NULL COMMENT '来源详情',
|
||
`converted_type` VARCHAR(20) DEFAULT NULL COMMENT '转换目标类型 companies/persons/...',
|
||
`converted_id` VARCHAR(64) DEFAULT NULL COMMENT '转换后目标表ID(非空=已转换/已处理)',
|
||
`recorded_by` INT UNSIGNED DEFAULT NULL COMMENT '录入用户',
|
||
`follow_person` VARCHAR(50) DEFAULT NULL COMMENT '跟进人',
|
||
`label` VARCHAR(50) DEFAULT NULL COMMENT '标签',
|
||
`remark` TEXT DEFAULT NULL COMMENT '备注',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '录入时间',
|
||
`updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`processed_at` DATETIME DEFAULT NULL COMMENT '处理时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_source_type` (`source_type`),
|
||
KEY `idx_converted` (`converted_id`),
|
||
KEY `idx_is_active` (`is_active`),
|
||
KEY `idx_channel` (`source_channel`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='硬数据碎片表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 11) 渠道新增计划(定义见 migration_v1.0.18,补 cost 列)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `channel_plans` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`channel_type` VARCHAR(50) NOT NULL COMMENT '渠道类别(= source_channel 枚举)',
|
||
`source_detail` VARCHAR(255) DEFAULT NULL COMMENT '来源详情',
|
||
`occurrence_address` VARCHAR(255) DEFAULT NULL COMMENT '发生/举办地址',
|
||
`industry` VARCHAR(100) DEFAULT NULL COMMENT '所属行业',
|
||
`cost` DECIMAL(12,2) DEFAULT NULL COMMENT '计划成本/投入',
|
||
`start_date` DATE DEFAULT NULL COMMENT '时间窗口开始',
|
||
`end_date` DATE DEFAULT NULL COMMENT '时间窗口结束',
|
||
`remark` VARCHAR(255) DEFAULT NULL COMMENT '备注说明',
|
||
`status` ENUM('待启动','已执行','错过') NOT NULL DEFAULT '待启动' COMMENT '状态反馈',
|
||
`is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_channel_type` (`channel_type`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='渠道新增计划表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 12) 系统:用户 / 角色 / 日志 / 登录尝试 / 迁移版本
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `system_users` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`username` VARCHAR(50) NOT NULL COMMENT '登录账号',
|
||
`password` VARCHAR(190) NOT NULL COMMENT '密码(bcrypt)',
|
||
`real_name` VARCHAR(100) DEFAULT NULL COMMENT '真实姓名',
|
||
`role_id` INT UNSIGNED DEFAULT NULL COMMENT '角色',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用 0/1',
|
||
`last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间',
|
||
`last_login_ip` VARCHAR(45) DEFAULT NULL COMMENT '最后登录IP',
|
||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_username` (`username`),
|
||
KEY `idx_role` (`role_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `system_roles` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`role_name` VARCHAR(50) NOT NULL COMMENT '角色名',
|
||
`permissions` TEXT DEFAULT NULL COMMENT '权限集(JSON 数组)',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用 0/1',
|
||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_active` (`is_active`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统角色表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `system_logs` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`user_id` INT UNSIGNED DEFAULT NULL COMMENT '操作用户ID',
|
||
`username` VARCHAR(50) DEFAULT NULL COMMENT '操作账号',
|
||
`action` VARCHAR(50) DEFAULT NULL COMMENT '操作动作',
|
||
`module` VARCHAR(50) DEFAULT NULL COMMENT '操作模块',
|
||
`target_table` VARCHAR(50) DEFAULT NULL COMMENT '目标表',
|
||
`target_id` INT UNSIGNED DEFAULT NULL COMMENT '目标ID',
|
||
`content` TEXT DEFAULT NULL COMMENT '操作内容(JSON)',
|
||
`ip` VARCHAR(45) DEFAULT NULL COMMENT '来源IP',
|
||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user` (`user_id`),
|
||
KEY `idx_module` (`module`),
|
||
KEY `idx_created` (`created_at`),
|
||
KEY `idx_target` (`target_table`, `target_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统操作日志表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `system_login_attempts` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`username` VARCHAR(50) NOT NULL DEFAULT '',
|
||
`ip` VARCHAR(45) NOT NULL DEFAULT '',
|
||
`success` TINYINT NOT NULL DEFAULT 0,
|
||
`attempt_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_ip_user_time` (`ip`, `username`, `attempt_time`),
|
||
KEY `idx_attempt_time` (`attempt_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='登录尝试记录(限流/防爆破)';
|
||
|
||
CREATE TABLE IF NOT EXISTS `schema_versions` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`version` VARCHAR(64) NOT NULL,
|
||
`applied_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`checksum` CHAR(32) NOT NULL,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_version` (`version`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据库迁移版本表';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 13) 文档链接(competitor_data / 归档)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `document_links` (
|
||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`company_id` INT UNSIGNED DEFAULT NULL COMMENT '关联企业',
|
||
`doc_name` VARCHAR(255) DEFAULT NULL COMMENT '文档名称',
|
||
`url` VARCHAR(500) DEFAULT NULL COMMENT '链接',
|
||
`file_type` VARCHAR(30) DEFAULT NULL COMMENT '类型',
|
||
`source` VARCHAR(100) DEFAULT NULL COMMENT '来源',
|
||
`publish_date` DATE DEFAULT NULL COMMENT '发布日期',
|
||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '有效 0/1',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_company` (`company_id`),
|
||
KEY `idx_active` (`is_active`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文档链接表';
|
||
|
||
SET FOREIGN_KEY_CHECKS = 1; |