feat: task manager modal, remove type filter, expand routine area

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
EENE Dashboard
2026-06-01 13:35:18 +09:00
parent a5dcc9321e
commit 5dec3f2fae
4 changed files with 256 additions and 33 deletions

View File

@@ -4,14 +4,15 @@ import { apiClient } from '../lib/apiClient';
import { useTasks } from '../hooks/useTasks';
import { DashboardHeader } from '../components/dashboard/DashboardHeader';
import { DepartmentColumn } from '../components/dashboard/DepartmentColumn';
import { TaskManager } from '../components/dashboard/TaskManager';
import { useSocket } from '../contexts/SocketContext';
import { sendTaskSelected, openDetailWindow } from '../lib/dualMonitor';
const QUARTER = '2026-Q2';
export default function DashboardPage() {
const [activeType, setActiveType] = useState('전체');
const [activeStatus, setActiveStatus] = useState('전체');
const [showTaskManager, setShowTaskManager] = useState(false);
const queryClient = useQueryClient();
const socket = useSocket();
@@ -25,18 +26,16 @@ export default function DashboardPage() {
return () => { socket.off('tasks:refresh', refresh); socket.off('task:updated', refresh); };
}, [socket, queryClient]);
const byType = tasks.filter((t) => activeType === '전체' || t.taskType === activeType);
const stats = {
total: byType.length,
inProgress: byType.filter((t) => t.status === 'IN_PROGRESS').length,
review: byType.filter((t) => t.status === 'REVIEW' || t.status === 'CANCELLED').length,
waiting: byType.filter((t) => t.status === 'TODO').length,
done: byType.filter((t) => t.status === 'DONE').length,
issues: byType.filter((t) => !!t.issueNote).length,
total: tasks.length,
inProgress: tasks.filter((t) => t.status === 'IN_PROGRESS').length,
review: tasks.filter((t) => t.status === 'REVIEW' || t.status === 'CANCELLED').length,
waiting: tasks.filter((t) => t.status === 'TODO').length,
done: tasks.filter((t) => t.status === 'DONE').length,
issues: tasks.filter((t) => !!t.issueNote).length,
};
const filtered = byType.filter((t) => {
const filtered = tasks.filter((t) => {
if (activeStatus === '전체') return true;
if (activeStatus === 'ISSUES') return !!t.issueNote;
if (activeStatus === 'REVIEW') return t.status === 'REVIEW' || t.status === 'CANCELLED';
@@ -78,11 +77,10 @@ export default function DashboardPage() {
<DashboardHeader
quarter={QUARTER}
stats={stats}
activeType={activeType}
onTypeChange={(type) => { setActiveType(type); setActiveStatus('전체'); }}
activeStatus={activeStatus}
onStatusChange={setActiveStatus}
onOpenDetailWindow={openDetailWindow}
onOpenTaskManager={() => setShowTaskManager(true)}
/>
<main className="relative flex-1 overflow-hidden min-h-0">
@@ -138,6 +136,15 @@ export default function DashboardPage() {
</div>
</main>
{showTaskManager && (
<TaskManager
tasks={tasks}
sectionOptions={sectionOptions}
quarter={QUARTER}
onClose={() => setShowTaskManager(false)}
/>
)}
</div>
);
}