v1.0.113: prompt_version in spec_events — provenance (who created what with which prompt)
This commit is contained in:
+27
-12
@@ -7,6 +7,15 @@
|
||||
<cfset data = deserializeJSON(body)>
|
||||
<cfset ops = structKeyExists(data, "ops") ? data.ops : []>
|
||||
<cfset supplementId = structKeyExists(data, "supplement_id") ? data.supplement_id : "">
|
||||
<cfset promptId = structKeyExists(data, "prompt_id") AND len(data.prompt_id) ? data.prompt_id : "">
|
||||
|
||||
<!--- ALTER TABLE: добавить prompt_version если ещё нет --->
|
||||
<cftry>
|
||||
<cfquery datasource="baza">
|
||||
ALTER TABLE spec_events ADD COLUMN IF NOT EXISTS prompt_version UUID
|
||||
</cfquery>
|
||||
<cfcatch></cfcatch>
|
||||
</cftry>
|
||||
|
||||
<cfset result = {ok: false, error: ""}>
|
||||
|
||||
@@ -44,7 +53,7 @@
|
||||
<!--- full_replace: явные DELETE для аудита (массовый INSERT) --->
|
||||
<cfif url.mode EQ "full_replace">
|
||||
<cfquery datasource="baza">
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, target_hash, comment, status)
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, target_hash, comment, status, prompt_version)
|
||||
SELECT
|
||||
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">,
|
||||
@@ -52,7 +61,8 @@
|
||||
'DELETE',
|
||||
name_hash,
|
||||
'full_replace',
|
||||
'applied'
|
||||
'applied',
|
||||
<cfif len(promptId)><cfqueryparam value="#promptId#" cfsqltype="cf_sql_varchar">::uuid<cfelse>NULL</cfif>
|
||||
FROM spec_current
|
||||
WHERE contract_id = <cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">
|
||||
</cfquery>
|
||||
@@ -101,7 +111,7 @@
|
||||
<cfset ds = (structKeyExists(nr, 'date_start') AND len(nr.date_start)) ? nr.date_start : ''>
|
||||
|
||||
<cfquery name="evt" datasource="baza">
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, new_values, comment, status)
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, new_values, comment, status, prompt_version)
|
||||
VALUES (
|
||||
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">,
|
||||
@@ -109,7 +119,8 @@
|
||||
'ADD',
|
||||
<cfqueryparam value="#serializeJSON(nr)#" cfsqltype="cf_sql_varchar">::jsonb,
|
||||
<cfqueryparam value="#structKeyExists(op,'comment') ? op.comment : ''#" cfsqltype="cf_sql_varchar">,
|
||||
'applied'
|
||||
'applied',
|
||||
<cfif len(promptId)><cfqueryparam value="#promptId#" cfsqltype="cf_sql_varchar">::uuid<cfelse>NULL</cfif>
|
||||
)
|
||||
RETURNING id
|
||||
</cfquery>
|
||||
@@ -134,7 +145,7 @@
|
||||
<cfif NOT structKeyExists(oldValues, th)>
|
||||
<!--- target_hash не найден — создаём UNRESOLVED вместо падения --->
|
||||
<cfquery datasource="baza">
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, new_values, comment, status)
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, new_values, comment, status, prompt_version)
|
||||
VALUES (
|
||||
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">,
|
||||
@@ -142,7 +153,8 @@
|
||||
'UNRESOLVED',
|
||||
<cfqueryparam value="#serializeJSON(structKeyExists(op,'new_values') ? op.new_values : {})#" cfsqltype="cf_sql_varchar">::jsonb,
|
||||
<cfqueryparam value="UPDATE target_hash not found: #th#" cfsqltype="cf_sql_varchar">,
|
||||
'pending'
|
||||
'pending',
|
||||
<cfif len(promptId)><cfqueryparam value="#promptId#" cfsqltype="cf_sql_varchar">::uuid<cfelse>NULL</cfif>
|
||||
)
|
||||
</cfquery>
|
||||
<cfset summary.unresolved++>
|
||||
@@ -155,7 +167,7 @@
|
||||
<cfset newDate = structKeyExists(nv, 'date_start') AND len(nv.date_start) ? nv.date_start : old.date_start>
|
||||
|
||||
<cfquery name="evt" datasource="baza">
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, target_hash, new_values, comment, status)
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, target_hash, new_values, comment, status, prompt_version)
|
||||
VALUES (
|
||||
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">,
|
||||
@@ -164,7 +176,8 @@
|
||||
<cfqueryparam value="#th#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#serializeJSON(nv)#" cfsqltype="cf_sql_varchar">::jsonb,
|
||||
<cfqueryparam value="#structKeyExists(op,'comment') ? op.comment : ''#" cfsqltype="cf_sql_varchar">,
|
||||
'applied'
|
||||
'applied',
|
||||
<cfif len(promptId)><cfqueryparam value="#promptId#" cfsqltype="cf_sql_varchar">::uuid<cfelse>NULL</cfif>
|
||||
)
|
||||
RETURNING id
|
||||
</cfquery>
|
||||
@@ -186,7 +199,7 @@
|
||||
<cfelseif action EQ "DELETE">
|
||||
<cfset th = op.target_hash>
|
||||
<cfquery datasource="baza">
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, target_hash, comment, status)
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, target_hash, comment, status, prompt_version)
|
||||
VALUES (
|
||||
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">,
|
||||
@@ -194,7 +207,8 @@
|
||||
'DELETE',
|
||||
<cfqueryparam value="#th#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#structKeyExists(op,'comment') ? op.comment : ''#" cfsqltype="cf_sql_varchar">,
|
||||
'applied'
|
||||
'applied',
|
||||
<cfif len(promptId)><cfqueryparam value="#promptId#" cfsqltype="cf_sql_varchar">::uuid<cfelse>NULL</cfif>
|
||||
)
|
||||
</cfquery>
|
||||
<cfquery datasource="baza">
|
||||
@@ -206,7 +220,7 @@
|
||||
|
||||
<cfelseif action EQ "UNRESOLVED">
|
||||
<cfquery datasource="baza">
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, new_values, comment, status)
|
||||
INSERT INTO spec_events (contract_id, supplement_id, seq, action, new_values, comment, status, prompt_version)
|
||||
VALUES (
|
||||
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
||||
<cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">,
|
||||
@@ -214,7 +228,8 @@
|
||||
'UNRESOLVED',
|
||||
<cfqueryparam value="#serializeJSON(structKeyExists(op,'new_values') ? op.new_values : {})#" cfsqltype="cf_sql_varchar">::jsonb,
|
||||
<cfqueryparam value="#structKeyExists(op,'reason') ? op.reason : ''#" cfsqltype="cf_sql_varchar">,
|
||||
'pending'
|
||||
'pending',
|
||||
<cfif len(promptId)><cfqueryparam value="#promptId#" cfsqltype="cf_sql_varchar">::uuid<cfelse>NULL</cfif>
|
||||
)
|
||||
</cfquery>
|
||||
<cfset summary.unresolved++>
|
||||
|
||||
Reference in New Issue
Block a user