H1-H10 优化OCR实时体验闭环

这个提交包含在:
2026-05-09 11:48:57 +08:00
父节点 549bd81e30
当前提交 c26cf9b954
共修改 34 个文件,包含 1217 行新增和 184 行删除
+18
查看文件
@@ -10,6 +10,7 @@ const { sha256Hex } = require("../utils/crypto");
const { toMoneyString } = require("../utils/workflow");
const { findActiveDelegationForDelegate } = require("../utils/delegation");
const { getMissingRequiredOcrFields, isOcrEnabledForType } = require("../services/ocr");
const { enqueueOcrInvoice } = require("../jobs/pgBossJobs");
const { registerInvoiceVerificationRoutes } = require("./invoicePool/verification");
const { registerInvoicePoolReadRoutes } = require("./invoicePool/read");
const { normalizeInvoiceResponse } = require("./invoicePool/shared/mappers");
@@ -17,6 +18,7 @@ const { buildInvoiceDetailSelect } = require("./invoicePool/shared/selects");
const { writeBuffer } = require("../services/storage");
const {
mapInvoiceUnavailableReason,
resolveInvoiceAvailability,
resolveInvoiceDedupBlocker,
resolveUploadDedupDecision,
} = require("../services/invoiceGovernance");
@@ -509,6 +511,8 @@ async function invoicePoolRoutes(fastify) {
uploadAction: uploadDedupDecision.action,
unavailableReason: uploadDedupDecision.reason,
unavailableMessage: message,
availabilityReason: uploadDedupDecision.reason,
availabilityMessage: message,
});
}
@@ -570,10 +574,20 @@ async function invoicePoolRoutes(fastify) {
return created;
});
if (invoice.status === "pending_ocr") {
enqueueOcrInvoice(fastify, invoice.id).catch((error) => {
request.log.warn({ err: error, invoiceId: invoice.id }, "Failed to enqueue OCR invoice job");
});
}
const availability = resolveInvoiceAvailability(invoice);
return sendData(reply, request, {
invoicePoolId: invoice.id,
status: invoice.status,
fileSha256: invoice.file_sha256,
uploadAction: "create",
availabilityReason: availability.reason,
availabilityMessage: availability.message,
});
},
);
@@ -1231,6 +1245,10 @@ async function invoicePoolRoutes(fastify) {
return updated;
});
enqueueOcrInvoice(fastify, invoice.id).catch((error) => {
request.log.warn({ err: error, invoiceId: invoice.id }, "Failed to enqueue retry OCR invoice job");
});
return sendData(reply, request, normalizeInvoiceResponse(invoice));
},
);