feat(aihr): complete company message R1-R3
This commit is contained in:
+12
-2
@@ -378,8 +378,12 @@ tenant_payload="$(curl -k -fsS "$FRONTEND_URL/$FRONTEND_API_PREFIX/auth/tenant/l
|
||||
echo "OK: tenant list"
|
||||
|
||||
code_payload="$(curl -k -fsS "$FRONTEND_URL/$FRONTEND_API_PREFIX/auth/code")"
|
||||
[[ "$code_payload" == *'"uuid"'* ]] || fail "captcha response missing uuid"
|
||||
echo "OK: captcha"
|
||||
if [[ "$code_payload" == *'"captchaEnabled":false'* ]]; then
|
||||
echo "OK: captcha disabled for development"
|
||||
else
|
||||
[[ "$code_payload" == *'"uuid"'* ]] || fail "captcha response missing uuid"
|
||||
echo "OK: captcha"
|
||||
fi
|
||||
|
||||
contains frontend/src/router/index.ts "/recruit/interview"
|
||||
contains frontend/src/router/index.ts "/train/practice"
|
||||
@@ -613,6 +617,12 @@ contains backend/script/sql/update/aihr_20260715_candidate_interview_review_mysq
|
||||
contains backend/script/sql/update/aihr_20260715_candidate_interview_review_mysql8.sql "aihr_interview_result"
|
||||
contains backend/script/sql/update/aihr_20260715_candidate_interview_review_mysql8.sql "aihr_candidate_employee_link"
|
||||
contains scripts/tests/aihr-schema-migrations.test.sh "AIHR legacy schema migrations are idempotent"
|
||||
contains backend/script/sql/update/aihr_20260724_direct_feedback_mysql8.sql "aihr_direct_feedback"
|
||||
contains backend/script/sql/update/aihr_20260724_broadcast_attachment_mysql8.sql "aihr_broadcast_attachment"
|
||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/direct/AihrDirectController.java '"/api/aihr/direct"'
|
||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/broadcast/AihrBroadcastController.java '"/attachments"'
|
||||
contains mobile-uni/src/pages/user/direct/index.vue "选择直达对象"
|
||||
contains frontend/src/views/content/direct.vue "直通车处理台"
|
||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrOrgSyncService.java "hireDate"
|
||||
contains frontend/src/api/aihr/practice.ts '/api/train/practice/scenarios/${id}/enabled'
|
||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java "/scenarios/{id}/enabled"
|
||||
|
||||
@@ -45,6 +45,7 @@ fi
|
||||
|
||||
exec java -jar "$JAR" \
|
||||
"--server.port=$BACKEND_PORT" \
|
||||
"--captcha.enable=${AIHR_DEV_CAPTCHA_ENABLED:-false}" \
|
||||
"--spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:13306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true" \
|
||||
"--spring.data.redis.port=16379" \
|
||||
"--spring.boot.admin.client.enabled=false" \
|
||||
|
||||
@@ -170,6 +170,8 @@ FROM (
|
||||
UNION ALL SELECT 'aihr_broadcast_version'
|
||||
UNION ALL SELECT 'aihr_broadcast_target_rule'
|
||||
UNION ALL SELECT 'aihr_broadcast_target_recipient'
|
||||
UNION ALL SELECT 'aihr_broadcast_attachment'
|
||||
UNION ALL SELECT 'aihr_direct_feedback'
|
||||
UNION ALL SELECT 'aihr_personal_space'
|
||||
UNION ALL SELECT 'aihr_personal_item'
|
||||
UNION ALL SELECT 'aihr_personal_fragment'
|
||||
@@ -472,6 +474,75 @@ REMOTE
|
||||
|
||||
[[ "$broadcast_target_recipient_unique_index" = "0|tenant_id,message_id,recipient_key|0" ]] \
|
||||
|| fail "remote broadcast target-recipient unique index invalid: expected unique full columns tenant_id,message_id,recipient_key; got ${broadcast_target_recipient_unique_index:-missing}"
|
||||
local direct_feedback_contract
|
||||
direct_feedback_contract="$(ssh -o BatchMode=yes -o ConnectTimeout=10 "$remote_ssh" bash -s -- "$remote_db" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
db="$1"
|
||||
mysql --batch --skip-column-names --connect-timeout=5 "$db" <<'SQL'
|
||||
SELECT CONCAT(
|
||||
COUNT(DISTINCT c.column_name), '|',
|
||||
MIN(s.non_unique), '|',
|
||||
COALESCE(GROUP_CONCAT(DISTINCT s.column_name ORDER BY s.seq_in_index), ''), '|',
|
||||
SUM(s.sub_part IS NOT NULL)
|
||||
)
|
||||
FROM information_schema.columns c
|
||||
LEFT JOIN information_schema.statistics s
|
||||
ON s.table_schema = c.table_schema
|
||||
AND s.table_name = c.table_name
|
||||
AND s.index_name = 'uk_aihr_direct_feedback_submit'
|
||||
WHERE c.table_schema = DATABASE()
|
||||
AND c.table_name = 'aihr_direct_feedback'
|
||||
AND c.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');
|
||||
SQL
|
||||
REMOTE
|
||||
)" || fail "remote direct-feedback schema check failed: $remote_ssh:$remote_db"
|
||||
|
||||
[[ "$direct_feedback_contract" = "11|0|tenant_id,sender_user_id,submit_request_key|0" ]] \
|
||||
|| fail "remote direct-feedback contract invalid: expected 11 business columns and unique tenant_id,sender_user_id,submit_request_key; got ${direct_feedback_contract:-missing}"
|
||||
local direct_role_count
|
||||
direct_role_count="$(ssh -o BatchMode=yes -o ConnectTimeout=10 "$remote_ssh" bash -s -- "$remote_db" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
db="$1"
|
||||
mysql --batch --skip-column-names --connect-timeout=5 "$db" <<'SQL'
|
||||
SELECT COUNT(DISTINCT role_key)
|
||||
FROM sys_role
|
||||
WHERE tenant_id = '000000'
|
||||
AND del_flag = '0'
|
||||
AND role_key IN ('direct_president','direct_finance','direct_hr','direct_audit','direct_operations');
|
||||
SQL
|
||||
REMOTE
|
||||
)" || fail "remote direct-feedback role check failed: $remote_ssh:$remote_db"
|
||||
|
||||
[[ "$direct_role_count" = "5" ]] \
|
||||
|| fail "remote direct-feedback roles incomplete: expected 5/5; got ${direct_role_count:-0}/5"
|
||||
local broadcast_attachment_contract
|
||||
broadcast_attachment_contract="$(ssh -o BatchMode=yes -o ConnectTimeout=10 "$remote_ssh" bash -s -- "$remote_db" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
db="$1"
|
||||
mysql --batch --skip-column-names --connect-timeout=5 "$db" <<'SQL'
|
||||
SELECT CONCAT(
|
||||
(SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema = DATABASE()
|
||||
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')),
|
||||
'|',
|
||||
(SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'aihr_broadcast_message'
|
||||
AND column_name = 'attachment_id'),
|
||||
'|',
|
||||
COALESCE((SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index)
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'aihr_broadcast_message'
|
||||
AND index_name = 'idx_aihr_broadcast_message_attachment'), '')
|
||||
);
|
||||
SQL
|
||||
REMOTE
|
||||
)" || fail "remote broadcast-attachment schema check failed: $remote_ssh:$remote_db"
|
||||
|
||||
[[ "$broadcast_attachment_contract" = "11|1|tenant_id,attachment_id" ]] \
|
||||
|| fail "remote broadcast-attachment contract invalid: expected 11 attachment columns and indexed message attachment_id; got ${broadcast_attachment_contract:-missing}"
|
||||
local missing_work_assistant_columns
|
||||
missing_work_assistant_columns="$(ssh -o BatchMode=yes -o ConnectTimeout=10 "$remote_ssh" bash -s -- "$remote_db" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
@@ -500,7 +571,7 @@ REMOTE
|
||||
|
||||
[[ -z "$missing_work_assistant_columns" ]] \
|
||||
|| fail "remote work-assistant schema missing required columns: $(printf '%s' "$missing_work_assistant_columns" | tr '\n' ', ' | sed 's/, $//')"
|
||||
echo "remote_schema=62/62 $remote_ssh:$remote_db"
|
||||
echo "remote_schema=64/64 $remote_ssh:$remote_db"
|
||||
echo "remote_work_report_idempotency=3/3 $remote_ssh:$remote_db"
|
||||
echo "remote_knowledge_category_columns=7/7 $remote_ssh:$remote_db"
|
||||
echo "remote_broadcast_publish_audit_columns=3/3 $remote_ssh:$remote_db"
|
||||
@@ -511,6 +582,9 @@ REMOTE
|
||||
echo "remote_broadcast_target_table_contract=16/16 $remote_ssh:$remote_db"
|
||||
echo "remote_broadcast_target_rule_uniqueness=4/4 $remote_ssh:$remote_db"
|
||||
echo "remote_broadcast_target_recipient_uniqueness=3/3 $remote_ssh:$remote_db"
|
||||
echo "remote_direct_feedback_contract=11/11 $remote_ssh:$remote_db"
|
||||
echo "remote_direct_feedback_roles=5/5 $remote_ssh:$remote_db"
|
||||
echo "remote_broadcast_attachment_contract=12/12 $remote_ssh:$remote_db"
|
||||
echo "remote_broadcast_question_context=1/1 $remote_ssh:$remote_db"
|
||||
echo "remote_work_assistant_columns=8/8 $remote_ssh:$remote_db"
|
||||
echo "remote_personal_oss_configuration=true $remote_ssh:$remote_db"
|
||||
|
||||
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user