feat: Add CI/CD pipeline and code quality improvements
- Add GitHub Actions workflow for automated CI/CD - Configure Node.js 18.x and 20.x matrix testing - Add TypeScript type checking step - Add ESLint code quality checks with enhanced rules - Add Prettier formatting verification - Add production build validation - Upload build artifacts for deployment - Set up automated testing on push/PR - Replace console.log with environment-aware logger - Add pre-commit hooks for code quality - Exclude archive folder from linting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
import { Transaction } from '@/contexts/budget/types';
|
||||
import TransactionEditDialog from './TransactionEditDialog';
|
||||
import { ChevronRight } from 'lucide-react';
|
||||
import { useBudget } from '@/contexts/budget/BudgetContext';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useRecentTransactions } from '@/hooks/transactions/useRecentTransactions';
|
||||
import { useRecentTransactionsDialog } from '@/hooks/transactions/useRecentTransactionsDialog';
|
||||
import RecentTransactionItem from './recent-transactions/RecentTransactionItem';
|
||||
import React from "react";
|
||||
import { Transaction } from "@/contexts/budget/types";
|
||||
import TransactionEditDialog from "./TransactionEditDialog";
|
||||
import { ChevronRight } from "lucide-react";
|
||||
import { useBudget } from "@/contexts/budget/BudgetContext";
|
||||
import { Link } from "react-router-dom";
|
||||
import { useRecentTransactions } from "@/hooks/transactions/useRecentTransactions";
|
||||
import { useRecentTransactionsDialog } from "@/hooks/transactions/useRecentTransactionsDialog";
|
||||
import RecentTransactionItem from "./recent-transactions/RecentTransactionItem";
|
||||
|
||||
interface RecentTransactionsSectionProps {
|
||||
transactions: Transaction[];
|
||||
@@ -15,19 +15,20 @@ interface RecentTransactionsSectionProps {
|
||||
|
||||
const RecentTransactionsSection: React.FC<RecentTransactionsSectionProps> = ({
|
||||
transactions,
|
||||
onUpdateTransaction
|
||||
onUpdateTransaction,
|
||||
}) => {
|
||||
const { updateTransaction, deleteTransaction } = useBudget();
|
||||
|
||||
|
||||
// 트랜잭션 삭제 관련 로직은 커스텀 훅으로 분리
|
||||
const { handleDeleteTransaction, isDeleting } = useRecentTransactions(deleteTransaction);
|
||||
|
||||
const { handleDeleteTransaction, isDeleting } =
|
||||
useRecentTransactions(deleteTransaction);
|
||||
|
||||
// 다이얼로그 관련 로직 분리
|
||||
const {
|
||||
selectedTransaction,
|
||||
isDialogOpen,
|
||||
handleTransactionClick,
|
||||
setIsDialogOpen
|
||||
const {
|
||||
selectedTransaction,
|
||||
isDialogOpen,
|
||||
handleTransactionClick,
|
||||
setIsDialogOpen,
|
||||
} = useRecentTransactionsDialog();
|
||||
|
||||
const handleUpdateTransaction = (updatedTransaction: Transaction) => {
|
||||
@@ -42,14 +43,17 @@ const RecentTransactionsSection: React.FC<RecentTransactionsSectionProps> = ({
|
||||
<div className="mt-4 mb-[50px]">
|
||||
<div className="flex justify-between items-center mb-2">
|
||||
<h2 className="text-lg font-semibold">최근 지출</h2>
|
||||
<Link to="/transactions" className="text-sm text-neuro-income flex items-center">
|
||||
<Link
|
||||
to="/transactions"
|
||||
className="text-sm text-neuro-income flex items-center"
|
||||
>
|
||||
더보기 <ChevronRight size={16} />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="neuro-card divide-y divide-gray-100 w-full">
|
||||
{transactions.length > 0 ? (
|
||||
transactions.map(transaction => (
|
||||
transactions.map((transaction) => (
|
||||
<RecentTransactionItem
|
||||
key={transaction.id}
|
||||
transaction={transaction}
|
||||
|
||||
Reference in New Issue
Block a user