A2-A4-A9 完善报销码值与查重回归

这个提交包含在:
2026-05-08 23:21:39 +08:00
父节点 b75ad226c6
当前提交 7a90e729f0
共修改 10 个文件,包含 615 行新增和 8 行删除
+79 -4
查看文件
@@ -154,6 +154,66 @@ const { createPrismaClient } = require('./src/prismaClient');
NODE
}
set_invoice_total_amount() {
local invoice_id="$1"
local total_amount="${2:-1683.00}"
DATABASE_URL="$DATABASE_URL" node - "$invoice_id" "$total_amount" <<'NODE'
const invoiceId = process.argv[2];
const totalAmount = process.argv[3];
const { createPrismaClient } = require('./src/prismaClient');
(async () => {
const { prisma, pool } = createPrismaClient();
await prisma.$connect();
try {
await prisma.invoicePool.update({
where: { id: invoiceId },
data: {
total_amount: totalAmount,
},
});
} finally {
await prisma.$disconnect();
await pool.end();
}
})().catch((error) => {
console.error(error);
process.exit(1);
});
NODE
}
set_invoice_file_sha256() {
local invoice_id="$1"
local file_sha256="$2"
DATABASE_URL="$DATABASE_URL" node - "$invoice_id" "$file_sha256" <<'NODE'
const invoiceId = process.argv[2];
const fileSha256 = process.argv[3];
const { createPrismaClient } = require('./src/prismaClient');
(async () => {
const { prisma, pool } = createPrismaClient();
await prisma.$connect();
try {
await prisma.invoicePool.update({
where: { id: invoiceId },
data: {
file_sha256: fileSha256,
},
});
} finally {
await prisma.$disconnect();
await pool.end();
}
})().catch((error) => {
console.error(error);
process.exit(1);
});
NODE
}
set_reimbursement_status_db() {
local reimbursement_id="$1"
local status="$2"
@@ -262,22 +322,31 @@ assert_status "$login_fm_code" "200" "login finance_mgr" "$TMP_DIR/login-fm.json
TOKEN_FM="$(jq -er '.data.accessToken' "$TMP_DIR/login-fm.json")"
echo "[2/7] Dedup by file_sha256 => VALID_003"
cat > "$TMP_DIR/same-file.pdf" <<PDF
DEDUP_FILE_SHA="regression-file-sha-$RUN_SUFFIX"
cat > "$TMP_DIR/same-file-a.pdf" <<PDF
%PDF-1.4
same-content-$RUN_SUFFIX
same-content-a-$RUN_SUFFIX
PDF
cat > "$TMP_DIR/same-file-b.pdf" <<PDF
%PDF-1.4
same-content-b-$RUN_SUFFIX
PDF
RID_A="$(create_reimbursement "$TMP_DIR/rA.json")"
status="$(upload_file "$TMP_DIR/same-file.pdf" "$TMP_DIR/uA.json")"
status="$(upload_file "$TMP_DIR/same-file-a.pdf" "$TMP_DIR/uA.json")"
assert_status "$status" "200" "upload first same-file" "$TMP_DIR/uA.json"
IID_A="$(jq -er '.data.invoicePoolId' "$TMP_DIR/uA.json")"
set_invoice_total_amount "$IID_A"
set_invoice_file_sha256 "$IID_A" "$DEDUP_FILE_SHA"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_A/bind" "$TMP_DIR/bA.json" "{\"reimbursementId\":\"$RID_A\"}")"
assert_status "$status" "200" "bind first same-file" "$TMP_DIR/bA.json"
RID_B="$(create_reimbursement "$TMP_DIR/rB.json")"
status="$(upload_file "$TMP_DIR/same-file.pdf" "$TMP_DIR/uB.json")"
status="$(upload_file "$TMP_DIR/same-file-b.pdf" "$TMP_DIR/uB.json")"
assert_status "$status" "200" "upload second same-file" "$TMP_DIR/uB.json"
IID_B="$(jq -er '.data.invoicePoolId' "$TMP_DIR/uB.json")"
set_invoice_total_amount "$IID_B"
set_invoice_file_sha256 "$IID_B" "$DEDUP_FILE_SHA"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_B/bind" "$TMP_DIR/bB.json" "{\"reimbursementId\":\"$RID_B\"}")"
assert_status "$status" "409" "file_sha256 dedup bind" "$TMP_DIR/bB.json"
assert_error_code "$TMP_DIR/bB.json" "VALID_003"
@@ -302,6 +371,7 @@ RID_C="$(create_reimbursement "$TMP_DIR/rC.json")"
status="$(upload_file "$TMP_DIR/code-1.pdf" "$TMP_DIR/uC.json")"
assert_status "$status" "200" "upload code-1" "$TMP_DIR/uC.json"
IID_C="$(jq -er '.data.invoicePoolId' "$TMP_DIR/uC.json")"
set_invoice_total_amount "$IID_C"
set_invoice_code_number "$IID_C" "$DEDUP_CODE" "$DEDUP_NUMBER"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_C/bind" "$TMP_DIR/bC.json" "{\"reimbursementId\":\"$RID_C\"}")"
assert_status "$status" "200" "bind code-1" "$TMP_DIR/bC.json"
@@ -310,6 +380,7 @@ RID_D="$(create_reimbursement "$TMP_DIR/rD.json")"
status="$(upload_file "$TMP_DIR/code-2.pdf" "$TMP_DIR/uD.json")"
assert_status "$status" "200" "upload code-2" "$TMP_DIR/uD.json"
IID_D="$(jq -er '.data.invoicePoolId' "$TMP_DIR/uD.json")"
set_invoice_total_amount "$IID_D"
set_invoice_code_number "$IID_D" "$DEDUP_CODE" "$DEDUP_NUMBER"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_D/bind" "$TMP_DIR/bD.json" "{\"reimbursementId\":\"$RID_D\"}")"
assert_status "$status" "409" "code+number dedup bind" "$TMP_DIR/bD.json"
@@ -338,6 +409,7 @@ RID_BLOCK_A="$(create_reimbursement "$TMP_DIR/r-block-a.json")"
status="$(upload_file "$TMP_DIR/block-1.pdf" "$TMP_DIR/u-block-a.json")"
assert_status "$status" "200" "upload block-1" "$TMP_DIR/u-block-a.json"
IID_BLOCK_A="$(jq -er '.data.invoicePoolId' "$TMP_DIR/u-block-a.json")"
set_invoice_total_amount "$IID_BLOCK_A"
set_invoice_code_number "$IID_BLOCK_A" "$BLOCK_CODE" "$BLOCK_NUMBER"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_BLOCK_A/bind" "$TMP_DIR/b-block-a.json" "{\"reimbursementId\":\"$RID_BLOCK_A\"}")"
assert_status "$status" "200" "bind block-1" "$TMP_DIR/b-block-a.json"
@@ -347,6 +419,7 @@ RID_BLOCK_B="$(create_reimbursement "$TMP_DIR/r-block-b.json")"
status="$(upload_file "$TMP_DIR/block-2.pdf" "$TMP_DIR/u-block-b.json")"
assert_status "$status" "200" "upload block-2" "$TMP_DIR/u-block-b.json"
IID_BLOCK_B="$(jq -er '.data.invoicePoolId' "$TMP_DIR/u-block-b.json")"
set_invoice_total_amount "$IID_BLOCK_B"
set_invoice_code_number "$IID_BLOCK_B" "$BLOCK_CODE" "$BLOCK_NUMBER"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_BLOCK_B/bind" "$TMP_DIR/b-block-b.json" "{\"reimbursementId\":\"$RID_BLOCK_B\"}")"
assert_status "$status" "409" "bind block-2 dedup" "$TMP_DIR/b-block-b.json"
@@ -372,12 +445,14 @@ TMP_INDEX_CREATED=1
status="$(upload_file "$TMP_DIR/non-dedup-1.pdf" "$TMP_DIR/uE1.json")"
assert_status "$status" "200" "upload non-dedup-1" "$TMP_DIR/uE1.json"
IID_E1="$(jq -er '.data.invoicePoolId' "$TMP_DIR/uE1.json")"
set_invoice_total_amount "$IID_E1"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_E1/bind" "$TMP_DIR/bE1.json" "{\"reimbursementId\":\"$RID_E\"}")"
assert_status "$status" "200" "bind non-dedup-1" "$TMP_DIR/bE1.json"
status="$(upload_file "$TMP_DIR/non-dedup-2.pdf" "$TMP_DIR/uE2.json")"
assert_status "$status" "200" "upload non-dedup-2" "$TMP_DIR/uE2.json"
IID_E2="$(jq -er '.data.invoicePoolId' "$TMP_DIR/uE2.json")"
set_invoice_total_amount "$IID_E2"
status="$(api_json POST "$BASE_URL/api/invoice-pool/$IID_E2/bind" "$TMP_DIR/bE2.json" "{\"reimbursementId\":\"$RID_E\"}")"
if [[ "$status" == "409" ]] && [[ "$(jq -r '.error.code // empty' "$TMP_DIR/bE2.json")" == "VALID_003" ]]; then
echo "[ERROR] non-dedup P2002 was incorrectly mapped to VALID_003" >&2