Files
sam-manage/docs/tutorial-video-html-slides/slide_10_TUT_005.html
김보곤 03a9840fc7 feat: [pmis] 작업일보 6탭 CRUD 구현
- 마스터 + 인원/장비/자재/공사량/작업사진 6테이블 마이그레이션
- 6개 탭: 작업내용, 인원, 장비, 자재, 공사량, 작업사진
- 작업내용: 금일/명일 텍스트 + 날씨/기온/강수/미세먼지 메타
- 전일누계 + 금일 + 총계 누적 패턴 (인원/장비/자재/공사량)
- 작업사진: 파일 업로드 + 사진목록/사진정보 2단 레이아웃
- 상태별 버튼 제어 (작성중→저장/삭제, 검토중→읽기전용)
- 양식보기: 3페이지 전체화면 뷰어 (작업일보/인원장비/자재)
- 검토자 지정 모달, 캘린더 스트립, 번개 랜덤데이터
2026-03-13 08:12:31 +09:00

1145 lines
35 KiB
HTML

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
width: 720pt;
height: 405pt;
font-family: 'Pretendard', 'Malgun Gothic', sans-serif;
background: #ffffff;
}
p, h1, h2, h3 { margin: 0; }
/* Header Table */
.header-table {
display: flex;
flex-direction: column;
border: 0.5pt solid #64748b;
margin: 4pt 8pt;
}
.header-row {
display: flex;
border-bottom: 0.5pt solid #64748b;
}
.header-row:last-child {
border-bottom: none;
}
.header-cell {
display: flex;
align-items: center;
justify-content: center;
border-right: 0.5pt solid #64748b;
background: #f1f5f9;
padding: 4pt 6pt;
height: 18pt;
}
.header-cell:last-child { border-right: none; }
.header-cell.label {
width: 55pt;
background: #e2e8f0;
}
.header-cell.value { flex: 1; }
.header-cell.small { width: 45pt; }
.header-cell.medium { width: 70pt; }
.header-cell p {
font-size: 6pt;
color: #1e293b;
white-space: nowrap;
}
/* Main Content */
.main-content {
display: flex;
flex: 1;
padding: 0 8pt 8pt 8pt;
gap: 8pt;
}
/* Wireframe Area */
.wireframe-area {
flex: 1;
background: #f8fafc;
border: 0.5pt solid #e2e8f0;
border-radius: 2pt;
display: flex;
flex-direction: column;
overflow: hidden;
}
.wireframe-header {
background: #1e293b;
padding: 5pt 10pt;
}
.wireframe-header p {
font-size: 8pt;
font-weight: 600;
color: #ffffff;
}
.wireframe-body {
flex: 1;
display: flex;
padding: 8pt;
gap: 8pt;
}
/* Sidebar */
.sidebar {
width: 65pt;
background: #f1f5f9;
border-radius: 2pt;
padding: 5pt;
}
.sidebar-item {
padding: 4pt 5pt;
margin-bottom: 2pt;
border-radius: 2pt;
background: #ffffff;
}
.sidebar-item.active {
background: #0d9488;
}
.sidebar-item p {
font-size: 5pt;
color: #1e293b;
}
.sidebar-item.active p {
color: #ffffff;
font-weight: 600;
}
/* Content Area */
.content-area {
flex: 1;
display: flex;
flex-direction: column;
gap: 6pt;
}
.section-title p {
font-size: 8pt;
font-weight: 700;
color: #1e293b;
}
/* Cards */
.cards-row {
display: flex;
gap: 6pt;
}
.card {
flex: 1;
background: #f1f5f9;
border: 0.5pt solid #e2e8f0;
border-radius: 2pt;
overflow: hidden;
}
.card.selected {
border-color: #0d9488;
border-width: 1pt;
}
.card-header {
background: #1e293b;
padding: 3pt 5pt;
}
.card-header.primary {
background: #0d9488;
}
.card-header p {
font-size: 5pt;
color: #ffffff;
font-weight: 600;
}
.card-body {
padding: 5pt;
display: flex;
align-items: center;
justify-content: center;
min-height: 25pt;
}
.card-body p {
font-size: 7pt;
color: #1e293b;
font-weight: 600;
}
/* Data Table */
.data-table {
background: #1e293b;
border-radius: 2pt;
overflow: hidden;
}
.table-row {
display: flex;
border-bottom: 0.5pt solid #334155;
}
.table-row:last-child { border-bottom: none; }
.table-cell {
flex: 1;
padding: 4pt 8pt;
display: flex;
align-items: center;
}
.table-cell.label { flex: 0 0 100pt; }
.table-cell p {
font-size: 6pt;
color: #94a3b8;
}
.table-cell.value p { color: #ffffff; }
.table-cell.highlight p {
font-size: 10pt;
font-weight: 700;
color: #ffffff;
}
.table-cell.accent p {
color: #0d9488;
font-weight: 600;
}
/* Warning Box */
.warning-box {
background: #dc2626;
border-radius: 2pt;
padding: 4pt 6pt;
}
.warning-box p {
font-size: 5pt;
color: #ffffff;
}
/* Button */
.button {
background: #0d9488;
border-radius: 2pt;
padding: 5pt 12pt;
display: inline-flex;
align-items: center;
justify-content: center;
}
.button p {
font-size: 7pt;
color: #ffffff;
font-weight: 600;
}
/* Description Panel - 흰색 배경, 투명한 항목 */
.description-panel {
width: 145pt;
background: #ffffff;
border: 0.5pt solid #e2e8f0;
border-radius: 2pt;
padding: 8pt;
display: flex;
flex-direction: column;
}
.description-header {
background: #95C11F;
padding: 4pt 8pt;
border-radius: 2pt;
margin-bottom: 10pt;
}
.description-header p {
font-size: 7pt;
font-weight: 600;
color: #ffffff;
text-align: center;
}
.description-item {
margin-bottom: 10pt;
/* 배경 없음 - 투명 */
}
.description-item-header {
display: flex;
align-items: center;
gap: 5pt;
margin-bottom: 3pt;
}
.description-number {
width: 14pt;
height: 14pt;
background: #dc2626;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.description-number p {
font-size: 6pt;
font-weight: 700;
color: #ffffff;
}
.description-title p {
font-size: 6pt;
font-weight: 700;
color: #1e293b;
}
.description-content {
padding-left: 17pt;
}
.description-content p {
font-size: 5pt;
color: #64748b;
line-height: 1.4;
}
</style>
</head>
<body>
<!-- Header Table -->
<div class="header-table">
<div class="header-row">
<div class="header-cell label"><p>Task Name</p></div>
<div class="header-cell value"><p>생성 이력</p></div>
<div class="header-cell label"><p>Ver.</p></div>
<div class="header-cell small"><p>D1.0</p></div>
<div class="header-cell label"><p>Page</p></div>
<div class="header-cell small"><p>10</p></div>
</div>
<div class="header-row">
<div class="header-cell label"><p>Route</p></div>
<div class="header-cell value"><p>/tutorial-video/history</p></div>
<div class="header-cell label"><p>Screen Name</p></div>
<div class="header-cell value"><p>영상 생성 이력 관리</p></div>
<div class="header-cell label"><p>Screen ID</p></div>
<div class="header-cell medium"><p>TUT_005</p></div>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<!-- Wireframe Area -->
<div class="wireframe-area">
<div class="wireframe-header">
<p>SAM 사용법 영상 자동 생성 시스템</p>
</div>
<div class="wireframe-body">
<div class="sidebar">
<div class="sidebar-item ">
<p>영상 생성</p>
</div>
<div class="sidebar-item active">
<p>생성 이력</p>
</div>
<div class="sidebar-item ">
<p>설정</p>
</div>
</div>
<div class="content-area">
<div style="position: relative; flex: 1; min-height: 200pt;">
<div style="
position: absolute;
left: 5.200000000000005pt;
top: -2.6000000000000023pt;
width: 275.59999999999997pt;
height: 18.2pt;
background: #1e293b;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 7.699999999999999pt;
color: #FFFFFF;
font-weight: 700;
text-align: center;
line-height: 1.3;
margin: 0;
">튜토리얼 영상 생성 이력</p>
</div>
<div style="
position: absolute;
left: 5.200000000000005pt;
top: 23.4pt;
width: 275.59999999999997pt;
height: 15.6pt;
background: #0d9488;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
"></p>
</div>
<div style="
position: absolute;
left: 7.799999999999995pt;
top: 24.439999999999998pt;
width: 15.6pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #FFFFFF;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
"></p>
</div>
<div style="
position: absolute;
left: 26pt;
top: 24.439999999999998pt;
width: 93.60000000000001pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #FFFFFF;
font-weight: 700;
text-align: center;
line-height: 1.3;
margin: 0;
">제목</p>
</div>
<div style="
position: absolute;
left: 124.8pt;
top: 24.439999999999998pt;
width: 41.6pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #FFFFFF;
font-weight: 700;
text-align: center;
line-height: 1.3;
margin: 0;
">상태</p>
</div>
<div style="
position: absolute;
left: 171.6pt;
top: 24.439999999999998pt;
width: 41.6pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #FFFFFF;
font-weight: 700;
text-align: center;
line-height: 1.3;
margin: 0;
">생성일</p>
</div>
<div style="
position: absolute;
left: 218.4pt;
top: 24.439999999999998pt;
width: 26pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #FFFFFF;
font-weight: 700;
text-align: center;
line-height: 1.3;
margin: 0;
">비용</p>
</div>
<div style="
position: absolute;
left: 249.6pt;
top: 24.439999999999998pt;
width: 31.2pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #FFFFFF;
font-weight: 700;
text-align: center;
line-height: 1.3;
margin: 0;
">액션</p>
</div>
<div style="
position: absolute;
left: 5.200000000000005pt;
top: 41.599999999999994pt;
width: 275.59999999999997pt;
height: 15.6pt;
background: #f8fafc;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
"></p>
</div>
<div style="
position: absolute;
left: 26pt;
top: 42.63999999999999pt;
width: 93.60000000000001pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">견적서 관리 사용법</p>
</div>
<div style="
position: absolute;
left: 124.8pt;
top: 42.63999999999999pt;
width: 41.6pt;
height: 13pt;
background: #10b981;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #FFFFFF;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">완료</p>
</div>
<div style="
position: absolute;
left: 171.6pt;
top: 42.63999999999999pt;
width: 41.6pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">02.15</p>
</div>
<div style="
position: absolute;
left: 218.4pt;
top: 42.63999999999999pt;
width: 26pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">$0.07</p>
</div>
<div style="
position: absolute;
left: 249.6pt;
top: 42.63999999999999pt;
width: 31.2pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #0d9488;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">▶ 📥</p>
</div>
<div style="
position: absolute;
left: 5.200000000000005pt;
top: 59.8pt;
width: 275.59999999999997pt;
height: 15.6pt;
background: #FFFFFF;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
"></p>
</div>
<div style="
position: absolute;
left: 26pt;
top: 60.839999999999996pt;
width: 93.60000000000001pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">주문 관리 사용법</p>
</div>
<div style="
position: absolute;
left: 124.8pt;
top: 60.839999999999996pt;
width: 41.6pt;
height: 13pt;
background: #f59e0b;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #FFFFFF;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">생성중</p>
</div>
<div style="
position: absolute;
left: 171.6pt;
top: 60.839999999999996pt;
width: 41.6pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">02.15</p>
</div>
<div style="
position: absolute;
left: 218.4pt;
top: 60.839999999999996pt;
width: 26pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">-</p>
</div>
<div style="
position: absolute;
left: 249.6pt;
top: 60.839999999999996pt;
width: 31.2pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #f59e0b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">⏳ 75%</p>
</div>
<div style="
position: absolute;
left: 5.200000000000005pt;
top: 78pt;
width: 275.59999999999997pt;
height: 15.6pt;
background: #f8fafc;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
"></p>
</div>
<div style="
position: absolute;
left: 26pt;
top: 79.04pt;
width: 93.60000000000001pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #1e293b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">거래처 관리 사용법</p>
</div>
<div style="
position: absolute;
left: 124.8pt;
top: 79.04pt;
width: 41.6pt;
height: 13pt;
background: #10b981;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #FFFFFF;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">완료</p>
</div>
<div style="
position: absolute;
left: 171.6pt;
top: 79.04pt;
width: 41.6pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">02.14</p>
</div>
<div style="
position: absolute;
left: 218.4pt;
top: 79.04pt;
width: 26pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">$0.07</p>
</div>
<div style="
position: absolute;
left: 249.6pt;
top: 79.04pt;
width: 31.2pt;
height: 13pt;
background: transparent;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 4.8999999999999995pt;
color: #0d9488;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">▶ 📥</p>
</div>
<div style="
position: absolute;
left: 5.200000000000005pt;
top: 106.6pt;
width: 275.59999999999997pt;
height: 26pt;
background: #f8fafc;
border-radius: 2pt;
display: flex;
align-items: center;
justify-content: center;
padding: 2pt 4pt;
box-sizing: border-box;
">
<p style="
font-size: 5.6pt;
color: #64748b;
font-weight: 400;
text-align: center;
line-height: 1.3;
margin: 0;
">선택된 항목: 0개 | 전체: 3건</p>
</div>
<div style="
position: absolute;
left: 104pt;
top: 39pt;
width: 14pt;
height: 14pt;
background: #dc2626;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
box-shadow: 0 1pt 3pt rgba(0,0,0,0.3);
">
<p style="
font-size: 7pt;
font-weight: 700;
color: white;
margin: 0;
">1</p>
</div>
<div style="
position: absolute;
left: 208pt;
top: 65pt;
width: 14pt;
height: 14pt;
background: #dc2626;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
box-shadow: 0 1pt 3pt rgba(0,0,0,0.3);
">
<p style="
font-size: 7pt;
font-weight: 700;
color: white;
margin: 0;
">2</p>
</div>
<div style="
position: absolute;
left: 244.4pt;
top: 91pt;
width: 14pt;
height: 14pt;
background: #dc2626;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
box-shadow: 0 1pt 3pt rgba(0,0,0,0.3);
">
<p style="
font-size: 7pt;
font-weight: 700;
color: white;
margin: 0;
">3</p>
</div>
<div style="
position: absolute;
left: 244.4pt;
top: 117pt;
width: 14pt;
height: 14pt;
background: #dc2626;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
box-shadow: 0 1pt 3pt rgba(0,0,0,0.3);
">
<p style="
font-size: 7pt;
font-weight: 700;
color: white;
margin: 0;
">4</p>
</div>
</div>
</div>
</div>
</div>
<!-- Description Panel -->
<div class="description-panel">
<div class="description-header">
<p>Description</p>
</div>
<div class="description-item">
<div class="description-item-header">
<div class="description-number">
<p>1</p>
</div>
<div class="description-title">
<p>영상 목록 테이블</p>
</div>
</div>
<div class="description-content">
<p>생성된 튜토리얼 영상 목록입니다. 제목, 상태, 생성일, 비용 등을 확인할 수 있습니다.</p>
</div>
</div>
<div class="description-item">
<div class="description-item-header">
<div class="description-number">
<p>2</p>
</div>
<div class="description-title">
<p>상태 표시</p>
</div>
</div>
<div class="description-content">
<p>영상 생성 진행 상태를 실시간으로 표시합니다. (대기중/분석중/생성중/완료/실패)</p>
</div>
</div>
<div class="description-item">
<div class="description-item-header">
<div class="description-number">
<p>3</p>
</div>
<div class="description-title">
<p>재생/다운로드</p>
</div>
</div>
<div class="description-content">
<p>완료된 영상을 바로 재생하거나 MP4/PPTX 파일을 다운로드할 수 있습니다.</p>
</div>
</div>
<div class="description-item">
<div class="description-item-header">
<div class="description-number">
<p>4</p>
</div>
<div class="description-title">
<p>재생성/삭제</p>
</div>
</div>
<div class="description-content">
<p>화면이 변경된 경우 재생성하거나, 불필요한 영상을 삭제할 수 있습니다.</p>
</div>
</div>
</div>
</div>
</body>
</html>