[agent-pipeline] pipe-20260328041806-pbum round-2

This commit is contained in:
DDD1542
2026-03-28 13:40:51 +09:00
parent 86699cb911
commit 298619fb4a
103 changed files with 771 additions and 10 deletions
+28 -4
View File
@@ -401,10 +401,34 @@
"backend-spring/src/main/resources/mapper/"
],
"taskContext": "XML 파일명을 덕일 스타일 소문자로 변경.\n\nAdminMapper.xml → admin.xml\nTodoMapper.xml → todo.xml\nCommonMapper.xml → common.xml\nAuthMapper.xml → auth.xml\nDataAdvancedMapper.xml → dataAdvanced.xml\nTableCategoryValueMapper.xml → tableCategoryValue.xml\nScreenManagementMapper.xml → screenManagement.xml\nAiAssistantProxyMapper.xml → aiAssistantProxy.xml\nAnalyticsReportMapper.xml → analyticsReport.xml\n... (96개 전부 동일 규칙: PascalCase에서 \"Mapper\" 제거 후 camelCase)\n\napplication.yml의 mapper-locations는 classpath:mapper/*.xml 이므로\n파일명만 바꿔도 자동 인식.\n\n★ git mv를 사용하여 이력 보존할 것.\n★ 파일 내부는 건드리지 말 것 (이미 포맷팅 완료).\n",
"status": "pending",
"attempts": 0,
"status": "success",
"attempts": 1,
"maxRetries": 3,
"logs": []
"logs": [
{
"timestamp": "2026-03-28T04:39:10.863Z",
"type": "info",
"message": "Agent(backend) 호출 시작 (시도 1)"
},
{
"timestamp": "2026-03-28T04:40:45.549Z",
"type": "agent",
"message": "Agent 응답 수신 (120자)"
},
{
"timestamp": "2026-03-28T04:40:51.610Z",
"type": "test",
"message": "L1 통과: cd backend-spring && ls src/main/resources/mapper/ | grep -c"
},
{
"timestamp": "2026-03-28T04:40:51.610Z",
"type": "test",
"message": "L2 통과: cd /Users/gbpark/TEST-VEX/backend-spring && ./gradlew bootJa"
}
],
"startedAt": "2026-03-28T04:39:10.860Z",
"agentOutput": "96개 XML 파일 리스트 확인. `git mv`로 일괄 이름 변경합니다.매핑 확인 완료. 실제 `git mv` 실행합니다.모든 96개 파일 이름 변경 완료. `*Mapper.xml` 파일이 하나도 남지 않았습니다.",
"completedAt": "2026-03-28T04:40:51.610Z"
},
{
"id": "task-10",
@@ -428,7 +452,7 @@
}
],
"totalTasks": 10,
"completedTasks": 8,
"completedTasks": 9,
"failedTasks": 0,
"runningTasks": 0,
"startedAt": "2026-03-28T04:18:06.314Z",
@@ -1 +1 @@
{"pid":10584,"round":1,"status":"running","timestamp":"2026-03-28T04:38:36.655Z","uptimeMs":1230465.701625}
{"pid":10584,"round":2,"status":"running","timestamp":"2026-03-28T04:40:40.863Z","uptimeMs":1354675.667958}
@@ -0,0 +1,32 @@
# 실행 메트릭
| 항목 | 값 |
|------|------|
| 총 에이전트 호출 | 9회 |
| 총 소요 시간 | 4456초 |
| 평균 호출 시간 | 495초 |
## 토큰 사용량
| 항목 | 값 |
|------|------|
| input_tokens | 23237 |
| output_tokens | 368829 |
| cache_read_tokens | 5854952 |
| cache_write_tokens | 1069935 |
| 입력 비용 | $0.3486 |
| 출력 비용 | $27.6622 |
| 총 비용 | $28.0107 |
## 호출 상세
| 에이전트 | 라운드 | 소요(s) | 입력토큰 | 출력토큰 | 시간 |
|----------|--------|---------|----------|----------|------|
| backend | 1 | 328 | 17.2K | 28.6K | 오후 1:23:36 |
| backend | 1 | 334 | 8 | 25.8K | 오후 1:23:42 |
| backend | 1 | 442 | 8 | 39.7K | 오후 1:25:29 |
| backend | 1 | 346 | 564 | 27.6K | 오후 1:29:31 |
| backend | 1 | 701 | 741 | 63.9K | 오후 1:29:47 |
| backend | 1 | 908 | 2.0K | 72.0K | 오후 1:33:15 |
| backend | 1 | 578 | 18 | 47.8K | 오후 1:33:17 |
| backend | 1 | 796 | 2.6K | 63.4K | 오후 1:38:47 |
| pm | 1 | 23 | 0 | 0 | 오후 1:39:10 |
@@ -1,9 +1,9 @@
# Pipeline: pipe-20260328041806-pbum
- 시작: 2026. 3. 28. 오후 1:18:06
- 상태: **running**
- 현재 라운드: 1/25
- 경과 시간: 20분 30
- 성공: 0 / 실패: 0 / 전체: 10
- 현재 라운드: 2/25
- 경과 시간: 22분 35
- 성공: 8 / 실패: 0 / 전체: 10
## 태스크 현황
| 태스크 | 에이전트 | 상태 | 시도 | 검증 |
@@ -15,9 +15,12 @@
| task-5 | backend | 완료 | 1/3 | L2 통과: cd /Users/gbpark/TEST-V |
| task-6 | backend | 완료 | 1/3 | L2 통과: cd /Users/gbpark/TEST-V |
| task-7 | backend | 완료 | 1/3 | L2 통과: cd /Users/gbpark/TEST-V |
| task-8 | backend | 대기 | 0/3 | - |
| task-8 | backend | 완료 | 1/3 | L2 통과: cd /Users/gbpark/TEST-V |
| task-9 | backend | 대기 | 0/3 | - |
| task-10 | backend | 대기 | 0/3 | - |
## PM 마지막 판단
Round 1에서 task-1~task-7 총 7개 백엔드 태스크가 모두 성공적으로 완료됨. 각 에이전트가 XML Mapper 파일들의 SQL 키워드/테이블명/컬럼명 대문자화, SELECT 컬럼 줄 분리, INSERT/UPDATE 포맷팅, 인라인 <if> 태그 확장 등을 수행함. 43개 파일에서 총 4,082줄 추가 / 2,792줄 삭제의 변경이 발생했으며
---
마지막 업데이트: 2026. 3. 28. 오후 1:38:36
마지막 업데이트: 2026. 3. 28. 오후 1:40:40
@@ -0,0 +1,169 @@
{
"pipelineId": "pipe-20260328041806-pbum",
"runDir": "/Users/gbpark/TEST-VEX/_pipeline/runs/2026-03-28_pipe-20260328041806-pbum",
"lastCompletedRound": 1,
"maxRounds": 25,
"taskStatuses": [
{
"id": "task-1",
"status": "success",
"attempts": 1
},
{
"id": "task-2",
"status": "success",
"attempts": 1
},
{
"id": "task-3",
"status": "success",
"attempts": 1
},
{
"id": "task-4",
"status": "success",
"attempts": 1
},
{
"id": "task-5",
"status": "success",
"attempts": 1
},
{
"id": "task-6",
"status": "success",
"attempts": 1
},
{
"id": "task-7",
"status": "success",
"attempts": 1
},
{
"id": "task-8",
"status": "success",
"attempts": 1
},
{
"id": "task-9",
"status": "pending",
"attempts": 0
},
{
"id": "task-10",
"status": "pending",
"attempts": 0
}
],
"pmLastSummary": "Round 1에서 task-1~task-7 총 7개 백엔드 태스크가 모두 성공적으로 완료됨. 각 에이전트가 XML Mapper 파일들의 SQL 키워드/테이블명/컬럼명 대문자화, SELECT 컬럼 줄 분리, INSERT/UPDATE 포맷팅, 인라인 <if> 태그 확장 등을 수행함. 43개 파일에서 총 4,082줄 추가 / 2,792줄 삭제의 변경이 발생했으며",
"metrics": {
"calls": [
{
"agent": "backend",
"round": 1,
"durationMs": 327608,
"outputLength": 612,
"timestamp": "2026-03-28T04:23:36.255Z",
"inputTokens": 17238,
"outputTokens": 28576,
"cacheReadTokens": 123232,
"cacheWriteTokens": 80988
},
{
"agent": "backend",
"round": 1,
"durationMs": 334400,
"outputLength": 584,
"timestamp": "2026-03-28T04:23:42.545Z",
"inputTokens": 8,
"outputTokens": 25772,
"cacheReadTokens": 286608,
"cacheWriteTokens": 57201
},
{
"agent": "backend",
"round": 1,
"durationMs": 441876,
"outputLength": 463,
"timestamp": "2026-03-28T04:25:29.521Z",
"inputTokens": 8,
"outputTokens": 39716,
"cacheReadTokens": 287797,
"cacheWriteTokens": 126019
},
{
"agent": "backend",
"round": 1,
"durationMs": 346475,
"outputLength": 672,
"timestamp": "2026-03-28T04:29:31.522Z",
"inputTokens": 564,
"outputTokens": 27594,
"cacheReadTokens": 889406,
"cacheWriteTokens": 146309
},
{
"agent": "backend",
"round": 1,
"durationMs": 700556,
"outputLength": 830,
"timestamp": "2026-03-28T04:29:47.200Z",
"inputTokens": 741,
"outputTokens": 63942,
"cacheReadTokens": 553904,
"cacheWriteTokens": 110364
},
{
"agent": "backend",
"round": 1,
"durationMs": 908053,
"outputLength": 13,
"timestamp": "2026-03-28T04:33:15.199Z",
"inputTokens": 2033,
"outputTokens": 72017,
"cacheReadTokens": 1545765,
"cacheWriteTokens": 157130
},
{
"agent": "backend",
"round": 1,
"durationMs": 578270,
"outputLength": 576,
"timestamp": "2026-03-28T04:33:17.025Z",
"inputTokens": 18,
"outputTokens": 47820,
"cacheReadTokens": 1155756,
"cacheWriteTokens": 173109
},
{
"agent": "backend",
"round": 1,
"durationMs": 795531,
"outputLength": 409,
"timestamp": "2026-03-28T04:38:47.553Z",
"inputTokens": 2627,
"outputTokens": 63392,
"cacheReadTokens": 1012484,
"cacheWriteTokens": 218815
},
{
"agent": "pm",
"round": 1,
"durationMs": 23010,
"outputLength": 1570,
"timestamp": "2026-03-28T04:39:10.858Z"
}
],
"totalDurationMs": 4455779,
"totalCalls": 9,
"totalInputTokens": 23237,
"totalOutputTokens": 368829,
"totalCacheReadTokens": 5854952,
"totalCacheWriteTokens": 1069935
},
"savedAt": "2026-03-28T04:39:10.859Z",
"planFilePath": "/Users/gbpark/agent-pipeline/test-vex/plans/xml-formatting-2.md",
"claudeSessionIds": {
"backend": "9d03d724-3b21-4230-81c2-e762050f2c96"
}
}
@@ -0,0 +1,78 @@
# PM 판단 - Round 1
- 시간: 2026. 3. 28. 오후 1:39:10
## 분석
Round 1에서 task-1~task-7 총 7개 백엔드 태스크가 모두 성공적으로 완료됨. 각 에이전트가 XML Mapper 파일들의 SQL 키워드/테이블명/컬럼명 대문자화, SELECT 컬럼 줄 분리, INSERT/UPDATE 포맷팅, 인라인 <if> 태그 확장 등을 수행함. 43개 파일에서 총 4,082줄 추가 / 2,792줄 삭제의 변경이 발생했으며, L1(compileJava)과 L2(bootJar) 검증을 모두 통과함. 코드 품질 가드도 위반 없음. task-8, task-9, task-10은 아직 대기 상태로 다음 라운드에서 실행 필요.
## 태스크 지시
- **task-1** [done]: undefined
- **task-2** [done]: undefined
- **task-3** [done]: undefined
- **task-4** [done]: undefined
- **task-5** [done]: undefined
- **task-6** [done]: undefined
- **task-7** [done]: undefined
- **task-8** [retry]: task-8 실행. done_when 조건: SQL 전부 대문자 + 줄 띄움. 이전 7개 태스크와 동일한 포맷팅 규칙 적용. L1/L2 검증 필수.
- **task-9** [retry]: task-9 실행. done_when 조건: 모든 XML 파일명이 소문자 덕일 스타일. 파일명 변경 시 MyBatis mapper 설정에서 참조하는 경로도 함께 수정해야 함.
- **task-10** [retry]: task-10 실행. done_when 조건: bootJar 성공. 전체 빌드 최종 검증 태스크. task-8, task-9 완료 후 실행하는 것이 이상적이나, 현재 상태에서도 bootJar가 통과하는지 확인.
## 판정: **continue**
## 다음 라운드 핵심: task-8(잔여 XML 포맷팅), task-9(XML 파일명 소문자화), task-10(최종 bootJar 검증) 실행 완료. 특히 task-9는 파일명 변경이므로 MyBatis 설정 파일 내 mapper 경로 참조도 반드시 함께 수정해야 함.
---
## PM 원본 응답
```
```json
{
"analysis": "Round 1에서 task-1~task-7 총 7개 백엔드 태스크가 모두 성공적으로 완료됨. 각 에이전트가 XML Mapper 파일들의 SQL 키워드/테이블명/컬럼명 대문자화, SELECT 컬럼 줄 분리, INSERT/UPDATE 포맷팅, 인라인 <if> 태그 확장 등을 수행함. 43개 파일에서 총 4,082줄 추가 / 2,792줄 삭제의 변경이 발생했으며, L1(compileJava)과 L2(bootJar) 검증을 모두 통과함. 코드 품질 가드도 위반 없음. task-8, task-9, task-10은 아직 대기 상태로 다음 라운드에서 실행 필요.",
"taskUpdates": [
{
"taskId": "task-1",
"status": "done"
},
{
"taskId": "task-2",
"status": "done"
},
{
"taskId": "task-3",
"status": "done"
},
{
"taskId": "task-4",
"status": "done"
},
{
"taskId": "task-5",
"status": "done"
},
{
"taskId": "task-6",
"status": "done"
},
{
"taskId": "task-7",
"status": "done"
},
{
"taskId": "task-8",
"status": "retry",
"instruction": "task-8 실행. done_when 조건: SQL 전부 대문자 + 줄 띄움. 이전 7개 태스크와 동일한 포맷팅 규칙 적용. L1/L2 검증 필수."
},
{
"taskId": "task-9",
"status": "retry",
"instruction": "task-9 실행. done_when 조건: 모든 XML 파일명이 소문자 덕일 스타일. 파일명 변경 시 MyBatis mapper 설정에서 참조하는 경로도 함께 수정해야 함."
},
{
"taskId": "task-10",
"status": "retry",
"instruction": "task-10 실행. done_when 조건: bootJar 성공. 전체 빌드 최종 검증 태스크. task-8, task-9 완료 후 실행하는 것이 이상적이나, 현재 상태에서도 bootJar가 통과하는지 확인."
}
],
"newTasks": [],
"overallStatus": "continue",
"nextRoundFocus": "task-8(잔여 XML 포맷팅), task-9(XML 파일명 소문자화), task-10(최종 bootJar 검증) 실행 완료. 특히 task-9는 파일명 변경이므로 MyBatis 설정 파일 내 mapper 경로 참조도 반드시 함께 수정해야 함."
}
```
```
@@ -0,0 +1,455 @@
# 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` 등), 인라인 `<if>` 14개 줄 분리 |
| **BomMapper.xml** | `updateBom` `<set>` 블록 인라인 `<if>` 7개 줄 분리 |
| **ProductionMapper.xml** | `updateProduction` `<set>` 블록 인라인 `<if>` 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 `<set>` 동적 블록: 컬럼명 대문자, 구조 유지
- 불변 요소 유지: `#{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 `<if>` 확장 |
| `ApprovalMapper.xml` | R/D/L/T/PS/U1/U2 별칭, 3개 `<set>` 블록 확장, `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
```

Some files were not shown because too many files have changed in this diff Show More