fix: validate duplicate operation UUIDs

This commit is contained in:
2026-08-19 17:48:39 +03:00
parent 5c059cbc62
commit b99555ca23
3 changed files with 15 additions and 1 deletions

View File

@@ -133,12 +133,20 @@ function validateSemantics(data: StatementFile): ValidationError | null {
}
const fps = new Set<string>();
const operationIds = new Set<string>();
for (let i = 0; i < data.transactions.length; i++) {
const fp = computeFingerprint(data.statement.accountNumber, data.transactions[i]);
if (fps.has(fp)) {
return { status: 422, error: 'VALIDATION_ERROR', message: `Duplicate fingerprint found within file at transaction index ${i}` };
}
fps.add(fp);
const operationId = data.transactions[i].operationId;
if (operationId) {
if (operationIds.has(operationId.toLowerCase())) {
return { status: 422, error: 'VALIDATION_ERROR', message: `Duplicate operationId found within file at transaction index ${i}` };
}
operationIds.add(operationId.toLowerCase());
}
}
return null;