@@ -0,0 +1,522 @@
-- ============================================================
-- 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 ' ,
` 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 ' 录入用户 ' ,
` 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 ' 录入时间 ' ,
` 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 ' 来源详情 ' ,
` 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 ;