diff --git a/app/Models/Tenants/TodayIssue.php b/app/Models/Tenants/TodayIssue.php index 9b9dc00..31f7f94 100644 --- a/app/Models/Tenants/TodayIssue.php +++ b/app/Models/Tenants/TodayIssue.php @@ -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', diff --git a/app/Services/TodayIssueService.php b/app/Services/TodayIssueService.php index d703bc1..a094546 100644 --- a/app/Services/TodayIssueService.php +++ b/app/Services/TodayIssueService.php @@ -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,