# 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` — `<foreach>` 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<String>). 테스트 케이스: 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 | 
```
