통합 플랫폼에서 가장 분기가 많은 기능입니다. 티켓 타입 4종 × 권한(역할·조직) × 진행 상태의 곱을 단일 화면 프레임과 다단계 입력 폼으로 수렴시킨 과정을 정리했습니다.

※ "티켓"은 일반적인 이슈 트래킹 용어로만 사용하며, 사내 타입 실명·조직명은 포함하지 않습니다.


01 · 화면 흐름 — 조회에서 입력까지

결과 조회 페이지는 티켓 타입 4종이 하나의 레이아웃을 공유하고, 타입별 차이는 어댑터가 데이터로 흡수합니다. 입력 화면으로 넘어가는 길목에는 버튼 노출 판정과 라우트 접근 가드가 이중으로 서 있습니다.

image.png

버튼을 숨기는 것(UX)과 라우트를 막는 것(방어)을 분리하되, 두 관문이 같은 판정 로직을 공유하므로 "보이는데 못 들어가는" 불일치가 없습니다. URL 직접 접근 시에도 같은 규칙이 적용되고, 차단 시에는 사유를 안내한 뒤 결과 페이지로 복귀시킵니다.


02 · 분기 지도 — 누가 무엇을 할 수 있나

이 매트릭스가 페이지마다 if문으로 흩어지지 않도록, 판정을 중앙 판정 함수와 가드 컴포넌트로 수렴시켰습니다. 행이 늘어나도 수정 지점은 판정 로직 한 곳입니다.

조건 입력 버튼 입력 화면 진입 결과 필드 편집
담당 조직 일치 (진행 중) ✅ 노출 ✅ 허용 지정 조직 소속만 활성
담당 조직 불일치 ❌ 숨김 ❌ 가드 차단 → 복귀 —
종료된 건 관리 권한만 노출 ❌ 차단 다이얼로그 —
담당 조직 미지정 건 ✅ 전체 노출 ✅ 허용 지정 조직 소속만 활성

03 · 다단계 입력 폼 — 베이스는 하나, 조립은 타입별로

폼의 공통 골격(RHF FormProvider + Zod 검증 + 제출 오케스트레이션)을 베이스 컴포넌트 하나로 만들고, 타입별 페이지는 스텝 조합만 선언합니다.

image.png