diff --git a/frontend/src/components/dashboard/DepartmentColumn.tsx b/frontend/src/components/dashboard/DepartmentColumn.tsx
index 53435fd..0116670 100644
--- a/frontend/src/components/dashboard/DepartmentColumn.tsx
+++ b/frontend/src/components/dashboard/DepartmentColumn.tsx
@@ -215,7 +215,7 @@ export function DepartmentColumn({ title: initialTitle, titleEn, subtitle: initi
{/* 컬럼 헤더 (noHeader 시 숨김) */}
{!noHeader && (
{ e.preventDefault(); setCtxMenu({ x: e.clientX, y: e.clientY, type: 'header' }); }}
>
@@ -223,7 +223,7 @@ export function DepartmentColumn({ title: initialTitle, titleEn, subtitle: initi
{titleEnState && (
{titleEnState}
)}
-
+
{tasks.length}건
@@ -238,13 +238,31 @@ export function DepartmentColumn({ title: initialTitle, titleEn, subtitle: initi
해당 업무 없음
- ) : (
-
- t.id)} strategy={verticalListSortingStrategy}>
- {orderedTasks.map((task) => )}
-
-
- )}
+ ) : (() => {
+ const projectTasks = orderedTasks.filter((t) => t.taskType !== '상시업무');
+ const routineTasks = orderedTasks.filter((t) => t.taskType === '상시업무');
+ return (
+
+ t.id)} strategy={verticalListSortingStrategy}>
+ {projectTasks.map((task) => (
+
+ ))}
+ {routineTasks.length > 0 && (
+ <>
+
+ {routineTasks.map((task) => (
+
+ ))}
+ >
+ )}
+
+
+ );
+ })()}
diff --git a/frontend/src/components/dashboard/TaskCard.tsx b/frontend/src/components/dashboard/TaskCard.tsx
index eb217b7..6704ed7 100644
--- a/frontend/src/components/dashboard/TaskCard.tsx
+++ b/frontend/src/components/dashboard/TaskCard.tsx
@@ -4,7 +4,6 @@ import { useSortable } from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import type { DraggableAttributes } from '@dnd-kit/core';
import type { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';
-import { sendTaskSelected } from '../../lib/dualMonitor';
import { apiClient } from '../../lib/apiClient';
import { ContextMenu } from '../common/ContextMenu';
import { TaskModal } from '../common/TaskModal';
@@ -98,7 +97,6 @@ export function TaskCard({
onCardClick?: () => void;
}) {
const queryClient = useQueryClient();
- const tagCfg = TAG_CONFIG[task.tag ?? ''] ?? { bg: 'bg-gray-100', text: 'text-gray-600' };
// ── API mutations ──────────────────────────────────────────
const create = useMutation({
@@ -174,7 +172,7 @@ export function TaskCard({
style={dragStyle}
{...dragAttributes}
{...dragListeners}
- className="bg-white rounded-2xl px-5 py-3 mb-3 shadow-sm border border-gray-100 hover:shadow-md hover:border-gray-200 transition-all select-none h-[112px] cursor-grab active:cursor-grabbing overflow-hidden"
+ className="bg-white rounded-2xl px-5 py-3 mb-3 shadow-sm border border-gray-100 hover:shadow-md hover:border-gray-200 transition-all select-none cursor-grab active:cursor-grabbing overflow-hidden"
onPointerDown={(e) => {
// 우클릭(button !== 0)을 dnd-kit에 전달하지 않음
// dnd-kit은 pointerdown→pointerup 시 synthetic click을 발화하는데
@@ -202,15 +200,16 @@ export function TaskCard({
- {/* ── 태그 + 기간 + 상태 ── */}
+ {/* ── description ── */}
+ {task.description && (
+
+ {task.description}
+
+ )}
+
+ {/* ── 기간 + 상태 ── */}
-
sendTaskSelected(task.id)}
- >
- {task.tag}
-
-
+
{(task.startDate || task.dueDate)
? `${task.startDate ? fmtDate(task.startDate) : '?'} ~ ${task.dueDate ? fmtDate(task.dueDate) : '?'}`
: ''}
@@ -222,7 +221,7 @@ export function TaskCard({
{/* ── 이슈 메모 ── */}
{task.issueNote && (
-
+
▶ 이슈 :
{task.issueNote}