AI가 TRANSFER로 준 것을, 받는 계좌가 대출/카드면 상환으로 바꿔 폼을 상환모드로 염 (출금=walletId·대상=toWalletId·원금=금액). 이자 있으면 사용자가 분리 입력. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -825,27 +825,31 @@ const pasteText = ref('')
|
|||||||
const pasteError = ref('')
|
const pasteError = ref('')
|
||||||
function applyParsed(p) {
|
function applyParsed(p) {
|
||||||
if (!p || !p.recognized) return
|
if (!p || !p.recognized) return
|
||||||
const transfer = p.type === 'TRANSFER'
|
|
||||||
form.type = p.type === 'INCOME' ? 'INCOME' : transfer ? 'TRANSFER' : 'EXPENSE'
|
|
||||||
if (p.amount) form.amount = Number(p.amount)
|
if (p.amount) form.amount = Number(p.amount)
|
||||||
if (p.merchant) form.memo = p.merchant
|
if (p.merchant) form.memo = p.merchant
|
||||||
if (p.date) form.entryDate = p.date
|
if (p.date) form.entryDate = p.date
|
||||||
// 이체는 분류 없음. 그 외엔 AI 추천 분류(후보 중). 없으면 사용자가 선택
|
// 계좌 매칭: 출금(from) / 받는·대상(to)
|
||||||
form.category = transfer ? '' : p.category || ''
|
const fromW = p.wallet ? wallets.value.find((x) => x.name === p.wallet) : null
|
||||||
// AI 추천 계좌 매칭 — 지출/수입=결제수단(walletId), 이체=보내는(walletId)/받는(toWalletId) 계좌
|
const toW = p.toWallet ? wallets.value.find((x) => x.name === p.toWallet) : null
|
||||||
if (p.wallet) {
|
// 이체 대상이 대출/카드면 '상환(REPAYMENT)'으로 재분류 — 앱은 계좌→대출/카드 납입을 상환으로 처리(원금=이체·이자=지출)
|
||||||
const w = wallets.value.find((x) => x.name === p.wallet)
|
const isTransfer = p.type === 'TRANSFER'
|
||||||
if (w) {
|
const repayment = isTransfer && toW && (toW.type === 'LOAN' || toW.type === 'CARD')
|
||||||
form.walletKind = w.type
|
form.type =
|
||||||
form.walletId = w.id
|
p.type === 'INCOME' ? 'INCOME' : repayment ? 'REPAYMENT' : isTransfer ? 'TRANSFER' : 'EXPENSE'
|
||||||
}
|
// 이체·상환은 분류 없음. 그 외엔 AI 추천 분류(후보 중)
|
||||||
|
form.category = isTransfer || repayment ? '' : p.category || ''
|
||||||
|
if (fromW) {
|
||||||
|
form.walletKind = fromW.type
|
||||||
|
form.walletId = fromW.id
|
||||||
}
|
}
|
||||||
if (transfer && p.toWallet) {
|
if ((isTransfer || repayment) && toW) {
|
||||||
const tw = wallets.value.find((x) => x.name === p.toWallet)
|
form.toWalletKind = toW.type
|
||||||
if (tw) {
|
form.toWalletId = toW.id
|
||||||
form.toWalletKind = tw.type
|
}
|
||||||
form.toWalletId = tw.id
|
if (repayment) {
|
||||||
}
|
// 상환: 전액을 원금으로 우선 채움(이자가 있으면 사용자가 분리 입력)
|
||||||
|
form.principal = p.amount ? Number(p.amount) : null
|
||||||
|
form.interest = null
|
||||||
}
|
}
|
||||||
pasteDetected.value = null
|
pasteDetected.value = null
|
||||||
pasteModalOpen.value = false
|
pasteModalOpen.value = false
|
||||||
|
|||||||
Reference in New Issue
Block a user