feat: [expense,loan] 대시보드 상세 필터 및 가지급금 카테고리 분류

- ExpectedExpenseController/Service: dashboardDetail에 start_date/end_date/search 파라미터 추가
- Loan 모델: category 상수 및 라벨 정의 (카드/경조사/상품권/접대비)
- LoanService: dashboard에 category_breakdown 집계 추가
- 마이그레이션: loans 테이블 category 컬럼 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-03-04 10:42:53 +09:00
parent 4f3467c3b0
commit 1deeafc4de
5 changed files with 167 additions and 28 deletions

View File

@@ -36,6 +36,37 @@ class Loan extends Model
self::STATUS_PARTIAL,
];
/**
* 카테고리 상수 (D1.7 기획서)
*/
public const CATEGORY_CARD = 'card'; // 카드
public const CATEGORY_CONGRATULATORY = 'congratulatory'; // 경조사
public const CATEGORY_GIFT_CERTIFICATE = 'gift_certificate'; // 상품권
public const CATEGORY_ENTERTAINMENT = 'entertainment'; // 접대비
/**
* 카테고리 목록
*/
public const CATEGORIES = [
self::CATEGORY_CARD,
self::CATEGORY_CONGRATULATORY,
self::CATEGORY_GIFT_CERTIFICATE,
self::CATEGORY_ENTERTAINMENT,
];
/**
* 카테고리 라벨 매핑
*/
public const CATEGORY_LABELS = [
self::CATEGORY_CARD => '카드',
self::CATEGORY_CONGRATULATORY => '경조사',
self::CATEGORY_GIFT_CERTIFICATE => '상품권',
self::CATEGORY_ENTERTAINMENT => '접대비',
];
/**
* 인정이자율 (연도별)
*/
@@ -71,6 +102,7 @@ class Loan extends Model
'settlement_date',
'settlement_amount',
'status',
'category',
'withdrawal_id',
'created_by',
'updated_by',
@@ -137,6 +169,14 @@ public function getStatusLabelAttribute(): string
};
}
/**
* 카테고리 라벨
*/
public function getCategoryLabelAttribute(): string
{
return self::CATEGORY_LABELS[$this->category] ?? $this->category ?? '카드';
}
/**
* 미정산 잔액
*/