31 lines
1.6 KiB
SQL
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.';
|