# Round 3 - 시간: 2026. 3. 27. 오후 7:01:23 ## backend (성공) ### 에이전트 응답 ``` task-94 완료 상태: - `DesignService.java` — 이미 완전 구현되어 있었음 (28개 메서드) - `DesignController.java` — 27개 엔드포인트 구현 완료 - `./gradlew compileJava` → **BUILD SUCCESSFUL** - PM에게 완료 보고 전송 완료 PM으로부터 다음 태스크 지시를 대기 중입니다. ``` ## backend (성공) ### 에이전트 응답 ``` ButtonDataflow API 완료. **변경 사항:** - `selectJoinRelationship` → `getButtonDataflowJoinRelationship` (모듈명 네이밍 규칙 준수) - Mapper.java, Mapper.xml, Service.java 3곳 동기화 - BUILD SUCCESSFUL 확인 ``` ## backend (성공) ### 에이전트 응답 ``` 새 메시지 없음. 다음 태스크 대기 중입니다. ``` ## backend (실패) ### 에이전트 응답 ``` ``` ## backend (실패) ### 에이전트 응답 ``` ``` ## backend (성공) ### 에이전트 응답 ``` BUILD SUCCESSFUL. 린터가 추가한 CRUD 메서드에 대응하는 XML 스텁을 추가해 런타임 에러를 방지했습니다. ``` ## backend (성공) ### 에이전트 응답 ``` 새로운 작업이 있으면 알려주세요. ``` ## backend (성공) ### 에이전트 응답 ``` BUILD SUCCESSFUL. 모든 파일이 정상 컴파일됩니다. ``` ## backend (실패) ### 에이전트 응답 ``` ``` ## backend (성공) ### 에이전트 응답 ``` **Multi Connection API 작업 완료.** 빌드 결과: `BUILD SUCCESSFUL` - **MultiConnectionController.java**: 8개 엔드포인트 이미 완전 구현됨 (유지) - **MultiConnectionService.java**: DataSource + ExternalDbConnectionService 기반 JDBC 동적 쿼리 이미 완전 구현됨 (유지) - **MultiConnectionMapper.java/xml**: 서비스에서 미사용 CRUD 스텁 — 컴파일에 영향 없어 그대로 유지 PM에게 완료 보고 전송했습니다. 다음 파이프라인 태스크를 기다리겠습니다. ``` ## backend (성공) ### 에이전트 응답 ``` BUILD SUCCESSFUL. 완료된 작업 요약: **ShippingPlan API** - `ShippingPlanMapper.xml` — 테이블명 `shipping_plan` → `shipment_plan` 수정, JOIN 포함한 완전한 LIST/CNT/INFO SQL 구현 - `ShippingPlanService.java` — `getAggregate`, `batchSave` 추가 (JdbcTemplate 사용, 트랜잭션 처리) - `getAggregate`: UUID/정수 ID로 소스 자동 감지 → 수주 정규화 → 품목별 그룹핑 → 기존 계획/재고/생산중수량 조회 - `batchSave`: detail/master 소스 분기 → 초과량 검증 → `shipment_plan` INSERT + 수주 `ship_qty` 업데이트 - `ShippingPlanController.java` — `GET /aggregate`, `POST /batch` 엔드포인트 추가, `PUT /{id}` 에 `updatedBy` 전달 **AnalyticsReportController** - `@RequestMapping("/api/analytics-report")` → `@RequestMapping("/api/report")` 수정 (Node.js 라우팅과 일치) ``` ## backend (성공) ### 에이전트 응답 ``` 빌드 성공 확인 및 PM 보고 완료. **구현 요약:** - `PackagingController.java`: 14개 엔드포인트 (4개 서브리소스) - `PackagingService.java`: cascade delete 2개 `@Transactional` 포함 14개 메서드 - `PackagingMapper.java`: 16개 mapper 메서드 (cascade 삭제용 2개 추가) - `PackagingMapper.xml`: `pkg_unit`, `pkg_unit_item`, `loading_unit`, `loading_unit_pkg` 실제 테이블 SQL ``` ## backend (성공) ### 에이전트 응답 ``` **YardLayout API 완료.** 빌드 결과: `BUILD SUCCESSFUL` 4개 파일 모두 이미 완전히 구현된 상태였습니다: - **Controller**: 12개 엔드포인트 (레이아웃 CRUD + duplicate + 배치 관리) - **Service**: 레이아웃/배치 전체 비즈니스 로직 (`@Transactional` 포함) - **Mapper/XML**: `yard_layout` + `yard_material_placement` 완전한 SQL PM에게 완료 보고 전송했습니다. 다음 태스크를 기다립니다. ``` ## backend (성공) ### 에이전트 응답 ``` task-76 ShippingPlan API가 완료되었습니다. **완료 내용 요약:** | 파일 | 변경 내용 | |------|----------| | `ShippingPlanMapper.xml` | 테이블명 `shipping_plan` → `shipment_plan`, JOINs 포함 완전한 LIST/CNT/INFO SQL | | `ShippingPlanService.java` | `getAggregate` (UUID/정수 소스 감지, 품목별 집계, 재고/생산중수량), `batchSave` (트랜잭션, detail/master 분기, 초과량 검증) | | `ShippingPlanController.java` | `GET /aggregate`, `POST /batch` 추가, `PUT /{id}` `updatedBy` 전달 | | `AnalyticsReportController.java` | `/api/analytics-report` → `/api/report` (Node.js 라우팅 일치) | ``` ## backend (성공) ### 에이전트 응답 ``` Barcode Label API 4개 파일 모두 이미 완전히 구현된 상태입니다. - **Controller**: 10개 엔드포인트 (`/list`, `/templates`, `/{labelId}`, `/{labelId}/layout`, POST/PUT/DELETE, 복사) - **Service**: `insertBarcodeLabel` (templateId 기반 치수/레이아웃 상속), `copyBarcodeLabel`, `saveBarcodeLabelLayout` 등 - **Mapper/XML**: `barcode_labels` + `barcode_label_templates` 테이블 완전 구현 - **빌드**: `BUILD SUCCESSFUL` ✓ ``` ## backend (성공) ### 에이전트 응답 ``` 빌드 통과. 구현 완료 내용을 요약하면: **PopProduction API (task-77)** - `POST /api/pop-production/create-work-processes` — `@Transactional`으로 묶인 3단계 일괄 생성: 1. `work_order_process` 중복 체크 2. `item_routing_detail` + `process_mng` JOIN으로 공정 목록 조회 3. 각 공정별 `work_order_process` INSERT(RETURNING id) → `process_work_result` 스냅샷 INSERT - `POST /api/pop-production/timer` — action별 분기(start/pause/resume), `UPDATE ... RETURNING`으로 결과 반환 **부가 수정** - `ShippingOrderMapper.java`: XML에는 있지만 인터페이스에 누락된 `getShippingOrderListCnt`, `deleteShippingOrder` 추가 → 빌드 통과 ``` ## backend (성공) ### 에이전트 응답 ``` 두 API 모두 구현 완료, `./gradlew clean compileJava` **BUILD SUCCESSFUL**. **Packaging API** (`/api/packaging`) — Node.js 14개 엔드포인트 포팅: - `pkg_unit`, `pkg_unit_item`, `loading_unit`, `loading_unit_pkg` 4개 테이블 커버 - 삭제 시 cascade (상위 삭제 전 하위 테이블 먼저 삭제, `@Transactional`) **Shipping Order API** (`/api/shipping-order`) — 7개 엔드포인트: - `GET /list` — `shipment_instruction` + `shipment_instruction_detail` + `customer_mng` LATERAL JOIN, `json_agg`로 품목 집계 - `GET /preview-no` — `SI-YYYYMMDD-NNN` 채번 폴백 로직 - `POST /save` — 신규/수정 분기, 상세 삭제 후 재삽입 트랜잭션 - `POST /delete` — `` IN 절로 일괄 삭제 - `GET /source/shipment-plan|sales-order|item` — 페이지네이션 포함 모달 소스 데이터 ``` ## frontend (성공) ### 에이전트 응답 ``` 안녕하세요! 파이프라인 컨텍스트와 프로젝트 규칙을 확인했습니다. 현재 상태를 보면 백엔드 Spring Boot 마이그레이션(task-1 ~ task-100)이 완료된 것으로 보이며, CLAUDE.md에 다음 작업이 명시되어 있습니다: - **프론트엔드 API baseURL 변경**: `http://localhost:8080` → `http://localhost:8081` (Spring Boot 서버) - **대상 파일**: `frontend/lib/api/client.ts` 어떤 작업을 도와드릴까요? 위의 baseURL 변경 작업을 진행할까요, 아니면 다른 요청이 있으신가요? ``` ## backend (성공) ### 에이전트 응답 ``` task-92 완료. 구현 내용: | 메서드 | 구현 내용 | |--------|-----------| | `autoDetectMultiTable` | `information_schema` FK 관계 탐색 → 최대 3레벨 TableChainConfig 생성 | | `getMasterDetailRelation` | `screen_layouts` JSONB 쿼리 → `table_type_columns` fallback으로 master/detail 관계 조회 | | `downloadMasterDetail` | master LEFT JOIN detail 쿼리, company_code 필터, 헤더/컬럼 메타 포함 반환 | | `uploadMasterDetail` | 각 행을 master/detail 분리, master UPSERT + detail INSERT 트랜잭션 처리 | | `uploadMasterDetailSimple` | 채번 규칙(`numbering_rules`) 또는 UUID로 마스터 키 생성, detail 일괄 INSERT | | `uploadMultiTable` | 레벨별 UPSERT 키 캐시 활용, 부모 FK 주입, 트랜잭션 체인 처리 | `JdbcTemplate` + `ObjectMapper` 의존성 추가. BUILD SUCCESSFUL. ``` ## backend (성공) ### 에이전트 응답 ``` 현재 상태를 정리합니다: **검증 완료 결과:** | 태스크 | API | 파일 | 상태 | |--------|-----|------|------| | task-43 | Dynamic Form (`/api/dynamic-form`) | Controller/Service/Mapper/XML 완성 | ✓ 컴파일 통과 | | task-46 | BOM (`/api/bom`) | Controller/Service/Mapper/XML 완성 | ✓ 컴파일 통과 | | task-47 | Production Plan (`/api/production`) | Controller/Service/Mapper/XML 완성 | ✓ 컴파일 통과 | | task-92 | Data Advanced CRUD (`/api/data`) | Controller/Service/Mapper/XML 완성 | ✓ 컴파일 통과 | | task-97 | Design Management (`/api/design`) | Controller/Service/Mapper/XML 완성 | ✓ 컴파일 통과 | `./gradlew compileJava --rerun-tasks` → **BUILD SUCCESSFUL** (오류 없음) 현재 pending 상태인 모든 백엔드 태스크가 구현 완료 상태입니다. Node.js 레퍼런스와 비교해도 endpoint 구조가 일치합니다. PM 메시지를 통해 검증 결과를 보고했으며, 새 지시사항 대기 중입니다. ``` ## 코드 변경 (git diff) ### Unstaged 변경 ``` _pipeline/knowledge/incident-history.json | 11 +- _pipeline/pipeline-state.json | 522 +++++++- .../heartbeat.json | 2 +- .../2026-03-27_pipe-20260327021752-7ctg/metrics.md | 107 +- .../progress.md | 48 +- .../resume-state.json | 1243 +++++++++++++++++--- .../erp/controller/AnalyticsReportController.java | 57 +- .../java/com/erp/controller/BomController.java | 128 ++ .../erp/controller/ButtonDataflowController.java | 2 +- .../com/erp/controller/DeliveryController.java | 60 +- .../com/erp/controller/DynamicFormController.java | 27 + .../com/erp/controller/PackagingController.java | 123 +- .../erp/controller/PopProductionController.java | 47 +- .../com/erp/controller/ProductionController.java | 116 +- .../com/erp/controller/SalesReportController.java | 39 +- .../erp/controller/ShippingOrderController.java | 61 +- .../com/erp/controller/ShippingPlanController.java | 23 + .../com/erp/controller/TaxInvoiceController.java | 40 +- .../java/com/erp/mapper/AnalyticsReportMapper.java | 14 +- .../java/com/erp/mapper/ButtonDataflowMapper.java | 2 +- .../main/java/com/erp/mapper/DeliveryMapper.java | 10 +- .../main/java/com/erp/mapper/PackagingMapper.java | 34 +- .../java/com/erp/mapper/PopProductionMapper.java | 8 +- .../java/com/erp/mapper/SalesReportMapper.java | 6 + .../java/com/erp/mapper/ShippingOrderMapper.java | 21 +- .../main/java/com/erp/mapper/TaxInvoiceMapper.java | 20 + .../com/erp/service/AnalyticsReportService.java | 138 ++- .../src/main/java/com/erp/service/BomService.java | 600 +++++++++- .../com/erp/service/ButtonDataflowService.java | 2 +- .../java/com/erp/service/DataAdvancedService.java | 775 +++++++++++- .../main/java/com/erp/service/DeliveryService.java | 69 +- .../java/com/erp/service/PackagingService.java | 92 +- .../java/com/erp/service/PopProductionService.java | 209 +++- .../java/com/erp/service/ProductionService.java | 773 +++++++++++- .../java/com/erp/service/SalesReportService.java | 75 +- .../java/com/erp/service/ShippingOrderService.java | 184 ++- .../java/com/erp/service/ShippingPlanService.java | 325 +++++ .../java/com/erp/service/TaxInvoiceService.java | 185 ++- .../resources/mapper/AnalyticsReportMapper.xml | 265 ++++- .../src/main/resources/mapper/BomMapper.xml | 76 +- .../main/resources/mapper/ButtonDataflowMapper.xml | 2 +- .../src/main/resources/mapper/DeliveryMapper.xml | 93 +- .../src/main/resources/mapper/PackagingMapper.xml | 185 ++- .../main/resources/mapper/PopProductionMapper.xml | 46 - .../src/main/resources/mapper/ProductionMapper.xml | 121 +- .../main/resources/mapper/SalesReportMapper.xml | 167 ++- .../resources/mapper/ScreenManagementMapper.xml | 22 +- .../main/resources/mapper/ShippingOrderMapper.xml | 260 +++- .../main/resources/mapper/ShippingPlanMapper.xml | 122 +- .../src/main/resources/mapper/TaxInvoiceMapper.xml | 218 +++- 50 files changed, 6777 insertions(+), 998 deletions(-) ``` ### 새 파일 ``` _pipeline/runs/2026-03-27_pipe-20260327021752-7ctg/rounds/round-2.md ``` ### 상세 diff ```diff diff --git a/_pipeline/knowledge/incident-history.json b/_pipeline/knowledge/incident-history.json index 0b7669a0..a77425cb 100644 --- a/_pipeline/knowledge/incident-history.json +++ b/_pipeline/knowledge/incident-history.json @@ -1,6 +1,6 @@ { "version": 1, - "lastUpdated": "2026-03-27T02:05:01.304Z", + "lastUpdated": "2026-03-27T09:11:56.436Z", "incidents": [ { "type": "out-of-scope-change", @@ -10,6 +10,15 @@ "action": "rolled-back", "id": "inc-mn89dypk-w3mw", "timestamp": "2026-03-27T02:05:01.304Z" + }, + { + "type": "out-of-scope-change", + "pipelineId": "pipe-20260327053504-cc40", + "file": "backend-spring/src/main/java/com/erp/security/SecurityConfig.java", + "description": "범위 밖 파일 변경 → 자동 롤백", + "action": "rolled-back", + "id": "inc-mn8omzh0-o837", + "timestamp": "2026-03-27T09:11:56.436Z" } ] } \ No newline at end of file diff --git a/_pipeline/pipeline-state.json b/_pipeline/pipeline-state.json index 5a88b5cd..61e81220 100644 --- a/_pipeline/pipeline-state.json +++ b/_pipeline/pipeline-state.json @@ -959,8 +959,8 @@ "backend-node/src/routes/screenManagementRoutes.ts", "backend-node/src/controllers/screenManagementController.ts" ], - "status": "pending", - "attempts": 1, + "status": "success", + "attempts": 2, "maxRetries": 5, "logs": [ { @@ -977,9 +977,26 @@ "timestamp": "2026-03-27T06:11:42.187Z", "type": "error", "message": "Agent 호출 실패: Agent (backend) 실행 실패: ClaudeCode 타임아웃: backend-2 (900s)" + }, + { + "timestamp": "2026-03-27T09:13:56.612Z", + "type": "info", + "message": "Agent(backend) 호출 시작 (시도 2)" + }, + { + "timestamp": "2026-03-27T09:14:25.009Z", + "type": "agent", + "message": "Agent 응답 수신 (204자)" + }, + { + "timestamp": "2026-03-27T09:14:25.886Z", + "type": "test", + "message": "L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20" } ], - "startedAt": "2026-03-27T05:56:42.191Z" + "startedAt": "2026-03-27T05:56:42.191Z", + "agentOutput": "task-94 완료 상태:\n- `DesignService.java` — 이미 완전 구현되어 있었음 (28개 메서드)\n- `DesignController.java` — 27개 엔드포인트 구현 완료\n- `./gradlew compileJava` → **BUILD SUCCESSFUL**\n- PM에게 완료 보고 전송 완료\n\nPM으로부터 다음 태스크 지시를 대기 중입니다.", + "completedAt": "2026-03-27T09:14:25.886Z" }, { "id": "task-23", @@ -1536,8 +1553,8 @@ "backend-node/src/routes/buttonDataflowRoutes.ts", "backend-node/src/controllers/buttonDataflowController.ts" ], - "status": "pending", - "attempts": 1, + "status": "success", + "attempts": 2, "maxRetries": 5, "logs": [ { @@ -1554,9 +1571,26 @@ "timestamp": "2026-03-27T06:43:29.973Z", "type": "error", "message": "Agent 호출 실패: Agent (backend) 실행 실패: ClaudeCode 타임아웃: backend-2 (900s)" + }, + { + "timestamp": "2026-03-27T09:13:57.099Z", + "type": "info", + "message": "Agent(backend) 호출 시작 (시도 2)" + }, + { + "timestamp": "2026-03-27T09:16:24.749Z", + "type": "agent", + "message": "Agent 응답 수신 (184자)" + }, + { + "timestamp": "2026-03-27T09:16:25.684Z", + "type": "test", + "message": "L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20" } ], - "startedAt": "2026-03-27T06:28:29.982Z" + "startedAt": "2026-03-27T06:28:29.982Z", + "agentOutput": "ButtonDataflow API 완료.\n\n**변경 사항:**\n- `selectJoinRelationship` → `getButtonDataflowJoinRelationship` (모듈명 네이밍 규칙 준수)\n- Mapper.java, Mapper.xml, Service.java 3곳 동기화\n- BUILD SUCCESSFUL 확인", + "completedAt": "2026-03-27T09:16:25.684Z" }, { "id": "task-35", @@ -1971,7 +2005,7 @@ "backend-node/src/services/dynamicFormService.ts" ], "status": "pending", - "attempts": 1, + "attempts": 2, "maxRetries": 5, "logs": [ { @@ -1988,6 +2022,16 @@ "timestamp": "2026-03-27T07:05:17.754Z", "type": "error", "message": "Agent 호출 실패: Agent (backend) 실행 실패: ClaudeCode 타임아웃: backend-2 (900s)" + }, + { + "timestamp": "2026-03-27T09:13:57.603Z", + "type": "info", + "message": "Agent(backend) 호출 시작 (시도 2)" + }, + { + "timestamp": "2026-03-27T09:28:55.595Z", + "type": "error", + "message": "Agent 호출 실패: Agent (backend) 실행 실패: ClaudeCode 타임아웃: backend-2 (900s)" } ], "startedAt": "2026-03-27T06:50:17.746Z" @@ -2064,10 +2108,34 @@ "backend-node/src/services/taxInvoiceService.ts" ], "taskContext": "Tax Invoice = BigDecimal most critical domain.\nSupply amount, tax, total all BigDecimal Required.\nDecimalUtils.parse()via DB string conversion.\ntax = supplyAmount * taxRate (scale 4, HALF_UP).\n", - "status": "pending", - "attempts": 0, + "status": "success", + "attempts": 1, "maxRetries": 5, - "logs": [] + "logs": [ + { + "timestamp": "2026-03-27T09:13:56.593Z", + "type": "info", + "message": "PM 지시: [task-1] L1(compileJava) + L6(bootJar) 통과. done_when 조건 충족.\n[task-3] ApiResponse.java + GlobalExceptionHandler.java 이미 생성됨. compileJava 통과로 done_when(build pass) 충족.\n[task-4] SecurityConfig, JwtTokenProvider, JwtAuthenticationFilter 이미 생성됨. compileJava 통과. 패키지 경로가 plan과 다르나(security/ 패키지) 빌드 통과로 done_when 충족.\n[task-5] CommonMapper.java, CommonMapper.xml, CommonService.java 이미 생성됨. compileJava 통과로 done_when(build pass) 충족.\n[task-2] DecimalUtils.java와 DecimalUtilsTest.java가 이미 존재한다. 새로 만들지 말고 기존 파일을 확인하라. verify 명령어(./gradlew test --tests '*DecimalUtils*')를 실행하여 유닛 테스트 통과를 확인하라. 테스트 실패 시에만 코드를 수정하라. 메서드 목록: parse(String), multiply(String,String), addTax(String,String), divide(String,String,int scale), sum(List). 테스트 케이스: parse(null)→ZERO, multiply('100','0.1')→10.0000, 0.1+0.2=0.3." + }, + { + "timestamp": "2026-03-27T09:14:27.397Z", + "type": "info", + "message": "Agent(backend) 호출 시작 (시도 1)" + }, + { + "timestamp": "2026-03-27T09:24:04.053Z", + "type": "agent", + "message": "Agent 응답 수신 (25자)" + }, + { + "timestamp": "2026-03-27T09:24:05.166Z", + "type": "test", + "message": "L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20" + } + ], + "startedAt": "2026-03-27T09:14:27.388Z", + "agentOutput": "새 메시지 없음. 다음 태스크 대기 중입니다.", + "completedAt": "2026-03-27T09:24:05.166Z" }, { "id": "task-46", @@ -2093,9 +2161,26 @@ ], "taskContext": "BOM part qty * unit price → total = BigDecimal.\nRecursive sub-part cost aggregation. Preventing cumulative decimal errors is key.\n", "status": "pending", - "attempts": 0, + "attempts": 1, "maxRetries": 5, - "logs": [] + "logs": [ + { + "timestamp": "2026-03-27T09:13:56.593Z", + "type": "info", + "message": "PM 지시: [task-1] L1(compileJava) + L6(bootJar) 통과. done_when 조건 충족.\n[task-3] ApiResponse.java + GlobalExceptionHandler.java 이미 생성됨. compileJava 통과로 done_when(build pass) 충족.\n[task-4] SecurityConfig, JwtTokenProvider, JwtAuthenticationFilter 이미 생성됨. compileJava 통과. 패키지 경로가 plan과 다르나(security/ 패키지) 빌드 통과로 done_when 충족.\n[task-5] CommonMapper.java, CommonMapper.xml, CommonService.java 이미 생성됨. compileJava 통과로 done_when(build pass) 충족.\n[task-2] DecimalUtils.java와 DecimalUtilsTest.java가 이미 존재한다. 새로 만들지 말고 기존 파일을 확인하라. verify 명령어(./gradlew test --tests '*DecimalUtils*')를 실행하여 유닛 테스트 통과를 확인하라. 테스트 실패 시에만 코드를 수정하라. 메서드 목록: parse(String), multiply(String,String ... (truncated) ``` ## 검증 결과 ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L1 [PASS]: L1 통과: cd frontend && npx tsc --noEmit --pretty 2>&1 | head -50 ``` L1 통과: cd frontend && npx tsc --noEmit --pretty 2>&1 | head -50 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/frontend && npx next build 2>&1 | ``` L2 통과: cd /Users/gbpark/TEST-VEX/frontend && npx next build 2>&1 | ```