Project form: drop 'Wir vertreten' for clients; rename to 'Client Role' on case projects with new option set #47
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?
Trigger
m 2026-05-20 13:32:
Current state (verified 2026-05-20)
paliad.projects.our_sidetext column, CHECK constraint allows('claimant', 'defendant', 'court', 'both', NULL)(mig 072).frontend/src/components/ProjectFormFields.tsx:157-167with labelWir vertretenand 5 options (Unbekannt, Klägerseite, Beklagtenseite, Gericht / Tribunal, Beide Seiten).our_sideto predefine the perspective chip (Slice 3c lock-in).{{project.our_side}}/our_side_de/our_side_enplaceholders (services/submission_vars.go).our_side_changedaudit rows.What m wants
Visibility
projects.field.client_roleor similar) with the new option set.New option set (case projects)
m grouped the options in three buckets:
Design call: does the stored value capture the group (Active / Reactive / Third Party) or the sub-role (Claimant / Applicant / Appellant / Defendant / Respondent / Third Party / Other)?
The picker UX is a single select with optgroups (visual grouping under Active / Reactive / Third Party / Other headers), not a 2-step picker — same density as the current Wir-vertreten field, just with new labels.
Schema migration
projects_our_side_checkCHECK constraint to include the new values:'applicant', 'appellant', 'respondent', 'third_party', 'other'. Keep'claimant', 'defendant'(still valid). Drop'court'and'both'from the CHECK (m's new set has no equivalent — court was always semantically odd here; both was a fallback). Existing rows: backfill'court'/'both'→ NULL with a one-time migration (audit-trail-friendly).our_side→client_roleto match the new label. Has wider blast radius (Fristenrechner code, submission_vars, project events, JSON keys in API responses) — design call. Keepingour_sideis the smaller change.Downstream coordination
our_side→ perspective inference. The Active group maps to claimant-perspective; Reactive to defendant-perspective. Confirm in design.{{project.our_side_de}}/_enalready render legal-prose forms (e.g. 'die Klägerseite' / 'on the claimant side'). New values need new translations. Design list the prose forms in DE + EN.our_side_changedaudit emission keeps firing on writes; only the label changes.Acceptance
project.our_side_de/_enkeep rendering coherent prose for the new values.Out of scope
partiestable (project-party roles are a separate concern; they're stored per row already).Role recommendation
inventor — small but with 3-4 design calls (sub-role vs group; column rename vs keep; litigation/patent type behaviour; data migration of court/both rows). Head batches m's picks across the design questions; coder shift after. Branch:
mai/<inventor>/client-role-rework.Implemented in PR #67 (#67) — paired with #50.
Design decisions (all picks confirmed by head):
our_side(UI label changes only to "Client Role")client,litigation,patent,project,othertypes — visible only oncase-Seite/-Parteishape (Klägerseite / Antragstellerseite / …) to match form labels and avoid a feminine bare-noun default that misrepresents B2B clientsFinal SHA:
d326acb. Migration: mig 112 (rebumped from 110→111→112 to dodge euler/gauss slot collisions).Deploy via auto-webhook on merge.
Shipped via kepler on
mai/kepler/inventorcoder-project— merged into main; commit https://mgit.msbls.de/m/paliad/commit/1c021ed. Live after next Dokploy deploy.