Files
paliad/internal/db/migrations/050_bilateral_rules_backfill.up.sql

52 lines
1.8 KiB
SQL

-- t-paliad-133 Phase A backfill: tag genuinely-bilateral deadline rules.
--
-- Most rules with primary_party='both' are role-swap appeals — either
-- party can file depending on who lost / acted at the lower instance.
-- Those resolve at render time via the new perspective selector
-- (?my_side= + ?appeal_filed_by=). The renderer assigns them to ONE
-- column based on perspective.
--
-- The exceptions are GENUINELY BILATERAL rules — both parties can or
-- must file independently of who acted before. These mirror into BOTH
-- party columns of the v3 column-timeline view.
--
-- Set is_bilateral=true ONLY for:
-- • Stellungnahme zum Hinweisbeschluss (DE_NULL §83(2)) — both parties
-- comment on the court's preliminary opinion.
-- • R.79 Stellungnahme weiterer Beteiligter (EPA_OPP) — multi-party
-- opposition; all parties may submit.
-- • R.116 Eingaben vor mündl. Verhandlung (EPA_OPP, EPA_APP) — every
-- party prepares submissions before the oral hearing.
--
-- The cross-cutting schriftsatznachreichung lives in event_deadlines
-- (not deadline_rules), so its bilateral nature is handled by the
-- frontend renderer separately — no DB change needed.
--
-- Spot-checkable list of 4 rules; m or HLC colleague reviews on this
-- commit.
UPDATE paliad.deadline_rules
SET is_bilateral = true
WHERE code IN (
'de_null.stellungnahme',
'epa_opp.r79_further',
'epa_opp.r116',
'epa_app.r116'
)
AND is_active = true;
-- Sanity check: exactly 4 rules tagged.
DO $check$
DECLARE
tagged int;
BEGIN
SELECT count(*) INTO tagged
FROM paliad.deadline_rules
WHERE is_bilateral = true;
IF tagged <> 4 THEN
RAISE EXCEPTION
'Phase A bilateral backfill: expected 4 rules tagged, got %',
tagged;
END IF;
END $check$;