From 4ebe4cb455d7b693071254b228d92667be01d5d7 Mon Sep 17 00:00:00 2001 From: ysCha Date: Wed, 6 May 2026 17:43:29 +0900 Subject: [PATCH] =?UTF-8?q?[1845]=20=EC=8B=A4=EB=82=B4=EC=A7=91=EC=A4=91?= =?UTF-8?q?=ED=98=95=20PCS=20=EC=88=98=EB=8F=99=20=ED=9A=8C=EB=A1=9C?= =?UTF-8?q?=EB=B6=84=ED=95=A0=20=EB=8F=99=EC=9D=BC=20=EB=B0=A9=EC=9C=84/?= =?UTF-8?q?=EA=B5=AC=EB=B0=B0=20=EA=B0=95=EC=A0=9C=20=E2=80=94=20INDFCS=20?= =?UTF-8?q?+=20=EC=88=98=EB=8F=99=20=EB=B6=84=ED=95=A0=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EB=8B=A4=EB=B0=A9=EC=9C=84/=EB=8B=A4=EA=B5=AC=EB=B0=B0=20?= =?UTF-8?q?=EC=A7=81=EB=A0=AC=ED=9A=8C=EB=A1=9C=20=EA=B5=AC=EC=84=B1=20?= =?UTF-8?q?=EC=B0=A8=EB=8B=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MODULE_CIRCUIT_HANDOVER.md | 9 +++++++++ .../step/type/PassivityCircuitAllocation.jsx | 10 +++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/MODULE_CIRCUIT_HANDOVER.md b/docs/MODULE_CIRCUIT_HANDOVER.md index 0e0171b3..444a4254 100644 --- a/docs/MODULE_CIRCUIT_HANDOVER.md +++ b/docs/MODULE_CIRCUIT_HANDOVER.md @@ -49,6 +49,15 @@ - **태그**: `[INDFCS-SAME-ROOF 2026-05-06]` - **회귀 체크**: ① INDFCS 동일 방위/구배 누적 ② INDFCS 1차 동향 후 2차 남향 추가 차단 ③ 북면 혼합 차단(기존) ④ OUTDMULTI 다방위 차단(기존) ⑤ 자동분할 영향 없음. +### 1.8 [1845] 보정 — 검증 단위를 PCS → 회로번호로 좁힘 (커밋 `[TBD-CODE]`) +- **작성일**: 2026-05-06 +- **배경**: 1.7 수정 직후 회귀에서 **자동분할 후 수동분할 이어가는 시나리오** 차단 발견. 자동으로 회로 1=남(south-5.5) 4장이 부여된 같은 PCS 에, 수동으로 회로 2=서(west-5.5) 4장을 묶으려 하면 alert 차단됨. 회로 1 과 회로 2 는 서로 다른 직렬회로이므로 통과돼야 정상. +- **원인**: 1.7 의 (b) 누적 패턴이 같은 PCS 의 **모든** 기존 모듈을 합집합 대상으로 잡아, 다른 회로번호까지 검증에 포함됨. HANASYS 보고 본문 "**同一の直列回路として**構成できてしまう" 에 비춰 보면 검증 단위는 PCS 가 아니라 **회로번호** 가 맞음. +- **수정**: `originHaveThisPcsModules` 를 `getCircuitNumber()` 결과 (이번 부여하려는 회로번호 문자열) 와 일치하는 모듈로 필터링한 `sameCircuitExisting` 으로 교체. 이번 선택 모듈 + 같은 회로번호 기존 모듈만 합집합 검증. +- **진단 경로**: `debugCapture.log('INDFCS-VALIDATION', ...)` 임시 삽입 → `NEXT_PUBLIC_ENABLE_LOGGING=true` 로 재현 → `debug/debug.log` 에서 `uniqueKeys` 와 `existingSameCircuitCount` 확인 후 정식화 시 제거. +- **태그**: `[INDFCS-SAME-ROOF 2026-05-06]` (1.7 과 동일 태그, 주석에 "보정 2026-05-06" 명시) +- **회귀 체크 추가**: ⑥ 자동(회로 1 = 남) → 수동(회로 2 = 서) 통과 ⑦ 수동에서 같은 회로번호로 다른 방위 묶기는 여전히 차단. + --- ## 2. 모듈 배치 / 설치 영역 diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 73e52848..2a6cb226 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -161,11 +161,15 @@ export default function PassivityCircuitAllocation(props) { } // [INDFCS-SAME-ROOF 2026-05-06] 실내집중형 PCS 수동 회로분할 시 - // 동일 PCS 의 같은 직렬회로 안에서 다른 방위 또는 다른 구배의 지붕면 모듈이 섞이지 않도록 차단. + // "동일한 직렬회로(=같은 회로번호)" 안에서만 다른 방위/구배 모듈이 섞이지 않도록 차단. + // 검증 대상 = 이번 선택 모듈 + 같은 PCS·같은 회로번호의 기존 모듈 합집합. // (HANASYS 보고: INDFCS + 수동 분할에서만 다방위/다구배 직렬회로 구성 가능했던 버그) - // 검증 대상 = 이번에 선택한 모듈 + 같은 PCS 에 이미 묶인 기존 모듈 (북면 검사와 동일한 누적 패턴) + // (보정 2026-05-06: 1차에서 PCS 단위 합집합으로 검증해 다른 회로번호까지 차단되던 것을 + // "同一の直列回路として" 본문 의도에 맞춰 회로번호 단위로 좁힘) + const newCircuitNumberStr = getCircuitNumber() + const sameCircuitExisting = originHaveThisPcsModules.filter((obj) => obj.circuitNumber === newCircuitNumberStr) const indfcsCombinedSurfaceTypes = new Set( - targetModuleInfos.concat(originHaveThisPcsModules).map((obj) => { + targetModuleInfos.concat(sameCircuitExisting).map((obj) => { const surface = canvas.getObjects().find((s) => s.id === obj.surfaceId) return surface ? `${surface.direction}-${surface.roofMaterial.pitch}` : '' }),