v1.0.108: advisory lock + NFKC + ID-суррогаты + обогащение ops именами

This commit is contained in:
2026-06-23 00:17:41 +04:00
parent 9deee2af64
commit acec6729b6
4 changed files with 24 additions and 7 deletions
+5 -1
View File
@@ -25,6 +25,10 @@
<cfset result = {ok: true, skipped: true, message: "supplement already processed"}>
<cfelse>
<cftransaction>
<!--- Advisory lock: атомарный seq без гонки --->
<cfquery datasource="baza">
SELECT pg_advisory_xact_lock(hashtext(<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">))
</cfquery>
<cfset seq = 0>
<cfquery name="sq" datasource="baza">
SELECT COALESCE(MAX(seq), 0) as m FROM spec_events
@@ -114,7 +118,7 @@
INSERT INTO spec_current (contract_id, name_hash, name, price, qty, sum, date_start, last_event_id)
VALUES (
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
md5(lower(trim(<cfqueryparam value="#nm#" cfsqltype="cf_sql_varchar">)) || coalesce(<cfqueryparam value="#ds#" cfsqltype="cf_sql_varchar">, '')),
md5(lower(trim(regexp_replace(translate(normalize(<cfqueryparam value="#nm#" cfsqltype="cf_sql_varchar">, NFKC), '–—‑−«»""', '------""'), '\s+', ' ', 'g'))) || coalesce(<cfqueryparam value="#ds#" cfsqltype="cf_sql_varchar">, '')),
<cfqueryparam value="#nm#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#pr#" cfsqltype="cf_sql_float" null="#len(pr) EQ 0#">,
<cfqueryparam value="#qt#" cfsqltype="cf_sql_float" null="#len(qt) EQ 0#">,