merge: integrate broadcast question correction

# Conflicts:
#	docs/BRD_PRODUCTION_MIGRATION_RUNBOOK.md
This commit is contained in:
2026-07-25 00:13:49 +08:00
37 changed files with 2480 additions and 43 deletions
@@ -346,6 +346,48 @@ test "$broadcast_target_rule_unique_index" = '0|tenant_id,message_id,target_type
broadcast_target_recipient_unique_index="$(mysql "$DB" -N -B -e "SELECT CONCAT(MIN(non_unique),'|',GROUP_CONCAT(column_name ORDER BY seq_in_index),'|',SUM(sub_part IS NOT NULL)) FROM information_schema.statistics WHERE table_schema='$DB' AND table_name='aihr_broadcast_target_recipient' AND index_name='uk_aihr_broadcast_target_recipient';")"
test "$broadcast_target_recipient_unique_index" = '0|tenant_id,message_id,recipient_key|0'
direct_feedback_migration="$ROOT_DIR/backend/script/sql/update/aihr_20260724_direct_feedback_mysql8.sql"
test -f "$direct_feedback_migration"
mysql "$DB" <<'SQL'
CREATE TABLE sys_role (
role_id bigint NOT NULL,
tenant_id varchar(20) NOT NULL,
role_name varchar(30) NOT NULL,
role_key varchar(100) NOT NULL,
role_sort int NOT NULL,
data_scope char(1) NOT NULL,
menu_check_strictly tinyint NOT NULL,
dept_check_strictly tinyint NOT NULL,
status char(1) NOT NULL,
del_flag char(1) NOT NULL,
create_by bigint DEFAULT NULL,
create_time datetime DEFAULT NULL,
remark varchar(500) DEFAULT NULL,
PRIMARY KEY (role_id)
) ENGINE=InnoDB;
SQL
mysql "$DB" < "$direct_feedback_migration"
mysql "$DB" < "$direct_feedback_migration"
direct_feedback_columns="$(mysql "$DB" -N -B -e "SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='$DB' AND table_name='aihr_direct_feedback' AND column_name IN ('tenant_id','channel_code','sender_user_id','anonymous_flag','content','status','submit_request_key','submit_request_hash','reply_content','replied_by','replied_time');")"
test "$direct_feedback_columns" = '11'
direct_feedback_submit_index="$(mysql "$DB" -N -B -e "SELECT CONCAT(MIN(non_unique),'|',GROUP_CONCAT(column_name ORDER BY seq_in_index),'|',SUM(sub_part IS NOT NULL)) FROM information_schema.statistics WHERE table_schema='$DB' AND table_name='aihr_direct_feedback' AND index_name='uk_aihr_direct_feedback_submit';")"
test "$direct_feedback_submit_index" = '0|tenant_id,sender_user_id,submit_request_key|0'
direct_feedback_roles="$(mysql "$DB" -N -B -e "SELECT COUNT(*) FROM sys_role WHERE tenant_id='000000' AND role_key IN ('direct_president','direct_finance','direct_hr','direct_audit','direct_operations') AND status='0' AND del_flag='0';")"
test "$direct_feedback_roles" = '5'
broadcast_attachment_migration="$ROOT_DIR/backend/script/sql/update/aihr_20260724_broadcast_attachment_mysql8.sql"
test -f "$broadcast_attachment_migration"
mysql "$DB" < "$broadcast_attachment_migration"
mysql "$DB" < "$broadcast_attachment_migration"
broadcast_attachment_columns="$(mysql "$DB" -N -B -e "SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='$DB' AND table_name='aihr_broadcast_attachment' AND column_name IN ('tenant_id','message_id','oss_id','file_name','file_size','content_type','status','extracted_text','summary','error_message','uploaded_by');")"
test "$broadcast_attachment_columns" = '11'
broadcast_attachment_message_column="$(mysql "$DB" -N -B -e "SELECT CONCAT(column_type,'|',is_nullable) FROM information_schema.columns WHERE table_schema='$DB' AND table_name='aihr_broadcast_message' AND column_name='attachment_id';")"
test "$broadcast_attachment_message_column" = 'bigint|YES'
broadcast_attachment_message_index="$(mysql "$DB" -N -B -e "SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index) FROM information_schema.statistics WHERE table_schema='$DB' AND table_name='aihr_broadcast_message' AND index_name='idx_aihr_broadcast_message_attachment';")"
test "$broadcast_attachment_message_index" = 'tenant_id,attachment_id'
broadcast_attachment_bind_index="$(mysql "$DB" -N -B -e "SELECT CONCAT(MIN(non_unique),'|',GROUP_CONCAT(column_name ORDER BY seq_in_index),'|',SUM(sub_part IS NOT NULL)) FROM information_schema.statistics WHERE table_schema='$DB' AND table_name='aihr_broadcast_attachment' AND index_name='uk_aihr_broadcast_attachment_message';")"
test "$broadcast_attachment_bind_index" = '0|tenant_id,message_id|0'
mysql "$DB" -e "ALTER TABLE aihr_broadcast_message DROP INDEX uk_aihr_broadcast_message_publish_request, DROP COLUMN publish_request_hash, DROP COLUMN publish_request_key, DROP COLUMN withdraw_reason;"
mysql "$DB" <<'SQL'
INSERT INTO aihr_broadcast_message (