Skip to content

Admin web contract template form redesign for category/return/duration #138

Description

@tkdgusqkr

Scope

계약 템플릿 등록/수정 폼을 카테고리(SUBSCRIPTION / RENTAL / CUSTOM)·형태(TAKEOVER / RETURN)·기간 단위(DAY/WEEK/MONTH/QUARTER/HALF_YEAR/YEAR) 입력에 맞춰 재설계한다. 백엔드 Slice A 의 어드민 UI 마무리.

Included:

  • `ContractTemplateForm` 을 client component 로 변환 — 카테고리 select 에 따라 동적으로 필드 노출.
  • 카테고리별 입력 규칙:
    • SUBSCRIPTION: 형태 (인수형/반납형) + MONTH × 12 고정 (운영자가 변경 못 하도록 disabled 표시) + 보험 포함 체크박스 + 기본 보험 아이템 select.
    • RENTAL: 형태 + 단위 (일/주/월/분기/반기) select + 값 (양의 정수) + 보험 포함 체크박스 (옵션).
    • CUSTOM: 기존 일/시간/분 입력 또는 무제한 (legacy 호환).
  • 페이지(`/contract-templates/new`, `/contract-templates/{id}/edit`) 가 보험 아이템 목록 fetch → form 에 props 로 전달.
  • payload mapping 확장: category / returnType / durationUnit / durationValue / includesInsurance / defaultInsuranceItemId.
  • 기존 CUSTOM 페이로드는 그대로 동작 (legacy 호환).
  • 새 필드를 detail 페이지(`/contract-templates/{id}`) 에 노출.

Excluded:

  • 어드민 폼에서 다중 보험 아이템 선택 / ADDON 보험 패키지 (Slice B 에서 ADDON 다중 발급 정책 정해진 후 별도 슬라이스).
  • 라이더-차량 계약 폼 자체에 자동 보험 발급 결과 표시 (별도 슬라이스 ④-4).
  • 시스템 템플릿 (`무제한 계약`) 보호 UI 변경.

Acceptance criteria

  • 새 폼이 카테고리 선택에 따라 동적으로 필드 노출.
  • SUBSCRIPTION 카테고리에서 MONTH × 12 외 입력이 불가능하도록 disabled.
  • RENTAL 카테고리에서 단위 / 값 모두 필수.
  • CUSTOM 카테고리에서 기존 일/시간/분 입력 + 무제한 옵션 그대로 동작.
  • 보험 포함 체크 시 보험 아이템 select 노출 (백엔드 V8 시드 기본 4종 + 기존 추가 항목).
  • 폼 제출 시 백엔드가 SUBSCRIPTION × DAY 같은 잘못된 조합 거부 → save-error 페이지로 redirect.
  • detail 페이지에 카테고리/형태/단위/값/보험 포함 정보 노출.
  • `npm run lint` / `npx tsc --noEmit` / `npm run build` 통과.

Trace

Concurrent work gate

Decision: allowed-with-non-overlap
Evidence:

  • Open target issues: none.
  • Open target PRs: none.
  • Active branches: dev, main.
    Reason: front-admin-web 만 변경.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions