diff --git a/backend/script/sql/aihr_candidate_material_mysql8.sql b/backend/script/sql/aihr_candidate_material_mysql8.sql index e88e43d6..e08fc8fa 100644 --- a/backend/script/sql/aihr_candidate_material_mysql8.sql +++ b/backend/script/sql/aihr_candidate_material_mysql8.sql @@ -2,7 +2,7 @@ CREATE TABLE IF NOT EXISTS `aihr_candidate_material` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `candidate_id` varchar(80) NOT NULL COMMENT '候选人外部ID', `candidate_name` varchar(100) DEFAULT NULL COMMENT '候选人姓名', `material_type` varchar(50) DEFAULT NULL COMMENT '资料类型', diff --git a/backend/script/sql/aihr_interview_result_mysql8.sql b/backend/script/sql/aihr_interview_result_mysql8.sql index 68bd77f8..5ebe4a72 100644 --- a/backend/script/sql/aihr_interview_result_mysql8.sql +++ b/backend/script/sql/aihr_interview_result_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_interview_result` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '面试会话ID', `candidate_id` varchar(80) DEFAULT NULL COMMENT '候选人ID', `candidate_name` varchar(100) DEFAULT NULL COMMENT '候选人姓名', @@ -33,7 +33,7 @@ CREATE TABLE IF NOT EXISTS `aihr_interview_result` ( CREATE TABLE IF NOT EXISTS `aihr_candidate_employee_link` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `candidate_id` varchar(80) NOT NULL COMMENT '本地候选人ID', `ext_party_id` varchar(100) NOT NULL COMMENT '外部员工主体ID', `status` varchar(20) DEFAULT '已关联' COMMENT '关联状态', diff --git a/backend/script/sql/aihr_knowledge_mysql8.sql b/backend/script/sql/aihr_knowledge_mysql8.sql index c70a0c8b..13ec65ce 100644 --- a/backend/script/sql/aihr_knowledge_mysql8.sql +++ b/backend/script/sql/aihr_knowledge_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_info` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `name` varchar(100) NOT NULL COMMENT '知识库名称', `code` varchar(100) DEFAULT NULL COMMENT '租户内稳定空间编码;平台迁移会回填 legacy 编码并改为必填', `space_type` varchar(30) NOT NULL DEFAULT 'BUSINESS' COMMENT 'PUBLIC/BUSINESS/MANAGEMENT/EXTERNAL', @@ -33,7 +33,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_info` ( CREATE TABLE IF NOT EXISTS `aihr_knowledge_attach` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `knowledge_id` bigint NOT NULL COMMENT '知识库ID', `oss_id` bigint DEFAULT NULL COMMENT '对象存储ID', `doc_id` varchar(32) DEFAULT NULL COMMENT '文档ID', @@ -53,7 +53,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_attach` ( CREATE TABLE IF NOT EXISTS `aihr_knowledge_fragment` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `knowledge_id` bigint NOT NULL COMMENT '知识库ID', `idx` int NOT NULL COMMENT '片段序号', `doc_id` varchar(32) DEFAULT NULL COMMENT '文档ID', @@ -75,7 +75,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_fragment` ( CREATE TABLE IF NOT EXISTS `aihr_knowledge_import_task` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `directory` varchar(500) NOT NULL COMMENT '导入相对目录', `category` varchar(100) NOT NULL COMMENT '知识库分类', `status` tinyint DEFAULT 0 COMMENT '任务状态: 0等待, 1运行中, 2完成, 3失败, 4取消', @@ -143,7 +143,7 @@ ON DUPLICATE KEY UPDATE -- 知识库批量上传队列:上传秒回后由后台 worker 加工,支持单文件重试 CREATE TABLE IF NOT EXISTS `aihr_knowledge_upload_item` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `batch_id` varchar(64) NOT NULL COMMENT '上传批次', `file_name` varchar(255) NOT NULL COMMENT '文件名', `category` varchar(100) DEFAULT '' COMMENT '目标分类', diff --git a/backend/script/sql/aihr_model_mysql8.sql b/backend/script/sql/aihr_model_mysql8.sql index 43bec1c2..02efecbe 100644 --- a/backend/script/sql/aihr_model_mysql8.sql +++ b/backend/script/sql/aihr_model_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_model_provider` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `provider_name` varchar(100) NOT NULL COMMENT '供应商名称', `provider_code` varchar(50) NOT NULL COMMENT '供应商编码', `provider_desc` varchar(500) DEFAULT NULL COMMENT '供应商描述', @@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS `aihr_model_provider` ( CREATE TABLE IF NOT EXISTS `aihr_model_config` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `category` varchar(30) NOT NULL COMMENT '模型类型: chat/vector/rerank', `model_name` varchar(100) NOT NULL COMMENT '模型名称', `provider_code` varchar(50) NOT NULL COMMENT '供应商编码', diff --git a/backend/script/sql/aihr_org_snapshot_mysql8.sql b/backend/script/sql/aihr_org_snapshot_mysql8.sql index fa0bf249..1f8d301e 100644 --- a/backend/script/sql/aihr_org_snapshot_mysql8.sql +++ b/backend/script/sql/aihr_org_snapshot_mysql8.sql @@ -6,7 +6,7 @@ DROP TABLE IF EXISTS `aihr_org_snapshot`; CREATE TABLE `aihr_org_snapshot` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `project_code` varchar(50) NOT NULL COMMENT '项目编码(数据权限范围主体,D1)', `project_name` varchar(100) NOT NULL COMMENT '项目名称', `dept_name` varchar(100) DEFAULT NULL COMMENT '部门/条线', diff --git a/backend/script/sql/aihr_practice_mysql8.sql b/backend/script/sql/aihr_practice_mysql8.sql index cad3ca68..99671e26 100644 --- a/backend/script/sql/aihr_practice_mysql8.sql +++ b/backend/script/sql/aihr_practice_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_case_record` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `case_id` varchar(80) NOT NULL COMMENT '案例ID', `file_name` varchar(255) DEFAULT NULL COMMENT '来源文件', `project_ext_org_id` varchar(100) DEFAULT NULL COMMENT '项目外部组织ID', @@ -26,7 +26,7 @@ CREATE TABLE IF NOT EXISTS `aihr_case_record` ( CREATE TABLE IF NOT EXISTS `aihr_practice_session` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '训练会话ID', `ext_party_id` varchar(100) DEFAULT NULL COMMENT '外部主体或手机号', `trainee_name` varchar(100) DEFAULT NULL COMMENT '学员名称', @@ -64,7 +64,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_session` ( CREATE TABLE IF NOT EXISTS `aihr_practice_annotation` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '训练会话ID', `turn_index` int NOT NULL COMMENT '话术序号', `source_text` varchar(1000) DEFAULT NULL COMMENT '原话', @@ -80,7 +80,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_annotation` ( CREATE TABLE IF NOT EXISTS `aihr_practice_audio` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '训练会话ID', `turn_index` int NOT NULL COMMENT '话术序号', `role` varchar(30) NOT NULL COMMENT '音频角色', @@ -95,7 +95,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_audio` ( CREATE TABLE IF NOT EXISTS `aihr_practice_audio_upload` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `oss_id` bigint NOT NULL COMMENT 'OSS文件ID', `owner_user_id` bigint NOT NULL COMMENT '上传用户ID', `owner_identity` varchar(100) NOT NULL COMMENT '上传主体', @@ -111,7 +111,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_audio_upload` ( CREATE TABLE IF NOT EXISTS `aihr_practice_assignment` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `ext_party_id` varchar(100) NOT NULL COMMENT '员工外部主体或手机号', `trainee_name` varchar(100) DEFAULT NULL COMMENT '员工姓名', `scenario_id` varchar(80) NOT NULL COMMENT '场景ID', @@ -139,7 +139,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_assignment` ( CREATE TABLE IF NOT EXISTS `aihr_practice_calibration` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '训练会话ID', `reviewer` varchar(100) DEFAULT NULL COMMENT '校准人', `original_score` int DEFAULT NULL COMMENT 'AI原始总分', @@ -155,7 +155,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_calibration` ( CREATE TABLE IF NOT EXISTS `aihr_practice_scenario` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `scenario_code` varchar(80) NOT NULL COMMENT '场景编码', `scenario_name` varchar(100) NOT NULL COMMENT '场景名称', `position` varchar(80) NOT NULL COMMENT '岗位', @@ -187,7 +187,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_scenario` ( CREATE TABLE IF NOT EXISTS `aihr_practice_rubric` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `rubric_code` varchar(100) NOT NULL COMMENT 'Rubric编码', `scenario_code` varchar(80) NOT NULL COMMENT '场景编码', `rubric_name` varchar(100) NOT NULL COMMENT 'Rubric名称', @@ -203,7 +203,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_rubric` ( CREATE TABLE IF NOT EXISTS `aihr_practice_rubric_dimension` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `rubric_code` varchar(100) NOT NULL COMMENT 'Rubric编码', `dimension_code` varchar(50) NOT NULL COMMENT '维度编码', `dimension_name` varchar(50) NOT NULL COMMENT '维度名称', @@ -219,7 +219,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_rubric_dimension` ( CREATE TABLE IF NOT EXISTS `aihr_prompt_template` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `code` varchar(80) NOT NULL COMMENT '模板编码', `name` varchar(100) NOT NULL COMMENT '模板名称', `category` varchar(50) NOT NULL COMMENT '业务分类', @@ -239,7 +239,7 @@ CREATE TABLE IF NOT EXISTS `aihr_prompt_template` ( CREATE TABLE IF NOT EXISTS `aihr_knowledge_gap` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `query_text` varchar(1000) NOT NULL COMMENT '未命中问题', `category` varchar(100) DEFAULT NULL COMMENT '知识分类', `position` varchar(80) DEFAULT NULL COMMENT '岗位', @@ -252,7 +252,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_gap` ( CREATE TABLE IF NOT EXISTS `aihr_sop_answer_review` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `query_text` varchar(1000) NOT NULL COMMENT '问题', `category` varchar(100) DEFAULT NULL COMMENT '知识分类', `answer_text` varchar(2000) DEFAULT NULL COMMENT '回答', @@ -274,7 +274,7 @@ CREATE TABLE IF NOT EXISTS `aihr_sop_answer_review` ( CREATE TABLE IF NOT EXISTS `aihr_knowledge_answer_feedback` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `query_text` varchar(1000) NOT NULL COMMENT '问题原文', `query_norm` varchar(500) NOT NULL COMMENT '规范化问题', `fragment_id` bigint NOT NULL COMMENT '知识片段ID', @@ -471,7 +471,7 @@ ON DUPLICATE KEY UPDATE -- 不写入业务数据;与 update/aihr_20260715_position_sop_qualification_mysql8.sql 保持一致。 CREATE TABLE IF NOT EXISTS `aihr_position_responsibility` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `position_code` varchar(80) NOT NULL COMMENT '岗位编码', `responsibility_text` varchar(1000) NOT NULL COMMENT '岗位职责', `sop_id` bigint DEFAULT NULL COMMENT '关联SOP主键(跨模块引用)', @@ -488,7 +488,7 @@ CREATE TABLE IF NOT EXISTS `aihr_position_responsibility` ( CREATE TABLE IF NOT EXISTS `aihr_sop_applicability` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `sop_id` bigint DEFAULT NULL COMMENT '关联SOP主键(跨模块引用)', `sop_code` varchar(100) DEFAULT NULL COMMENT '关联SOP编码', `project_type` varchar(80) DEFAULT NULL COMMENT '项目类型:住宅/公建/景区等', @@ -506,7 +506,7 @@ CREATE TABLE IF NOT EXISTS `aihr_sop_applicability` ( CREATE TABLE IF NOT EXISTS `aihr_onboard_task` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `ext_party_id` varchar(100) NOT NULL COMMENT '员工外部主体ID,不复制姓名', `project_code` varchar(100) DEFAULT NULL COMMENT '项目编码', `position_code` varchar(80) DEFAULT NULL COMMENT '岗位编码', @@ -528,7 +528,7 @@ CREATE TABLE IF NOT EXISTS `aihr_onboard_task` ( CREATE TABLE IF NOT EXISTS `aihr_qualification_gate` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `ext_party_id` varchar(100) NOT NULL COMMENT '员工外部主体ID,不复制姓名', `project_code` varchar(100) DEFAULT NULL COMMENT '项目编码', `position_code` varchar(80) NOT NULL COMMENT '岗位编码', diff --git a/backend/script/sql/update/aihr_20260714_practice_catalog_schema_mysql8.sql b/backend/script/sql/update/aihr_20260714_practice_catalog_schema_mysql8.sql index 3e0d7ec3..71232239 100644 --- a/backend/script/sql/update/aihr_20260714_practice_catalog_schema_mysql8.sql +++ b/backend/script/sql/update/aihr_20260714_practice_catalog_schema_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_scenario` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `scenario_code` varchar(80) NOT NULL COMMENT '场景编码', `scenario_name` varchar(100) NOT NULL COMMENT '场景名称', `position` varchar(80) NOT NULL COMMENT '岗位', @@ -35,7 +35,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_scenario` ( CREATE TABLE IF NOT EXISTS `aihr_practice_rubric` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `rubric_code` varchar(100) NOT NULL COMMENT 'Rubric编码', `scenario_code` varchar(80) NOT NULL COMMENT '场景编码', `rubric_name` varchar(100) NOT NULL COMMENT 'Rubric名称', @@ -51,7 +51,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_rubric` ( CREATE TABLE IF NOT EXISTS `aihr_practice_rubric_dimension` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `rubric_code` varchar(100) NOT NULL COMMENT 'Rubric编码', `dimension_code` varchar(50) NOT NULL COMMENT '维度编码', `dimension_name` varchar(50) NOT NULL COMMENT '维度名称', diff --git a/backend/script/sql/update/aihr_20260714_practice_evidence_mysql8.sql b/backend/script/sql/update/aihr_20260714_practice_evidence_mysql8.sql index 4d03cfba..24af9e65 100644 --- a/backend/script/sql/update/aihr_20260714_practice_evidence_mysql8.sql +++ b/backend/script/sql/update/aihr_20260714_practice_evidence_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_audio` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '训练会话ID', `turn_index` int NOT NULL COMMENT '话术序号', `role` varchar(30) NOT NULL COMMENT '音频角色', @@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_audio` ( CREATE TABLE IF NOT EXISTS `aihr_practice_audio_upload` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `oss_id` bigint NOT NULL COMMENT 'OSS文件ID', `owner_user_id` bigint NOT NULL COMMENT '上传用户ID', `owner_identity` varchar(100) NOT NULL COMMENT '上传主体', @@ -34,7 +34,7 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_audio_upload` ( CREATE TABLE IF NOT EXISTS `aihr_practice_calibration` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '训练会话ID', `reviewer` varchar(100) DEFAULT NULL COMMENT '校准人', `original_score` int DEFAULT NULL COMMENT 'AI原始总分', diff --git a/backend/script/sql/update/aihr_20260714_practice_five_dimensions_mysql8.sql b/backend/script/sql/update/aihr_20260714_practice_five_dimensions_mysql8.sql index 5f3e3e86..9229023e 100644 --- a/backend/script/sql/update/aihr_20260714_practice_five_dimensions_mysql8.sql +++ b/backend/script/sql/update/aihr_20260714_practice_five_dimensions_mysql8.sql @@ -57,7 +57,7 @@ EXECUTE aihr_response_latency_stmt; DEALLOCATE PREPARE aihr_response_latency_stmt; CREATE TEMPORARY TABLE IF NOT EXISTS aihr_brd_rubric_codes ( - tenant_id varchar(20) NOT NULL, + tenant_id varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, rubric_code varchar(100) NOT NULL, PRIMARY KEY (tenant_id, rubric_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; diff --git a/backend/script/sql/update/aihr_20260715_candidate_interview_review_mysql8.sql b/backend/script/sql/update/aihr_20260715_candidate_interview_review_mysql8.sql index 06ec6ab0..807f5dd0 100644 --- a/backend/script/sql/update/aihr_20260715_candidate_interview_review_mysql8.sql +++ b/backend/script/sql/update/aihr_20260715_candidate_interview_review_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_candidate_material` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `candidate_id` varchar(80) NOT NULL COMMENT '候选人外部ID', `candidate_name` varchar(100) DEFAULT NULL COMMENT '候选人姓名', `material_type` varchar(50) DEFAULT NULL COMMENT '资料类型', @@ -56,7 +56,7 @@ DEALLOCATE PREPARE aihr_candidate_material_reviewed_time_stmt; CREATE TABLE IF NOT EXISTS `aihr_interview_result` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `session_id` varchar(100) NOT NULL COMMENT '面试会话ID', `candidate_id` varchar(80) DEFAULT NULL COMMENT '候选人ID', `candidate_name` varchar(100) DEFAULT NULL COMMENT '候选人姓名', @@ -182,7 +182,7 @@ DEALLOCATE PREPARE aihr_interview_reviewed_time_stmt; CREATE TABLE IF NOT EXISTS `aihr_candidate_employee_link` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `candidate_id` varchar(80) NOT NULL COMMENT '本地候选人ID', `ext_party_id` varchar(100) NOT NULL COMMENT '外部员工主体ID', `status` varchar(20) DEFAULT '已关联' COMMENT '关联状态', diff --git a/backend/script/sql/update/aihr_20260715_knowledge_feedback_mysql8.sql b/backend/script/sql/update/aihr_20260715_knowledge_feedback_mysql8.sql index 715b6fa3..d958e8bd 100644 --- a/backend/script/sql/update/aihr_20260715_knowledge_feedback_mysql8.sql +++ b/backend/script/sql/update/aihr_20260715_knowledge_feedback_mysql8.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_gap` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `query_text` varchar(1000) NOT NULL COMMENT '未命中问题', `category` varchar(100) DEFAULT NULL COMMENT '知识分类', `position` varchar(80) DEFAULT NULL COMMENT '岗位', @@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_gap` ( CREATE TABLE IF NOT EXISTS `aihr_knowledge_answer_feedback` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号', `query_text` varchar(1000) NOT NULL COMMENT '问题原文', `query_norm` varchar(500) NOT NULL COMMENT '规范化问题', `fragment_id` bigint NOT NULL COMMENT '知识片段ID', diff --git a/backend/script/sql/update/aihr_20260715_position_sop_qualification_mysql8.sql b/backend/script/sql/update/aihr_20260715_position_sop_qualification_mysql8.sql index a344e8f1..d17efab6 100644 --- a/backend/script/sql/update/aihr_20260715_position_sop_qualification_mysql8.sql +++ b/backend/script/sql/update/aihr_20260715_position_sop_qualification_mysql8.sql @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS `aihr_position_responsibility` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `position_code` varchar(80) NOT NULL COMMENT '岗位编码', `responsibility_text` varchar(1000) NOT NULL COMMENT '岗位职责', `sop_id` bigint DEFAULT NULL COMMENT '关联SOP主键(跨模块引用)', @@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS `aihr_position_responsibility` ( CREATE TABLE IF NOT EXISTS `aihr_sop_applicability` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `sop_id` bigint DEFAULT NULL COMMENT '关联SOP主键(跨模块引用)', `sop_code` varchar(100) DEFAULT NULL COMMENT '关联SOP编码', `project_type` varchar(80) DEFAULT NULL COMMENT '项目类型:住宅/公建/景区等', @@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS `aihr_sop_applicability` ( CREATE TABLE IF NOT EXISTS `aihr_onboard_task` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `ext_party_id` varchar(100) NOT NULL COMMENT '员工外部主体ID,不复制姓名', `project_code` varchar(100) DEFAULT NULL COMMENT '项目编码', `position_code` varchar(80) DEFAULT NULL COMMENT '岗位编码', @@ -61,7 +61,7 @@ CREATE TABLE IF NOT EXISTS `aihr_onboard_task` ( CREATE TABLE IF NOT EXISTS `aihr_qualification_gate` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000' COMMENT '租户编号', `ext_party_id` varchar(100) NOT NULL COMMENT '员工外部主体ID,不复制姓名', `project_code` varchar(100) DEFAULT NULL COMMENT '项目编码', `position_code` varchar(80) NOT NULL COMMENT '岗位编码', diff --git a/backend/script/sql/update/aihr_20260715_tenant_collation_mysql8.sql b/backend/script/sql/update/aihr_20260715_tenant_collation_mysql8.sql new file mode 100644 index 00000000..c6c4e2ce --- /dev/null +++ b/backend/script/sql/update/aihr_20260715_tenant_collation_mysql8.sql @@ -0,0 +1,70 @@ +-- Keep AIHR tenant identifiers compatible with the framework tenant contract. +-- This migration derives the target charset/collation from sys_oss.tenant_id, +-- preserves each AIHR tenant_id column's nullability/default/comment, and is idempotent. + +DROP PROCEDURE IF EXISTS aihr_align_tenant_collation; + +DELIMITER $$ + +CREATE PROCEDURE aihr_align_tenant_collation() +BEGIN + DECLARE done int DEFAULT 0; + DECLARE target_charset varchar(64); + DECLARE target_collation varchar(64); + DECLARE current_table varchar(64); + DECLARE current_type text; + DECLARE current_nullable varchar(3); + DECLARE current_default text; + DECLARE current_comment text; + + DECLARE tenant_columns CURSOR FOR + SELECT table_name, column_type, is_nullable, column_default, column_comment + FROM information_schema.columns + WHERE table_schema = DATABASE() + AND LEFT(table_name, 5) = 'aihr_' + AND column_name = 'tenant_id' + AND collation_name <> target_collation + ORDER BY table_name; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + SELECT character_set_name, collation_name + INTO target_charset, target_collation + FROM information_schema.columns + WHERE table_schema = DATABASE() + AND table_name = 'sys_oss' + AND column_name = 'tenant_id' + LIMIT 1; + + IF target_charset IS NULL OR target_collation IS NULL THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'sys_oss.tenant_id charset/collation contract is missing'; + END IF; + + OPEN tenant_columns; + align_loop: LOOP + FETCH tenant_columns + INTO current_table, current_type, current_nullable, current_default, current_comment; + IF done = 1 THEN + LEAVE align_loop; + END IF; + + SET @aihr_tenant_ddl = CONCAT( + 'ALTER TABLE `', REPLACE(current_table, '`', '``'), + '` MODIFY COLUMN `tenant_id` ', current_type, + ' CHARACTER SET `', REPLACE(target_charset, '`', '``'), + '` COLLATE `', REPLACE(target_collation, '`', '``'), '`', + IF(current_nullable = 'YES', ' NULL', ' NOT NULL'), + IF(current_default IS NULL, '', CONCAT(' DEFAULT ', QUOTE(current_default))), + ' COMMENT ', QUOTE(COALESCE(current_comment, '')) + ); + PREPARE aihr_tenant_statement FROM @aihr_tenant_ddl; + EXECUTE aihr_tenant_statement; + DEALLOCATE PREPARE aihr_tenant_statement; + END LOOP; + CLOSE tenant_columns; +END$$ + +DELIMITER ; + +CALL aihr_align_tenant_collation(); +DROP PROCEDURE aihr_align_tenant_collation;