169 lines
6.9 KiB
Markdown
169 lines
6.9 KiB
Markdown
# UI / 모달 / 다이얼로그 인수인계서
|
||
|
||
> 작성일: 2026-05-06 (옵션 B 분리)
|
||
> 대상: 후임 AI 엔지니어 또는 개발 관리자
|
||
> 작업 브랜치: `hotfix/dev_yscha`
|
||
|
||
> **이 문서의 범위**: 모달/다이얼로그/계산기 토글/라인 표시 같은 UI 트랙만 다룹니다.
|
||
> 다른 트랙은 `HANDOVER_INDEX.md` 참조.
|
||
|
||
---
|
||
|
||
## 0. 한 줄 요약
|
||
|
||
여러 입력 모달에 **계산기 패드 토글 버튼**을 추가하고, 외벽선/평면도 같은 중요한 단계에 **확정 다이얼로그**를 붙이고, 라인 라벨/색/인덱스 표시를 정돈한 트랙입니다.
|
||
|
||
---
|
||
|
||
## 1. 계산기 패드 토글 — 대규모 시리즈
|
||
|
||
사용자가 모달의 숫자 입력 칸을 누르면 계산기 패드가 떠야 하는 요구사항이 있어, 거의 모든 입력 모달에 토글 버튼을 추가했습니다.
|
||
|
||
### 1.1 적용된 모달
|
||
|
||
| 모달 | 커밋 |
|
||
|------|------|
|
||
| 補助線 사이즈변경 / 이동 / 복사 | `60cb8691` |
|
||
| サイズ変更 (사이즈 변경) | `bc389e3a` |
|
||
| モジュール / 架台設定 (모듈/거치대) | `b10fc270` |
|
||
| 配置面初期設定 (배치면 초기 설정) | `025b7ede` |
|
||
| 屋根形状の設定 (지붕 형상 설정) | `ebc6181b` |
|
||
| オブジェクト配置 (오브젝트 배치) | `678b9442` |
|
||
| 물건 등록 | `3365000b`, `662a4653` |
|
||
| 견적서 | `ea849ee5` |
|
||
| 일반 (공통) | `1d4d1ab3` |
|
||
|
||
### 1.2 동작
|
||
- 입력 칸 옆 **계산기 아이콘** 클릭 → 키패드 표시/숨김 토글
|
||
- 키패드는 `+ - × ÷` 사칙 연산 + 즉시 반영
|
||
|
||
### 1.3 주의
|
||
- 모달마다 입력 컴포넌트 구조가 조금씩 달라서 **공통 컴포넌트 한 개로 통합돼 있지 않습니다**. 같은 패턴이 여러 모달에 반복 구현돼 있어요.
|
||
- 새 모달에 추가할 때는 가장 비슷한 모달의 코드를 베이스로 잡으세요.
|
||
|
||
---
|
||
|
||
## 2. 일본어 모달 토글 추가 시리즈
|
||
|
||
UI 옵션을 켜고 끄는 토글 스위치를 일본어 모달들에 추가한 별도 시리즈입니다.
|
||
|
||
| 모달 | 커밋 |
|
||
|------|------|
|
||
| 外壁の編集とオフセット (외벽 편집/오프셋) | `6967b8cd` |
|
||
| 棟線移動・桁上げ下げ (마루 이동/도리 올리기 내리기) | `84ac6d50` |
|
||
| 軒/ケラバ変更 (처마/박공 변경) | `94f050d9` |
|
||
| 補助線の作成 (보조선 작성) | `2c19a208`, `a0cac795` |
|
||
|
||
---
|
||
|
||
## 3. 확정 다이얼로그 — 외벽선 / 평면도
|
||
|
||
### 3.1 외벽선 확정
|
||
- 커밋 `7d1e49a1`
|
||
- 외벽선 작성을 끝낼 때 **"확정하시겠습니까?"** 다이얼로그.
|
||
- **버튼 클릭** + **Enter 키** 양쪽 다 지원.
|
||
|
||
### 3.2 평면도 확정
|
||
- 커밋 `0e3acedf`
|
||
- 평면도 단계 종료 시 같은 패턴.
|
||
|
||
### 3.3 왜 추가했나
|
||
- 사용자가 실수로 다음 단계로 넘어가면 **앞 단계로 되돌리기 어려운 작업**이 있습니다. 그래서 명시적으로 확정 단계를 둠.
|
||
|
||
---
|
||
|
||
## 4. 라인 오버 → 평행 라인 자동 전환
|
||
|
||
- 커밋 `26b583e2`
|
||
- 사용자가 외벽선을 너무 많이 끌면 **평행 라인까지만 잘라서 자동 변환**.
|
||
- SK 트랙의 **clamp 정책**(`SK_MOVEMENT_HANDOVER.md §8.1`)과 같은 사용자 경험을 만들어주는 UI 측 동작.
|
||
|
||
---
|
||
|
||
## 5. 라인 표시·관리 정리 (작은 작업 모음)
|
||
|
||
| 항목 | 커밋 |
|
||
|------|------|
|
||
| 잔여선 삭제 + 라벨 표시 (local) | `1d00e000` |
|
||
| 라인 줄 표시 / 인덱스 재설치 | `8fef6c9f`, `428ff36a` |
|
||
| 라인 색 정리 | `02c8422e` |
|
||
| 동일 라벨 처리 | `c2215157` |
|
||
| innerLine 정리 | `c2eba138` |
|
||
| 라벨 변경 | `376ccab8` |
|
||
| 빌드 오류 수정 — `debugLabels import` 제거 (정책 정착 계기) | `6b02b2ca` |
|
||
|
||
> `debugLabels` 별도 파일 금지 정책이 여기서 정착됐습니다 (`SK_MOVEMENT_HANDOVER.md §6 #7` 원칙). 디버그 라벨은 반드시 `QPolygon.js` 인라인 + `NEXT_PUBLIC_RUN_MODE === 'local'` 가드.
|
||
|
||
---
|
||
|
||
## 6. 보조라인 / SK 라인 기록 보존
|
||
|
||
- `3c1a1f89` 보조라인 맞춤
|
||
- `7a987116` SK 라인 기록 보존
|
||
- 사용자가 추가한 라인이 SK 재계산에서 사라지면 안 된다는 정책의 연장선 (SK 트랙 §5.1 미완료와 연계).
|
||
|
||
---
|
||
|
||
## 7. 배치 / 지붕 이동 보강
|
||
|
||
| 항목 | 커밋 |
|
||
|------|------|
|
||
| 배치면 이동 시 화살표 위치 수정 | `8eca824c` |
|
||
| 지붕 이동 시 보조선 길이 안 따라가는 현상 | `21f25995` |
|
||
| offset ↔ moveline 벽라인 정상 이동 | `20235ac2` |
|
||
| 움직인 라인 그대로 유지 offset | `94f18d15` |
|
||
|
||
---
|
||
|
||
## 8. 핵심 파일
|
||
|
||
| 파일 | 역할 |
|
||
|------|------|
|
||
| 補助線 모달 컴포넌트 | 계산기 토글 (커밋 `60cb8691` 으로 정확 위치 확인) |
|
||
| `src/components/fabric/QPolygon.js` | 라인 표시·라벨 (인라인 디버그 라벨 포함) |
|
||
| `src/hooks/roofcover/useMovementSetting.js` | 라인 오버 시 평행 변환 등 이동 UX |
|
||
|
||
---
|
||
|
||
## 9. 저구배 + 특정 기와 시공 매뉴얼 안내 (2026-05-06, 커밋 `[TBD-CODE]`)
|
||
|
||
### 9.1 무엇을
|
||
6종 기와 제품을 **저구배 (2 ≤ 寸 < 2.5 또는 11.31° ≤ 角度 < 14.04°)** 로 사용하려 할 때, 저장 직전에 시공 매뉴얼 확인 안내 alert 을 띄움 (OK 만 — 중단 흐름 없음).
|
||
|
||
### 9.2 트리거 3 곳
|
||
| # | 트리거 | 핸들러 |
|
||
|---|---|---|
|
||
| 1 | 配置面 초기설정 → 「保存」 | `PlacementShapeSetting.jsx` `handleSaveBtn` |
|
||
| 2 | 平面図入力 → 「屋根面の割り当て」 | `useRoofAllocationSetting.js` `handleSave` |
|
||
| 3 | [配置面]屋根材変更 → 「屋根面の割り当て」 | `useRoofAllocationSetting.js` `handleSaveContext` |
|
||
|
||
### 9.3 대상 屋根材 6종 (`getRoofMaterialList` 응답 기준)
|
||
`ROOF_ID_WA_53A` (和瓦A), `ROOF_ID_WA_53B` (和瓦B), `ROOF_ID_HIRA_C` (平板瓦C), `ROOF_ID_HIRA_D` (平板瓦D), `ROOF_ID_HIRA_S` (S瓦), `ROOF_ID_HIRA_SEME` (セメント瓦)
|
||
|
||
### 9.4 동작
|
||
- 안내 alert (OK 만). **중단 흐름 없음** — OK 누르면 저장 진행.
|
||
- 등록된 지붕재가 여러 개일 경우, 해당 항목마다 **순차로** alert.
|
||
- 세션 캐시 없음 — 트리거마다 매번 표시.
|
||
|
||
### 9.5 핵심 파일
|
||
| 파일 | 역할 |
|
||
|------|------|
|
||
| `src/util/roof-pitch-warning.js` | `LOW_PITCH_RESTRICTED_ROOF_IDS` Set + `isLowPitchRestricted` + `notifyLowPitchRestrictionForRoofs` |
|
||
| `src/locales/{ko,ja}.json` | i18n 키 `modal.roof.material.low.pitch.warning` |
|
||
|
||
### 9.6 임계 변경 시 주의
|
||
- 寸 / 度 둘 다 OR 조건. `roofAngleSet` 이 `'slope'` 면 `pitch` 만, `'flat'` 이면 `angle` 만 갱신될 수 있어서.
|
||
- 6종 ID 변경은 `LOW_PITCH_RESTRICTED_ROOF_IDS` 만 수정하면 됨. 트리거 3개 핸들러는 수정 불필요.
|
||
|
||
---
|
||
|
||
## 10. 인수 직후 권장 절차
|
||
|
||
1. 이 문서 통독.
|
||
2. 계산기 토글 모달 1개 (예: 보조선 사이즈변경) 직접 띄워서 동작 확인.
|
||
3. 외벽선 확정 다이얼로그 동작 확인 (Enter 키 포함).
|
||
4. 라인 오버 → 평행 자동 전환 확인 (SK 트랙 §8.1 와 함께).
|
||
5. 저구배 + 6종 기와 confirm 동작 확인 (배치면 초기설정에서 和瓦A + 寸=2 저장 → 팝업 확인).
|
||
|
||
끝.
|