qcast-front/docs/MODULE_CIRCUIT_HANDOVER.md

202 lines
9.6 KiB
Markdown

# 모듈 / 배치 / 회로 / 처마 / 티켓 시리즈 인수인계서
> 작성일: 2026-05-06 (옵션 B 분리)
> 대상: 후임 AI 엔지니어 또는 개발 관리자
> 작업 브랜치: `hotfix/dev_yscha`
> **이 문서의 범위**: 태양광 모듈 배치, 회로/PCS/접속함, 처마/가대, 그리고 [1xxx] 티켓 시리즈 같은 **도메인 특화 작업**을 다룹니다.
> 다른 트랙은 `HANDOVER_INDEX.md` 참조.
---
## 0. 한 줄 요약
지붕 형상이 결정된 다음 단계 — **태양광 모듈을 어디에 어떻게 배치하고**, **모듈을 어느 PCS·접속함에 묶고**, **처마/가대를 어떻게 잡을지** — 의 자잘한 버그/개선 트랙입니다. 티켓([1xxx]) 단위로 들어와 처리된 케이스가 많아 항목이 많지만, 각각은 **국소적인 수정**입니다.
---
## 1. 회로 / PCS / 접속함 트랙
태양광 시스템에서 모듈 → 접속함 → PCS(전력변환기) → 분전반 으로 이어지는 회로 구성 영역.
### 1.1 Cross Mix (DC3) 접속함 통합 (커밋 `0eb888fb`)
- **문제**: PCS 담당 모듈 타입에 따라 접속함이 여러 건 내려가던 것을 1건으로 합쳐야 했음.
- **수정**: PCS 담당 모듈 타입 기준으로 필터링해서 **1건만 내려가도록 통합**.
### 1.2 `subModuleTpCd` 추가 (커밋 `f022956c`)
- `trestles[]` 에 Cross Mix 식별용 필드 추가.
- 단일/동계열은 빈 값.
### 1.3 `moduleTpCd` 보존 + dedupe 키 변경 (커밋 `795c9789`)
- PCS 접속함 응답의 새 필드 `moduleTpCd` 를 프론트 상태/제출 파라미터까지 보존.
- 중복 제거 키를 `(itemId, moduleTpCd)` 조합으로 변경.
### 1.4 `PassivityCircuitAllocation` ref prop 제거
- forwardRef 미사용 함수형 컴포넌트에 ref 를 prop 으로 넘겨 React warning 이 발생 → 제거.
### 1.5 [1491] 실내 집중형 PCS 접속함 산출 이상 (커밋 `d0590f51`, `471093eb`)
- 실내 집중형 PCS 사용 시 접속함이 정상 산출 안 되던 현상 + cvrLmtRow 처마 커버 단수 보정.
### 1.6 [1749] 모듈 배치 후 회로 설정 오류 (커밋 `a11010c0`)
- 배치 후 회로 단계에서 할당 실패하던 케이스 수정.
### 1.7 [1845] 실내집중형 PCS 수동 회로분할 동일 방위/구배 강제 (커밋 `ba92e340`)
- **작성일**: 2026-05-06
- **배경 (HANASYS 보고)**: HANASYS DESIGN 에서 屋内集中PCS(`pcsTpCd === 'INDFCS'`) + **수동** 회로분할 시, 다른 방위 또는 다른 구배의 지붕면 모듈을 **같은 직렬회로**로 묶을 수 있는 사례. 屋外マルチPCS(`OUTDMULTI`) 또는 자동분할 경로에서는 정상.
- **원인**: `PassivityCircuitAllocation.jsx > handleCircuitNumberFix``switch (pcsTpCd)` 분기에서 OUTDMULTI 는 `surfaceType` (방위-구배 키) 검증이 있었으나, INDFCS 는 `northModuleYn` 만 검증하고 방위/구배 검증 누락.
- **수정**: INDFCS 분기에 `surfaceType` 누적 검증 추가. 검증 대상은 **이번 선택 모듈 + 같은 PCS 의 기존 할당 모듈 합집합** (북면 검사와 동일한 누적 패턴). 그룹 2개 이상이면 alert + return.
- **신규 메시지 키**: `module.circuit.fix.not.same.direction.pitch.error` (ko / ja). 기존 `module.circuit.fix.not.same.roof.error` 의 4개 호출지점은 의미가 달라 그대로 유지.
- **태그**: `[INDFCS-SAME-ROOF 2026-05-06]`
- **회귀 체크**: ① INDFCS 동일 방위/구배 누적 ② INDFCS 1차 동향 후 2차 남향 추가 차단 ③ 북면 혼합 차단(기존) ④ OUTDMULTI 다방위 차단(기존) ⑤ 자동분할 영향 없음.
---
## 2. 모듈 배치 / 설치 영역
### 2.1 [1956] 모듈 설치면 제대로 설치 안 되는 현상 (커밋 `aa16a45b`)
- 특정 지붕 형태에서 모듈이 자리잡지 못하던 케이스 수정.
### 2.2 [1830] 모듈 설치영역 대각 발생 (커밋 `2101d30d`)
- 모듈 설치 영역 외곽이 대각으로 잘못 잡히던 현상 수정.
### 2.3 [1805] 설치 영역 / 겹치는 선 (커밋 `7b8b995e`, `fdfa8d52`)
- 설치 영역이 잘못 잡히는 케이스.
- 겹치는 선이 있을 때 모듈 설치 영역에 이상 발생 → 수정.
### 2.4 [1798] 배치면 그리기 오류 (커밋 `76d3637a`)
- 배치면 그리는 단계에서 발생하던 오류 수정.
### 2.5 [1807] 거치대 / 낙설 방지 금구 (커밋 `1681fd85`, `6cf55600`)
- 거치대 선택 시 "낙설 방지 금구 설치" 가 자동으로 체크되는 현상 수정 (1, 2 차).
### 2.6 [1485] 오브젝트 복사 기능 권한 설정 (커밋 `b9bb4708`)
- 복사 기능을 권한 그룹에 따라 제어.
### 2.7 top / bottom = in 할당 (커밋 `13cd9211`, `f2b527b7`)
- 모듈 할당 정책에서 top·bottom 방향이 in 일 때의 처리.
- 추가/제외 두 단계로 처리.
### 2.8 수동 배치 시 자동 물떼세 배치 (커밋 `b1c35376`, revert `13f10fd1`)
- 한 번 적용했다가 **revert** 됨. 향후 재적용 시 revert 사유 확인 필요.
---
## 3. 처마 / 가대 / 지붕재
### 3.1 [1455] 처마 커버 표시 (커밋 `0e70c3af`)
- 처마 커버 표시 로직 보강.
### 3.2 처마 커버 설치 이상 (커밋 `18083f89`)
- 일부 케이스에서 처마 커버가 잘못 설치되던 현상 수정.
### 3.3 [1751] 기와 형태 처마 돌출 치수 변경 (커밋 `1dd4e0cf`)
- 기와 지붕에서 처마 돌출 치수를 바꿨을 때 동작 보정.
### 3.4 [1840] 팔작지붕 도면 사례 (커밋 `cd5eebd0`)
- 팔작지붕 형태가 생성되지 않던 케이스.
### 3.5 [1480] 사의 각도 설정 "각도" (커밋 `3eaf3f2c`, `90228121`, `dffb8c0d`, `4a270ba5`, `2514fc92`)
- 사(斜) 각도를 "각도" 단위로 설정했을 때 발생하는 문제. **다회 수정** — 한 번에 안 잡혀서 여러 차례 들어감.
### 3.6 [1471] (관련) 플랜별 지붕재 변경 저장 (커밋 `64ba5ad3`)
- 플랜마다 지붕재를 다르게 저장.
### 3.7 [1456] 배치면 초기 설정에서 지붕재 / 촌 위치 변경 (커밋 `07ce6b6f`)
### 3.8 [1960] 배치도·계통도에 가대 표시 (커밋 `4d91da5f`, `9c25d3ed`)
- 출력된 배치도/계통도에 가대가 잘못 표시되던 케이스.
### 3.9 [1971] 외벽선 작성 방향 "반시계 방향" 표기 삭제 (커밋 `d15c9e69`)
- UI 표기 정리.
### 3.10 [1806] 서까래 높이 조정 (커밋 `caab0d9d`, `01b9625a`)
- 서까래 높이 조정에 따른 지붕 형상 불일치 + 라인 오버 체크 1, 2 차.
### 3.11 [1961][1969][2118] (커밋 `3f5f4908`)
- 묶음 수정.
---
## 4. 견적서 / 도면 표기
### 4.1 [1525] 면형상 배치 치수 표기 이상 (커밋 `f77794ce`)
### 4.2 [1482] 도면 흐름 방향 좌우 표시 잘림 (커밋 `4b098fa5`)
- 흐름 방향이 좌우로 설정된 경우 도면에서 일부가 잘려 보이던 현상.
### 4.3 [1482] 플랜 복사 시 견적서에 [하제피치] 표시 (커밋 `e912d084`)
- 플랜 복사 시 발생.
### 4.4 [1470] 배치도·계통도 화질 개선 (커밋 `be95b1b3`)
- cell 이미지 추가로 출력 화질 개선.
### 4.5 [1766] 방위 변경 체크박스 견적서 표기 (커밋 `f3bddbea`)
### 4.6 [1423] 설계 가져오기 기능 (커밋 `f87bfb90`)
- 다른 설계에서 가져오기.
### 4.7 [카톡] 견적서 / 물건검색 1차점 숨김 (커밋 `a10196f9`, `44aca56d`)
- 1차점 사용자에게는 일부 정보 숨기고, 2차점 로그인 사용자에게만 노출.
---
## 5. 캔버스 / 좌표 / 일반 버그
### 5.1 확대 축소 100% 가운데 정렬 (커밋 `98440188`, `8d9379c3`)
### 5.2 회전 시 길이 계산 반영 안 됨 (커밋 `3c702cf5`)
### 5.3 배치면 다수 시 길이 계산 안 됨 (커밋 `606acf91`)
### 5.4 혹장 계산 roofLine (커밋 `0e4b0b41`)
### 5.5 `roofWidth` / `roofHeight` null 문제 (커밋 `2cc28147`)
### 5.6 임시저장 폼 — 물건명 50자 제한 (커밋 `71da4d07`)
### 5.7 dev 관련 링크 수정 (커밋 `a2bbb035`, `31b01132`)
---
## 6. 작업 패턴 — 티켓 시리즈를 다룰 때
이 트랙은 거의 **티켓([1xxx]) 단위 국소 수정**으로 구성됩니다. 새 티켓이 들어왔을 때:
1. **재현 시나리오 확보** — 어떤 데이터/플로우에서 발생하는지 명확히 합의.
2. **유사 티켓 검색** — 같은 영역에서 비슷한 [1xxx] 가 이미 처리됐는지 git log + 본 문서로 확인.
3. **국소 수정**`SK_MOVEMENT_HANDOVER.md §6 #1` 원칙 (잘 되는 코드 안 건드리기) 엄수.
4. **회귀 검증** — 가까운 시나리오 1~2개 추가로 돌려 보기.
5. **태그 + 커밋 메시지** — 인라인 `[Tagname YYYY-MM-DD]` + git commit 메시지 제안 (사용자가 직접 커밋).
---
## 7. 미해결 / 추적
- [1480] 사의 각도 — 5번 수정이 들어간 만큼 완전히 잡혔는지 추적 필요.
- [1805] 모듈 설치영역 — 겹치는 선 케이스가 다양해 추가 보고 가능성 있음.
- 수동 물떼세 배치 — revert 후 미적용 상태. 재적용 시 revert 사유부터.
---
## 8. 핵심 파일 (영역별 진입점)
| 영역 | 핵심 파일/디렉터리 |
|------|---------------------|
| 회로/PCS/접속함 | `src/...PassivityCircuitAllocation*`, 회로 hook |
| 모듈 배치 | 모듈 배치/설치 영역 컴포넌트 |
| 처마/가대 | `processEavesEdge` 인근 (`skeleton-utils.js`) — SK 트랙과 겹침 주의 |
| 견적서/도면 | 출력 컴포넌트 |
| dev/링크 | `package.json`, `.env.localhost` |
(파일 위치는 영역별로 흩어져 있어 git log + 커밋 해시 확인이 가장 빠릅니다.)
---
## 9. 인수 직후 권장 절차
1. 이 문서 통독 → 어느 영역의 티켓이 많은지 감 잡기.
2. 가장 최근 [1xxx] 커밋 1~2개를 골라 변경 디프 직접 확인.
3. 인접 영역 티켓이 들어오면 본 문서 + git log 로 유사 사례 먼저 검색.
끝.