diff --git a/popdocs/CHANGELOG.md b/popdocs/CHANGELOG.md index 6085dab9..a20e051f 100644 --- a/popdocs/CHANGELOG.md +++ b/popdocs/CHANGELOG.md @@ -12,6 +12,78 @@ --- +## [2026-02-09] origin/main 병합 (ksh-v2-work-merge-test) + +### 배경 (왜 이 작업이 필요했는가) + +**상황**: +- `ksh-v2-work` 브랜치에서 POP 디자이너 개발이 진행되는 동안, `main` 브랜치에서 데스크톱 ScreenDesigner 관련 대규모 업데이트(`feature/v2-unified-renewal` PR #386)가 병합됨 +- 두 브랜치가 `ScreenDesigner.tsx`를 동시에 수정하여 병합 충돌 발생 +- 안전한 병합을 위해 `ksh-v2-work-merge-test` 테스트 브랜치에서 작업 + +**병합 통계**: +- 소스: `origin/main` (86 커밋) +- 대상: `ksh-v2-work-merge-test` (ksh-v2-work에서 분기, 14 커밋) +- 분기점: `3fca677f` (feat: V2Media 컴포넌트 추가) +- 변경 파일: 207개 (43,535줄 추가, 3,547줄 삭제) +- 충돌 파일: 1개 (`ScreenDesigner.tsx`) + +### Merged (origin/main에서 가져온 주요 변경) + +- **ScreenDesigner 데스크톱 기능 강화** + - 그룹 정렬/분배/크기 맞춤 (handleGroupAlign, handleGroupDistribute, handleMatchSize) + - 라벨 토글 (handleToggleAllLabels) + - 단축키 도움말 모달 (showShortcutsModal) + - 디버그 console.log 정리 + +- **백엔드 신규 기능** + - 스케줄 관리 API (scheduleController, scheduleRoutes, scheduleService) + - 파일 관리 개선 (fileController, fileRoutes) + - 테이블 관리 확장 (tableManagementController) + - 넘버링 규칙 개선 (numberingRuleController) + +- **프론트엔드 신규/수정** + - 레이어 매니저 패널, 레이어 조건 패널 + - 화면 복사 모달, 편집 모달 + - InteractiveDataTable, InteractiveScreenViewer + - 넘버링 규칙 디자이너 + - 화면 그룹 트리뷰, 화면 관계 플로우 + +### 충돌 해결 (ScreenDesigner.tsx) + +3건의 충돌을 수동 해결: + +| 충돌 | 영역 | 해결 방식 | +|------|------|----------| +| 1. 함수 시그니처 | `isPop`, `defaultDevicePreview` props 추가 | ksh-v2-work 유지 (POP 모드 지원), 중복 `usePanelState` 제거 | +| 2. 저장 로직 | POP/V2/Legacy 3단계 분기 | ksh-v2-work 유지 (3단계 분기), console.log 제거 | +| 3. 툴바 props | 정렬/분배/크기맞춤/라벨토글/단축키 | origin/main 채택 (데스크톱 신규 기능 모두 포함) | + +### 검증 결과 + +| 항목 | 결과 | +|------|------| +| 충돌 마커 잔존 | 없음 | +| TypeScript 컴파일 | 신규 에러 없음 (기존 에러만) | +| 프론트엔드 빌드 | 성공 | +| 백엔드 빌드 | 신규 에러 없음 (`docx`/`bwip-js` 기존 이슈만) | +| 시맨틱 충돌 | 없음 | +| 린트 | 기능 에러 없음 (들여쓰기 차이만) | + +### 주의사항 + +- **Conflict 3 영역 들여쓰기**: origin/main에서 가져온 툴바 JSX(L5745~6631)의 들여쓰기가 ksh-v2-work와 2칸 차이. 기능에는 영향 없으나, 추후 포매팅 정리 권장 +- **기존 타입 에러**: `GridSettings`/`GridUtilSettings` 불일치, `SCREEN_RESOLUTIONS` export type 문제 등은 병합 이전부터 존재하던 기술 부채 + +### 수정 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `ScreenDesigner.tsx` | 3건 충돌 수동 해결 (함수 시그니처, 저장 로직, 툴바 props) | +| 외 207개 파일 | origin/main에서 자동 병합 | + +--- + ## [2026-02-06] v5.2.1 그리드 셀 크기 강제 고정 ### 배경 (왜 이 작업이 필요했는가) diff --git a/popdocs/PROBLEMS.md b/popdocs/PROBLEMS.md index 823f8988..1782b57e 100644 --- a/popdocs/PROBLEMS.md +++ b/popdocs/PROBLEMS.md @@ -241,4 +241,14 @@ const currentModeKey = isPreviewMode --- +## 병합 관련 + +| 문제 | 해결 | 날짜 | 키워드 | +|------|------|------|--------| +| **ScreenDesigner.tsx 3건 충돌** (origin/main 병합) | 함수 시그니처: ksh-v2-work 유지(isPop/defaultDevicePreview), 저장 로직: 3단계 분기 유지+console.log 제거, 툴바 props: origin/main 채택 | 2026-02-09 | 병합, merge, ScreenDesigner, 충돌 | +| **usePanelState 중복 선언** (병합 시 발견) | 충돌 1 해결 과정에서 L175의 중복 usePanelState 제거, L215의 완전한 버전만 유지 | 2026-02-09 | usePanelState, 중복, 병합 | +| **툴바 JSX 들여쓰기 불일치** (병합 후 린트) | origin/main 코드가 ksh-v2-work와 2칸 들여쓰기 차이. 기능 영향 없음. 추후 포매팅 정리 권장 | 2026-02-09 | 들여쓰기, 포매팅, 린트, prettier | + +--- + *새 문제-해결 추가 시 해당 카테고리 테이블에 행 추가* diff --git a/popdocs/WORKFLOW_PROMPTS.md b/popdocs/WORKFLOW_PROMPTS.md index 2d4a08b7..12f70a1e 100644 --- a/popdocs/WORKFLOW_PROMPTS.md +++ b/popdocs/WORKFLOW_PROMPTS.md @@ -161,6 +161,91 @@ popdocs 문서 간 동기화 상태를 확인해줘. - sessions/ 이번 주 파일들 - PROBLEMS.md 이번 주 항목들 - CHANGELOG.md 이번 주 섹션들 + +===== 병합 준비 (merge 전) ===== +[source-branch]를 [target-branch]에 병합하려고 해. + +병합 전 점검해줘: +1. 양쪽 브랜치의 최근 커밋 히스토리 비교 (git log --oneline --left-right [target]...[source]) +2. 충돌 예상 파일 목록 (git merge --no-commit --no-ff [source] 후 git diff --name-only --diff-filter=U) +3. 충돌 예상 파일 중 규모가 큰 파일(500줄 이상) 식별 - 이 파일들은 특별 주의 대상 +4. 양쪽에서 동시에 수정한 파일 목록 (git diff --name-only [target]...[source]) +5. 삭제 vs 수정 충돌 가능성 (한쪽에서 삭제하고 다른 쪽에서 수정한 파일) + +점검 후 위험도를 알려줘: +- 높음: 같은 함수/컴포넌트를 양쪽에서 구조적으로 변경한 경우 +- 중간: 같은 파일이지만 다른 부분을 수정한 경우 +- 낮음: 서로 다른 파일만 수정한 경우 + +충돌 예상 파일이 있으면 각 파일별로: +- 양쪽에서 무엇을 변경했는지 한 줄 요약 +- 어떤 쪽을 기준으로 병합해야 하는지 판단 근거 + +===== 병합 실행 (merge 중) ===== +병합을 진행해줘. + +규칙: +1. diff3 형식으로 충돌 표시 (git config merge.conflictstyle diff3) +2. 충돌 파일 하나씩 순서대로 해결 - 의존성 낮은 파일부터 +3. 각 충돌 파일 해결 전에 반드시: + - 공통 조상(base)을 확인하여 양쪽이 원래 코드에서 무엇을 변경했는지 파악 + - 양쪽 변경의 의도를 모두 보존할 수 있는지 판단 + - 한쪽만 선택해야 하면 그 이유를 명시 +4. 충돌 마커(<<<<<<, ======, >>>>>>)가 모두 제거되었는지 확인 + +각 충돌 파일 해결 후 보고: +- 충돌 위치 (함수명/컴포넌트명) +- 해결 방식: "양쪽 통합" / "ours 선택" / "theirs 선택" / "새로 작성" +- 선택 이유 한 문장 + +===== 병합 후 시맨틱 검증 (merge 후 - 가장 중요) ===== +텍스트 충돌은 해결했지만, Git이 감지 못하는 시맨틱 충돌을 점검해줘. + +검증 항목: +1. 함수/변수 이름 변경 충돌: 한쪽에서 rename한 함수를 다른 쪽에서 기존 이름으로 호출하고 있지 않은지 +2. 타입/인터페이스 변경 충돌: 타입 필드가 변경/삭제되었는데 다른 쪽에서 해당 필드를 사용하는 코드가 추가되지 않았는지 +3. import 정합성: 병합 후 중복 import, 누락 import, 사용하지 않는 import 확인 +4. 함수 시그니처 충돌: 매개변수가 변경되었는데 호출부가 기존 시그니처를 사용하지 않는지 +5. 삭제된 코드 의존성: 한쪽에서 삭제한 함수/변수를 다른 쪽 새 코드가 참조하지 않는지 +6. 전역 상태/설정 변경: 설정값이 바뀌었는데 기존 값 기반 로직이 추가되지 않았는지 + +검증 방법: +- TypeScript 타입 체크: npx tsc --noEmit +- 빌드 확인: npm run build +- 남은 충돌 마커: git diff --check +- 병합으로 변경된 전체 diff: git diff HEAD~1..HEAD + +문제 발견 시: +- 파일명, 라인, 구체적인 문제를 보여줘 +- 수정 방안을 제시하되, 내 확인 후에 수정해줘 + +===== 병합 후 빌드/테스트 검증 ===== +병합 후 프로젝트가 정상 작동하는지 확인해줘. + +순서: +1. 남은 충돌 마커 검색: 프로젝트 전체에서 <<<<<<, ======, >>>>>> 검색 +2. TypeScript 컴파일: npx tsc --noEmit → 타입 에러 목록 +3. 프론트엔드 빌드: npm run build → 빌드 에러 목록 +4. 백엔드 빌드: npm run build (backend-node) → 빌드 에러 목록 +5. 린트 체크: 변경된 파일들에 대해 린트 확인 + +에러 발견 시 각각에 대해: +- 에러 메시지 전문 +- 원인이 병합 때문인지, 기존 코드 문제인지 구분 +- 병합 때문이면 어떤 충돌 해결이 잘못되었는지 추적 + +===== 병합 완료 정리 ===== +병합이 완료되었어. 정리해줘. + +정리 항목: +1. 병합 요약: 어떤 브랜치에서 어떤 브랜치로, 총 충돌 파일 수, 해결 방식 통계 +2. 주의가 필요한 변경사항: 시맨틱 충돌 위험이 있었던 부분 목록 +3. 테스트가 필요한 기능: 병합으로 영향받은 기능 목록 (수동 테스트 대상) +4. 커밋 메시지 작성: 병합 내용을 요약한 적절한 커밋 메시지 제안 + +문서 정리: +- PROBLEMS.md에 병합 중 발견된 문제-해결 추가 (있으면) +- CHANGELOG.md에 병합 내용 기록 ``` --- @@ -173,6 +258,11 @@ popdocs 문서 간 동기화 상태를 확인해줘. | 코딩 중 | PLAN.md 완료 체크 `[x]` | 각 파일 완료 시 | | 검수 | PROBLEMS.md 내용 준비 | 문제 발견 시 | | 수정 | PROBLEMS.md 내용 준비 | 수정 완료 시 | +| 병합 준비 | (응답으로 제공) | merge 시작 전 | +| 병합 실행 | (충돌 해결 중) | merge 진행 중 | +| 병합 시맨틱 검증 | (응답으로 제공) | 텍스트 충돌 해결 직후 | +| 병합 빌드 검증 | (응답으로 제공) | 시맨틱 검증 후 | +| 병합 완료 정리 | PROBLEMS.md, CHANGELOG.md | 병합 최종 완료 시 | | 기록 | sessions/, CHANGELOG, STATUS, README, PROBLEMS, INDEX | 작업 완료 시 | | 동기화 확인 | 전체 문서 간 불일치 점검 | 기록 직후 | | 주간 복습 | (응답으로 제공, 파일 저장은 선택) | 금요일 | @@ -193,6 +283,13 @@ popdocs 문서 간 동기화 상태를 확인해줘. [새 세션 - 아무 모델] 기록 + 동기화 확인 → "기록" 프롬프트 → "동기화 확인" 프롬프트 + +[병합 세션 - Opus 권장] 브랜치 병합 + → "병합 준비" 프롬프트 → 위험도 파악 + → "병합 실행" 프롬프트 → 텍스트 충돌 해결 + → "병합 후 시맨틱 검증" 프롬프트 → 숨은 버그 점검 + → "병합 후 빌드/테스트 검증" 프롬프트 → 빌드 확인 + → "병합 완료 정리" 프롬프트 → 기록 및 커밋 ``` **세션을 끊는 기준**: @@ -202,4 +299,4 @@ popdocs 문서 간 동기화 상태를 확인해줘. --- -*최종 업데이트: 2026-02-06* +*최종 업데이트: 2026-02-09*