# Automated Development Workflow Protocol 이 문서는 AI가 프로젝트를 **자동으로 진행**하기 위한 행동 수칙을 정의합니다. 사용자가 **"워크플로우로 진행해줘"**라고 명령하면, AI는 아래 **[Execution Loop]**를 따릅니다. ## 🔄 Execution Loop (반복 실행 규칙) AI는 다음 순서를 엄격히 준수해야 합니다. 1. **Status Check (상태 확인):** - `implementation_plan.md`를 읽고, **체크되지 않은( `[ ]` ) 가장 첫 번째 Phase**를 식별합니다. 2. **Proposal & Approval (제안 및 승인 요청):** - 사용자에게 현재 진행해야 할 Phase와 수행할 작업 내용을 요약하여 보고합니다. - **"Phase X 작업을 시작하시겠습니까?"** 라고 묻고, **사용자의 승인(Yes/Go)을 대기**합니다. (즉시 코드를 작성하지 마십시오.) 3. **Execution (실행):** - 사용자가 승인하면, 아래 **[Phase Detail Prompts]**에 정의된 해당 단계의 지침에 따라 코드를 작성합니다. - 이때 반드시 `copilot-instructions.md`의 C++/Python 규칙과 `project_requirements.md`의 요구사항을 준수합니다. 4. **Update Plan (플랜 업데이트):** - 작업이 완료되면 `implementation_plan.md`의 해당 항목을 체크(`[x]`) 표시하여 업데이트합니다. 5. **Self-Correction (자가 점검):** - 작성된 코드가 `review_prompt.md`의 기준(성능, 예외 처리 등)을 충족하는지 확인하고, 부족한 점이 있다면 스스로 수정합니다. --- ## 📋 Phase Detail Prompts (단계별 수행 지침) AI는 실행 단계(Execution)에서 현재 Phase에 맞는 아래 지침을 수행합니다. ### Phase 1: 환경 설정 (Setup) - **목표:** 프로젝트 기반 마련 및 의존성 설정 - **지침:** 1. `copilot-instructions.md`의 Tech Stack을 확인하여 폴더 구조 생성. 2. Python(`requirements.txt`, `.env`) 및 C++(`CMakeLists.txt`) 설정 파일 작성. 3. `.gitignore` 및 기본 설정 파일 생성. ### Phase 2: 코어 로직 구현 (Core Domain) - **목표:** 비즈니스 로직 및 데이터 모델 구현 - **지침:** 1. 코딩 전, **알고리즘 설계와 시간 복잡도**를 주석으로 먼저 작성. 2. `copilot-instructions.md`의 **Core Principles**를 준수하여 순수 함수/클래스 구현. 3. 반드시 **단위 테스트(Unit Test)** 코드를 함께 작성. ### Phase 3: 인터페이스 연동 (Integration) - **목표:** 외부 API, DB, UI 연동 - **지침:** 1. 외부 시스템과의 통신 로직 구현. 2. **Error Handling:** 네트워크 실패, 타임아웃 등을 대비한 방어 코드(`try-except`, `RAII`) 작성. 3. `project_requirements.md`의 데이터 흐름(Data Flow) 준수 확인. ### Phase 4: 시스템 통합 (System Interface) - **목표:** 메인 진입점 및 전체 프로세스 연결 - **지침:** 1. `main.py` 또는 `main.cpp` 진입점 구현. 2. 전체 모듈을 연결하고 통합 테스트(Integration Test) 시나리오 작성. 3. 실제 실행 가능한 상태인지 검증. ### Phase 5: 최적화 및 리팩토링 (Refinement) - **목표:** 품질 향상 및 안정화 - **지침:** 1. `review_prompt.md`를 기준으로 전체 코드 리뷰 수행. 2. 성능 병목(O(N^2) 이상) 및 메모리 누수 점검. 3. 최종 문서(README.md) 작성. --- ## 🛑 Exception Handling - 작업 중 에러가 발생하거나 정보가 부족하면 즉시 중단하고 사용자에게 구체적인 질문을 하십시오. - 사용자가 "중단" 또는 "수정"을 요청하면 즉시 루프를 멈추고 지시를 따르십시오.