A1-A7 收口OA统一审批中心与企微基础设施路线

这个提交包含在:
2026-05-09 15:28:39 +08:00
父节点 37c717110b
当前提交 8110e7df9c
共修改 10 个文件,包含 103 行新增和 32 行删除
+13 -7
查看文件
@@ -417,17 +417,23 @@ echo "[8/10] duplicate override audit"
RID_OVERRIDE_A="$(create_reimbursement "$EMPLOYEE_TOKEN" "$TMP_DIR/override-reim-a.json")"
RID_OVERRIDE_B="$(create_reimbursement "$EMPLOYEE_TOKEN" "$TMP_DIR/override-reim-b.json")"
OV_FILE="$TMP_DIR/override-$RUN_SUFFIX.pdf"
printf '%%PDF-1.4\nMOCK_DUP:%s\n' "$RUN_SUFFIX" > "$OV_FILE"
OV_CODE="AUDDUP$RUN_SUFFIX"
OV_NUMBER="AUDNO$RUN_SUFFIX"
OV_FILE_A="$TMP_DIR/override-a-$RUN_SUFFIX.pdf"
OV_FILE_B="$TMP_DIR/override-b-$RUN_SUFFIX.pdf"
printf '%%PDF-1.4\nMOCK_DUP_A:%s\n' "$RUN_SUFFIX" > "$OV_FILE_A"
printf '%%PDF-1.4\nMOCK_DUP_B:%s\n' "$RUN_SUFFIX" > "$OV_FILE_B"
upload_status="$(upload_invoice "$EMPLOYEE_TOKEN" "$OV_FILE" "$TMP_DIR/override-upload-a.json")"
upload_status="$(upload_invoice "$EMPLOYEE_TOKEN" "$OV_FILE_A" "$TMP_DIR/override-upload-a.json")"
assert_status "$upload_status" "200" "upload override invoice A" "$TMP_DIR/override-upload-a.json"
IID_OVERRIDE_A="$(jq -er '.data.invoicePoolId' "$TMP_DIR/override-upload-a.json")"
patch_invoice "$EMPLOYEE_TOKEN" "$IID_OVERRIDE_A" "{\"totalAmount\":\"188.80\",\"invoiceCode\":\"$OV_CODE\",\"invoiceNumber\":\"$OV_NUMBER\"}" "$TMP_DIR/override-patch-a.json"
bind_invoice "$EMPLOYEE_TOKEN" "$IID_OVERRIDE_A" "$RID_OVERRIDE_A" "$TMP_DIR/override-bind-a.json"
upload_status="$(upload_invoice "$EMPLOYEE_TOKEN" "$OV_FILE" "$TMP_DIR/override-upload-b.json")"
upload_status="$(upload_invoice "$EMPLOYEE_TOKEN" "$OV_FILE_B" "$TMP_DIR/override-upload-b.json")"
assert_status "$upload_status" "200" "upload override invoice B" "$TMP_DIR/override-upload-b.json"
IID_OVERRIDE_B="$(jq -er '.data.invoicePoolId' "$TMP_DIR/override-upload-b.json")"
patch_invoice "$EMPLOYEE_TOKEN" "$IID_OVERRIDE_B" "{\"totalAmount\":\"188.80\",\"invoiceCode\":\"$OV_CODE\",\"invoiceNumber\":\"$OV_NUMBER\"}" "$TMP_DIR/override-patch-b.json"
bind_status="$(api_json_auth POST "$BASE_URL/api/invoice-pool/$IID_OVERRIDE_B/bind" "$EMPLOYEE_TOKEN" "$TMP_DIR/override-bind-b.json" "{\"reimbursementId\":\"$RID_OVERRIDE_B\"}")"
assert_status "$bind_status" "409" "bind duplicate before override" "$TMP_DIR/override-bind-b.json"
@@ -446,17 +452,17 @@ echo "[9/10] OCR retry audit + VALID_006/VALID_007"
NOW_ISO="$(date -u +"%Y-%m-%dT%H:%M:%S.000Z")"
OLD_ISO="$(date -u -d "-2 minutes" +"%Y-%m-%dT%H:%M:%S.000Z")"
INVOICE_FREQ="$(create_invoice_record "$EMPLOYEE_IDENTIFIER" "MOCK_OK:$RUN_SUFFIX" "ocr_failed" "0" "$NOW_ISO")"
INVOICE_FREQ="$(create_invoice_record "$EMPLOYEE_IDENTIFIER" "MOCK_OK:FREQ:$RUN_SUFFIX" "ocr_failed" "0" "$NOW_ISO")"
retry_freq_status="$(retry_ocr "$EMPLOYEE_TOKEN" "$INVOICE_FREQ" "$TMP_DIR/retry-freq.json")"
assert_status "$retry_freq_status" "409" "retry too frequent" "$TMP_DIR/retry-freq.json"
assert_error_code "$TMP_DIR/retry-freq.json" "VALID_007" "retry too frequent"
INVOICE_EXCEEDED="$(create_invoice_record "$EMPLOYEE_IDENTIFIER" "MOCK_OK:$RUN_SUFFIX" "ocr_failed" "3" "$OLD_ISO")"
INVOICE_EXCEEDED="$(create_invoice_record "$EMPLOYEE_IDENTIFIER" "MOCK_OK:EXCEEDED:$RUN_SUFFIX" "ocr_failed" "3" "$OLD_ISO")"
retry_exceeded_status="$(retry_ocr "$EMPLOYEE_TOKEN" "$INVOICE_EXCEEDED" "$TMP_DIR/retry-exceeded.json")"
assert_status "$retry_exceeded_status" "409" "retry attempts exceeded" "$TMP_DIR/retry-exceeded.json"
assert_error_code "$TMP_DIR/retry-exceeded.json" "VALID_006" "retry attempts exceeded"
INVOICE_RETRY_OK="$(create_invoice_record "$EMPLOYEE_IDENTIFIER" "MOCK_OK:$RUN_SUFFIX" "ocr_failed" "1" "$OLD_ISO")"
INVOICE_RETRY_OK="$(create_invoice_record "$EMPLOYEE_IDENTIFIER" "MOCK_OK:RETRY:$RUN_SUFFIX" "ocr_failed" "1" "$OLD_ISO")"
retry_ok_status="$(retry_ocr "$EMPLOYEE_TOKEN" "$INVOICE_RETRY_OK" "$TMP_DIR/retry-ok.json")"
assert_status "$retry_ok_status" "200" "retry ok" "$TMP_DIR/retry-ok.json"
assert_jq "$TMP_DIR/retry-ok.json" '.data.status == "pending_ocr"' "retry ok status"
@@ -242,6 +242,7 @@ create_and_bind_invoice() {
local file_path="$TMP_DIR/${label}-${RUN_SUFFIX}-${RANDOM}.pdf"
local upload_body="$TMP_DIR/${label}-upload.json"
local patch_body="$TMP_DIR/${label}-patch.json"
local bind_body="$TMP_DIR/${label}-bind.json"
printf '%%PDF-1.4\n%s\n' "$label-$RUN_SUFFIX-$(date +%s%N)-$RANDOM" > "$file_path"
@@ -253,6 +254,9 @@ create_and_bind_invoice() {
local invoice_id
invoice_id="$(jq -er '.data.invoicePoolId' "$upload_body")"
status="$(api_json_auth PATCH "$BASE_URL/api/invoice-pool/$invoice_id" "$token" "$patch_body" '{"totalAmount":"188.80"}')"
assert_status "$status" "200" "patch invoice total amount $label" "$patch_body"
status="$(api_json_auth POST "$BASE_URL/api/invoice-pool/$invoice_id/bind" "$token" "$bind_body" "{\"reimbursementId\":\"$reimbursement_id\"}")"
assert_status "$status" "200" "bind invoice $label" "$bind_body"
+16 -5
查看文件
@@ -21,17 +21,19 @@ if ! command -v jq >/dev/null 2>&1; then
exit 1
fi
if [[ ! -f "$SAMPLE_FILE" ]]; then
echo "[ERROR] Sample file not found: $SAMPLE_FILE" >&2
exit 1
fi
TMP_DIR="$(mktemp -d)"
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
if [[ ! -f "$SAMPLE_FILE" ]]; then
REQUESTED_SAMPLE_FILE="$SAMPLE_FILE"
SAMPLE_FILE="$TMP_DIR/hyb-oa-sample-invoice.pdf"
printf '%%PDF-1.4\nhyb-oa generated smoke invoice\n' > "$SAMPLE_FILE"
echo "[WARN] Sample file not found: $REQUESTED_SAMPLE_FILE; using generated smoke fixture" >&2
fi
RUN_UPLOAD_FILE="$TMP_DIR/upload-$(basename "$SAMPLE_FILE")"
cp "$SAMPLE_FILE" "$RUN_UPLOAD_FILE"
printf '\n%%RUN-%s\n' "$(date +%s%N)" >> "$RUN_UPLOAD_FILE"
@@ -104,6 +106,15 @@ upload_status="$(curl -sS -o "$upload_body" -w "%{http_code}" \
assert_status "$upload_status" "200" "upload invoice"
INVOICE_ID="$(extract_json_field "$upload_body" '.data.invoicePoolId')"
echo "[5.1/13] Patch invoice total amount"
patch_invoice_body="$TMP_DIR/patch-invoice.json"
patch_invoice_status="$(curl -sS -o "$patch_invoice_body" -w "%{http_code}" \
-X PATCH "$BASE_URL/api/invoice-pool/$INVOICE_ID" \
-H "authorization: Bearer $EMPLOYEE_TOKEN" \
-H "content-type: application/json" \
-d '{"totalAmount":"188.80"}')"
assert_status "$patch_invoice_status" "200" "patch invoice total amount"
echo "[6/13] Bind invoice"
bind_body="$TMP_DIR/bind.json"
bind_status="$(curl -sS -o "$bind_body" -w "%{http_code}" \