diff --git a/src/main/java/com/sb/web/account/mapper/AccountEntryMapper.java b/src/main/java/com/sb/web/account/mapper/AccountEntryMapper.java
index c158f98..426a4ea 100644
--- a/src/main/java/com/sb/web/account/mapper/AccountEntryMapper.java
+++ b/src/main/java/com/sb/web/account/mapper/AccountEntryMapper.java
@@ -66,6 +66,11 @@ public interface AccountEntryMapper {
/** 미확인(확인 필요) 내역 개수 */
int countPending(@Param("memberId") Long memberId);
+ /** 자동인식 분류 학습: 같은 메모 키워드로 과거에 가장 많이 쓴 분류 1건(없으면 null) */
+ String findLearnedCategory(@Param("memberId") Long memberId,
+ @Param("type") String type,
+ @Param("memo") String memo);
+
/** 미확인 내역 확정 (pending=0, 분류/계좌 보정) */
int confirm(@Param("id") Long id, @Param("memberId") Long memberId,
@Param("category") String category, @Param("walletId") Long walletId);
diff --git a/src/main/java/com/sb/web/account/service/AccountService.java b/src/main/java/com/sb/web/account/service/AccountService.java
index c5ec16a..6763adf 100644
--- a/src/main/java/com/sb/web/account/service/AccountService.java
+++ b/src/main/java/com/sb/web/account/service/AccountService.java
@@ -231,13 +231,20 @@ public class AccountService {
String walletType = p.isBankTransfer() ? "BANK" : "CARD";
Long walletId = matchWalletId(p.getIssuer(), memberId, walletType);
+ // 분류 자동학습: 같은 메모(가맹점) 키워드로 과거에 확정한 분류가 있으면 그대로 채워준다.
+ String type = p.isIncome() ? "INCOME" : "EXPENSE";
+ String merchant = p.getMerchant();
+ String learnedCategory = (merchant != null && !merchant.isBlank())
+ ? mapper.findLearnedCategory(memberId, type, merchant)
+ : null;
+
AccountEntry entry = AccountEntry.builder()
.memberId(memberId)
.entryDate(p.getDate() != null ? p.getDate() : java.time.LocalDate.now())
- .type(p.isIncome() ? "INCOME" : "EXPENSE")
- .category(null)
+ .type(type)
+ .category(learnedCategory)
.amount(p.getAmount())
- .memo(p.getMerchant())
+ .memo(merchant)
.walletId(walletId)
.toWalletId(null)
.installmentMonths(null)
diff --git a/src/main/resources/mapper/AccountEntryMapper.xml b/src/main/resources/mapper/AccountEntryMapper.xml
index 5317807..459488a 100644
--- a/src/main/resources/mapper/AccountEntryMapper.xml
+++ b/src/main/resources/mapper/AccountEntryMapper.xml
@@ -160,6 +160,24 @@
SELECT COUNT(*) FROM account_entry WHERE member_id = #{memberId} AND pending = 1
+
+
+
UPDATE account_entry
SET pending = 0,