fix: 오늘의 이슈 뱃지 타입 source_type 기반 매핑

- TodayIssue 모델에 SOURCE_TO_BADGE 매핑 상수 추가
- TodayIssueService에서 source_type 기반 badge 매핑 적용
- 입금/출금 소스 타입 및 뱃지 상수 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-27 22:40:54 +09:00
parent 3917ea3831
commit 518ae4657e
2 changed files with 26 additions and 7 deletions

View File

@@ -61,25 +61,38 @@ class TodayIssue extends Model
public const SOURCE_WITHDRAWAL = 'withdrawal';
// 뱃지 타입 상수
// 뱃지 타입 상수 (최대 4자, 띄어쓰기 없음)
public const BADGE_ORDER_REGISTER = '수주등록';
public const BADGE_COLLECTION_ISSUE = '추심이슈';
public const BADGE_SAFETY_STOCK = '안전재고';
public const BADGE_EXPENSE_PENDING = '지출 승인대기';
public const BADGE_EXPENSE_PENDING = '지출승인';
public const BADGE_TAX_REPORT = '세금 신고';
public const BADGE_TAX_REPORT = '세금신고';
public const BADGE_APPROVAL_REQUEST = '결재 요청';
public const BADGE_APPROVAL_REQUEST = '결재요청';
public const BADGE_NEW_CLIENT = '신규거래처';
public const BADGE_NEW_CLIENT = '신규업체';
public const BADGE_DEPOSIT = '입금';
public const BADGE_WITHDRAWAL = '출금';
// source_type → badge 매핑
public const SOURCE_TO_BADGE = [
self::SOURCE_ORDER => self::BADGE_ORDER_REGISTER,
self::SOURCE_BAD_DEBT => self::BADGE_COLLECTION_ISSUE,
self::SOURCE_STOCK => self::BADGE_SAFETY_STOCK,
self::SOURCE_EXPENSE => self::BADGE_EXPENSE_PENDING,
self::SOURCE_TAX => self::BADGE_TAX_REPORT,
self::SOURCE_APPROVAL => self::BADGE_APPROVAL_REQUEST,
self::SOURCE_CLIENT => self::BADGE_NEW_CLIENT,
self::SOURCE_DEPOSIT => self::BADGE_DEPOSIT,
self::SOURCE_WITHDRAWAL => self::BADGE_WITHDRAWAL,
];
// 뱃지 → notification_type 매핑
public const BADGE_TO_NOTIFICATION_TYPE = [
self::BADGE_ORDER_REGISTER => 'sales_order',

View File

@@ -44,9 +44,12 @@ public function summary(int $limit = 30, ?string $badge = null): array
$issues = $query->limit($limit)->get();
$items = $issues->map(function (TodayIssue $issue) {
// source_type 기반으로 badge 매핑 (DB 값보다 우선)
$badge = TodayIssue::SOURCE_TO_BADGE[$issue->source_type] ?? $issue->badge ?? '기타';
return [
'id' => $issue->source_type.'_'.$issue->source_id,
'badge' => $issue->badge,
'badge' => $badge,
'content' => $issue->content,
'time' => $this->formatRelativeTime($issue->created_at),
'date' => $issue->created_at?->toDateString(),
@@ -85,9 +88,12 @@ public function getUnreadList(int $limit = 10): array
->count();
$items = $issues->map(function (TodayIssue $issue) {
// source_type 기반으로 badge 매핑 (DB 값보다 우선)
$badge = TodayIssue::SOURCE_TO_BADGE[$issue->source_type] ?? $issue->badge ?? '기타';
return [
'id' => $issue->id,
'badge' => $issue->badge,
'badge' => $badge,
'notification_type' => $issue->notification_type,
'content' => $issue->content,
'path' => $issue->path,