Files
aio-01d4-stu/Lecture/FinalProject/Doc/기획서_잘_쓰는_법.html

559 lines
57 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>기획서 잘 쓰는 법</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;900&family=JetBrains+Mono:wght@400;600&display=swap">
<style>
@page { size: 1920px 1080px; margin: 0; }
* { box-sizing: border-box; margin: 0; }
html, body { background: #1B1E24; height: 100%; overflow: hidden; }
body { display: flex; align-items: center; justify-content: center; }
.frame { width: min(100vw, calc(100vh * 16 / 9)); aspect-ratio: 16 / 9; position: relative; overflow: hidden;
display: none; }
.frame.active { display: block; }
.nav { position: fixed; right: 16px; bottom: 12px; display: flex; gap: 8px; align-items: center;
font: 14px 'JetBrains Mono', 'Noto Sans CJK KR', monospace; color: #C9D3E3; opacity: .25; transition: opacity .2s; }
.nav:hover, body.moved .nav { opacity: .9; }
.nav button { background: #2B2F36; color: #F7F6F2; border: 1px solid #4A5D80; border-radius: 6px;
width: 36px; height: 32px; font-size: 16px; cursor: pointer; }
.nav button:hover { background: #E8833A; color: #14213D; }
.progress { position: fixed; left: 0; bottom: 0; height: 4px; background: #E8833A; transition: width .2s; }
.slide { width: 1920px; height: 1080px; transform-origin: 0 0; position: absolute; left: 0; top: 0; }
.slide > section { width: 1920px; height: 1080px; position: relative; overflow: hidden;
font-family: 'Noto Sans KR', 'Noto Sans CJK KR', Arial, sans-serif; }
section [style*="JetBrains"] { }
h1, h2, h3, p, li, td, th { font-family: inherit; }
ul, ol { padding-left: 1.3em; }
table { border-collapse: collapse; width: 100%; }
th, td { padding: 0.35em 0.6em; text-align: left; border-bottom: 1px solid #E2E0D8; vertical-align: top; }
@media print {
html, body { background: none; padding: 0; gap: 0; display: block; height: auto; overflow: visible; }
.nav, .progress { display: none; }
.frame { display: block !important; width: 1920px; height: 1080px; break-after: page; }
.slide { transform: none !important; }
}
</style>
</head>
<body>
<div class="frame"><div class="slide"><section id="cover" style="background:#14213D;color:#F7F6F2;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px;display:flex;flex-direction:column;justify-content:center;gap:40px">
<div style="position:absolute;left:0;top:0;width:24px;height:1080px;background:#E8833A"></div>
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;color:#F2A66B;letter-spacing:4px">AIO 1기 · FINAL PROJECT · GUIDE</p>
<h1 style="font-size:112px;font-weight:900;line-height:1.1">기획서<br>잘 쓰는 법</h1>
<p style="font-size:36px;color:#C9D3E3;line-height:1.4">읽는 사람의 질문에 미리 답하는 문서 만들기</p>
<div style="display:flex;gap:24px">
<p style="font-size:28px;color:#14213D;background:#E8833A;padding:12px 24px;border-radius:8px">문제 → 사용자 → 범위 → 설계 → 검증</p>
</div>
</section>
</div></div><div class="frame"><div class="slide"><section id="what" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">WHAT IS IT</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">기획서는 결정을 돕는 문서입니다</h2>
</div>
<p style="font-size:44px;font-weight:700;line-height:1.35;color:#14213D">읽는 사람이 <span style="color:#B5541A">“이걸 왜, 무엇을, 어떻게, 언제까지 만들고, 성공은 어떻게 판단하나?”</span>를 한 번에 판단할 수 있어야 합니다.</p>
<div style="display:flex;gap:24px">
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:28px">
<h3 style="font-size:32px;font-weight:700">설득 문서</h3>
<p style="font-size:26px;color:#4A5568;line-height:1.5">이 프로젝트가 할 만한 가치가 있다는 근거</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:28px">
<h3 style="font-size:32px;font-weight:700">팀의 설계도</h3>
<p style="font-size:26px;color:#4A5568;line-height:1.5">무엇을 만들고 무엇을 안 만들지에 대한 합의</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:28px">
<h3 style="font-size:32px;font-weight:700">판단의 기준</h3>
<p style="font-size:26px;color:#4A5568;line-height:1.5">나중에 범위·우선순위를 바꿀 때 돌아올 곳</p>
</div>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">02 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="readers" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:40px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">WHO READS IT</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">읽는 사람은 세 명입니다</h2>
</div>
<div style="display:flex;gap:24px">
<div style="flex:1;display:flex;flex-direction:column;gap:16px;background:#14213D;border-radius:16px;padding:36px">
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#F2A66B;width:44px;height:44px" aria-label="Verified"><path d="M12 2l2.4 2.1 3.2-.3.9 3.1 2.8 1.6-1.2 3 1.2 3-2.8 1.6-.9 3.1-3.2-.3L12 22l-2.4-2.1-3.2.3-.9-3.1-2.8-1.6 1.2-3-1.2-3 2.8-1.6.9-3.1 3.2.3z"/><path d="M8.5 12l2.5 2.5 4.5-5"/></svg><h3 style="font-size:34px;font-weight:700;color:#F7F6F2">평가자</h3></div>
<p style="font-size:24px;color:#9AA8BF">강사 · 멘토 · 심사위원</p>
<ul style="font-size:26px;color:#C9D3E3;line-height:1.6">
<li>문제가 진짜인가?</li>
<li>해법이 논리적인가?</li>
<li>기간 안에 가능한가?</li>
</ul>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:16px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:16px;padding:36px">
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:44px;height:44px" aria-label="Users"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg><h3 style="font-size:34px;font-weight:700">팀원</h3></div>
<p style="font-size:24px;color:#6B7280">함께 만드는 사람</p>
<ul style="font-size:26px;color:#14213D;line-height:1.6">
<li>내가 만들 것은 무엇인가?</li>
<li>어디까지가 완료인가?</li>
<li>언제까지 해야 하나?</li>
</ul>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:16px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:16px;padding:36px">
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:44px;height:44px" aria-label="Clock"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg><h3 style="font-size:34px;font-weight:700">미래의 우리</h3></div>
<p style="font-size:24px;color:#6B7280">5주 뒤, 면접장에서</p>
<ul style="font-size:26px;color:#14213D;line-height:1.6">
<li>그때 왜 이렇게 정했지?</li>
<li>무엇을 일부러 뺐지?</li>
<li>이 프로젝트를 어떻게 설명하지?</li>
</ul>
</div>
</div>
<p style="font-size:28px;color:#4A5568;line-height:1.4">세 사람의 질문 중 하나라도 답이 없으면, 그 부분이 기획서의 빈칸입니다.</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">03 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="traits" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:40px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">GOOD PROPOSALS</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">좋은 기획서의 다섯 가지 특징</h2>
</div>
<div style="display:flex;flex-direction:column">
<div style="display:flex;gap:40px;align-items:center;border-top:2px solid #14213D;padding:22px 0px"><p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:40px;font-weight:600;color:#B5541A;width:88px">01</p><p style="width:360px;font-size:34px;font-weight:700">문제에서 출발한다</p><p style="flex:1;font-size:28px;color:#4A5568">기술이 아니라 누군가의 불편에서 시작</p></div>
<div style="display:flex;gap:40px;align-items:center;border-top:1px solid #C9CCD1;padding:22px 0px"><p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:40px;font-weight:600;color:#B5541A;width:88px">02</p><p style="width:360px;font-size:34px;font-weight:700">구체적이다</p><p style="flex:1;font-size:28px;color:#4A5568">누가 · 언제 · 무엇을이 이름과 숫자로 보인다</p></div>
<div style="display:flex;gap:40px;align-items:center;border-top:1px solid #C9CCD1;padding:22px 0px"><p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:40px;font-weight:600;color:#B5541A;width:88px">03</p><p style="width:360px;font-size:34px;font-weight:700">한 줄로 이어진다</p><p style="flex:1;font-size:28px;color:#4A5568">문제 → 해법 → 기능 → 일정이 서로 근거가 된다</p></div>
<div style="display:flex;gap:40px;align-items:center;border-top:1px solid #C9CCD1;padding:22px 0px"><p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:40px;font-weight:600;color:#B5541A;width:88px">04</p><p style="width:360px;font-size:34px;font-weight:700">확인할 수 있다</p><p style="flex:1;font-size:28px;color:#4A5568">완료와 성공을 무엇으로 판단할지 적혀 있다</p></div>
<div style="display:flex;gap:40px;align-items:center;border-top:1px solid #C9CCD1;border-bottom:1px solid #C9CCD1;padding:22px 0px"><p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:40px;font-weight:600;color:#B5541A;width:88px">05</p><p style="width:360px;font-size:34px;font-weight:700">현실적이다</p><p style="flex:1;font-size:28px;color:#4A5568">인원 · 기간 · 데이터로 가능한 범위만 약속한다</p></div>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">04 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="mistakes" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:32px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">COMMON MISTAKES</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">흔한 실수와 고쳐 쓴 문장</h2>
</div>
<table style="font-size:25px;color:#14213D;background:#FFFFFF">
<tr style="background:#14213D"><th style="width:18%;color:#F7F6F2">실수</th><th style="width:36%;color:#F7F6F2">이렇게 쓰면 약하다</th><th style="width:46%;color:#F7F6F2">이렇게 고친다</th></tr>
<tr><td>기술부터 시작</td><td>LangGraph로 멀티 에이전트를 구현한다</td><td>장애 대응에 [N시간]이 걸리는 운영자의 수작업을 줄인다</td></tr>
<tr style="background:#F5F7FA"><td>모호한 목표</td><td>AI로 업무를 효율화한다</td><td>일정 충돌 확인 시간을 [N분]에서 [M분]으로 줄인다</td></tr>
<tr><td>기능 나열</td><td>검색, 요약, 분석, 보고서, 알림…</td><td>사용자 한 명이 끝까지 가는 시나리오 1개로 기능을 묶는다</td></tr>
<tr style="background:#F5F7FA"><td>전부 다 하기</td><td>Must 기능 15개</td><td>Must 3~5개 · 나머지는 Should·Could로</td></tr>
<tr><td>근거 없는 주장</td><td>많은 사람이 불편을 겪고 있다</td><td>출처가 있는 자료나 인터뷰 [N명] 결과를 붙인다</td></tr>
</table>
<p style="font-size:24px;color:#6B7280">대괄호 [ ]는 팀이 조사해서 채울 자리입니다 — 숫자를 지어내지 마세요</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">05 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="structure" style="background:#14213D;color:#F7F6F2;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#F2A66B;letter-spacing:2px">STRUCTURE</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">기획서의 뼈대는 다섯 개의 질문</h2>
</div>
<div style="display:flex;gap:16px;align-items:stretch">
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#E8833A;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;font-weight:600;color:#14213D">WHY</p>
<h3 style="font-size:32px;font-weight:700;color:#14213D">왜</h3>
<p style="font-size:24px;color:#14213D;line-height:1.5">배경 · 문제 · 타깃 사용자</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#1F2E4F;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;font-weight:600;color:#F2A66B">WHAT</p>
<h3 style="font-size:32px;font-weight:700">무엇을</h3>
<p style="font-size:24px;color:#C9D3E3;line-height:1.5">솔루션 · 시나리오 · 기능 · 요구사항</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#1F2E4F;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;font-weight:600;color:#F2A66B">HOW</p>
<h3 style="font-size:32px;font-weight:700">어떻게</h3>
<p style="font-size:24px;color:#C9D3E3;line-height:1.5">아키텍처 · 기술 스택 · 데이터</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#1F2E4F;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;font-weight:600;color:#F2A66B">WHEN · WHO</p>
<h3 style="font-size:32px;font-weight:700">언제 · 누가</h3>
<p style="font-size:24px;color:#C9D3E3;line-height:1.5">일정 · 마일스톤 · 역할</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#1F2E4F;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;font-weight:600;color:#F2A66B">HOW WELL</p>
<h3 style="font-size:32px;font-weight:700">얼마나</h3>
<p style="font-size:24px;color:#C9D3E3;line-height:1.5">성공 지표 · 리스크와 대응</p>
</div>
</div>
<p style="font-size:30px;color:#C9D3E3;line-height:1.5">‘왜’에 가장 많은 시간을 쓰세요. ‘왜’가 약하면 나머지가 아무리 화려해도 설득력이 없습니다.</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#9AA8BF">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#9AA8BF;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">06 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="problem" style="background:#EEF1F5;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#2F5D8C;letter-spacing:2px">WHY · PROBLEM</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">문제를 한 문장으로 진술하기</h2>
</div>
<div style="display:flex;flex-direction:column;gap:12px;background:#14213D;border-radius:16px;padding:36px 40px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#F2A66B">문제 진술 공식</p>
<p style="font-size:36px;font-weight:700;color:#F7F6F2;line-height:1.45">[누가] [어떤 상황에서] [무엇 때문에] [어떤 손해]를 겪는다</p>
</div>
<div style="display:flex;gap:24px">
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#FFFFFF;border-radius:12px;padding:28px">
<h3 style="font-size:30px;font-weight:700">예시</h3>
<p style="font-size:26px;color:#4A5568;line-height:1.55">소규모 개발팀의 운영 담당자는 야간 장애가 나면 로그를 일일이 뒤져 원인을 찾느라 복구까지 [N시간]이 걸리고, 그동안 서비스가 멈춘다.</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#FFFFFF;border-radius:12px;padding:28px">
<h3 style="font-size:30px;font-weight:700">‘왜?’를 다섯 번</h3>
<p style="font-size:26px;color:#4A5568;line-height:1.55">눈에 보이는 불편에서 “왜 그런가?”를 반복해 근본 원인까지 내려가면, 해결해야 할 진짜 문제가 보입니다.</p>
</div>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5B6472">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#5B6472;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">07 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="persona" style="background:#EEF1F5;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#2F5D8C;letter-spacing:2px">WHY · USER</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">사용자를 한 사람으로 그리기 — 페르소나</h2>
</div>
<div style="display:flex;gap:32px">
<div style="flex:1.1;display:flex;flex-direction:column;gap:14px;background:#FFFFFF;border-top:8px solid #2F5D8C;border-radius:12px;padding:32px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#2F5D8C">PERSONA CARD · 예시</p>
<h3 style="font-size:34px;font-weight:700">김운영 (32) · 스타트업 인프라 담당</h3>
<p style="font-size:26px;color:#14213D;line-height:1.5"><b>목표</b> — 장애를 빨리 끝내고 재발을 막고 싶다</p>
<p style="font-size:26px;color:#14213D;line-height:1.5"><b>불편</b> — 혼자서 여러 서버를 보고, 원인 찾기가 오래 걸린다</p>
<p style="font-size:26px;color:#14213D;line-height:1.5"><b>지금 쓰는 도구</b> — 모니터링 알림, 로그 검색, 메신저</p>
<p style="font-size:26px;color:#14213D;line-height:1.5"><b>성공의 모습</b> — 알림을 받으면 원인과 조치가 이미 정리되어 있다</p>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:20px">
<h3 style="font-size:32px;font-weight:700">왜 한 사람으로?</h3>
<ul style="font-size:28px;color:#14213D;line-height:1.6">
<li>“모든 사용자”를 위한 서비스는 아무도 만족시키지 못한다</li>
<li>기능을 넣을지 말지 “김운영에게 필요한가?”로 판단</li>
<li>팀 전원이 같은 사람을 떠올리며 만든다</li>
</ul>
<p style="font-size:24px;color:#6B7280">대표 페르소나 1명 + 보조 1명이면 충분합니다</p>
</div>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5B6472">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#5B6472;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">08 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="scenario" style="background:#EEF1F5;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:32px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#2F5D8C;letter-spacing:2px">WHAT · SCENARIO</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">Before / After 시나리오로 보여주기</h2>
</div>
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-size:28px;font-weight:700;color:#5B6472">BEFORE · 지금</p>
<div style="display:flex;gap:12px;align-items:center">
<p style="flex:1;font-size:24px;background:#FFFFFF;border:1px solid #C9CCD1;padding:18px 20px;border-radius:8px">새벽 장애 알림</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:40px;height:20px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#9AA8BF"/></svg>
<p style="flex:1;font-size:24px;background:#FFFFFF;border:1px solid #C9CCD1;padding:18px 20px;border-radius:8px">로그 직접 검색</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:40px;height:20px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#9AA8BF"/></svg>
<p style="flex:1;font-size:24px;background:#FFFFFF;border:1px solid #C9CCD1;padding:18px 20px;border-radius:8px">원인 추측 · 재시도</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:40px;height:20px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#9AA8BF"/></svg>
<p style="flex:1;font-size:24px;background:#FFFFFF;border:1px solid #C9CCD1;padding:18px 20px;border-radius:8px">[N시간] 뒤 복구</p>
</div>
</div>
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-size:28px;font-weight:700;color:#2F5D8C">AFTER · 우리 서비스</p>
<div style="display:flex;gap:12px;align-items:center">
<p style="flex:1;font-size:24px;color:#F7F6F2;background:#2F5D8C;padding:18px 20px;border-radius:8px">이상 감지</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:40px;height:20px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:24px;color:#F7F6F2;background:#2F5D8C;padding:18px 20px;border-radius:8px">진단 에이전트 분석</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:40px;height:20px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:24px;color:#F7F6F2;background:#2F5D8C;padding:18px 20px;border-radius:8px">자동 복구 실행</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:40px;height:20px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:24px;color:#F7F6F2;background:#2F5D8C;padding:18px 20px;border-radius:8px">결과 보고만 확인</p>
</div>
</div>
<p style="font-size:28px;color:#4A5568;line-height:1.4">시나리오 한 줄이 곧 <b>시연 대본</b>이 됩니다. 발표 데모에서 이 흐름을 그대로 보여주세요.</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5B6472">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#5B6472;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">09 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="solution" style="background:#EEF1F5;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:32px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#2F5D8C;letter-spacing:2px">WHAT · DIFFERENTIATION</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">기존 방식과 비교해 차별점 보여주기</h2>
</div>
<table style="font-size:26px;color:#14213D;background:#FFFFFF">
<tr style="background:#14213D"><th style="width:22%;color:#F7F6F2">비교 기준</th><th style="width:26%;color:#F7F6F2">수작업</th><th style="width:26%;color:#F7F6F2">기존 도구 [이름]</th><th style="width:26%;color:#F7F6F2">우리 서비스</th></tr>
<tr><td>원인 파악</td><td>사람이 로그 검색</td><td>알림만 제공</td><td>에이전트가 진단</td></tr>
<tr style="background:#F5F7FA"><td>조치</td><td>수동 실행</td><td>수동 실행</td><td>자동 복구 + 승인</td></tr>
<tr><td>오류 시 대응</td><td>사람이 재시도</td><td>없음</td><td>자기 성찰 후 재시도</td></tr>
<tr style="background:#F5F7FA"><td>과정 확인</td><td>기록 없음</td><td>일부 로그</td><td>사고 과정 대시보드</td></tr>
</table>
<p style="font-size:28px;color:#4A5568;line-height:1.4">비교 기준은 <b>사용자가 신경 쓰는 것</b>으로 고르세요. 기술 이름이 아니라 결과의 차이를 적습니다.</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5B6472">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#5B6472;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">10 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="priority" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">WHAT · SCOPE</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">기능에 우선순위 매기기 — MoSCoW</h2>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:20px">
<div style="display:flex;flex-direction:column;gap:12px;background:#14213D;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:32px;font-weight:600;color:#F2A66B">MUST</p>
<h3 style="font-size:28px;font-weight:700;color:#F7F6F2">없으면 실패</h3>
<p style="font-size:24px;color:#C9D3E3;line-height:1.5">핵심 시나리오가 끝까지 돌아가는 데 꼭 필요한 것 · 3~5개</p>
</div>
<div style="display:flex;flex-direction:column;gap:12px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:32px;font-weight:600;color:#B5541A">SHOULD</p>
<h3 style="font-size:28px;font-weight:700">있으면 좋음</h3>
<p style="font-size:24px;color:#4A5568;line-height:1.5">가치는 크지만 없어도 시연은 가능한 것</p>
</div>
<div style="display:flex;flex-direction:column;gap:12px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:32px;font-weight:600;color:#2F5D8C">COULD</p>
<h3 style="font-size:28px;font-weight:700">여유 있으면</h3>
<p style="font-size:24px;color:#4A5568;line-height:1.5">일정이 남으면 추가할 것</p>
</div>
<div style="display:flex;flex-direction:column;gap:12px;background:#FFFFFF;border:1px dashed #9AA8BF;border-radius:12px;padding:28px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:32px;font-weight:600;color:#5B6472">WON’T</p>
<h3 style="font-size:28px;font-weight:700">이번엔 안 함</h3>
<p style="font-size:24px;color:#4A5568;line-height:1.5">일부러 뺀 것 — 적어 두면 범위 논쟁이 줄어듭니다</p>
</div>
</div>
<div style="display:flex;gap:20px">
<p style="flex:1;font-size:26px;color:#F7F6F2;background:#2F5D8C;padding:16px 24px;border-radius:8px">시나리오에 안 나오는 기능 → Could 이하</p>
<p style="flex:1;font-size:26px;color:#7A3A10;background:#FBE3CF;padding:16px 24px;border-radius:8px">Must가 5개를 넘으면 범위가 과하다는 신호</p>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">11 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="requirements" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:32px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">WHAT · REQUIREMENTS</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">요구사항은 확인할 수 있게 씁니다</h2>
</div>
<table style="font-size:26px;color:#14213D;background:#FFFFFF">
<tr style="background:#14213D"><th style="width:42%;color:#F7F6F2">확인할 수 없는 문장</th><th style="width:58%;color:#F7F6F2">확인할 수 있는 문장</th></tr>
<tr><td>빠르게 응답한다</td><td>첫 응답 토큰이 [N초] 안에 화면에 표시된다</td></tr>
<tr style="background:#F5F7FA"><td>안전하게 처리한다</td><td>로그인하지 않은 요청은 401로 거부한다</td></tr>
<tr><td>오류에 강하다</td><td>외부 API 실패 시 [N회] 재시도 후 대체 응답을 준다</td></tr>
<tr style="background:#F5F7FA"><td>사용하기 쉽다</td><td>처음 쓰는 사용자가 안내 없이 [핵심 작업]을 끝낸다</td></tr>
</table>
<div style="display:flex;gap:20px">
<p style="flex:1;font-size:24px;color:#14213D;background:#FFFFFF;border:1px solid #E2E0D8;padding:16px 20px;border-radius:8px"><b>주어</b> — 시스템이 / 사용자가</p>
<p style="flex:1;font-size:24px;color:#14213D;background:#FFFFFF;border:1px solid #E2E0D8;padding:16px 20px;border-radius:8px"><b>조건</b> — 언제 · 어떤 입력에서</p>
<p style="flex:1;font-size:24px;color:#14213D;background:#FFFFFF;border:1px solid #E2E0D8;padding:16px 20px;border-radius:8px"><b>기준</b> — 숫자 · 상태 · 결과</p>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">12 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="diagram" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">HOW · ARCHITECTURE</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">구성도는 한 장으로, 흐름이 보이게</h2>
</div>
<div style="display:flex;gap:14px;align-items:center">
<p style="flex:1;font-size:26px;text-align:center;background:#FFFFFF;border:2px solid #14213D;padding:22px 12px;border-radius:10px">사용자</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;text-align:center;background:#FFFFFF;border:2px solid #14213D;padding:22px 12px;border-radius:10px">화면 (UI)</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;text-align:center;background:#FFFFFF;border:2px solid #14213D;padding:22px 12px;border-radius:10px">API 서버</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;text-align:center;color:#F7F6F2;background:#2F5D8C;padding:24px 12px;border-radius:10px">에이전트</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;text-align:center;background:#FFFFFF;border:2px dashed #5B6472;padding:22px 12px;border-radius:10px">DB · 외부 API</p>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px 48px">
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:36px;height:36px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:28px">왼쪽에서 오른쪽으로, 요청이 흐르는 방향대로</p></div>
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:36px;height:36px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:28px">화살표 옆에 오가는 데이터 이름 적기</p></div>
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:36px;height:36px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:28px">외부 서비스는 점선 등으로 구분</p></div>
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:36px;height:36px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:28px">박스마다 쓰는 기술 이름 한 줄</p></div>
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:36px;height:36px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:28px">색과 선 모양의 범례 달기</p></div>
<div style="display:flex;gap:16px;align-items:center"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#B5541A;width:36px;height:36px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:28px">박스는 10개 안팎까지</p></div>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">13 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="metrics" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">HOW WELL · METRICS</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">성공을 무엇으로 판단할지 미리 정하기</h2>
</div>
<div style="display:flex;gap:24px">
<div style="flex:1;display:flex;flex-direction:column;gap:14px;background:#FFFFFF;border-top:6px solid #E8833A;border-radius:12px;padding:32px">
<h3 style="font-size:32px;font-weight:700">사용자 가치 지표</h3>
<ul style="font-size:26px;color:#4A5568;line-height:1.6">
<li>작업 처리 시간 (Before → After)</li>
<li>사람이 개입한 횟수</li>
<li>사용자 만족도 · 재사용 의향</li>
</ul>
</div>
<div style="flex:1;display:flex;flex-direction:column;gap:14px;background:#FFFFFF;border-top:6px solid #2F5D8C;border-radius:12px;padding:32px">
<h3 style="font-size:32px;font-weight:700">시스템 품질 지표</h3>
<ul style="font-size:26px;color:#4A5568;line-height:1.6">
<li>응답 지연 시간</li>
<li>자동 복구 성공률 · 평균 복구 시간</li>
<li>보안 테스트 차단 결과</li>
</ul>
</div>
</div>
<div style="display:flex;flex-direction:column;gap:8px;background:#14213D;border-radius:12px;padding:28px 32px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#F2A66B">좋은 지표의 조건</p>
<p style="font-size:30px;color:#F7F6F2;line-height:1.5">측정 방법이 정해져 있고 · 기준값과 목표값이 있고 · 시연이나 로그로 보여줄 수 있다</p>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">14 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="schedule" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">WHEN · WHO</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">일정은 마감에서 거꾸로 세웁니다</h2>
</div>
<div style="display:flex;gap:12px;align-items:center">
<p style="flex:1;font-size:26px;color:#F7F6F2;background:#14213D;padding:20px;border-radius:10px;text-align:center">최종 발표</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;background:#FFFFFF;border:1px solid #C9CCD1;padding:20px;border-radius:10px;text-align:center">리허설 · 버퍼</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;background:#FFFFFF;border:1px solid #C9CCD1;padding:20px;border-radius:10px;text-align:center">통합 테스트</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;background:#FFFFFF;border:1px solid #C9CCD1;padding:20px;border-radius:10px;text-align:center">기능 구현</p>
<svg viewBox="0 0 10 5" preserveAspectRatio="none" style="flex:none;width:48px;height:24px" aria-hidden="true"><polygon points="0,1.5 6,1.5 6,0 10,2.5 6,5 6,3.5 0,3.5" fill="#E8833A"/></svg>
<p style="flex:1;font-size:26px;color:#14213D;background:#E8833A;padding:20px;border-radius:10px;text-align:center">오늘</p>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:20px">
<div style="display:flex;flex-direction:column;gap:8px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:24px 28px"><h3 style="font-size:30px;font-weight:700">마일스톤마다 결과물</h3><p style="font-size:26px;color:#4A5568;line-height:1.5">“무엇이 돌아가는가”로 정의</p></div>
<div style="display:flex;flex-direction:column;gap:8px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:24px 28px"><h3 style="font-size:30px;font-weight:700">작업은 1~3일 단위</h3><p style="font-size:26px;color:#4A5568;line-height:1.5">더 크면 쪼개야 진행이 보입니다</p></div>
<div style="display:flex;flex-direction:column;gap:8px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:24px 28px"><h3 style="font-size:30px;font-weight:700">담당자는 한 명</h3><p style="font-size:26px;color:#4A5568;line-height:1.5">“다 같이”는 아무도 안 한다는 뜻</p></div>
<div style="display:flex;flex-direction:column;gap:8px;background:#FFFFFF;border:1px solid #E2E0D8;border-radius:12px;padding:24px 28px"><h3 style="font-size:30px;font-weight:700">버퍼를 남긴다</h3><p style="font-size:26px;color:#4A5568;line-height:1.5">예상 못 한 문제는 반드시 생깁니다</p></div>
</div>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">15 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="risks" style="background:#F7F6F2;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:32px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#B5541A;letter-spacing:2px">HOW WELL · RISKS</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">리스크는 미리 적어 두면 관리가 됩니다</h2>
</div>
<table style="font-size:26px;color:#14213D;background:#FFFFFF">
<tr style="background:#14213D"><th style="width:28%;color:#F7F6F2">리스크</th><th style="width:16%;color:#F7F6F2">가능성</th><th style="width:16%;color:#F7F6F2">영향</th><th style="width:40%;color:#F7F6F2">대응 계획</th></tr>
<tr><td>외부 API 비용·호출 제한</td><td>중간</td><td>높음</td><td>캐시 · 모의 응답 · 사용량 모니터링</td></tr>
<tr style="background:#F5F7FA"><td>필요한 데이터를 못 구함</td><td>중간</td><td>높음</td><td>공개 데이터 · 합성 데이터로 대체</td></tr>
<tr><td>새 기술 학습이 오래 걸림</td><td>높음</td><td>중간</td><td>첫 주에 작은 기술 검증(PoC) 먼저</td></tr>
<tr style="background:#F5F7FA"><td>팀원 일정 공백</td><td>낮음</td><td>중간</td><td>보조 담당자 지정 · 매일 기록 공유</td></tr>
<tr><td>시연 중 오류</td><td>중간</td><td>높음</td><td>시연 영상 백업 · 고정된 시연 데이터</td></tr>
</table>
<p style="font-size:24px;color:#6B7280">가능성·영향은 예시 판단입니다 — 팀 상황에 맞게 다시 평가하세요</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#6B7280">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#6B7280;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">16 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="writing" style="background:#EEF1F5;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:36px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#2F5D8C;letter-spacing:2px">WRITING TIPS</p>
<h2 style="font-size:64px;font-weight:700;line-height:1.15">읽히는 문서를 만드는 여섯 가지 습관</h2>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px">
<div style="display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border-radius:12px;padding:28px"><h3 style="font-size:30px;font-weight:700">두괄식</h3><p style="font-size:24px;color:#4A5568;line-height:1.5">결론을 먼저, 근거는 그다음</p></div>
<div style="display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border-radius:12px;padding:28px"><h3 style="font-size:30px;font-weight:700">한 장 한 메시지</h3><p style="font-size:24px;color:#4A5568;line-height:1.5">제목만 읽어도 흐름이 이어지게</p></div>
<div style="display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border-radius:12px;padding:28px"><h3 style="font-size:30px;font-weight:700">숫자와 그림</h3><p style="font-size:24px;color:#4A5568;line-height:1.5">설명 세 줄보다 표 하나, 그림 하나</p></div>
<div style="display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border-radius:12px;padding:28px"><h3 style="font-size:30px;font-weight:700">용어 통일</h3><p style="font-size:24px;color:#4A5568;line-height:1.5">같은 것은 끝까지 같은 이름으로</p></div>
<div style="display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border-radius:12px;padding:28px"><h3 style="font-size:30px;font-weight:700">출처 표시</h3><p style="font-size:24px;color:#4A5568;line-height:1.5">인용한 자료와 수치에는 출처를</p></div>
<div style="display:flex;flex-direction:column;gap:10px;background:#FFFFFF;border-radius:12px;padding:28px"><h3 style="font-size:30px;font-weight:700">가정은 가정이라고</h3><p style="font-size:24px;color:#4A5568;line-height:1.5">확인 못 한 내용은 ‘가정’으로 명시</p></div>
</div>
<p style="font-size:28px;color:#4A5568;line-height:1.4">AI 도구로 초안을 만들었다면, 사실과 수치는 반드시 직접 확인하고 우리 팀의 말로 다시 쓰세요.</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5B6472">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#5B6472;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">17 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="checklist" style="background:#E8833A;color:#14213D;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:32px">
<div style="display:flex;flex-direction:column;gap:12px">
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:24px;color:#14213D;letter-spacing:2px">SELF CHECK</p>
<h2 style="font-size:64px;font-weight:900;line-height:1.15">제출 전 셀프 체크리스트</h2>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:14px 24px">
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">문제를 한 문장으로 말할 수 있다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">Must 기능이 5개 이하다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">타깃 사용자가 구체적인 한 사람이다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">요구사항마다 확인 기준이 있다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">수치와 주장에 근거나 출처가 있다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">구성도 한 장으로 흐름이 보인다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">Before / After 시나리오가 있다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">성공 지표와 측정 방법이 있다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">기존 방식과의 차이가 표로 보인다</p></div>
<div style="display:flex;gap:16px;align-items:center;background:#F7F6F2;border-radius:10px;padding:16px 22px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none;color:#14213D;width:32px;height:32px" aria-label="Check"><path d="M20 6L9 17l-5-5"/></svg><p style="font-size:25px">일정·담당자·리스크 대응이 있다</p></div>
</div>
<p style="font-size:26px;font-weight:500;line-height:1.4">마지막 확인: 팀 밖의 사람에게 5분 설명했을 때, 질문 없이 이해했는가?</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#14213D">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#14213D;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">18 / 19</p>
</section>
</div></div><div class="frame"><div class="slide"><section id="closing" style="background:#14213D;color:#F7F6F2;font-family:'Noto Sans KR', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;justify-content:center;gap:48px">
<h2 style="font-size:88px;font-weight:900;line-height:1.15">좋은 기획서는<br>읽는 사람의 질문에<br>미리 답합니다</h2>
<div style="display:flex;gap:16px;flex-wrap:wrap">
<p style="font-size:28px;color:#14213D;background:#E8833A;padding:12px 24px;border-radius:8px;font-weight:700">왜</p>
<p style="font-size:28px;color:#F7F6F2;border:2px solid #4A5D80;padding:12px 24px;border-radius:8px">무엇을</p>
<p style="font-size:28px;color:#F7F6F2;border:2px solid #4A5D80;padding:12px 24px;border-radius:8px">어떻게</p>
<p style="font-size:28px;color:#F7F6F2;border:2px solid #4A5D80;padding:12px 24px;border-radius:8px">언제 · 누가</p>
<p style="font-size:28px;color:#F7F6F2;border:2px solid #4A5D80;padding:12px 24px;border-radius:8px">얼마나</p>
</div>
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:32px;font-weight:600;color:#F2A66B">Q &amp; A</p>
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#9AA8BF">AIO 1기 최종 프로젝트 · 기획서 잘 쓰는 법</p>
<p style="position:absolute;right:128px;bottom:64px;width:200px;font-size:24px;color:#9AA8BF;text-align:right;font-family:'JetBrains Mono', 'Courier New', monospace">19 / 19</p>
</section>
</div></div>
<div class="progress"></div>
<div class="nav" aria-label="슬라이드 이동">
<button id="prev" title="이전 (←)" aria-label="이전 슬라이드">‹</button>
<span id="count"></span>
<button id="next" title="다음 (→)" aria-label="다음 슬라이드">›</button>
<button id="fs" title="전체 화면 (F)" aria-label="전체 화면">⛶</button>
</div>
<script>
const frames = [...document.querySelectorAll('.frame')];
const n = frames.length;
let cur = 0;
function fit() {
const f = frames[cur];
f.querySelector('.slide').style.transform = 'scale(' + (f.clientWidth / 1920) + ')';
}
function go(i) {
cur = Math.max(0, Math.min(n - 1, i));
frames.forEach((f, k) => f.classList.toggle('active', k === cur));
document.getElementById('count').textContent = (cur + 1) + ' / ' + n;
document.querySelector('.progress').style.width = ((cur + 1) / n * 100) + '%';
history.replaceState(null, '', '#' + (cur + 1));
fit();
}
addEventListener('keydown', e => {
if (e.altKey || e.ctrlKey || e.metaKey) return;
const k = e.key;
if (['ArrowRight', 'ArrowDown', 'PageDown', ' ', 'Enter'].includes(k)) { e.preventDefault(); go(cur + (e.shiftKey && k === ' ' ? -1 : 1)); }
else if (['ArrowLeft', 'ArrowUp', 'PageUp', 'Backspace'].includes(k)) { e.preventDefault(); go(cur - 1); }
else if (k === 'Home') { e.preventDefault(); go(0); }
else if (k === 'End') { e.preventDefault(); go(n - 1); }
else if (k === 'f' || k === 'F') toggleFs();
});
function toggleFs() {
if (document.fullscreenElement) document.exitFullscreen();
else document.documentElement.requestFullscreen && document.documentElement.requestFullscreen();
}
document.getElementById('prev').onclick = () => go(cur - 1);
document.getElementById('next').onclick = () => go(cur + 1);
document.getElementById('fs').onclick = toggleFs;
let tx = null;
addEventListener('touchstart', e => { tx = e.touches[0].clientX; }, { passive: true });
addEventListener('touchend', e => {
if (tx === null) return;
const dx = e.changedTouches[0].clientX - tx; tx = null;
if (Math.abs(dx) > 50) go(cur + (dx < 0 ? 1 : -1));
});
let hideT;
addEventListener('mousemove', () => {
document.body.classList.add('moved'); clearTimeout(hideT);
hideT = setTimeout(() => document.body.classList.remove('moved'), 1500);
});
addEventListener('resize', fit);
addEventListener('hashchange', () => go((parseInt(location.hash.slice(1)) || 1) - 1));
go((parseInt(location.hash.slice(1)) || 1) - 1);
addEventListener('beforeprint', () => document.querySelectorAll('.slide').forEach(s => s.style.transform = 'none'));
addEventListener('afterprint', () => { frames.forEach(f => f.querySelector('.slide').style.transform = ''); fit(); });
</script>
</body>
</html>