Files
ga-commission-system/ga-common/src/main/java/com/ga/common/system/SystemLogMapper.java
T
GA Pro 17ab1098ec feat: 1200%룰 이연 분급 도래월 지급(PayInstallmentStep) + 코드베이스 신입교육 주석
PayInstallmentStep(Step 4.5): 1200%룰로 이연된 분급(installment_plan SCHEDULED)을
도래월(settle_month=정산월)에 recruit_ledger로 편입해 실제 지급. 이전엔 이연만 되고
도래월 지급 절차가 없어 차액이 영구 미지급되던 갭을 메움.
- BatchConfig job flow에 step4b(calcRecruit→payInstallment→calcMaintain) 등록
- InstallmentPlanMapper.resetPaidToScheduledByMonth(+XML)로 재실행 멱등
  (진입 시 PAID→SCHEDULED 역산, Step4 deleteBySettleMonth가 원장 정리)
- RecruitLedgerMapper insert에 reconcile_status 컬럼, SettlementContext.installmentPaidCount
- 단위테스트 3건(정상지급/멱등/계약미존재) GREEN

신입교육 주석: 컨트롤러/서비스/공통/프론트 전반에 도메인·코드 설명 주석 추가
(동작 변경 없음 — 빌드/테스트/타입체크 전부 GREEN으로 무회귀 확인).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 23:40:28 +09:00

45 lines
2.1 KiB
Java

package com.ga.common.system;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 시스템 로그 DB 매퍼 (MyBatis) — 로그인/API접근/데이터변경 3종.
* insert*는 로그 적재용(주로 비동기 서비스가 호출), select*는 관리 화면 조회용이다.
*/
@Mapper
public interface SystemLogMapper {
int insertLoginLog(@Param("userId") Long userId,
@Param("loginId") String loginId,
@Param("loginType") String loginType,
@Param("failReason") String failReason,
@Param("ipAddress") String ipAddress,
@Param("userAgent") String userAgent);
int insertApiAccessLog(@Param("userId") Long userId,
@Param("method") String method,
@Param("url") String url,
@Param("requestParam") String requestParam,
@Param("responseCode") String responseCode,
@Param("responseTime") Integer responseTime,
@Param("ipAddress") String ipAddress,
@Param("errorMessage") String errorMessage);
int insertDataChangeLog(@Param("userId") Long userId,
@Param("menuCode") String menuCode,
@Param("tableName") String tableName,
@Param("recordId") String recordId,
@Param("actionType") String actionType,
@Param("beforeJson") String beforeJson,
@Param("afterJson") String afterJson,
@Param("changedKeys") String changedKeys);
List<Map<String, Object>> selectLoginLogs(@Param("param") Map<String, Object> param);
List<Map<String, Object>> selectApiAccessLogs(@Param("param") Map<String, Object> param);
List<Map<String, Object>> selectDataChangeLogs(@Param("param") Map<String, Object> param);
}