# AI-개발자 협업 작업 수칙 ## 핵심 원칙: "추측 금지, 확인 필수" AI는 코드 작성 전에 반드시 실제 상황을 확인해야 합니다. --- ## 1. 데이터베이스 관련 작업 ### 필수 확인 사항 - ✅ **항상 MCP Postgres로 실제 테이블 구조를 먼저 확인** - ✅ 컬럼명, 데이터 타입, 제약조건을 추측하지 말고 쿼리로 확인 - ✅ 변경 후 실제로 데이터가 어떻게 보이는지 SELECT로 검증 ### 확인 방법 ```sql -- 테이블 구조 확인 SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_name = '테이블명' ORDER BY ordinal_position; -- 실제 데이터 확인 SELECT * FROM 테이블명 LIMIT 5; ``` ### 금지 사항 - ❌ "아마도 `created_at` 컬럼일 것입니다" → 확인 필수! - ❌ "보통 이렇게 되어있습니다" → 이 프로젝트에서 확인! - ❌ 다른 테이블 구조를 보고 추측 → 각 테이블마다 확인! --- ## 2. 코드 수정 작업 ### 작업 전 1. **관련 파일 읽기**: 수정할 파일의 현재 상태 확인 2. **의존성 파악**: 다른 파일에 영향이 있는지 검색 3. **기존 패턴 확인**: 프로젝트의 코딩 스타일 준수 ### 작업 중 1. **한 번에 하나씩**: 하나의 명확한 작업만 수행 2. **로그 추가**: 디버깅이 필요하면 명확한 로그 추가 3. **점진적 수정**: 큰 변경은 여러 단계로 나눔 ### 작업 후 1. **로그 제거**: 디버깅 로그는 반드시 제거 2. **테스트 제안**: 브라우저로 테스트할 것을 제안 3. **변경사항 요약**: 무엇을 어떻게 바꿨는지 명확히 설명 --- ## 3. 확인 및 검증 ### 확인 도구 사용 - **MCP Postgres**: 데이터베이스 구조 및 데이터 확인 - **MCP Browser**: 실제 화면에서 동작 확인 - **codebase_search**: 관련 코드 패턴 검색 - **grep**: 특정 문자열 사용처 찾기 ### 검증 프로세스 1. **변경 전 상태 확인** → 문제 파악 2. **변경 적용** 3. **변경 후 상태 확인** → 해결 검증 4. **부작용 확인** → 다른 기능에 영향 없는지 ### 사용자 피드백 대응 - 사용자가 "확인 안하지?"라고 하면: 1. 즉시 사과 2. MCP/브라우저로 실제 확인 3. 정확한 정보를 바탕으로 재작업 --- ## 4. 커뮤니케이션 ### 작업 시작 시 ``` ✅ 좋은 예: "MCP로 item_info 테이블 구조를 먼저 확인하겠습니다." ❌ 나쁜 예: "보통 created_at 컬럼이 있을 것이므로 수정하겠습니다." ``` ### 작업 완료 시 ``` ✅ 좋은 예: "완료! 두 가지를 수정했습니다: 1. 기본 높이를 40px → 30px로 변경 (ScreenDesigner.tsx:2174) 2. 숨김 컬럼을 created_date, updated_date, writer, company_code로 수정 (TablesPanel.tsx:57) 테스트해보세요!" ❌ 나쁜 예: "수정했습니다!" ``` ### 불확실할 때 ``` ✅ 좋은 예: "컬럼명이 created_at인지 created_date인지 확실하지 않습니다. MCP로 확인해도 될까요?" ❌ 나쁜 예: "created_at일 것 같으니 일단 이렇게 하겠습니다." ``` --- ## 5. 금지 사항 ### 절대 금지 1. ❌ **확인 없이 "완료했습니다" 말하기** - 반드시 실제로 확인하고 보고 2. ❌ **이전에 실패한 방법 반복하기** - 같은 실수를 두 번 하지 않기 3. ❌ **디버깅 로그를 남겨둔 채 작업 종료** - 모든 console.log 제거 확인 4. ❌ **추측으로 답변하기** - "아마도", "보통", "일반적으로" 금지 - 확실하지 않으면 먼저 확인 5. ❌ **여러 문제를 한 번에 수정하려고 시도** - 한 번에 하나씩 해결 --- ## 6. 프로젝트 특별 규칙 ### 백엔드 관련 - 🔥 **백엔드 재시작 절대 금지** (사용자 명시 규칙) - 🔥 Node.js 프로세스를 건드리지 않음 ### 데이터베이스 관련 - 🔥 **멀티테넌시 규칙 준수** - 모든 쿼리에 `company_code` 필터링 필수 - `company_code = "*"`는 최고 관리자 전용 - 자세한 내용: `.cursor/rules/multi-tenancy-guide.mdc` ### API 관련 - 🔥 **API 클라이언트 사용 필수** - `fetch()` 직접 사용 금지 - `lib/api/` 의 클라이언트 함수 사용 - 환경별 URL 자동 처리 ### UI 관련 - 🔥 **shadcn/ui 스타일 가이드 준수** - CSS 변수 사용 (하드코딩 금지) - 중첩 박스 금지 (명시 요청 전까지) - 이모지 사용 금지 (명시 요청 전까지) --- ## 7. 에러 처리 ### 에러 발생 시 프로세스 1. **에러 로그 전체 읽기** - 스택 트레이스 확인 - 에러 메시지 정확히 파악 2. **근본 원인 파악** - 증상이 아닌 원인 찾기 - 왜 이 에러가 발생했는지 이해 3. **해결책 적용** - 임시방편이 아닌 근본적 해결 - 같은 에러가 재발하지 않도록 4. **검증** - 실제로 에러가 해결되었는지 확인 - 다른 부작용은 없는지 확인 ### 에러 로깅 ```typescript // ✅ 좋은 로그 (디버깅 시) console.log("🔍 [컴포넌트명] 작업명:", { 관련변수1, 관련변수2, 예상결과, }); // ❌ 나쁜 로그 console.log("here"); console.log(data); // 무슨 데이터인지 알 수 없음 ``` --- ## 8. 작업 완료 체크리스트 모든 작업 완료 전에 다음을 확인: - [ ] 실제 데이터베이스/파일을 확인했는가? - [ ] 변경사항이 의도대로 작동하는가? - [ ] 디버깅 로그를 모두 제거했는가? - [ ] 다른 기능에 부작용이 없는가? - [ ] 멀티테넌시 규칙을 준수했는가? - [ ] 사용자에게 명확히 설명했는가? --- ## 9. 모범 사례 ### 데이터베이스 확인 예시 ```typescript // 1. MCP로 테이블 구조 확인 mcp_postgres_query: SELECT column_name FROM information_schema.columns WHERE table_name = 'item_info'; // 2. 실제 컬럼명 확인 후 코드 작성 const hiddenColumns = new Set([ 'id', 'created_date', // ✅ 실제 확인한 컬럼명 'updated_date', // ✅ 실제 확인한 컬럼명 'writer', // ✅ 실제 확인한 컬럼명 'company_code' ]); ``` ### 브라우저 테스트 제안 예시 ``` "수정이 완료되었습니다! 다음을 테스트해주세요: 1. 화면관리 > 테이블 탭 열기 2. item_info 테이블 확인 3. 기본 5개 컬럼(id, created_date 등)이 안 보이는지 확인 4. 새 컬럼 드래그앤드롭 시 높이가 30px인지 확인 브라우저 테스트를 원하시면 말씀해주세요!" ``` --- ## 10. 요약: 핵심 3원칙 1. **확인 우선** 🔍 - 추측하지 말고, 항상 확인하고 작업 2. **한 번에 하나** 🎯 - 여러 문제를 동시에 해결하려 하지 말기 3. **철저한 마무리** ✨ - 로그 제거, 테스트, 명확한 설명 --- ## 11. 화면관리 시스템 위젯 개발 가이드 ### 위젯 크기 설정의 핵심 원칙 화면관리 시스템에서 위젯을 개발할 때, **크기 제어는 상위 컨테이너(`RealtimePreviewDynamic`)가 담당**합니다. #### ✅ 올바른 크기 설정 패턴 ```tsx // 위젯 컴포넌트 내부 export function YourWidget({ component }: YourWidgetProps) { return (