# Round 1 - 시간: 2026. 3. 28. 오후 1:38:47 ## backend (성공) ### 에이전트 응답 ``` 7개 파일 모두 완료했습니다. **적용된 변경 사항:** | 파일 | 변경 내용 | |------|-----------| | ShippingPlanMapper.xml | `ON true` → `ON TRUE`, SELECT/FROM/WHERE/ORDER BY 사이 빈 줄 추가 | | ShippingOrderMapper.xml | `json_agg` → `JSON_AGG`, `json_build_object` → `JSON_BUILD_OBJECT`, `ON true` → `ON TRUE`, 빈 줄 추가 | | BookingMapper.xml | SELECT/FROM/WHERE/ORDER BY/SET/WHERE 사이 빈 줄 추가 | | DriverMapper.xml | SELECT/FROM/WHERE/SET 사이 빈 줄 추가 | | VehicleMapper.xml | SELECT/FROM/WHERE/SET 사이 빈 줄 추가 | | VehicleTripMapper.xml | 모든 쿼리의 SELECT/FROM/WHERE/GROUP BY/ORDER BY/SET 사이 빈 줄 추가 | | YardLayoutMapper.xml | SELECT/FROM/WHERE/SET 사이 빈 줄 추가 | ``` ## backend (성공) ### 에이전트 응답 ``` 소문자 SQL 키워드 잔존 없음 확인. 변경 요약: **AnalyticsReportMapper.xml:** - 타입 키워드 대문자화: `::date::text` → `::DATE::TEXT`, `::text` → `::TEXT`, `::numeric` → `::NUMERIC`, `AS numeric` → `AS NUMERIC` - 줄 띄움 적용: 서브쿼리 내 `FROM ... GROUP BY ...`, `FROM ... ORDER BY ...`, `FROM ... WHERE ...` → 각 절 별도 줄로 분리 - `SELECT DISTINCT ON (user_id) user_id, user_name FROM user_info` → FROM 줄 분리 **PackagingMapper.xml:** - `SELECT * FROM xxx` → `SELECT *` / `FROM xxx` 줄 분리 (4곳) - 서브쿼리 DELETE 내 `SELECT pkg_code FROM pkg_unit WHERE ...` → 각 절 별도 줄 분리 **DeliveryMapper.xml:** 이미 SQL 키워드 전부 대문자, 줄 구분 완료 → 수정 불필요 ``` ## backend (성공) ### 에이전트 응답 ``` 4개 XML 파일 포맷팅 완료: | 파일 | 변경 내용 | |------|-----------| | **TaxInvoiceMapper.xml** | 테이블/컬럼명 소문자→대문자 (`tax_invoice`→`TAX_INVOICE` 등), 인라인 `` 14개 줄 분리 | | **BomMapper.xml** | `updateBom` `` 블록 인라인 `` 7개 줄 분리 | | **ProductionMapper.xml** | `updateProduction` `` 블록 인라인 `` 10개 줄 분리 | | **SalesReportMapper.xml** | 테이블/컬럼명/alias 대문자化 (`SOM`, `SOD`, `CM`, `II`, `SALES_ORDER_MNG` 등), `CAST AS NUMERIC` 등 | done_when 조건 충족: **SQL 전부 대문자 + 줄 띄움** ✓ ``` ## backend (성공) ### 에이전트 응답 ``` 포맷팅 완료했습니다. ## 변경 사항 요약 **WorkHistoryMapper.xml:** - `::date` → `::DATE`, `::integer` → `::INTEGER` - `is_on_time = true` → `is_on_time = TRUE` - SELECT/FROM/WHERE/ORDER BY/GROUP BY 사이 빈 줄 추가 **MoldMapper.xml:** - SELECT/FROM/WHERE/ORDER BY 사이 빈 줄 추가 - SET/WHERE 사이 빈 줄 추가 **DesignMapper.xml:** - `json_agg` → `JSON_AGG`, `json_build_object` → `JSON_BUILD_OBJECT` - `'[]'::json` → `'[]'::JSON` - SELECT/FROM/WHERE/ORDER BY 사이 빈 줄 추가, SET/WHERE 사이 빈 줄 추가 **CollectionMapper.xml:** - `::jsonb` → `::JSONB` (INSERT/UPDATE 내 2곳) - SELECT/FROM/WHERE/ORDER BY 사이 빈 줄 추가, SET/WHERE 사이 빈 줄 추가 **PopActionMapper.xml, PopProductionMapper.xml, DataMapper.xml:** SQL 없음 → 변경 불필요 ``` ## backend (성공) ### 에이전트 응답 ``` 3개 파일 모두 포맷팅 완료했습니다. **변경 사항 요약:** **ScreenManagementMapper.xml** (816줄 → 완전 포맷팅) - 모든 SQL 키워드 대문자 (SELECT, FROM, WHERE, AND, INSERT INTO, UPDATE, SET, DELETE, ORDER BY, LIMIT, OFFSET, ON CONFLICT, RETURNING, NOW(), COALESCE, JSONB_ARRAY_LENGTH, PG_ADVISORY_XACT_LOCK 등) - 모든 테이블명/컬럼명/별칭 대문자 (SCREEN_DEFINITIONS, SD, SMA, SL, SLV 등) - SELECT 컬럼 한 줄에 하나, 쉼표 앞에 배치 - INSERT 컬럼/VALUES 한 줄에 하나 - UPDATE SET 한 줄에 하나, 쉼표 앞에 배치 - ON CONFLICT DO UPDATE SET도 동일 규칙 적용 - MyBatis `` 동적 블록: 컬럼명 대문자, 구조 유지 - 불변 요소 유지: `#{param}` camelCase, `test=""` 변수명, 문자열 리터럴(`'D'`, `'Y'`, `'public'`, `'component'`, `'기본 레이어'` 등), JSON key 경로(`->>'zone_id'`, `->'components'`) **ScreenStandardMapper.xml** - 동일 규칙 적용 (WEB_TYPE_STANDARDS, BUTTON_ACTION_STANDARDS 등) **ScreenFileMapper.xml** - 동일 규칙 적용 (ATTACH_FILE_INFO, OBJID, SAVED_FILE_NAME 등) ``` ## backend (성공) ### 에이전트 응답 ``` 완료 메시지 전송 완료. ``` ## backend (성공) ### 에이전트 응답 ``` 포맷팅 완료. 변경 내역 요약: | 파일 | 변경 내용 | |------|-----------| | **DigitalTwinMapper.xml** | 테이블/컬럼/별칭 대문자, SELECT 컬럼 줄 분리, INSERT/UPDATE/DELETE 포맷팅, `false→FALSE` | | **DashboardMapper.xml** | `SELECT * FROM`→줄 분리, INSERT 컬럼/VALUES 줄 분리, SET 줄 분리 | | **ReportMapper.xml** | 전체 컬럼 대문자, SELECT 컬럼 하나씩 줄 분리, INSERT/UPDATE/DELETE 포맷팅 | | **BarcodeLabelMapper.xml** | 테이블/컬럼 대문자, SELECT/INSERT/UPDATE/DELETE 전체 포맷팅 | | **ExcelMappingMapper.xml** | 테이블/컬럼 대문자, `ON CONFLICT` 컬럼 대문자, SELECT 줄 분리 | | **MapDataMapper.xml** | SQL 없음 — 변경 불필요 | | **RiskAlertMapper.xml** | 이미 포맷팅 완료 — 변경 불필요 | ``` ## backend (성공) ### 에이전트 응답 ``` Task 2 완료. 요약: | 파일 | 주요 변경 | |------|-----------| | `AuditLogMapper.xml` | SAL/CI/U 별칭, `::TIMESTAMPTZ`, `::JSONB`, `::INT` | | `RoleMapper.xml` | ASU/UI/AM/ASM/MI 별칭, `updateRoleGroup` inline `` 확장 | | `ApprovalMapper.xml` | R/D/L/T/PS/U1/U2 별칭, 3개 `` 블록 확장, `DATERANGE()`, `INFORMATION_SCHEMA.COLUMNS`, `::JSONB/::TEXT`, `TRUE/FALSE` | 이전 세션에서 완료된 5개 + 이번 3개 = **총 8개 파일** 포맷팅 완료. PM 완료 메시지 전송됨. ``` ## 코드 변경 (git diff) ### Unstaged 변경 ``` _pipeline/knowledge/failure-patterns.json | 95 +- _pipeline/mailbox/mcp-backend.json | 2 +- _pipeline/pipeline-state.json | 501 +++----- .../heartbeat.json | 2 +- .../2026-03-27_pipe-20260327153425-pn5v/metrics.md | 12 +- .../progress.md | 8 +- .../resume-state.json | 44 +- .../resources/mapper/AnalyticsReportMapper.xml | 111 +- .../src/main/resources/mapper/ApprovalMapper.xml | 583 +++++---- .../src/main/resources/mapper/AuditLogMapper.xml | 132 +- .../main/resources/mapper/BarcodeLabelMapper.xml | 171 ++- .../src/main/resources/mapper/BomMapper.xml | 28 +- .../src/main/resources/mapper/BookingMapper.xml | 11 + .../mapper/CategoryValueCascadingMapper.xml | 6 +- .../src/main/resources/mapper/CollectionMapper.xml | 24 +- .../resources/mapper/CompanyManagementMapper.xml | 20 +- .../src/main/resources/mapper/DashboardMapper.xml | 23 +- .../src/main/resources/mapper/DepartmentMapper.xml | 180 +-- .../src/main/resources/mapper/DesignMapper.xml | 74 +- .../main/resources/mapper/DigitalTwinMapper.xml | 241 ++-- .../src/main/resources/mapper/DriverMapper.xml | 30 +- .../main/resources/mapper/ExcelMappingMapper.xml | 120 +- .../src/main/resources/mapper/LayoutMapper.xml | 157 +-- .../src/main/resources/mapper/MoldMapper.xml | 45 +- .../src/main/resources/mapper/PackagingMapper.xml | 24 +- .../src/main/resources/mapper/ProductionMapper.xml | 76 +- .../src/main/resources/mapper/ReportMapper.xml | 380 ++++-- .../src/main/resources/mapper/RoleMapper.xml | 99 +- .../main/resources/mapper/SalesReportMapper.xml | 153 +-- .../resources/mapper/ScreenEmbeddingMapper.xml | 198 +-- .../src/main/resources/mapper/ScreenFileMapper.xml | 70 +- .../main/resources/mapper/ScreenGroupMapper.xml | 1115 +++++++++-------- .../resources/mapper/ScreenManagementMapper.xml | 1312 ++++++++++++++------ .../main/resources/mapper/ScreenStandardMapper.xml | 54 +- .../main/resources/mapper/ShippingOrderMapper.xml | 47 +- .../main/resources/mapper/ShippingPlanMapper.xml | 12 +- .../main/resources/mapper/SystemNoticeMapper.xml | 72 +- .../src/main/resources/mapper/TaxInvoiceMapper.xml | 372 +++--- .../src/main/resources/mapper/VehicleMapper.xml | 24 +- .../main/resources/mapper/VehicleTripMapper.xml | 77 +- .../resources/mapper/WebTypeStandardMapper.xml | 88 +- .../main/resources/mapper/WorkHistoryMapper.xml | 44 +- .../src/main/resources/mapper/YardLayoutMapper.xml | 37 +- 43 files changed, 4082 insertions(+), 2792 deletions(-) ``` ### 새 파일 ``` _pipeline/runs/2026-03-27_pipe-20260327153425-pn5v/result.md _pipeline/runs/2026-03-27_pipe-20260327153425-pn5v/rounds/round-3.md _pipeline/runs/2026-03-28_pipe-20260328041806-pbum/heartbeat.json _pipeline/runs/2026-03-28_pipe-20260328041806-pbum/plan.md _pipeline/runs/2026-03-28_pipe-20260328041806-pbum/progress.md ``` ### 상세 diff ```diff diff --git a/_pipeline/knowledge/failure-patterns.json b/_pipeline/knowledge/failure-patterns.json index 07e04e27..0be7514f 100644 --- a/_pipeline/knowledge/failure-patterns.json +++ b/_pipeline/knowledge/failure-patterns.json @@ -1,7 +1,7 @@ { "version": 1, - "lastUpdated": "2026-03-27T15:03:25.661Z", - "totalRuns": 2, + "lastUpdated": "2026-03-27T20:12:58.287Z", + "totalRuns": 3, "patterns": [ { "id": "fp-zhbg8k", @@ -1760,6 +1760,97 @@ "pipelineIds": [ "pipe-20260327131904-jedw" ] + }, + { + "id": "sp-t390fp", + "agent": "backend", + "taskDescription": "CommonMapper + AdminMapper + AuthMapper XML 포맷팅", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] + }, + { + "id": "sp-geca3v", + "agent": "backend", + "taskDescription": "Table/Entity XML 포맷팅 (8개)", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] + }, + { + "id": "sp-tc7oez", + "agent": "backend", + "taskDescription": "Dataflow/Flow XML 포맷팅 (9개)", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] + }, + { + "id": "sp-afwrkh", + "agent": "backend", + "taskDescription": "CommonCode/Config XML 포맷팅 (7개)", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] + }, + { + "id": "sp-9fwgrf", + "agent": "backend", + "taskDescription": "External/Connection XML 포맷팅 (6개)", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] + }, + { + "id": "sp-i37j17", + "agent": "backend", + "taskDescription": "Batch/Schedule/기타 XML 포맷팅 (10개)", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] + }, + { + "id": "sp-h0hlek", + "agent": "backend", + "taskDescription": "Mail/Cascading XML 포맷팅 (11개)", + "files": [], + "keyApproach": "- 에이전트: backend - 시도: 1회 - 검증 로그: - L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa", + "occurrences": 1, + "firstSeen": "2026-03-27T20:12:58.287Z", + "lastSeen": "2026-03-27T20:12:58.287Z", + "pipelineIds": [ + "pipe-20260327153425-pn5v" + ] } ] } \ No newline at end of file diff --git a/_pipeline/mailbox/mcp-backend.json b/_pipeline/mailbox/mcp-backend.json index 88c9c6a1..bd2e0239 100644 --- a/_pipeline/mailbox/mcp-backend.json +++ b/_pipeline/mailbox/mcp-backend.json @@ -6,7 +6,7 @@ "/Users/gbpark/agent-pipeline/engine/build/mcp/mailbox-stdio-bridge.js" ], "env": { - "MAILBOX_URL": "http://127.0.0.1:60440", + "MAILBOX_URL": "http://127.0.0.1:58370", "MAILBOX_AGENT": "backend" } } diff --git a/_pipeline/pipeline-state.json b/_pipeline/pipeline-state.json index 86206539..2d8d2ab1 100644 --- a/_pipeline/pipeline-state.json +++ b/_pipeline/pipeline-state.json @@ -1,14 +1,14 @@ { - "id": "pipe-20260327153425-pn5v", + "id": "pipe-20260328041806-pbum", "status": "running", "config": { "maxRetries": 3, "parallel": true, - "timeout": "15m", + "timeout": "30m", "workspacePath": "/Users/gbpark/TEST-VEX", "designFirst": false, "model": "sonnet", - "maxConcurrent": 3, + "maxConcurrent": 5, "skipLevels": [ "L3", "L4", @@ -19,471 +19,281 @@ "tasks": [ { "id": "task-1", - "name": "CommonMapper + AdminMapper + AuthMapper XML 포맷팅", + "name": "Screen/Layout XML 포맷팅 (3+4 분리)", "agent": "backend", - "description": "CommonMapper + AdminMapper + AuthMapper XML 포맷팅", - "depends": [], - "testCommand": "cd backend-spring && ./gradlew compileJava 2>&1 | tail -20", - "doneWhen": "SQL 키워드/컬럼/테이블 전부 대문자, 컬럼별 줄 띄움", - "files": [ - "backend-spring/src/main/resources/mapper/CommonMapper.xml", - "backend-spring/src/main/resources/mapper/AdminMapper.xml", - "backend-spring/src/main/resources/mapper/AuthMapper.xml" - ], - "taskContext": "XML 내부 SQL 쿼리를 덕일 스타일로 포맷팅. 기능 변경 없이 포맷만 변경.\n\n★ 규칙 1: 키워드 전부 대문자\nselect → SELECT, from → FROM, where → WHERE, and → AND, or → OR,\nleft join → LEFT JOIN, inner join → INNER JOIN, order by → ORDER BY,\ngroup by → GROUP BY, having → HAVING, insert into → INSERT INTO,\nupdate → UPDATE, set → SET, delete → DELETE, values → VALUES,\nas → AS, on → ON, in → IN, not → NOT, null → NULL,\nis → IS, like → LIKE, ilike → ILIKE, between → BETWEEN,\nexists → EXISTS, not exists → NOT EXISTS,\ncase → CASE, when → WHEN, then → THEN, else → ELSE, end → END,\nunion all → UNION ALL, with recursive → WITH RECURSIVE,\ncast → CAST, coalesce → COALESCE, count → COUNT, sum → SUM,\nmax → MAX, min → MIN, avg → AVG, distinct → DISTINCT,\nlimit → LIMIT, offset → OFFSET, asc → ASC, desc → DESC,\nnow() → NOW(), upper() → UPPER(), lower() → LOWER(),\nto_char() → TO_CHAR(), array[] → ARRAY[], lpad() → LPAD(),\ntrue → TRUE, false → FALSE\n\n★ 규칙 2: 컬럼명/테이블명/별칭 전부 대문자\nuser_id → USER_ID, company_code → COMPANY_CODE, menu_info → MENU_INFO,\nv → V, s → S, cm → CM, menu → MENU 등\n\n★ 규칙 3: SELECT 컬럼은 한 줄에 하나, 쉼표는 컬럼 앞에\n변경 전:\nSELECT id, title, description, status FROM todo_items WHERE 1=1\n\n변경 후:\nSELECT\n ID\n , TITLE\n , DESCRIPTION\n , STATUS\nFROM TODO_ITEMS\nWHERE 1=1\n\n★ 규칙 4: INSERT VALUES 한 줄에 하나\n변경 전:\nINSERT INTO table (col1, col2) VALUES (#{val1}, #{val2})\n\n변경 후:\nINSERT INTO TABLE (\n COL1\n , COL2\n) VALUES (\n #{val1}\n , #{val2}\n)\n\n★ 규칙 5: UPDATE SET 한 줄에 하나\n변경 전:\nUPDATE table SET col1 = #{val1}, col2 = #{val2} WHERE id = #{id}\n\n변경 후:\nUPDATE TABLE\nSET\n COL1 = #{val1}\n , COL2 = #{val2}\nWHERE ID = #{id}\n\n★ 규칙 6: JOIN/WHERE/ORDER BY 절 단위 줄 구분\n변경 전:\nFROM v_menu v LEFT JOIN company_mng cm ON v.company_code = cm.company_code WHERE v.status = 'active' ORDER BY v.seq\n\n변경 후:\nFROM V_MENU V\nLEFT JOIN COMPANY_MNG CM\n ... (truncated) ``` ## 검증 결과 ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` ### L1 [PASS]: L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` L1 통과: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 ``` ### L2 [PASS]: L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ``` L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa ```