# PM 판단 - Round 4
- 시간: 2026. 3. 27. 오후 11:54:10

## 분석
Round 4에서 backend 에이전트가 task-10(9개 서비스 파일 컴파일)을 성공적으로 완료했다. DataflowService, FlowService, NodeFlowService 등 9개 파일 모두 extends BaseService + sqlSession.* 패턴으로 변환 확인, L1(compileJava)+L2(bootJar) 통과. pipeline-state.json에서 completedTasks가 19→20으로 증가하여 task-10 완료 확인됨. 현재 20/24 태스크 완료. 남은 태스크: task-17(mapper 디렉토리 삭제), task-18(XML namespace 소문자), task-19(companyCode OR 필터), task-24(최종 bootJar). task-17,18,19는 독립적이므로 병렬 실행 가능. task-24는 모든 변경 완료 후 최종 빌드 검증이므로 마지막에 실행해야 한다.

## 태스크 지시
- **task-17** [retry]: src/main/java/com/erp/mapper/ 디렉토리 내의 모든 Mapper 인터페이스 파일을 삭제하라. 디렉토리 자체도 삭제하라. 단, XML mapper 파일(resources/mapper/)은 절대 건드리지 마라. Java 소스의 Mapper 인터페이스만 삭제 대상이다. 삭제 후 컴파일(./gradlew compileJava)이 성공해야 한다. 만약 다른 코드에서 Mapper 인터페이스를 import하고 있다면 해당 import 문도 제거하라.
- **task-18** [retry]: 모든 MyBatis XML 파일(backend-spring/src/main/resources/mapper/*.xml)의 namespace를 소문자 형식으로 변경하라. 예: namespace="com.erp.mapper.AdminMapper" → namespace="admin". 모든 <include refid="..."> 태그의 참조도 새 namespace에 맞게 변경하라. 변경 후 bootJar가 성공해야 한다. BaseService의 sqlSession.selectList 등에서 사용하는 statement ID 형식(예: "admin.selectList")과 XML namespace가 일치해야 한다.
- **task-19** [retry]: 모든 MyBatis XML 파일에서 companyCode 필터 조건에 OR company_code = '*' 를 추가하라. 기존 WHERE company_code = #{companyCode} 패턴을 WHERE (company_code = #{companyCode} OR company_code = '*') 로 변경하라. 모든 XML 파일을 검색하여 company_code 관련 조건을 빠짐없이 수정하라. 변경 후 컴파일이 성공해야 한다.

## 판정: **continue**
## 다음 라운드 핵심: task-17,18,19 병렬 실행하여 mapper 정리 + XML namespace 소문자화 + companyCode 필터 완료. 이 3개가 모두 성공하면 그다음 라운드에서 task-24(최종 bootJar 빌드 검증) 실행.

---
## PM 원본 응답
```
```json
{
  "analysis": "Round 4에서 backend 에이전트가 task-10(9개 서비스 파일 컴파일)을 성공적으로 완료했다. DataflowService, FlowService, NodeFlowService 등 9개 파일 모두 extends BaseService + sqlSession.* 패턴으로 변환 확인, L1(compileJava)+L2(bootJar) 통과. pipeline-state.json에서 completedTasks가 19→20으로 증가하여 task-10 완료 확인됨. 현재 20/24 태스크 완료. 남은 태스크: task-17(mapper 디렉토리 삭제), task-18(XML namespace 소문자), task-19(companyCode OR 필터), task-24(최종 bootJar). task-17,18,19는 독립적이므로 병렬 실행 가능. task-24는 모든 변경 완료 후 최종 빌드 검증이므로 마지막에 실행해야 한다.",
  "taskUpdates": [
    {
      "taskId": "task-17",
      "status": "retry",
      "instruction": "src/main/java/com/erp/mapper/ 디렉토리 내의 모든 Mapper 인터페이스 파일을 삭제하라. 디렉토리 자체도 삭제하라. 단, XML mapper 파일(resources/mapper/)은 절대 건드리지 마라. Java 소스의 Mapper 인터페이스만 삭제 대상이다. 삭제 후 컴파일(./gradlew compileJava)이 성공해야 한다. 만약 다른 코드에서 Mapper 인터페이스를 import하고 있다면 해당 import 문도 제거하라."
    },
    {
      "taskId": "task-18",
      "status": "retry",
      "instruction": "모든 MyBatis XML 파일(backend-spring/src/main/resources/mapper/*.xml)의 namespace를 소문자 형식으로 변경하라. 예: namespace=\"com.erp.mapper.AdminMapper\" → namespace=\"admin\". 모든 <include refid=\"...\"> 태그의 참조도 새 namespace에 맞게 변경하라. 변경 후 bootJar가 성공해야 한다. BaseService의 sqlSession.selectList 등에서 사용하는 statement ID 형식(예: \"admin.selectList\")과 XML namespace가 일치해야 한다."
    },
    {
      "taskId": "task-19",
      "status": "retry",
      "instruction": "모든 MyBatis XML 파일에서 companyCode 필터 조건에 OR company_code = '*' 를 추가하라. 기존 WHERE company_code = #{companyCode} 패턴을 WHERE (company_code = #{companyCode} OR company_code = '*') 로 변경하라. 모든 XML 파일을 검색하여 company_code 관련 조건을 빠짐없이 수정하라. 변경 후 컴파일이 성공해야 한다."
    }
  ],
  "newTasks": [],
  "overallStatus": "continue",
  "nextRoundFocus": "task-17,18,19 병렬 실행하여 mapper 정리 + XML namespace 소문자화 + companyCode 필터 완료. 이 3개가 모두 성공하면 그다음 라운드에서 task-24(최종 bootJar 빌드 검증) 실행."
}
```
```