fix: recalculer les scores de qualité à l import

This commit is contained in:
Manus
2026-10-02 20:59:23 +00:00
parent 70f867d62b
commit ba4e42c7f1
6 changed files with 102 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
import { z } from "zod";
import { COOKIE_NAME } from "@shared/const";
import { BAP_MIN_QUALITY_SCORE, meetsBapQualityThreshold } from "@shared/bapEligibility";
import { calculateInvoiceQualityScore } from "@shared/invoiceQuality";
import { calculateInvoiceQualityScore, withCalculatedInvoiceQuality } from "@shared/invoiceQuality";
import { webPortalUrlSchema } from "./webPortalUrl";
interface Condition {
@@ -287,6 +287,7 @@ export const appRouter = router({
manusForgeApiUrl: (settings as any).manusForgeApiUrl || null,
geminiApiKey: (settings as any).geminiApiKey || null,
} : undefined;
const qualityFieldsConfig = await getLlmFieldsConfigByUser(userId);
// Extract invoices
const result = await extractInvoicesWithMistral(
@@ -313,6 +314,9 @@ export const appRouter = router({
for (let i = 0; i < result.invoices.length; i++) {
const invoiceData = result.invoices[i]!;
// Le score affiché est déterministe : les champs obligatoires
// configurés prévalent sur l'estimation fournie par le modèle.
const invoiceWithQuality = withCalculatedInvoiceQuality(invoiceData, qualityFieldsConfig);
try {
// Update progress
@@ -375,7 +379,7 @@ export const appRouter = router({
totalAmount: invoiceData.totalAmount?.toString(),
recipientName: invoiceData.recipientName,
pageRange: invoiceData.pageRange,
qualityScore: invoiceData.qualityScore,
qualityScore: invoiceWithQuality.qualityScore,
extractedText: invoiceData.extractedText,
isSubscription: invoiceData.isSubscription ? 1 : 0,
metadataFileKey: metadataKey,