Этап 4 добивка двух хвостов: settlement polarity и чистое разделение month_close / RBP в live acceptance
This commit is contained in:
@@ -848,12 +848,25 @@ export function resolveDomainPolarityGuard(input: {
|
||||
(/(?:сч[её]т\s*62|по\s*62|счет\s*62|РїРѕ\s*62)/i.test(lower) ? 1 : 0);
|
||||
|
||||
let polarity: DomainPolarity = "mixed_or_unresolved";
|
||||
if (supplierScore > 0 && customerScore === 0) {
|
||||
polarity = "supplier_payable";
|
||||
} else if (customerScore > 0 && supplierScore === 0) {
|
||||
polarity = "customer_receivable";
|
||||
if (supplierScore > 0 || customerScore > 0) {
|
||||
if (supplierScore >= customerScore + 2) {
|
||||
polarity = "supplier_payable";
|
||||
} else if (customerScore >= supplierScore + 2) {
|
||||
polarity = "customer_receivable";
|
||||
} else if (prefixes.has("60") && !prefixes.has("62")) {
|
||||
polarity = "supplier_payable";
|
||||
} else if (prefixes.has("62") && !prefixes.has("60")) {
|
||||
polarity = "customer_receivable";
|
||||
}
|
||||
}
|
||||
const unresolved = polarity === "mixed_or_unresolved";
|
||||
const reasonCodes = unresolved ? ["unresolved_supplier_customer_polarity"] : [];
|
||||
if (unresolved && supplierScore > 0 && customerScore > 0) {
|
||||
reasonCodes.push("supplier_customer_signals_conflict");
|
||||
}
|
||||
if (unresolved && supplierScore === 0 && customerScore === 0) {
|
||||
reasonCodes.push("supplier_customer_signals_absent");
|
||||
}
|
||||
return {
|
||||
applied: true,
|
||||
polarity,
|
||||
@@ -868,7 +881,7 @@ export function resolveDomainPolarityGuard(input: {
|
||||
rejected_problem_units: 0,
|
||||
rejected_evidence: 0,
|
||||
critical_contradiction: unresolved,
|
||||
reason_codes: unresolved ? ["unresolved_supplier_customer_polarity"] : []
|
||||
reason_codes: uniqueStrings(reasonCodes)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user