Berufung tile: collapse duplicate side selectors + appeal-target-aware role/trigger labels #132
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two bugs from the Slice B1 Berufung rollout
Bug A — duplicate side selectors
The Verfahrensablauf wizard's perspective step shows two redundant selectors for the Berufung tile:
Klägerseite / Beklagtenseite / Nicht festgelegt(URL?side=)Klägerseite / Beklagtenseite / —(URL?appellant=)Both use original-case role labels (Kläger/Beklagter). For an appeal the appellant axis is what matters, and the labels should be Berufungskläger / Berufungsbeklagter, not the original-case roles.
Bug B — wrong trigger-event label
Auslösendes Ereignis: Berufungsverfahrenis wrong. The trigger event for an appeal is the underlying decision that's being appealed — not the appeal proceeding itself. The label should derive fromappeal_target:endentscheidungkostenentscheidunganordnungschadensbemessungbucheinsichtFor non-Berufung proceedings the existing
proceeding_types.trigger_event_label_de/enstays authoritative.Design (both bugs share the same fix surface)
Schema
Four new columns on
paliad.proceeding_types(Bug A — role labels):NULL = fall back to defaults (Klägerseite/Beklagtenseite / Claimant side / Defendant side). Adding the columns is non-breaking; backfill only the types that diverge:
upc.apl.unifiedupc.rev.cfiepa.opp.*No new column for Bug B —
appeal_target-based trigger label is a frontend/Go lookup. The 5 target-specific labels live in a Go map (or pkg/litigationplanner constants), with i18n keys for the DE/EN strings.Migration (137 or next-free)
ALTER TABLE ... ADD COLUMN(additive only).paliad.proceeding_types(no audit trigger on this table — verify with audit before drafting).set_config('paliad.audit_reason',…)needed (mig touchesproceeding_types, notdeadline_rules).Go side
pkg/litigationplanner/types.go: extendProceedingTypewithRoleProactiveLabel*andRoleReactiveLabel*. AddTriggerEventLabelForAppealTarget(target string, lang string) stringhelper.pkg/litigationplanner/catalog.go: load the 4 new columns.internal/handlers/fristenrechner.go: whenproceeding == upc.apl.unifiedandappeal_targetis set, surfacetriggerEventLabelDE/ENfrom the appeal-target helper. Otherwise use the proceeding's existing trigger label.internal/services/fristenrechner_*_test.goto lock the matrix.Frontend
frontend/src/verfahrensablauf.tsx: remove the entire#appellant-rowblock.frontend/src/client/verfahrensablauf.ts:?appellant=URL param and its handlers. The engine still consumesclaimant/defendant; just sourced fromsidenow.RoleProactiveLabel*/RoleReactiveLabel*(with the existingdeadlines.side.*keys as NULL-fallback).appeal_targetselection (Berufung tile only), swap the Auslösendes Ereignis label text from the appeal-target → trigger-label map.frontend/src/i18n-keys.ts+client/i18n.ts: add the 5deadlines.appeal_target.trigger_label.*keys (DE + EN). Delete orphandeadlines.appellant.*keys after removal.Hard rules (lessons from mig 134's three hotfixes today)
mcp__supabase__execute_sqlBEFORE drafting the migration. Confirm:paliad.proceeding_typespaliad.proceeding_typesUPDATEpkg/litigationplanner, pure logic only, tests follow the code.updated_at = now()clauses (the table has no such column — same trap that bit mig 134).set_config('paliad.audit_reason',…)unless you touchdeadline_rules(this migration does not).Acceptance
appeal_targetselection (5 distinct labels, listed in Bug B).?appellant=URL param is gone;?side=carries the single proactive-side choice.go build ./...+bun run build+go test ./...clean.