transceiver-db/sql/107-close-stale-manual-review-queue.sql
2026-05-10 10:23:07 +02:00

31 lines
1.6 KiB
SQL

-- Migration 107: Close stale manual equivalence review debt.
--
-- Pending equivalence candidates are only actionable while the Flexoptix
-- product still has unresolved competitor research. Once the product-level
-- state is terminal (`matched`, `no_valid_match`, or `ambiguous`), leftover
-- pending candidates are stale review debt and must not ask for manual work.
UPDATE transceiver_equivalences eq
SET status = 'rejected',
reviewed_by = 'verify:close-stale-review-queue',
reviewed_at = NOW(),
reject_reason = CASE
WHEN fx.competitor_status = 'matched'
THEN 'automated closure: Flexoptix product already has a resolved competitor match; stale alternate candidate'
WHEN fx.competitor_status = 'ambiguous'
THEN 'automated closure: Flexoptix product competitor state is resolved ambiguous; no safe deterministic 1:1 match'
WHEN fx.competitor_status = 'no_valid_match'
THEN 'automated closure: Flexoptix product has resolved no-valid-match state'
ELSE 'automated closure: stale non-actionable equivalence candidate'
END,
re_research_due_at = NULL,
re_researched_at = NOW(),
updated_at = NOW()
FROM transceivers fx
WHERE eq.flexoptix_id = fx.id
AND eq.status = 'pending'
AND COALESCE(fx.competitor_status, 'needs_research') IN ('matched', 'no_valid_match', 'ambiguous');
COMMENT ON TABLE transceiver_equivalences IS
'Candidate equivalences between Flexoptix and competitor transceivers. Pending rows are actionable only while product-level competitor research is unresolved; resolved product states close stale pending candidates automatically.';