feat(WEB): 카드 거래 DevFill 자동 입력 기능 추가

- DevToolbar: 카드 버튼 경로 /new로 변경, fillEnabled 활성화
- CardTransactionDetailClient: useDevFill 훅 연동
- cardTransactionDetailConfig: transformInitialData에서 cardId 처리 수정
- accountingData: generateCardTransactionData 함수 추가
This commit is contained in:
2026-01-22 20:49:22 +09:00
parent cbdafbd4b7
commit 207520e1d6
4 changed files with 21 additions and 4 deletions

View File

@@ -12,7 +12,9 @@ import {
createCardTransaction,
updateCardTransaction,
deleteCardTransaction,
getCardList,
} from './actions';
import { useDevFill, generateCardTransactionData } from '@/components/dev';
// ===== Props =====
interface CardTransactionDetailClientProps {
@@ -29,6 +31,19 @@ export default function CardTransactionDetailClient({
const [transaction, setTransaction] = useState<CardTransaction | null>(null);
const [isLoading, setIsLoading] = useState(initialMode !== 'create');
// ===== DevFill: 자동 입력 기능 =====
useDevFill('cardTransaction', useCallback(async () => {
if (initialMode === 'create') {
// 카드 목록 가져오기
const cardResult = await getCardList();
const cards = cardResult.success ? cardResult.data : undefined;
const mockData = generateCardTransactionData({ cards });
setTransaction(mockData as unknown as CardTransaction);
toast.success('카드 사용내역 데이터가 자동 입력되었습니다.');
}
}, [initialMode]));
// ===== 데이터 로드 =====
useEffect(() => {
const loadTransaction = async () => {

View File

@@ -97,6 +97,8 @@ export const cardTransactionDetailConfig: DetailConfig = {
},
transformInitialData: (data: Record<string, unknown>): Record<string, unknown> => {
const record = data as unknown as CardTransaction;
// DevFill에서 전달된 cardId 또는 기존 데이터의 cardId
const inputCardId = (data as Record<string, unknown>).cardId;
// usedAt을 datetime-local 형식으로 변환 (YYYY-MM-DDTHH:mm)
let usedAtFormatted = '';
if (record.usedAt) {
@@ -104,7 +106,7 @@ export const cardTransactionDetailConfig: DetailConfig = {
usedAtFormatted = record.usedAt.replace(' ', 'T').slice(0, 16);
}
return {
cardId: record.id ? '' : '', // 수정 시에는 카드 변경 불가
cardId: inputCardId ? String(inputCardId) : '', // create 모드에서 DevFill로 전달된 cardId 사용
usedAt: usedAtFormatted,
merchantName: record.merchantName || '',
amount: record.amount || 0,