# Pipeline: XML SQL 포맷팅 (덕일 스타일) ## config - max_retries: 3 - parallel: true - timeout: 15m - design_first: false - model: sonnet - max_concurrent: 5 ## tasks ### task-1: CommonMapper + AdminMapper + AuthMapper XML 포맷팅 [backend] - depends: none - done_when: 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 - test: cd backend-spring && ./gradlew compileJava 2>&1 | tail -20 - context: | XML 내부 SQL 쿼리를 덕일 스타일로 포맷팅. 기능 변경 없이 포맷만 변경. ★ 규칙 1: 키워드 전부 대문자 select → SELECT, from → FROM, where → WHERE, and → AND, or → OR, left join → LEFT JOIN, inner join → INNER JOIN, order by → ORDER BY, group by → GROUP BY, having → HAVING, insert into → INSERT INTO, update → UPDATE, set → SET, delete → DELETE, values → VALUES, as → AS, on → ON, in → IN, not → NOT, null → NULL, is → IS, like → LIKE, ilike → ILIKE, between → BETWEEN, exists → EXISTS, not exists → NOT EXISTS, case → CASE, when → WHEN, then → THEN, else → ELSE, end → END, union all → UNION ALL, with recursive → WITH RECURSIVE, cast → CAST, coalesce → COALESCE, count → COUNT, sum → SUM, max → MAX, min → MIN, avg → AVG, distinct → DISTINCT, limit → LIMIT, offset → OFFSET, asc → ASC, desc → DESC, now() → NOW(), upper() → UPPER(), lower() → LOWER(), to_char() → TO_CHAR(), array[] → ARRAY[], lpad() → LPAD(), true → TRUE, false → FALSE ★ 규칙 2: 컬럼명/테이블명/별칭 전부 대문자 user_id → USER_ID, company_code → COMPANY_CODE, menu_info → MENU_INFO, v → V, s → S, cm → CM, menu → MENU 등 ★ 규칙 3: SELECT 컬럼은 한 줄에 하나, 쉼표는 컬럼 앞에 변경 전: SELECT id, title, description, status FROM todo_items WHERE 1=1 변경 후: SELECT ID , TITLE , DESCRIPTION , STATUS FROM TODO_ITEMS WHERE 1=1 ★ 규칙 4: INSERT VALUES 한 줄에 하나 변경 전: INSERT INTO table (col1, col2) VALUES (#{val1}, #{val2}) 변경 후: INSERT INTO TABLE ( COL1 , COL2 ) VALUES ( #{val1} , #{val2} ) ★ 규칙 5: UPDATE SET 한 줄에 하나 변경 전: UPDATE table SET col1 = #{val1}, col2 = #{val2} WHERE id = #{id} 변경 후: UPDATE TABLE SET COL1 = #{val1} , COL2 = #{val2} WHERE ID = #{id} ★ 규칙 6: JOIN/WHERE/ORDER BY 절 단위 줄 구분 변경 전: FROM v_menu v LEFT JOIN company_mng cm ON v.company_code = cm.company_code WHERE v.status = 'active' ORDER BY v.seq 변경 후: FROM V_MENU V LEFT JOIN COMPANY_MNG CM ON V.COMPANY_CODE = CM.COMPANY_CODE WHERE V.STATUS = 'active' ORDER BY V.SEQ ★ 규칙 7: 절대 바꾸면 안 되는 것 - #{파라미터}는 camelCase 유지: #{companyCode}, #{menuType}, #{userId} - MyBatis 태그 test="" 안의 변수명 camelCase 유지 - SQL 문자열 리터럴 값 유지: 'active', '*', 'SUPER_ADMIN' 등 - ,