feat: 추천 작업 5종 일괄 진행 (4 agents 병렬)
[A] 등록 모달 7페이지 (frontend) - CompanyList / ProductList / Commission / Payout / Override / Chargeback / ExceptionCode - ModalForm 580px, Switch Y/N 변환, 날짜 dayjs, PermissionButton - api/company/product/rule.ts 에 SaveReq + create/update/remove 추가 [B] BatchRun + RoleList 보강 (frontend) - BatchRun: 정산월/보험사 선택 → 실행, antd Steps 8단계 + 5초 폴링 (refetchInterval 자동 정지), KPI 4 카드, 최근 이력 - RoleList: 좌(역할 목록) 우(메뉴×6권한 매트릭스 체크박스), DIRECTORY 들여쓰기, 전체 토글, Modal.confirm 후 저장 [C] 이체파일 + 은행 어댑터 (api) - BankTransferFileGenerator 인터페이스 + GenericCsvTransferGenerator (UTF-8 BOM, 표준 CSV) + KbBankTransferGenerator (088, 고정폭 + 합계) - BankTransferFactory (Spring Map 빈) - TransferFileService: PENDING 조회 → 파일 생성 → file_storage 적재 → pay_file_ref 갱신 → status=SENT - POST /api/payments/transfer-file (DataChangeLog + EXPORT 권한) - account_no EncryptTypeHandler 자동 복호화 후 파일에 사용 - FileService.saveBytes(byte[]) 오버로드 추가 - PaymentList: 이체파일 생성 ModalForm + 다운로드 컬럼 [D] MockMvc Controller 테스트 (api) - AbstractControllerTest (SpringBootTest + MockMvc, JwtFilter doAnswer 로 chain 통과 처리), TestSecurityConfig (filter 빈 override) - 5 클래스 36 테스트: Agent/Contract/Ledger/Settle/User Controller - happy path + validation 400 + 권한 403 + 인증 401 검증: - ./gradlew clean build 성공 - 백엔드 단위테스트 94건 (common 33 + batch 19 + api 36 + 기타 6) 통과 - 프론트 tsc -b / vite build 통과 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,4 +19,7 @@ public interface PaymentMapper {
|
||||
@Param("failReason") String failReason);
|
||||
int updateTransferFile(@Param("paymentIds") List<Long> paymentIds,
|
||||
@Param("transferFileId") Long transferFileId);
|
||||
|
||||
List<PaymentVO> selectPendingByMonthAndBank(@Param("settleMonth") String settleMonth,
|
||||
@Param("bankCode") String bankCode);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.ga.core.vo.settle;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TransferFileResp {
|
||||
private Long fileId;
|
||||
private String fileName;
|
||||
private int paymentCount;
|
||||
private BigDecimal totalAmount;
|
||||
}
|
||||
@@ -69,6 +69,18 @@
|
||||
WHERE payment_id = #{paymentId}
|
||||
</update>
|
||||
|
||||
<select id="selectPendingByMonthAndBank" resultMap="VOMap">
|
||||
SELECT p.*
|
||||
FROM payment p
|
||||
JOIN settle_master s ON s.settle_id = p.settle_id
|
||||
WHERE p.pay_status = 'PENDING'
|
||||
AND s.settle_month = #{settleMonth}
|
||||
<if test="bankCode != null and bankCode != '' and bankCode != 'GENERIC_CSV'">
|
||||
AND p.bank_code = #{bankCode}
|
||||
</if>
|
||||
ORDER BY p.payment_id
|
||||
</select>
|
||||
|
||||
<update id="updateTransferFile">
|
||||
UPDATE payment SET transfer_file_id = #{transferFileId}, pay_status = 'SENT', updated_at = NOW()
|
||||
WHERE payment_id IN
|
||||
|
||||
Reference in New Issue
Block a user