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:
@@ -61,25 +61,38 @@ class TodayIssue extends Model
|
|||||||
|
|
||||||
public const SOURCE_WITHDRAWAL = 'withdrawal';
|
public const SOURCE_WITHDRAWAL = 'withdrawal';
|
||||||
|
|
||||||
// 뱃지 타입 상수
|
// 뱃지 타입 상수 (최대 4자, 띄어쓰기 없음)
|
||||||
public const BADGE_ORDER_REGISTER = '수주등록';
|
public const BADGE_ORDER_REGISTER = '수주등록';
|
||||||
|
|
||||||
public const BADGE_COLLECTION_ISSUE = '추심이슈';
|
public const BADGE_COLLECTION_ISSUE = '추심이슈';
|
||||||
|
|
||||||
public const BADGE_SAFETY_STOCK = '안전재고';
|
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_DEPOSIT = '입금';
|
||||||
|
|
||||||
public const BADGE_WITHDRAWAL = '출금';
|
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 매핑
|
// 뱃지 → notification_type 매핑
|
||||||
public const BADGE_TO_NOTIFICATION_TYPE = [
|
public const BADGE_TO_NOTIFICATION_TYPE = [
|
||||||
self::BADGE_ORDER_REGISTER => 'sales_order',
|
self::BADGE_ORDER_REGISTER => 'sales_order',
|
||||||
|
|||||||
@@ -44,9 +44,12 @@ public function summary(int $limit = 30, ?string $badge = null): array
|
|||||||
$issues = $query->limit($limit)->get();
|
$issues = $query->limit($limit)->get();
|
||||||
|
|
||||||
$items = $issues->map(function (TodayIssue $issue) {
|
$items = $issues->map(function (TodayIssue $issue) {
|
||||||
|
// source_type 기반으로 badge 매핑 (DB 값보다 우선)
|
||||||
|
$badge = TodayIssue::SOURCE_TO_BADGE[$issue->source_type] ?? $issue->badge ?? '기타';
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'id' => $issue->source_type.'_'.$issue->source_id,
|
'id' => $issue->source_type.'_'.$issue->source_id,
|
||||||
'badge' => $issue->badge,
|
'badge' => $badge,
|
||||||
'content' => $issue->content,
|
'content' => $issue->content,
|
||||||
'time' => $this->formatRelativeTime($issue->created_at),
|
'time' => $this->formatRelativeTime($issue->created_at),
|
||||||
'date' => $issue->created_at?->toDateString(),
|
'date' => $issue->created_at?->toDateString(),
|
||||||
@@ -85,9 +88,12 @@ public function getUnreadList(int $limit = 10): array
|
|||||||
->count();
|
->count();
|
||||||
|
|
||||||
$items = $issues->map(function (TodayIssue $issue) {
|
$items = $issues->map(function (TodayIssue $issue) {
|
||||||
|
// source_type 기반으로 badge 매핑 (DB 값보다 우선)
|
||||||
|
$badge = TodayIssue::SOURCE_TO_BADGE[$issue->source_type] ?? $issue->badge ?? '기타';
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'id' => $issue->id,
|
'id' => $issue->id,
|
||||||
'badge' => $issue->badge,
|
'badge' => $badge,
|
||||||
'notification_type' => $issue->notification_type,
|
'notification_type' => $issue->notification_type,
|
||||||
'content' => $issue->content,
|
'content' => $issue->content,
|
||||||
'path' => $issue->path,
|
'path' => $issue->path,
|
||||||
|
|||||||
Reference in New Issue
Block a user