#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=csfzx-common.sh
source "${SCRIPT_DIR}/csfzx-common.sh"

CONFIRM_DELETE="${CONFIRM_DELETE:-0}"
STAFF_UUID="${STAFF_UUID:-}"

[ "$CONFIRM_DELETE" = "1" ] || fail "删除验证需要显式设置 CONFIRM_DELETE=1 STAFF_UUID=xxx，避免误删正式人员人脸"
[ -n "$STAFF_UUID" ] || fail "请设置 STAFF_UUID=待删除人脸的测试人员 uuid"

pc_login

log "删除前证据"
ob_query "$ZHCT_DB" "SELECT id,uuid,name,mobile,is_show FROM ydy_staff WHERE uuid='${STAFF_UUID}';"
ob_query "$ZHCT_DB" "SELECT id,staff_uuid,baidu_user_id,group_id,is_del,CHAR_LENGTH(baidu_face_token) AS token_len FROM ydy_staff_face WHERE staff_uuid='${STAFF_UUID}' ORDER BY id DESC LIMIT 3;"
ob_query "$ZHCT_DB" "SELECT id,type,receive_device_id,staff_uuid,status,publish_time,LEFT(message,220) AS message FROM ydy_mq_message WHERE staff_uuid='${STAFF_UUID}' ORDER BY id DESC LIMIT 10;"

log "PC 删除测试人员：/p/Staff/delete（该流程会同步调用离线 SDK 删除用户）"
RESP=$(curl -sS --max-time 30 -X POST "${STORE_BASE}/p/Staff/delete" \
  -H "Host: ${STORE_HOST}" \
  -H "Cookie: _token=${PC_COOKIE_TOKEN}" \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode "uuid=${STAFF_UUID}")
printf '%s\n' "$RESP"
CODE=$(printf '%s' "$RESP" | json_get '$j["code"] ?? ""')
[ "$CODE" = "0" ] || fail "PC 删除测试人员接口失败"
pass "PC 删除测试人员接口返回 code=0"

log "删除后证据"
ob_query "$ZHCT_DB" "SELECT id,staff_uuid,baidu_user_id,group_id,is_del,CHAR_LENGTH(baidu_face_token) AS token_len FROM ydy_staff_face WHERE staff_uuid='${STAFF_UUID}' ORDER BY id DESC LIMIT 3;"
ob_query "$ZHCT_DB" "SELECT id,staff_uuid,is_del FROM ydy_hardware_img WHERE staff_uuid='${STAFF_UUID}' ORDER BY id DESC LIMIT 3;"
ob_query "$ZHCT_DB" "SELECT id,type,receive_device_id,staff_uuid,status,publish_time,LEFT(message,220) AS message FROM ydy_mq_message WHERE staff_uuid='${STAFF_UUID}' ORDER BY id DESC LIMIT 10;"

cat <<'TXT'
验收说明：
1. /p/Staff/delete 会进入 application/p/logic/Staff.php::delete()。
2. 当人员存在未删除 hardware_img 且 baiduDisjunctor 开启时，会调用 BaiduFace::del_user() 删除离线 SDK 用户。
3. /p/Staff/deleteStaffFace 仅把 staff_face/hardware_img 标记为 is_del=1，不用于本次“删除人员同步删除 SDK 人脸库”验收。
TXT
