feat: remove bottom slide-up panel
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -30,103 +30,118 @@ async function main() {
|
|||||||
await prisma.taskDetail.deleteMany({});
|
await prisma.taskDetail.deleteMany({});
|
||||||
await prisma.task.deleteMany({});
|
await prisma.task.deleteMany({});
|
||||||
|
|
||||||
// ─── HR 부문 업무 ──────────────────────────────────────
|
const allTasks = [
|
||||||
const hrTasks = [
|
// ─── 인사관리 ───────────────────────────────────────
|
||||||
{
|
|
||||||
title: '사내 핵심역량 교육체계 수립 (HRD)',
|
|
||||||
description: '직급별/직무별 필수 역량 가이드라인 도출\n사내 강사 제도 양성 및 콘텐츠 기획 단계',
|
|
||||||
status: 'IN_PROGRESS' as const,
|
|
||||||
priority: 'HIGH' as const,
|
|
||||||
section: 'HR',
|
|
||||||
tag: 'Growth',
|
|
||||||
taskType: '프로젝트',
|
|
||||||
progress: 20,
|
|
||||||
issueNote: '[5.28] 사내 강사 풀 확보 및 보상안 검토',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: '그룹 표준 취업규칙 개정안 (HRM)',
|
title: '그룹 표준 취업규칙 개정안 (HRM)',
|
||||||
description: '유연근무제 및 근태 관리 프로세스 고도화\n노사협의회 안건 조율 및 근로조건 개선안 반영',
|
description: '유연근무제 및 근태 관리 프로세스 고도화\n노사협의회 안건 조율 및 근로조건 개선안 반영',
|
||||||
status: 'IN_PROGRESS' as const,
|
status: 'IN_PROGRESS' as const,
|
||||||
priority: 'HIGH' as const,
|
priority: 'HIGH' as const,
|
||||||
section: 'HR',
|
section: '인사관리',
|
||||||
tag: 'Policy',
|
tag: 'Policy',
|
||||||
taskType: '프로젝트',
|
taskType: '프로젝트',
|
||||||
progress: 40,
|
progress: 40,
|
||||||
issueNote: '[5.28] 가족사 간 피드백 이견 조율 진행',
|
issueNote: '[5.28] 가족사 간 피드백 이견 조율 진행',
|
||||||
|
startDate: new Date('2026-04-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '상반기 평가 지표(KPI) 보완',
|
title: '상반기 평가 지표(KPI) 보완',
|
||||||
description: '1분기 피드백 기반 부서별 KPI 정렬\n상반기 업적 평가 시뮬레이션 기획',
|
description: '1분기 피드백 기반 부서별 KPI 정렬\n상반기 업적 평가 시뮬레이션 기획',
|
||||||
status: 'IN_PROGRESS' as const,
|
status: 'IN_PROGRESS' as const,
|
||||||
priority: 'MEDIUM' as const,
|
priority: 'MEDIUM' as const,
|
||||||
section: 'HR',
|
section: '인사관리',
|
||||||
tag: 'Performance',
|
tag: 'Performance',
|
||||||
taskType: '상시업무',
|
taskType: '상시업무',
|
||||||
progress: 70,
|
progress: 70,
|
||||||
issueNote: null,
|
issueNote: null,
|
||||||
|
startDate: new Date('2026-04-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '가족사 시너지 조직문화 캠페인',
|
title: '가족사 시너지 조직문화 캠페인',
|
||||||
description: '임직원 만족도 조사(Engagement Survey) 설계',
|
description: '임직원 만족도 조사(Engagement Survey) 설계',
|
||||||
status: 'TODO' as const,
|
status: 'TODO' as const,
|
||||||
priority: 'LOW' as const,
|
priority: 'LOW' as const,
|
||||||
section: 'HR',
|
section: '인사관리',
|
||||||
tag: 'Culture',
|
tag: 'Culture',
|
||||||
taskType: '프로젝트',
|
taskType: '프로젝트',
|
||||||
progress: 0,
|
progress: 0,
|
||||||
issueNote: null,
|
issueNote: null,
|
||||||
|
startDate: new Date('2026-05-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
];
|
// ─── 학습성장 ───────────────────────────────────────
|
||||||
|
|
||||||
// ─── 운영관리 부문 업무 ────────────────────────────────
|
|
||||||
const opsTasks = [
|
|
||||||
{
|
{
|
||||||
title: '全사 IT자산 수명주기 표준화 구축',
|
title: '사내 핵심역량 교육체계 수립 (HRD)',
|
||||||
description: '자산 전수조사 데이터 기반 불용 기준 정립\n라이선스 최적화를 통한 비용 절감안 도출',
|
description: '직급별/직무별 필수 역량 가이드라인 도출\n사내 강사 제도 양성 및 콘텐츠 기획 단계',
|
||||||
status: 'IN_PROGRESS' as const,
|
status: 'IN_PROGRESS' as const,
|
||||||
priority: 'HIGH' as const,
|
priority: 'HIGH' as const,
|
||||||
section: '운영관리',
|
section: '학습성장',
|
||||||
tag: 'Asset',
|
tag: 'Growth',
|
||||||
taskType: '프로젝트',
|
taskType: '프로젝트',
|
||||||
progress: 60,
|
progress: 20,
|
||||||
issueNote: null,
|
issueNote: '[5.28] 사내 강사 풀 확보 및 보상안 검토',
|
||||||
|
startDate: new Date('2026-04-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
|
// ─── 운영지원 ───────────────────────────────────────
|
||||||
{
|
{
|
||||||
title: '기술센터 2F 세미나룸 브랜딩 기획',
|
title: '기술센터 2F 세미나룸 브랜딩 기획',
|
||||||
description: '다목적 교육 공간 활용을 위한 운영 매뉴얼 수립\n공간 아이덴티티 반영 사인물(Signage) 기획',
|
description: '다목적 교육 공간 활용을 위한 운영 매뉴얼 수립\n공간 아이덴티티 반영 사인물(Signage) 기획',
|
||||||
status: 'REVIEW' as const,
|
status: 'REVIEW' as const,
|
||||||
priority: 'MEDIUM' as const,
|
priority: 'MEDIUM' as const,
|
||||||
section: '운영관리',
|
section: '운영지원',
|
||||||
tag: 'Space',
|
tag: 'Space',
|
||||||
taskType: '프로젝트',
|
taskType: '프로젝트',
|
||||||
progress: 80,
|
progress: 80,
|
||||||
issueNote: null,
|
issueNote: null,
|
||||||
|
startDate: new Date('2026-04-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '중대재해법 대응 안전보건 매뉴얼 정비',
|
title: '중대재해법 대응 안전보건 매뉴얼 정비',
|
||||||
description: '현장 점검 기반 소방 및 MSDS 관리 체계 보완\n사내 안전사고 예방 가이드라인 표준화 기획',
|
description: '현장 점검 기반 소방 및 MSDS 관리 체계 보완\n사내 안전사고 예방 가이드라인 표준화 기획',
|
||||||
status: 'IN_PROGRESS' as const,
|
status: 'IN_PROGRESS' as const,
|
||||||
priority: 'HIGH' as const,
|
priority: 'HIGH' as const,
|
||||||
section: '운영관리',
|
section: '운영지원',
|
||||||
tag: 'Safety',
|
tag: 'Safety',
|
||||||
taskType: '상시업무',
|
taskType: '상시업무',
|
||||||
progress: 30,
|
progress: 30,
|
||||||
issueNote: null,
|
issueNote: null,
|
||||||
|
startDate: new Date('2026-04-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '공용 공간 인프라 개선',
|
title: '공용 공간 인프라 개선',
|
||||||
description: '기술센터 로비 및 라운지 환경 정비 기획',
|
description: '기술센터 로비 및 라운지 환경 정비 기획',
|
||||||
status: 'TODO' as const,
|
status: 'TODO' as const,
|
||||||
priority: 'LOW' as const,
|
priority: 'LOW' as const,
|
||||||
section: '운영관리',
|
section: '운영지원',
|
||||||
tag: 'Environment',
|
tag: 'Environment',
|
||||||
taskType: '프로젝트',
|
taskType: '프로젝트',
|
||||||
progress: 0,
|
progress: 0,
|
||||||
issueNote: null,
|
issueNote: null,
|
||||||
|
startDate: new Date('2026-05-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
|
},
|
||||||
|
// ─── 전산관리 ───────────────────────────────────────
|
||||||
|
{
|
||||||
|
title: '全사 IT자산 수명주기 표준화 구축',
|
||||||
|
description: '자산 전수조사 데이터 기반 불용 기준 정립\n라이선스 최적화를 통한 비용 절감안 도출',
|
||||||
|
status: 'IN_PROGRESS' as const,
|
||||||
|
priority: 'HIGH' as const,
|
||||||
|
section: '전산관리',
|
||||||
|
tag: 'Asset',
|
||||||
|
taskType: '프로젝트',
|
||||||
|
progress: 60,
|
||||||
|
issueNote: null,
|
||||||
|
startDate: new Date('2026-04-01'),
|
||||||
|
dueDate: new Date('2026-06-30'),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const t of [...hrTasks, ...opsTasks]) {
|
for (const t of allTasks) {
|
||||||
await prisma.task.create({
|
await prisma.task.create({
|
||||||
data: {
|
data: {
|
||||||
...t,
|
...t,
|
||||||
@@ -138,7 +153,7 @@ async function main() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`✅ Tasks created: ${hrTasks.length + opsTasks.length}개`);
|
console.log(`✅ Tasks created: ${allTasks.length}개`);
|
||||||
console.log('🎉 Seeding complete!');
|
console.log('🎉 Seeding complete!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { apiClient } from '../lib/apiClient';
|
|||||||
import { useTasks } from '../hooks/useTasks';
|
import { useTasks } from '../hooks/useTasks';
|
||||||
import { DashboardHeader } from '../components/dashboard/DashboardHeader';
|
import { DashboardHeader } from '../components/dashboard/DashboardHeader';
|
||||||
import { DepartmentColumn } from '../components/dashboard/DepartmentColumn';
|
import { DepartmentColumn } from '../components/dashboard/DepartmentColumn';
|
||||||
import { RoutinePanel } from '../components/dashboard/RoutinePanel';
|
|
||||||
import { useSocket } from '../contexts/SocketContext';
|
import { useSocket } from '../contexts/SocketContext';
|
||||||
import { sendTaskSelected, openDetailWindow } from '../lib/dualMonitor';
|
import { sendTaskSelected, openDetailWindow } from '../lib/dualMonitor';
|
||||||
|
|
||||||
@@ -13,7 +12,6 @@ const QUARTER = '2026-Q2';
|
|||||||
export default function DashboardPage() {
|
export default function DashboardPage() {
|
||||||
const [activeType, setActiveType] = useState('전체');
|
const [activeType, setActiveType] = useState('전체');
|
||||||
const [activeStatus, setActiveStatus] = useState('전체');
|
const [activeStatus, setActiveStatus] = useState('전체');
|
||||||
const [isBottomPanelOpen, setIsBottomPanelOpen] = useState(false);
|
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const socket = useSocket();
|
const socket = useSocket();
|
||||||
|
|
||||||
@@ -51,8 +49,6 @@ export default function DashboardPage() {
|
|||||||
const sec2Tasks = filtered.filter((t) => t.section === '학습성장');
|
const sec2Tasks = filtered.filter((t) => t.section === '학습성장');
|
||||||
const sec3Tasks = filtered.filter((t) => t.section === '운영지원');
|
const sec3Tasks = filtered.filter((t) => t.section === '운영지원');
|
||||||
const sec4Tasks = filtered.filter((t) => t.section === '전산관리');
|
const sec4Tasks = filtered.filter((t) => t.section === '전산관리');
|
||||||
const routineTasks = tasks.filter((t) => t.taskType === '상시업무');
|
|
||||||
|
|
||||||
const { data: colConfigs } = useQuery({
|
const { data: colConfigs } = useQuery({
|
||||||
queryKey: ['columns', 'all'],
|
queryKey: ['columns', 'all'],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
@@ -141,27 +137,6 @@ export default function DashboardPage() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* 하단 슬라이드 패널 */}
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => setIsBottomPanelOpen((v) => !v)}
|
|
||||||
className={`absolute left-1/2 z-40 -translate-x-1/2 rounded-t-2xl border border-orange-200 bg-orange-50 px-10 py-1.5 text-orange-600 shadow-md transition-all hover:bg-orange-100 ${
|
|
||||||
isBottomPanelOpen ? 'top-0' : 'bottom-0'
|
|
||||||
}`}
|
|
||||||
aria-label={isBottomPanelOpen ? '하단 정보 닫기' : '하단 정보 열기'}
|
|
||||||
>
|
|
||||||
<span className={`block text-2xl font-black leading-none transition-transform ${isBottomPanelOpen ? 'rotate-180' : ''}`}>
|
|
||||||
^
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<section
|
|
||||||
className={`absolute inset-x-0 bottom-0 z-30 h-full rounded-t-3xl border-t border-gray-200 bg-white shadow-2xl transition-transform duration-300 ease-out overflow-hidden ${
|
|
||||||
isBottomPanelOpen ? 'translate-y-0' : 'translate-y-full'
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
<RoutinePanel tasks={routineTasks} />
|
|
||||||
</section>
|
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user