Implement document reconciliation v2

This commit is contained in:
plx
2026-08-05 23:55:33 +00:00
parent 4a60607503
commit 29382ec6c1
25 changed files with 2082 additions and 343 deletions

View File

@@ -0,0 +1,37 @@
-- EXECUTE ONLY AFTER reverting application code and stopping every v2 consumer.
-- Before running, export opportunity_document_link_events and set these session flags:
-- SET clientflow.v2_consumers_active = 'off';
-- SET clientflow.document_ledger_exported = 'on';
BEGIN;
DO $$
BEGIN
IF current_setting('clientflow.v2_consumers_active', true) IS DISTINCT FROM 'off' THEN
RAISE EXCEPTION 'rollback refused: confirm all v2 consumers are stopped';
END IF;
IF current_setting('clientflow.document_ledger_exported', true) IS DISTINCT FROM 'on' THEN
RAISE EXCEPTION 'rollback refused: export the reconciliation ledger first';
END IF;
IF EXISTS (SELECT 1 FROM commercial_documents
WHERE opportunity_id IS NULL OR role IS NULL OR is_primary IS NULL OR is_active IS NULL) THEN
RAISE EXCEPTION 'rollback refused: legacy compatibility fields are incomplete';
END IF;
END $$;
-- Remove dependent line foreign keys/columns before their target tables.
ALTER TABLE commercial_document_lines DROP CONSTRAINT IF EXISTS commercial_document_lines_opportunity_document_link_id_fkey;
DROP INDEX IF EXISTS idx_document_lines_opportunity_link;
ALTER TABLE commercial_document_lines DROP COLUMN IF EXISTS opportunity_document_link_id;
ALTER TABLE commercial_document_lines DROP CONSTRAINT IF EXISTS ck_commercial_document_lines_document_present;
ALTER TABLE commercial_document_lines DROP CONSTRAINT IF EXISTS commercial_document_lines_commercial_document_id_fkey;
DROP INDEX IF EXISTS idx_document_lines_commercial_document;
ALTER TABLE commercial_document_lines DROP COLUMN IF EXISTS commercial_document_id;
DROP TRIGGER IF EXISTS trg_document_link_events_append_only ON opportunity_document_link_events;
DROP FUNCTION IF EXISTS reject_document_link_event_mutation();
DROP TABLE IF EXISTS opportunity_document_link_events;
DROP TABLE IF EXISTS document_reconciliation_commands;
DROP TABLE IF EXISTS opportunity_document_links;
DELETE FROM schema_migrations WHERE version='007';
COMMIT;