클래스 목록으로 돌아가기

Public CMS Preview

원주 ICT 빅데이터 고급

로그인 없이 확인하는 원주 ICT 빅데이터 고급 CMS 프리뷰입니다. 업무 지식베이스 자산화, Google AI Studio, Google Sheets, Apps Script, Cursor/RAG 기반 AI 데이터 활용 실습까지 전체 모듈과 스텝을 보여줍니다.

Modules

61

Steps

479

Module 1checkpoint필수

사전 진단과 학습 목표

수강 전 AI 역량을 진단하고, 만들고 싶은 데이터 앱과 개인 학습 목표를 기록합니다.

3 steps

Step 1

AI 역량 진단평가

published

Step 1

AI 역량 진단평가

원주 ICT 빅데이터 고급

진단은 시험이 아닙니다

과정 시작 전 자신의 현재 위치를 확인합니다. 점수는 평가가 아니라 수업에서 어디에 집중하면 좋을지 알려주는 출발점이고, 과정이 끝난 뒤 내가 얼마나 나아갔는지 비교할 기준이 됩니다.

진단 항목 — 아래 템플릿을 복사해 하/중/상으로 채우기

복사용 텍스트

1. 생성형 AI(ChatGPT, Gemini 등) 사용 경험: 하/중/상
2. 프롬프트에 역할·기준·출력 형식을 넣어 본 경험: 하/중/상
3. CSV/Excel 데이터 다루기(필터, 정렬, 함수): 하/중/상
4. Google Sheets 협업·드롭다운·필터 사용: 하/중/상
5. Google AI Studio 또는 Gemini 사용 경험: 하/중/상
6. Cursor 등 AI 코딩 도구 사용 경험: 하/중/상
7. DB(데이터베이스)·API·배포가 무엇인지 개념 이해: 하/중/상

작성한 결과는 이 스텝 하단의 개인 메모에 붙여넣어 저장합니다. 본인만 볼 수 있습니다.

해석 가이드

결과안내
"하"가 많음정상입니다. 이 과정은 코딩을 에이전트가 대신하는 구조라 요청·승인·확인만 할 수 있으면 됩니다
"중"이 많음실습 프롬프트를 그대로 쓰지 말고 내 업무 데이터 기준으로 바꿔보세요
"상"이 많음각 모듈의 확장 과제와 실제 API 연동에 도전하세요

모르는 항목은 솔직하게 낮게 표시합니다. 이 과정은 개발자 선발이 아니라, 실무자가 AI로 데이터 앱을 만드는 감각을 얻는 과정입니다.

Step 2

만들고 싶은 데이터 앱 설문

published

Step 2

만들고 싶은 데이터 앱 설문

원주 ICT 빅데이터 고급

내 실습 방향 정하기

2일차 오후에는 데모 10종 중 원하는 것을 골라 실제 앱을 만듭니다. 지금 관심 있는 데모를 미리 골라 두면 수업이 훨씬 빨라집니다.

데모이런 분께 추천
공휴일 API 워밍업처음이라 가장 쉬운 것부터 하고 싶다
DART 고객 CRM영업·기업 조사·취업 준비에 쓰고 싶다
KIS 관심종목 대시보드시계열·주가 데이터에 관심 있다
업무 문서 RAG사내 문서 검색·FAQ 챗봇을 만들고 싶다
아파트 실거래가 분석공공데이터 분석을 해보고 싶다
기상청 × 매출 JOIN두 데이터를 붙여 가설을 검증하고 싶다
지원사업 적합도 진단공고문 검토 업무가 많다
제안서 약점 탐지기제안서·보고서를 자주 쓴다
거래처 견적 비교구매·예산 업무가 많다
DART × KIS 통합 브리핑데이터 결합의 끝판을 보고 싶다

한 문장 템플릿

복사용 텍스트

나는 [데이터/문서]를 입력하면 [결과]를 보여주는 앱을 만들고 싶다.
관심 데모: [1지망], [2지망]

예시

복사용 텍스트

나는 거래처 견적서 3장을 입력하면 추천 순위와 확인 질문을 보여주는 앱을 만들고 싶다.
관심 데모: 거래처 견적 비교, 지원사업 적합도 진단

작성한 문장을 개인 메모에 저장해 두세요. 2일차 데모 선택 시간에 그대로 사용합니다.

Step 3

개인 학습 목표 작성

published

Step 3

개인 학습 목표 작성

원주 ICT 빅데이터 고급

이틀 동안 가져갈 목표

복사용 텍스트

1일차 목표 (AI Studio · Sheets · Apps Script):
2일차 목표 (Cursor · 데이터 앱 · MCP):
내 업무에 적용하고 싶은 장면:
수업 후 혼자 다시 해볼 과제:

완료 기준

  • 만들고 싶은 앱 한 문장이 있다.
  • 관심 데모 1~2개가 정해져 있다.
  • 내 업무 데이터나 문서 예시가 1개 이상 떠오른다.

작성한 목표는 개인 메모에 저장합니다. 마지막 수료 모듈에서 이 목표를 다시 열어 스스로 얼마나 왔는지 확인합니다.

Module 2lesson필수

과정 안내와 USLab Learn 접속

2일 동안 만들 산출물과 학습 환경을 확인하고 USLab Learn에 접속합니다.

3 steps

Step 1

고급과정의 최종 산출물 이해

published

Step 1

고급과정의 최종 산출물 이해

원주 ICT 빅데이터 고급

이번 과정에서 만드는 것

산출물설명수료 후 활용
업무자료 인벤토리회사 문서, 시트, 공고문, 제안서, 수주 자료를 AI가 읽기 좋게 분류한 표자료 정리 기준
지식베이스 초안검색 가능한 Markdown 문서 묶음RAG, 챗봇, 내부 검색
Google Sheets 자동화업무자료 관리표와 Apps Script 데이터 품질 점검 봇반복 업무 자동화, 데이터 검수
Cursor 개발환경Cursor, Python 가상환경, Node.js/npm, Git/GitHub 인증과 private 저장소이후 바이브코딩 실습의 공통 기반
유튜브 다운로드 로컬앱PyQt5·yt-dlp·ffmpeg로 만들고 GitHub와 exe 패키징까지 연결한 교육용 프로그램명세-구현-오류 수정-배포 전체 흐름
Cursor 데이터 앱공휴일, DART, KIS, 실거래가 등 샘플 데이터로 만드는 Streamlit 분석 앱AI와 함께 데이터 앱을 만드는 작업 방식
AI Studio 프론트 화면데이터 앱의 결과를 보여주는 HTML/CSS/JS 프로토타입서비스 화면 기획과 시각화
Supabase/Vercel 연결데이터를 DB에 저장하고 웹앱으로 배포하는 흐름실제 서비스로 확장
미니 RAG 시나리오공고 적합도, 제안서 약점, 제조/수주 데이터 조회 중 하나현업 적용 예제

고급과정은 코딩 실력보다 "업무자료와 데이터를 AI가 활용할 수 있는 형태로 바꾸고, 실행되는 앱과 화면까지 만들어보는 감각"에 초점을 둡니다.

Step 2

learn.uslab.ai 접속 안내

published

Step 2

learn.uslab.ai 접속 안내

원주 ICT 빅데이터 고급

접속 순서

1. 브라우저에서 https://learn.uslab.ai에 접속합니다.

2. 회원가입 또는 로그인을 진행합니다.

3. 클래스 참여 코드에 WONJUADV를 입력합니다.

4. 내 클래스에서 원주 ICT 빅데이터 고급 과정을 엽니다.

5. 각 모듈의 스텝을 순서대로 진행하고 완료 체크를 남깁니다.

6. 각 스텝 페이지 하단의 개인 메모에 실습 결과(프롬프트, 코드, 링크)를 붙여넣어 두세요. 자동 저장되고 본인만 볼 수 있으며, 2일차에 다시 열어 이어서 사용합니다.

WONJUADV 참여 코드 입력 예시 — 초대코드란에 WONJUADV를 입력합니다

접속 확인표

확인 항목체크
로그인 완료
클래스 참여 완료
고급과정 모듈 목록 확인
첫 번째 스텝 완료 체크
Step 3

2일 실습 흐름 확인

published

Step 3

2일 실습 흐름 확인

원주 ICT 빅데이터 고급

실습 3파트

파트도구시점내용
1Google AI Studio (Gemini 플레이그라운드)1일차문서 요약·분류, 분석 질문 설계, 샘플 데이터 만들기
2Google Sheets + Apps Script1일차업무자료 관리표, 데이터 품질 점검 자동화
3Cursor AI 에이전트2일차개발환경 구축, 공휴일 워밍업, 유튜브 다운로드 로컬앱, Streamlit 데이터 앱, Supabase·Vercel MCP 실습

2일차에는 강사가 설치·인증·실행 과정을 먼저 설명하고 수강생이 같은 화면을 따라갑니다. 복잡한 터미널 명령은 교안의 복사용 블록을 사용하거나 Cursor 에이전트에게 실행을 요청하고, 수강생은 실행 승인과 결과 확인까지 직접 진행합니다.

2일 실습 구조 — 1일차에 만든 자료와 질문이 2일차 앱의 재료가 됩니다

1일차 — Google AI Studio + Apps Script

시간대핵심 실습
오전업무자료 정리, Gemini 플레이그라운드에서 문서 요약·분류, 프롬프트 구조화
오후 1분석 질문 설계, 샘플 데이터·테스트 케이스 만들기, 화면 기획서 초안
오후 2Google Sheets 관리표, Apps Script 자동화 메뉴, 데이터 품질 점검 봇

2일차 — Cursor AI 에이전트

시간대핵심 실습
오전 1Cursor 설치·로그인, Agent 사용법, Python 3.13·가상환경, Node.js LTS·npm 설치 확인
오전 2Git 설치·사용자 설정, GitHub 계정·CLI 인증, private 저장소 첫 commit/push, 공휴일 API 앱 워밍업
오후 1강사와 함께 유튜브 다운로드 로컬앱 완성: PyQt5, yt-dlp, ffmpeg, GitHub, exe 패키징
오후 2지식베이스·RAG, Supabase·Vercel MCP, 나머지 데이터 앱·프론트 선택 실습과 결과 공유

유튜브 다운로드 로컬앱, 데모 앱 10종, 프론트 실습 11종, 지식베이스/RAG 심화 모듈은 모두 과정 안에 제공됩니다. 강사가 설명하고 수강생이 같은 순서로 따라가며, 남은 선택 모듈은 수료 후 자율 실습으로 이어갈 수 있습니다.

수료 기준

  • 2일 과정 참여
  • 실습 결과물 1개 이상 제출
  • 최종 공유 시간에 자신의 적용 아이디어 1개 발표
Module 3practice필수

Google AI Studio로 업무자료 읽기

AI Studio에서 문서, 표, 텍스트를 넣고 요약·분류·추출 결과를 확인합니다.

5 steps

Step 1

이론: 생성형 AI가 답을 만드는 원리

published

Step 1

이론: 생성형 AI가 답을 만드는 원리

원주 ICT 빅데이터 고급

AI는 "다음 단어 맞히기" 기계입니다

ChatGPT, Gemini, Claude 같은 생성형 AI의 핵심 원리는 하나입니다. 지금까지 받은 글을 전부 읽고, 다음에 올 단어의 확률을 계산해서 가장 그럴듯한 단어를 하나씩 이어 쓰는 것입니다.

질문과 자료가 함께 들어가면, 자료 속 문장이 다음 단어의 확률을 끌어올립니다
용어쉬운 설명
토큰AI가 글을 읽고 쓰는 최소 조각. "공휴일"도 몇 개의 토큰
컨텍스트AI가 한 번에 읽을 수 있는 작업 기억. 질문 + 붙여넣은 자료 전부
온도(Temperature)확률 1등 단어만 고르면 낮은 온도(일관), 2·3등도 섞으면 높은 온도(다양)
환각근거가 없어도 그럴듯한 단어를 이어 써서 생기는 "지어낸 답"

이 원리에서 나오는 실전 규칙 3가지

규칙이유
자료를 먼저 붙여넣고 질문한다자료가 컨텍스트에 있어야 그 안의 문장이 답이 될 확률이 올라감
업무 정리는 온도를 낮게 쓴다같은 자료 → 같은 모양의 답이 나와야 시트에 누적 가능
중요한 값은 원문과 대조한다AI는 "모른다" 대신 그럴듯한 문장을 완성하는 습성이 있음

왜 이걸 알아야 하나

오늘 하루 종일 "왜 자료를 넣어야 하지?", "왜 답이 매번 다르지?", "왜 확인이 필요하지?"라는 질문의 답이 전부 이 원리 하나에서 나옵니다. 도구 사용법은 바뀌어도 이 원리는 바뀌지 않습니다.

Step 2

AI Studio 접속과 모델 선택

published

Step 2

AI Studio 접속과 모델 선택

원주 ICT 빅데이터 고급

접속

1. https://aistudio.google.com에 접속합니다.

2. Google 계정으로 로그인합니다.

3. 왼쪽 메뉴의 Chat에서 새 프롬프트를 만듭니다(이 채팅 화면을 "플레이그라운드"라고도 부릅니다).

4. 화면 오른쪽 Run settings의 모델 목록에서 Gemini 2.5 Flash를 선택합니다(속도가 빨라 실습에 적합하고, 더 깊은 분석이 필요하면 Pro로 바꿉니다).

Google AI Studio 플레이그라운드 — Chat에서 Gemini 모델을 선택하고 프롬프트를 시작합니다

1일차 실습은 모두 이 플레이그라운드 화면에서 진행합니다. 문서를 붙여넣고, 프롬프트를 실행하고, 결과를 복사해 Google Sheets로 옮기는 흐름입니다.

오늘 사용할 기본 설정

설정권장값
입력 자료공고문, 회의록, 업무 설명, CSV 일부
출력 형식표, 체크리스트, Markdown
온도(Temperature)낮게 또는 기본값 — 오른쪽 Run settings에서 조절, 낮을수록 답이 일관됨
응답 기준근거 문장과 판단 이유 포함

AI Studio는 "답을 바로 받는 곳"이 아니라, 업무자료를 어떤 구조로 바꾸면 좋은지 실험하는 도구로 사용합니다.

왜 이 순서인가

문서를 그냥 AI에게 "요약해줘"라고 하면 매번 다른 모양의 답이 나옵니다. 이 과정에서는 순서를 고정합니다.

단계하는 일이렇게 하면 좋은 점
요약한 줄 결론 + 핵심 5개원문을 안 본 사람도 판단 가능
추출날짜·기관·금액·제출물만 뽑기빠뜨리면 안 되는 정보를 분리
분류정해진 4가지 유형 중 선택자료가 쌓여도 찾을 수 있음
표 변환열 이름을 고정한 표로Google Sheets에 복사해 누적 가능

핵심은 마지막 단계입니다. 출력을 표로 고정해야 오후의 Google Sheets 관리표, 2일차의 데이터 앱까지 같은 데이터가 흘러갑니다.

1일차 오전의 흐름 — 문서가 관리 가능한 데이터가 되기까지
Step 3

업무자료 요약 프롬프트

published

Step 3

업무자료 요약 프롬프트

원주 ICT 빅데이터 고급

실습 입력

업무자료 한 개를 붙여 넣고 아래 프롬프트를 실행합니다. 본인 업무자료(공고문, 회의록, 제안서 등)가 가장 좋지만, 없다면 아래 샘플을 열어 내용을 복사해 사용하세요.

복사용 텍스트

다음 업무자료를 읽고 실무자가 바로 확인할 수 있게 정리해줘.

출력 형식:
1. 한 줄 요약
2. 핵심 내용 5개
3. 날짜, 기관, 금액, 대상, 제출물 추출
4. 놓치면 안 되는 리스크
5. 추가로 확인해야 할 질문

업무자료:
여기에 자료를 붙여넣기
업무자료 요약 결과 예시 — 한 줄 요약, 핵심 5개, 추출 정보, 리스크, 확인 질문

결과 확인 기준

항목확인 질문
요약원문을 안 본 사람도 이해 가능한가
추출날짜·금액·대상 정보가 빠지지 않았는가
리스크실제 판단에 도움이 되는가
질문다음 행동으로 이어지는가
Step 4

분류 기준 만들기

published

Step 4

분류 기준 만들기

원주 ICT 빅데이터 고급

분류 기준

분류설명예시
공고/정책외부 기관의 모집·지원·정책 문서지원사업 공고
제안/보고내부 작성 문서제안서, 결과보고서
운영 데이터표 형태로 쌓이는 반복 자료수주, 납기, 문의
기술/품질시험·인증·품질 관련 자료시험성적서, CAPA

분류 프롬프트

복사용 텍스트

아래 자료를 [공고/정책, 제안/보고, 운영 데이터, 기술/품질] 중 하나로 분류하고,
그 이유를 원문 근거와 함께 설명해줘.

자료:
여기에 자료를 붙여넣기
4가지 분류 기준과 AI 분류 결과 예시
Step 5

업무자료를 표로 바꾸기

published

Step 5

업무자료를 표로 바꾸기

원주 ICT 빅데이터 고급

표 변환 프롬프트

복사용 텍스트

아래 자료를 업무 관리표로 바꿔줘.
열은 [자료명, 자료유형, 핵심내용, 담당자, 상태, 마감일, AI활용가능성, 다음작업]으로 구성해줘.
비어 있는 값은 "확인필요"로 표시해줘.

자료:
여기에 자료를 붙여넣기

실습 결과 예시

자료명자료유형핵심내용상태다음작업
2026 지원사업 공고공고문의료기기 기업 대상 R&D 지원검토중자격조건 확인
제품 시험성적서시험자료주요 측정값과 판정 결과 포함정리필요항목별 CSV화
업무 관리표 변환 결과 — 고정 열 이름으로 정리된 표

이 표가 이후 Google Sheets의 기본 데이터가 됩니다.

Module 4lesson필수

프롬프트 구조화와 업무자료 정리

역할, 기준, 출력 형식, 검증 조건을 넣어 안정적인 업무 프롬프트를 작성합니다.

4 steps

Step 1

이론: 같은 질문, 다른 대답 — 프롬프트가 결과를 바꾸는 이유

published

Step 1

이론: 같은 질문, 다른 대답 — 프롬프트가 결과를 바꾸는 이유

원주 ICT 빅데이터 고급

AI는 마음을 읽지 못합니다

앞 모듈에서 배운 원리를 떠올려 보세요. AI는 받은 글을 읽고 다음 단어의 확률을 계산합니다. 즉 내가 쓰지 않은 조건은 계산에 들어가지 않습니다. "요약해줘"만 쓰면 무엇이 중요한지, 어떤 형식인지, 모르는 내용을 어떻게 처리할지 전부 AI가 추측하고, 그 추측은 실행할 때마다 달라집니다.

같은 자료라도 조건을 쓰면 답의 모양이 고정됩니다

프롬프트는 부탁이 아니라 설계도

잘못된 이해올바른 이해
AI에게 정중하게 부탁하는 말AI의 추측 범위를 좁히는 조건 목록
길게 쓰면 좋다조건이 명확하면 좋다 — 길이는 상관없음
좋은 답이 나올 때까지 다시 시도조건을 고정해 처음부터 같은 모양이 나오게

업무 프롬프트와 일상 질문의 차이

일상 대화는 답이 조금 달라도 괜찮습니다. 업무는 다릅니다. 오늘 나온 표와 내일 나온 표의 열 이름이 같아야 시트에 누적되고, 누적돼야 2일차의 데이터 앱까지 흘러갑니다. 그래서 업무 프롬프트의 목표는 "좋은 답 한 번"이 아니라 "같은 모양의 답이 반복해서" 나오는 것입니다.

다음 스텝에서 이 조건들을 5가지 요소로 정리합니다.

Step 2

업무 프롬프트 5요소

published

Step 2

업무 프롬프트 5요소

원주 ICT 빅데이터 고급

왜 구조화하는가

"이 공고 요약해줘"라고만 하면 AI는 무엇이 중요한지, 어떤 형태로 답해야 하는지, 모르는 것을 어떻게 처리해야 하는지 전부 스스로 추측합니다. 그 추측이 매번 달라지기 때문에 결과도 매번 달라집니다. 구조화된 프롬프트는 그 추측을 없애는 작업입니다.

5요소

요소질문예시
역할AI가 어떤 담당자처럼 판단해야 하나지원사업 검토 담당자
입력어떤 자료를 읽어야 하나공고문, 회사 소개, 제품 설명
기준무엇을 중요하게 볼 것인가자격, 마감, 제출물, 리스크
출력어떤 형태로 받을 것인가표, 체크리스트, Markdown
검증틀리면 안 되는 부분은 무엇인가원문 근거 없으면 추정 금지
5요소를 채우면 재사용 가능한 프롬프트 틀이 됩니다

요소를 빠뜨리면 생기는 증상

빠진 요소증상
역할일반 상식 수준의 답 — 실무 관점이 사라짐
기준중요하지 않은 내용이 길게 나오고 정작 마감일이 빠짐
출력매번 다른 모양의 답 — 시트에 누적 불가
검증문서에 없는 내용을 그럴듯하게 지어냄 (환각)

특히 검증이 업무용 프롬프트와 일상 질문의 가장 큰 차이입니다. "근거가 없으면 확인필요로 표시해줘" 한 줄이 잘못된 의사결정을 막습니다.

기본 템플릿

복사용 텍스트

너는 [역할]이다.
아래 [입력자료]를 읽고 [판단기준]에 따라 정리해줘.
출력은 [출력형식]으로 작성하고,
근거가 없는 내용은 추정하지 말고 "확인필요"라고 표시해줘.

이 템플릿의 대괄호 네 곳만 바꾸면 공고 검토, 회의록 정리, 견적 비교 등 어떤 업무에도 다시 쓸 수 있습니다.

Step 3

출력 형식 고정하기

published

Step 3

출력 형식 고정하기

원주 ICT 빅데이터 고급

왜 출력 형식을 고정하는가

AI 결과를 다시 시트, 문서, 코드로 넘기려면 출력이 매번 비슷해야 합니다.

나쁜 출력좋은 출력
자연어 설명만 길게 작성열 이름이 정해진 표
중요한 항목이 매번 달라짐필수 항목을 고정
근거와 판단이 섞임근거/판단/다음작업 분리

실습 프롬프트

복사용 텍스트

아래 문서를 분석해서 Markdown 표로 출력해줘.
열은 반드시 [항목, 원문근거, 판단, 다음작업] 순서로 작성해줘.
원문근거는 문서에서 확인되는 문장만 사용해줘.
Step 4

업무자료 정리 규칙 만들기

published

Step 4

업무자료 정리 규칙 만들기

원주 ICT 빅데이터 고급

지식베이스용 문서 규칙

규칙이유
문서 하나에 주제 하나검색 결과가 섞이지 않게 함
파일명에 날짜와 유형 포함최신성·분류 확인
첫 줄에 요약 작성AI가 문서 목적을 빠르게 파악
표에는 열 이름 고정자동 처리와 비교 가능
원문과 요약을 분리근거 확인 가능

파일명 예시

복사용 텍스트

2026-07-13_지원사업공고_의료기기RND.md
2026-07-13_제안서초안_스마트품질관리.md
2026-07-13_수주데이터_샘플.csv
Module 5practice필수

AI Studio 데이터 분석 질문 설계

CSV와 표를 보고 어떤 분석 질문을 만들지 정리하고 Cursor 구현 프롬프트로 바꿉니다.

5 steps

Step 1

데이터를 보고 질문을 만드는 이유

published

Step 1

데이터를 보고 질문을 만드는 이유

원주 ICT 빅데이터 고급

왜 분석 질문부터 만드는가

데이터 앱은 차트를 많이 넣는다고 좋아지는 것이 아닙니다. 먼저 "이 데이터로 무엇을 알고 싶은가"를 정해야 합니다.

나쁜 시작좋은 시작
이 CSV로 대시보드 만들어줘이 데이터에서 처리 지연 원인을 찾고 싶어
예쁜 차트 만들어줘월별 추이와 유형별 비중을 비교하고 싶어
AI가 알아서 분석해줘의사결정에 필요한 질문 5개를 먼저 만들자

오늘 결과물은 열 설명, 분석 질문 10개, 우선순위 3개, Cursor 구현 프롬프트입니다.

Step 2

CSV 일부를 AI Studio에 붙여넣기

published

Step 2

CSV 일부를 AI Studio에 붙여넣기

원주 ICT 빅데이터 고급

실습 CSV 준비

본인 업무 CSV가 있으면 그것을 사용합니다. 없다면 아래 다운로드 카드의 주문 데이터를 사용하세요.

1. CSV를 내려받아 메모장(또는 Excel)으로 엽니다.

2. 첫 행(열 이름)을 포함해 처음 10~20행을 복사합니다.

3. 아래 프롬프트의 "CSV 샘플" 자리에 붙여넣습니다.

붙여넣을 프롬프트

복사용 텍스트

다음 CSV 샘플을 보고 각 열의 의미를 추정해줘.
그리고 이 데이터로 할 수 있는 분석 질문 10개를 만들어줘.

출력 형식:
| 열 이름 | 의미 | 데이터 타입 | 분석에 쓸 수 있는 방법 |

CSV 샘플:
여기에 CSV 일부 붙여넣기

CSV 전체가 아니라 처음 10~20행만 붙여넣어도 충분합니다.

CSV 샘플을 AI Studio에 붙여넣어 열 의미와 분석 질문을 만드는 화면

첨부파일

분석 질문 실습용 주문 CSV

열 의미 추정과 분석 질문 만들기에 사용하는 교육용 주문 데이터입니다. Apps Script 품질 점검 실습에서도 같은 파일을 씁니다.

quality_check_orders.csv

다운로드
Step 3

질문을 우선순위로 정리하기

published

Step 3

질문을 우선순위로 정리하기

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

방금 만든 분석 질문 10개를 기준으로,
수업 시간 안에 구현하기 쉬운 순서로 우선순위를 매겨줘.

출력 형식:
| 순위 | 질문 | 필요한 컬럼 | 추천 시각화 | 구현 난이도 | 이유 |
분석 질문 10개를 우선순위·난이도로 정리한 결과

좋은 질문은 이해하기 쉽고, 30분 안에 구현 가능하며, 다음 행동으로 이어집니다.

Step 4

Cursor 구현 프롬프트로 변환

published

Step 4

Cursor 구현 프롬프트로 변환

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

선택한 분석 질문 3개를 Cursor에게 전달할 구현 요청문으로 바꿔줘.

조건:
- 입력 파일명, 필요한 컬럼, 계산 방식, 결과 파일명을 포함
- 초보자가 복사해서 바로 붙여넣을 수 있게 작성
- Streamlit으로 빠르게 확인하는 버전과 웹앱으로 확장하는 버전을 나눠줘
Cursor 구현 요청문으로 변환한 결과 — 2일차 실습에 그대로 사용

생성된 프롬프트는 2일차 Cursor 데이터 앱 실습에서 그대로 사용합니다. AI Studio 대화는 다시 찾기 어려울 수 있으니, 결과를 복사해 이 스텝 페이지 하단의 개인 메모에 붙여넣어 두세요. 개인 메모는 자동 저장되고 본인만 볼 수 있으며, 2일차에 이 스텝을 다시 열면 그대로 확인할 수 있습니다.

Step 5

제출 체크

published

Step 5

제출 체크

원주 ICT 빅데이터 고급

제출물확인
열 설명 표
분석 질문 10개
우선순위 3개
Cursor 구현 프롬프트
Module 6practice필수

AI Studio 샘플 데이터와 테스트 케이스 만들기

정상 데이터, 오류 데이터, 엣지 케이스를 만들어 데이터 앱과 품질 점검 실습에 재사용합니다.

5 steps

Step 1

샘플 데이터가 필요한 이유

published

Step 1

샘플 데이터가 필요한 이유

원주 ICT 빅데이터 고급

왜 샘플 데이터를 만드는가

실제 데이터가 없어도 앱 구조를 만들고 테스트할 수 있어야 합니다.

데이터 유형용도
정상 데이터기본 화면과 계산 확인
오류 데이터결측, 중복, 잘못된 상태값 점검
엣지 케이스0원, 음수, 매우 큰 값, 날짜 오류
빈 데이터빈 상태 화면 확인

오늘은 AI Studio로 테스트 가능한 CSV/JSON 샘플을 만듭니다.

Step 2

CSV 컬럼 설계받기

published

Step 2

CSV 컬럼 설계받기

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

다음 앱 아이디어에 필요한 CSV 컬럼을 설계해줘.

앱 아이디어:
예: 학과 사무실 민원/문의 분석 대시보드

출력 형식:
| 컬럼명 | 데이터 타입 | 설명 | 예시 | 필수 여부 |

날짜, 분류, 숫자, 상태값, 담당자처럼 분석과 필터에 쓸 수 있는 컬럼이 포함되면 좋습니다.

CSV 컬럼 설계표 — 컬럼명, 타입, 설명, 예시, 필수 여부
Step 3

정상 데이터 30행 만들기

published

Step 3

정상 데이터 30행 만들기

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

위 컬럼 설계를 기준으로 정상 CSV 데이터 30행을 만들어줘.
조건:
- 한국어 값 사용
- 날짜는 2026년 7월 범위
- 분류는 4~6개 정도 반복
- 숫자 컬럼은 현실적인 범위
- 설명 없이 CSV만 출력

CSV 파일로 저장하기

1. 결과 전체를 복사합니다.

2. 메모장을 열어 붙여넣습니다.

3. 다른 이름으로 저장에서 파일명을 sample_normal.csv, 인코딩을 UTF-8 (BOM) 으로 저장합니다.

(메모장 목록에 UTF-8 with BOM 이 있으면 동일합니다. Excel에서 한글 깨짐을 줄이려면 BOM 포함 저장이 필요합니다.)

정상 CSV 30행 생성 결과

이 파일은 오후 Google Sheets 실습과 2일차 Streamlit 데이터 앱 실습에서 다시 사용합니다. CSV 원문을 이 스텝 하단의 개인 메모에도 붙여넣어 두면, 파일을 잃어버려도 바로 복구할 수 있습니다.

Step 4

오류 데이터와 엣지 케이스 만들기

published

Step 4

오류 데이터와 엣지 케이스 만들기

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

같은 컬럼 구조로 오류가 섞인 테스트 CSV 15행을 만들어줘.
오류 유형:
- 필수값 누락
- 중복 ID
- 날짜 형식 오류
- 음수 금액
- 상태값 오타
- 비정상적으로 큰 값

마지막에 오류 유형별로 어떤 행이 문제인지 표로 설명해줘.

결과를 같은 방법으로 sample_errors.csv(UTF-8 (BOM))로 저장합니다.

오류·엣지 케이스가 섞인 테스트 CSV와 오류 유형 설명

이 파일은 2일차 Streamlit 데이터 앱과 Supabase MCP 입력 테스트에서 "오류 데이터가 들어왔을 때 앱이 어떻게 반응하는지" 확인하는 데 사용합니다.

> 참고: 오후의 Apps Script 데이터 품질 점검 봇은 주문 데이터 전용 CSV(order_id, customer, product 등 고정 컬럼)를 따로 내려받아 사용합니다. 내가 만든 오류 CSV는 컬럼 구조가 다르므로 그 봇에는 넣지 않습니다.

Step 5

테스트 체크리스트 만들기

published

Step 5

테스트 체크리스트 만들기

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

정상 CSV와 오류 CSV를 기준으로,
Cursor에게 전달할 테스트 체크리스트를 만들어줘.

형식:
| 테스트 항목 | 입력 데이터 | 기대 결과 | 실패 시 확인할 것 |
정상·오류 CSV 기준 테스트 체크리스트

제출물

제출물확인
컬럼 설계표
정상 CSV
오류 CSV
테스트 체크리스트
Module 7practice필수

AI Studio 화면 기획서와 프론트 초안

사용자 흐름, 화면 섹션, 카드/표/필터/차트 구성을 정하고 프론트 초안을 만듭니다.

5 steps

Step 1

화면 기획의 기준

published

Step 1

화면 기획의 기준

원주 ICT 빅데이터 고급

화면을 먼저 잡는 이유

데이터 앱은 사용자가 결과를 이해해야 의미가 있습니다. 그래서 구현 전에 화면 구조를 먼저 잡습니다.

화면 요소역할
요약 카드가장 중요한 숫자 3개
필터사용자가 범위를 고름
원본과 상세 확인
차트추이와 비교
브리핑AI가 해석한 문장
Step 2

사용자와 업무 상황 설명하기

published

Step 2

사용자와 업무 상황 설명하기

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

다음 데이터 앱의 사용자를 정의하고 화면 흐름을 설계해줘.

앱 이름:
예: DART 고객 CRM 브리핑 앱

사용자:
예: 미팅 전 고객사를 빠르게 조사해야 하는 영업 담당자

데이터:
예: customers.csv, dart_companies.json, dart_filings.json

출력 형식:
1. 사용자 상황
2. 사용자가 먼저 보고 싶은 정보
3. 화면 섹션
4. 클릭 흐름
5. 모바일에서 중요한 정보

17줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

사용자 상황과 화면 흐름 설계 결과
Step 3

카드/표/필터/차트 구성 요청

published

Step 3

카드/표/필터/차트 구성 요청

원주 ICT 빅데이터 고급

AI Studio 프롬프트

복사용 텍스트

위 화면 흐름을 기준으로 대시보드 레이아웃을 설계해줘.

반드시 포함:
- 상단 요약 카드 3개
- 필터 영역
- 상세 표
- 브리핑 문장 영역
- 빈 데이터 상태
- 오류 상태

출력은 화면 구성표와 컴포넌트 목록으로 작성해줘.
요약 카드·필터·표·브리핑 영역이 포함된 대시보드 레이아웃
Step 4

Build 모드로 React 프론트 초안 생성

published

Step 4

Build 모드로 React 프론트 초안 생성

원주 ICT 빅데이터 고급

Google AI Studio Build 열기

Google AI Studio Build 공식 가이드를 참고해 Build 모드로 들어갑니다. 현재 Build 모드는 프롬프트로 React 기반 웹앱을 만들고, 오른쪽 Preview와 Code 탭에서 결과를 바로 확인할 수 있습니다.

첫 앱 생성 프롬프트

복사용 텍스트

방금 설계한 화면을 Google AI Studio Build에서 실행 가능한 React 프론트 앱으로 만들어줘.

조건:
- 샘플 데이터는 코드 안의 작은 mock 배열로 넣기
- 카드, 표, 필터, 브리핑 영역 포함
- 모바일 390px에서도 잘리지 않는 반응형
- 색상은 업무용으로 차분하게
- 로딩, 빈 데이터, 오류 상태 포함
- 실제 API, API 키, 로그인, 데이터베이스는 추가하지 않기
- 화면 상단에 "교육용 샘플" 배지 표시

확인할 것

  • Preview에서 카드·필터·표가 실제로 보이는가?
  • 필터를 바꾸면 샘플 데이터가 함께 바뀌는가?
  • Code 탭에 생성된 React 파일이 보이는가?
  • 실제 개인정보와 API 키가 없는가?
Build에서 만든 프론트 초안을 Preview와 Code 탭에서 확인
Step 5

미리보기 수정과 Cursor 인계 준비

published

Step 5

미리보기 수정과 Cursor 인계 준비

원주 ICT 빅데이터 고급

화면을 보면서 한 번 더 수정

Preview에서 고칠 영역을 선택할 수 있으면 Annotation 기능으로 영역을 지정하고, 아니면 채팅에 위치를 설명합니다.

복사용 텍스트

현재 기능은 유지하고 화면만 수업용으로 다듬어줘.
1. 중요한 숫자 카드 3개를 가장 먼저 보이게 해줘.
2. 모바일에서 카드가 한 열로 쌓이게 해줘.
3. 표가 넓으면 표 영역만 가로 스크롤되게 해줘.
4. 빈 데이터와 오류 상태 문구를 명확하게 해줘.
5. 색상만으로 정상·주의·오류를 구분하지 않게 해줘.

Cursor 인계 프롬프트

복사용 텍스트

이 앱을 다음 Cursor 실습으로 넘길 수 있게 정리해줘.
mock 데이터를 별도 파일로 분리하고,
실제 CSV/JSON/API로 바꿀 위치에 TODO_CURSOR 주석을 추가해줘.
HANDOFF.md에는 앱 목적, 사용자, 화면 구성, 데이터 필드,
완료된 클릭 동작, 다음 구현 작업 5개를 적어줘.
API 키와 개인정보가 코드에 없는지도 확인해줘.

저장과 다음 모듈

제출물확인
화면 흐름
컴포넌트 구성표
작동하는 Build Preview
Export한 React 프로젝트 ZIP
HANDOFF.md

다음 5개 모듈에서는 이 흐름을 공휴일, DART CRM, 관심종목, 문서 RAG, 날씨×매출 앱에 반복 적용합니다. 여기서는 프론트와 상호작용만 만들고, 실제 데이터·API 연결은 뒤쪽 Cursor 모듈에서 이어갑니다.

Module 8practice필수

AI Studio Build 데모 1: 공휴일·문의량 대시보드

연도 필터, 공휴일 표, 문의량 비교 카드가 작동하는 교육용 프론트를 만듭니다.

5 steps

Step 1

완성 화면과 사용자 흐름 정하기

published

Step 1

완성 화면과 사용자 흐름 정하기

원주 ICT 빅데이터 고급

이번 데모에서 만들 앱

공휴일·문의량 대시보드

공휴일 일정과 문의 데이터를 한 화면에서 비교해 업무 인력 배치에 참고합니다.

항목내용
사용자공휴일 전후 문의량을 확인하는 학과 사무실·행정 담당자
화면 구성연도·월 필터, 요약 카드 3개, 공휴일 목록 표, 휴일·비휴일 문의량 비교, 해석 주의 문구
데이터교육용 mock 데이터
오늘의 범위AI Studio Build에서 작동하는 React 프론트 초안
다음 연결뒤쪽 Cursor 모듈에서 실제 파일·데이터·API 연결

화면 기획 프롬프트

Google AI Studio에서 Build를 열고 아래 프롬프트를 입력합니다.

복사용 텍스트

아직 코드를 만들지 말고 "공휴일·문의량 대시보드"의 한 화면 기획서를 작성해줘.

사용자: 공휴일 전후 문의량을 확인하는 학과 사무실·행정 담당자
목표: 공휴일 일정과 문의 데이터를 한 화면에서 비교해 업무 인력 배치에 참고합니다.

필수 화면 영역:
- 연도·월 필터
- 요약 카드 3개
- 공휴일 목록 표
- 휴일·비휴일 문의량 비교
- 해석 주의 문구

출력:
1. 사용자가 화면을 쓰는 순서
2. 컴포넌트 목록
3. 모바일 배치 순서
4. 로딩·빈 데이터·오류 상태

로그인, 데이터베이스, 실제 외부 API는 아직 설계하지 마.

19줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

완료 기준

  • 화면에 들어갈 영역과 클릭 순서를 말로 설명할 수 있다.
  • 실제 개인정보·회사자료 대신 교육용 샘플을 쓰기로 정했다.
  • 백엔드는 만들지 않고 프론트 화면만 먼저 만든다.
Step 2

Build로 첫 React 프론트 생성하기

published

Step 2

Build로 첫 React 프론트 생성하기

원주 ICT 빅데이터 고급

첫 앱 생성 프롬프트

복사용 텍스트

방금 기획한 "공휴일·문의량 대시보드"을 Google AI Studio Build에서 실행 가능한 React 앱으로 만들어줘.

조건:
- 모든 문구는 자연스러운 한국어
- 데이터는 코드 안의 작은 mock 배열 사용
- 연도·월 필터, 요약 카드 3개, 공휴일 목록 표, 휴일·비휴일 문의량 비교, 해석 주의 문구 포함
- 카드, 필터, 표 또는 차트 중 이 화면에 필요한 요소 사용
- 모바일 390px에서도 내용이 잘리지 않는 반응형
- 실제 API, API 키, 로그인, 데이터베이스, 결제 기능은 추가하지 않음
- 화면 상단에 "교육용 샘플" 배지 표시

먼저 실행되는 프론트 화면을 만들고 Preview에 오류가 없는지 확인해줘.

수강생 확인

1. 오른쪽 Preview에 화면이 나타나는지 확인합니다.

2. Code 탭에서 React 파일이 생성됐는지만 확인합니다. 코드를 외울 필요는 없습니다.

3. 오류가 보이면 오류 전문을 복사해 채팅에 붙이고 현재 기능을 유지한 최소 수정을 요청합니다.

Step 3

샘플 데이터와 클릭 동작 연결하기

published

Step 3

샘플 데이터와 클릭 동작 연결하기

원주 ICT 빅데이터 고급

데이터 구조

복사용 텍스트

{ year, date, holidayName }, { date, category, channel, inquiryCount }

기능 추가 프롬프트

복사용 텍스트

현재 정상 작동하는 화면은 유지하고, 아래 mock 데이터와 상호작용만 추가해줘.

필수 동작:
- 2025년과 2026년을 바꾸면 카드와 표가 함께 변경
- 공휴일 행을 선택하면 해당 날짜의 문의 상세 표시
- 휴일과 비휴일의 평균 문의량을 간단한 막대로 비교
- 데이터가 없는 연도를 선택하면 안내 문구 표시

데이터 구조:
{ year, date, holidayName }, { date, category, channel, inquiryCount }

규칙:
- mock 데이터 밖의 사실을 지어내지 않음
- 필터나 항목을 바꾸면 관련 카드·표·차트가 함께 갱신
- 계산 기준은 코드에서 한 곳에 모아 나중에 교체하기 쉽게 작성
- 새 기능을 추가한 뒤 기존 화면도 다시 동작하는지 확인

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

직접 눌러보기

  • 2025년과 2026년 필터를 번갈아 누른다.
  • 공휴일 행 하나를 선택한다.
  • 데이터가 없는 연도를 선택해 빈 상태를 확인한다.
Step 4

예외 상태와 모바일 화면 다듬기

published

Step 4

예외 상태와 모바일 화면 다듬기

원주 ICT 빅데이터 고급

검수 프롬프트

복사용 텍스트

새 기능을 더 만들지 말고 현재 앱을 수업 데모용으로 검수하고 다듬어줘.

공통 점검:
- 모바일 390px에서 가로 잘림 제거
- 표가 넓으면 표 영역만 가로 스크롤
- 로딩, 빈 데이터, 오류 상태를 서로 다르게 표시
- 버튼·필터·입력칸에 명확한 한국어 라벨과 키보드 포커스 추가
- 색상만으로 정상/주의/오류를 구분하지 않음

이 앱의 테스트 상태:
- 공휴일이 0건인 연도
- 문의 날짜가 공휴일 데이터와 매칭되지 않는 행
- 문의량이 0인 날짜

실제 공휴일 정보처럼 오해하지 않도록 모든 결과에 "교육용 샘플"이라고 표시해줘.
수정 후 Preview에서 확인할 체크리스트를 5개로 알려줘.

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

미리보기가 깨졌을 때 복구 문장

복사용 텍스트

방금 변경으로 미리보기가 깨졌어.
마지막 변경만 되돌리고 직전 정상 화면을 복구해줘.
오류 원인과 다시 시도할 최소 수정도 한 줄씩 알려줘.
Step 5

코드 내보내기와 Cursor 인계서 만들기

published

Step 5

코드 내보내기와 Cursor 인계서 만들기

원주 ICT 빅데이터 고급

Cursor 인계 프롬프트

복사용 텍스트

이 앱을 다음 수업에서 Cursor로 이어서 개발할 수 있게 정리해줘.

1. 현재 React 파일 구조를 설명한다.
2. mock 데이터를 별도 파일로 분리한다.
3. 실제 데이터로 교체할 위치에 TODO_CURSOR 주석을 추가한다.
4. HANDOFF.md를 만들고 아래 내용을 적는다.
   - 앱 목적과 사용자
   - 화면 구성과 완료된 클릭 동작
   - 입력 데이터 필드
   - 로딩·빈 데이터·오류 상태의 완료 기준
   - Cursor에서 다음으로 구현할 작업 5개
5. API 키, 개인정보, 실제 회사자료가 코드에 없는지 확인한다.

Cursor에서 이어갈 핵심 작업: mock 공휴일 JSON과 문의 CSV를 실제 파일/API 결과로 교체하고 날짜 JOIN을 검증합니다.

저장 순서

1. Preview에서 마지막으로 필터와 버튼을 눌러봅니다.

2. Code 탭에서 HANDOFF.mdTODO_CURSOR를 확인합니다.

3. AI Studio의 Download/Export 기능으로 프로젝트를 내려받습니다.

4. ZIP 파일 이름을 ai-studio-holiday-dashboard.zip으로 정리합니다.

5. ZIP과 Preview 캡처를 개인 자료실에, 핵심 프롬프트를 개인 메모에 보관합니다.

> API 키와 실제 개인정보는 ZIP에 넣지 않습니다. 다음 Cursor 실습은 이 결과물을 출발점으로 사용합니다.

Module 9practice필수

AI Studio Build 데모 2: DART 고객 CRM 브리핑

고객을 선택하면 회사 개요, 최근 공시, 미팅 질문이 바뀌는 CRM 프론트를 만듭니다.

5 steps

Step 1

완성 화면과 사용자 흐름 정하기

published

Step 1

완성 화면과 사용자 흐름 정하기

원주 ICT 빅데이터 고급

이번 데모에서 만들 앱

DART 고객 CRM 브리핑

고객 목록에서 회사를 선택하고 미팅 준비에 필요한 정보와 질문을 확인합니다.

항목내용
사용자고객 미팅 전에 회사와 공시를 빠르게 확인하는 영업·기업조사 담당자
화면 구성고객 검색, 고객 목록, 회사 개요 카드, 최근 공시 목록, 미팅 질문 카드
데이터교육용 mock 데이터
오늘의 범위AI Studio Build에서 작동하는 React 프론트 초안
다음 연결뒤쪽 Cursor 모듈에서 실제 파일·데이터·API 연결

화면 기획 프롬프트

Google AI Studio에서 Build를 열고 아래 프롬프트를 입력합니다.

복사용 텍스트

아직 코드를 만들지 말고 "DART 고객 CRM 브리핑"의 한 화면 기획서를 작성해줘.

사용자: 고객 미팅 전에 회사와 공시를 빠르게 확인하는 영업·기업조사 담당자
목표: 고객 목록에서 회사를 선택하고 미팅 준비에 필요한 정보와 질문을 확인합니다.

필수 화면 영역:
- 고객 검색
- 고객 목록
- 회사 개요 카드
- 최근 공시 목록
- 미팅 질문 카드

출력:
1. 사용자가 화면을 쓰는 순서
2. 컴포넌트 목록
3. 모바일 배치 순서
4. 로딩·빈 데이터·오류 상태

로그인, 데이터베이스, 실제 외부 API는 아직 설계하지 마.

19줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

완료 기준

  • 화면에 들어갈 영역과 클릭 순서를 말로 설명할 수 있다.
  • 실제 개인정보·회사자료 대신 교육용 샘플을 쓰기로 정했다.
  • 백엔드는 만들지 않고 프론트 화면만 먼저 만든다.
Step 2

Build로 첫 React 프론트 생성하기

published

Step 2

Build로 첫 React 프론트 생성하기

원주 ICT 빅데이터 고급

첫 앱 생성 프롬프트

복사용 텍스트

방금 기획한 "DART 고객 CRM 브리핑"을 Google AI Studio Build에서 실행 가능한 React 앱으로 만들어줘.

조건:
- 모든 문구는 자연스러운 한국어
- 데이터는 코드 안의 작은 mock 배열 사용
- 고객 검색, 고객 목록, 회사 개요 카드, 최근 공시 목록, 미팅 질문 카드 포함
- 카드, 필터, 표 또는 차트 중 이 화면에 필요한 요소 사용
- 모바일 390px에서도 내용이 잘리지 않는 반응형
- 실제 API, API 키, 로그인, 데이터베이스, 결제 기능은 추가하지 않음
- 화면 상단에 "교육용 샘플" 배지 표시

먼저 실행되는 프론트 화면을 만들고 Preview에 오류가 없는지 확인해줘.

수강생 확인

1. 오른쪽 Preview에 화면이 나타나는지 확인합니다.

2. Code 탭에서 React 파일이 생성됐는지만 확인합니다. 코드를 외울 필요는 없습니다.

3. 오류가 보이면 오류 전문을 복사해 채팅에 붙이고 현재 기능을 유지한 최소 수정을 요청합니다.

Step 3

샘플 데이터와 클릭 동작 연결하기

published

Step 3

샘플 데이터와 클릭 동작 연결하기

원주 ICT 빅데이터 고급

데이터 구조

복사용 텍스트

{ customerId, name, company, interest }, { corpName, industry, ceo }, { corpName, date, title, filingType }

기능 추가 프롬프트

복사용 텍스트

현재 정상 작동하는 화면은 유지하고, 아래 mock 데이터와 상호작용만 추가해줘.

필수 동작:
- 고객을 선택하면 회사 개요와 공시 목록이 함께 변경
- 고객명과 회사명 검색
- 공시 유형 필터
- 선택 회사에 맞는 교육용 미팅 질문 3개와 복사 버튼

데이터 구조:
{ customerId, name, company, interest }, { corpName, industry, ceo }, { corpName, date, title, filingType }

규칙:
- mock 데이터 밖의 사실을 지어내지 않음
- 필터나 항목을 바꾸면 관련 카드·표·차트가 함께 갱신
- 계산 기준은 코드에서 한 곳에 모아 나중에 교체하기 쉽게 작성
- 새 기능을 추가한 뒤 기존 화면도 다시 동작하는지 확인

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

직접 눌러보기

  • 고객 2명을 번갈아 선택한다.
  • 공시 유형 필터를 바꾼다.
  • 회사명이 매칭되지 않는 고객을 선택한다.
Step 4

예외 상태와 모바일 화면 다듬기

published

Step 4

예외 상태와 모바일 화면 다듬기

원주 ICT 빅데이터 고급

검수 프롬프트

복사용 텍스트

새 기능을 더 만들지 말고 현재 앱을 수업 데모용으로 검수하고 다듬어줘.

공통 점검:
- 모바일 390px에서 가로 잘림 제거
- 표가 넓으면 표 영역만 가로 스크롤
- 로딩, 빈 데이터, 오류 상태를 서로 다르게 표시
- 버튼·필터·입력칸에 명확한 한국어 라벨과 키보드 포커스 추가
- 색상만으로 정상/주의/오류를 구분하지 않음

이 앱의 테스트 상태:
- 회사명이 매칭되지 않는 고객
- 최근 공시가 없는 회사
- 검색 결과가 0건인 상태

mock 데이터 밖의 회사 정보와 공시를 지어내지 말고, 없으면 "확인 필요"로 표시해줘.
수정 후 Preview에서 확인할 체크리스트를 5개로 알려줘.

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

미리보기가 깨졌을 때 복구 문장

복사용 텍스트

방금 변경으로 미리보기가 깨졌어.
마지막 변경만 되돌리고 직전 정상 화면을 복구해줘.
오류 원인과 다시 시도할 최소 수정도 한 줄씩 알려줘.
Step 5

코드 내보내기와 Cursor 인계서 만들기

published

Step 5

코드 내보내기와 Cursor 인계서 만들기

원주 ICT 빅데이터 고급

Cursor 인계 프롬프트

복사용 텍스트

이 앱을 다음 수업에서 Cursor로 이어서 개발할 수 있게 정리해줘.

1. 현재 React 파일 구조를 설명한다.
2. mock 데이터를 별도 파일로 분리한다.
3. 실제 데이터로 교체할 위치에 TODO_CURSOR 주석을 추가한다.
4. HANDOFF.md를 만들고 아래 내용을 적는다.
   - 앱 목적과 사용자
   - 화면 구성과 완료된 클릭 동작
   - 입력 데이터 필드
   - 로딩·빈 데이터·오류 상태의 완료 기준
   - Cursor에서 다음으로 구현할 작업 5개
5. API 키, 개인정보, 실제 회사자료가 코드에 없는지 확인한다.

Cursor에서 이어갈 핵심 작업: customers·companies·filings 파일을 분리하고 실제 DART 조회는 서버 코드와 환경변수로 연결합니다.

저장 순서

1. Preview에서 마지막으로 필터와 버튼을 눌러봅니다.

2. Code 탭에서 HANDOFF.mdTODO_CURSOR를 확인합니다.

3. AI Studio의 Download/Export 기능으로 프로젝트를 내려받습니다.

4. ZIP 파일 이름을 ai-studio-dart-crm.zip으로 정리합니다.

5. ZIP과 Preview 캡처를 개인 자료실에, 핵심 프롬프트를 개인 메모에 보관합니다.

> API 키와 실제 개인정보는 ZIP에 넣지 않습니다. 다음 Cursor 실습은 이 결과물을 출발점으로 사용합니다.

Module 10practice필수

AI Studio Build 데모 3: 관심종목 시계열 대시보드

종목 선택, 핵심 지표, 가격 추이, 거래량 급증일을 보여주는 교육용 프론트를 만듭니다.

5 steps

Step 1

완성 화면과 사용자 흐름 정하기

published

Step 1

완성 화면과 사용자 흐름 정하기

원주 ICT 빅데이터 고급

이번 데모에서 만들 앱

관심종목 시계열 대시보드

종목별 가격과 거래량 변화를 읽는 데이터 시각화 화면을 연습합니다.

항목내용
사용자주가 시계열 데이터 시각화를 배우는 대학생과 데이터 입문자
화면 구성종목 선택, 현재가·기간 등락률·평균 거래량 카드, 종가 추이 차트, 거래량 급증일 표, 교육용 안내
데이터교육용 mock 데이터
오늘의 범위AI Studio Build에서 작동하는 React 프론트 초안
다음 연결뒤쪽 Cursor 모듈에서 실제 파일·데이터·API 연결

화면 기획 프롬프트

Google AI Studio에서 Build를 열고 아래 프롬프트를 입력합니다.

복사용 텍스트

아직 코드를 만들지 말고 "관심종목 시계열 대시보드"의 한 화면 기획서를 작성해줘.

사용자: 주가 시계열 데이터 시각화를 배우는 대학생과 데이터 입문자
목표: 종목별 가격과 거래량 변화를 읽는 데이터 시각화 화면을 연습합니다.

필수 화면 영역:
- 종목 선택
- 현재가·기간 등락률·평균 거래량 카드
- 종가 추이 차트
- 거래량 급증일 표
- 교육용 안내

출력:
1. 사용자가 화면을 쓰는 순서
2. 컴포넌트 목록
3. 모바일 배치 순서
4. 로딩·빈 데이터·오류 상태

로그인, 데이터베이스, 실제 외부 API는 아직 설계하지 마.

19줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

완료 기준

  • 화면에 들어갈 영역과 클릭 순서를 말로 설명할 수 있다.
  • 실제 개인정보·회사자료 대신 교육용 샘플을 쓰기로 정했다.
  • 백엔드는 만들지 않고 프론트 화면만 먼저 만든다.
Step 2

Build로 첫 React 프론트 생성하기

published

Step 2

Build로 첫 React 프론트 생성하기

원주 ICT 빅데이터 고급

첫 앱 생성 프롬프트

복사용 텍스트

방금 기획한 "관심종목 시계열 대시보드"을 Google AI Studio Build에서 실행 가능한 React 앱으로 만들어줘.

조건:
- 모든 문구는 자연스러운 한국어
- 데이터는 코드 안의 작은 mock 배열 사용
- 종목 선택, 현재가·기간 등락률·평균 거래량 카드, 종가 추이 차트, 거래량 급증일 표, 교육용 안내 포함
- 카드, 필터, 표 또는 차트 중 이 화면에 필요한 요소 사용
- 모바일 390px에서도 내용이 잘리지 않는 반응형
- 실제 API, API 키, 로그인, 데이터베이스, 결제 기능은 추가하지 않음
- 화면 상단에 "교육용 샘플" 배지 표시

먼저 실행되는 프론트 화면을 만들고 Preview에 오류가 없는지 확인해줘.

수강생 확인

1. 오른쪽 Preview에 화면이 나타나는지 확인합니다.

2. Code 탭에서 React 파일이 생성됐는지만 확인합니다. 코드를 외울 필요는 없습니다.

3. 오류가 보이면 오류 전문을 복사해 채팅에 붙이고 현재 기능을 유지한 최소 수정을 요청합니다.

Step 3

샘플 데이터와 클릭 동작 연결하기

published

Step 3

샘플 데이터와 클릭 동작 연결하기

원주 ICT 빅데이터 고급

데이터 구조

복사용 텍스트

{ stockCode, name }, { date, stockCode, close, volume }

기능 추가 프롬프트

복사용 텍스트

현재 정상 작동하는 화면은 유지하고, 아래 mock 데이터와 상호작용만 추가해줘.

필수 동작:
- 종목을 바꾸면 카드·차트·표가 함께 변경
- 평균 거래량의 1.5배가 넘는 날에 급증 배지 표시
- 차트 점을 선택하면 날짜·종가·거래량 표시
- 상승과 하락을 색상뿐 아니라 화살표와 텍스트로 구분

데이터 구조:
{ stockCode, name }, { date, stockCode, close, volume }

규칙:
- mock 데이터 밖의 사실을 지어내지 않음
- 필터나 항목을 바꾸면 관련 카드·표·차트가 함께 갱신
- 계산 기준은 코드에서 한 곳에 모아 나중에 교체하기 쉽게 작성
- 새 기능을 추가한 뒤 기존 화면도 다시 동작하는지 확인

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

직접 눌러보기

  • 종목 3개를 차례로 선택한다.
  • 거래량 급증일 배지를 확인한다.
  • 차트의 날짜 지점을 선택한다.
Step 4

예외 상태와 모바일 화면 다듬기

published

Step 4

예외 상태와 모바일 화면 다듬기

원주 ICT 빅데이터 고급

검수 프롬프트

복사용 텍스트

새 기능을 더 만들지 말고 현재 앱을 수업 데모용으로 검수하고 다듬어줘.

공통 점검:
- 모바일 390px에서 가로 잘림 제거
- 표가 넓으면 표 영역만 가로 스크롤
- 로딩, 빈 데이터, 오류 상태를 서로 다르게 표시
- 버튼·필터·입력칸에 명확한 한국어 라벨과 키보드 포커스 추가
- 색상만으로 정상/주의/오류를 구분하지 않음

이 앱의 테스트 상태:
- 가격 데이터가 비어 있는 종목
- 종가가 null인 날짜
- 거래량이 0인 날짜

매수·매도나 종목 추천을 만들지 말고 "교육용 분석이며 투자 권유가 아닙니다"를 계속 표시해줘.
수정 후 Preview에서 확인할 체크리스트를 5개로 알려줘.

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

미리보기가 깨졌을 때 복구 문장

복사용 텍스트

방금 변경으로 미리보기가 깨졌어.
마지막 변경만 되돌리고 직전 정상 화면을 복구해줘.
오류 원인과 다시 시도할 최소 수정도 한 줄씩 알려줘.
Step 5

코드 내보내기와 Cursor 인계서 만들기

published

Step 5

코드 내보내기와 Cursor 인계서 만들기

원주 ICT 빅데이터 고급

Cursor 인계 프롬프트

복사용 텍스트

이 앱을 다음 수업에서 Cursor로 이어서 개발할 수 있게 정리해줘.

1. 현재 React 파일 구조를 설명한다.
2. mock 데이터를 별도 파일로 분리한다.
3. 실제 데이터로 교체할 위치에 TODO_CURSOR 주석을 추가한다.
4. HANDOFF.md를 만들고 아래 내용을 적는다.
   - 앱 목적과 사용자
   - 화면 구성과 완료된 클릭 동작
   - 입력 데이터 필드
   - 로딩·빈 데이터·오류 상태의 완료 기준
   - Cursor에서 다음으로 구현할 작업 5개
5. API 키, 개인정보, 실제 회사자료가 코드에 없는지 확인한다.

Cursor에서 이어갈 핵심 작업: mock 시계열을 KIS 형태의 서버 응답으로 교체하되 API 키는 브라우저 코드에 두지 않습니다.

저장 순서

1. Preview에서 마지막으로 필터와 버튼을 눌러봅니다.

2. Code 탭에서 HANDOFF.mdTODO_CURSOR를 확인합니다.

3. AI Studio의 Download/Export 기능으로 프로젝트를 내려받습니다.

4. ZIP 파일 이름을 ai-studio-stock-dashboard.zip으로 정리합니다.

5. ZIP과 Preview 캡처를 개인 자료실에, 핵심 프롬프트를 개인 메모에 보관합니다.

> API 키와 실제 개인정보는 ZIP에 넣지 않습니다. 다음 Cursor 실습은 이 결과물을 출발점으로 사용합니다.

Module 11practice필수

AI Studio Build 데모 4: 근거 기반 업무 문서 Q&A

질문, 답변, 근거 문서, 확인 필요 상태가 함께 보이는 RAG 프론트 목업을 만듭니다.

5 steps

Step 1

완성 화면과 사용자 흐름 정하기

published

Step 1

완성 화면과 사용자 흐름 정하기

원주 ICT 빅데이터 고급

이번 데모에서 만들 앱

근거 기반 업무 문서 Q&A

그럴듯한 답보다 근거 문서와 확인 필요 상태를 먼저 보여주는 화면을 설계합니다.

항목내용
사용자규정·회의록·FAQ에서 답과 근거를 함께 확인해야 하는 행정 담당자
화면 구성질문 입력과 추천 질문, 샘플 답변, 근거 문서 카드, 근거 문장, 확인 필요 목록
데이터교육용 mock 데이터
오늘의 범위AI Studio Build에서 작동하는 React 프론트 초안
다음 연결뒤쪽 Cursor 모듈에서 실제 파일·데이터·API 연결

화면 기획 프롬프트

Google AI Studio에서 Build를 열고 아래 프롬프트를 입력합니다.

복사용 텍스트

아직 코드를 만들지 말고 "근거 기반 업무 문서 Q&A"의 한 화면 기획서를 작성해줘.

사용자: 규정·회의록·FAQ에서 답과 근거를 함께 확인해야 하는 행정 담당자
목표: 그럴듯한 답보다 근거 문서와 확인 필요 상태를 먼저 보여주는 화면을 설계합니다.

필수 화면 영역:
- 질문 입력과 추천 질문
- 샘플 답변
- 근거 문서 카드
- 근거 문장
- 확인 필요 목록

출력:
1. 사용자가 화면을 쓰는 순서
2. 컴포넌트 목록
3. 모바일 배치 순서
4. 로딩·빈 데이터·오류 상태

로그인, 데이터베이스, 실제 외부 API는 아직 설계하지 마.

19줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

완료 기준

  • 화면에 들어갈 영역과 클릭 순서를 말로 설명할 수 있다.
  • 실제 개인정보·회사자료 대신 교육용 샘플을 쓰기로 정했다.
  • 백엔드는 만들지 않고 프론트 화면만 먼저 만든다.
Step 2

Build로 첫 React 프론트 생성하기

published

Step 2

Build로 첫 React 프론트 생성하기

원주 ICT 빅데이터 고급

첫 앱 생성 프롬프트

복사용 텍스트

방금 기획한 "근거 기반 업무 문서 Q&A"을 Google AI Studio Build에서 실행 가능한 React 앱으로 만들어줘.

조건:
- 모든 문구는 자연스러운 한국어
- 데이터는 코드 안의 작은 mock 배열 사용
- 질문 입력과 추천 질문, 샘플 답변, 근거 문서 카드, 근거 문장, 확인 필요 목록 포함
- 카드, 필터, 표 또는 차트 중 이 화면에 필요한 요소 사용
- 모바일 390px에서도 내용이 잘리지 않는 반응형
- 실제 API, API 키, 로그인, 데이터베이스, 결제 기능은 추가하지 않음
- 화면 상단에 "교육용 샘플" 배지 표시

먼저 실행되는 프론트 화면을 만들고 Preview에 오류가 없는지 확인해줘.

수강생 확인

1. 오른쪽 Preview에 화면이 나타나는지 확인합니다.

2. Code 탭에서 React 파일이 생성됐는지만 확인합니다. 코드를 외울 필요는 없습니다.

3. 오류가 보이면 오류 전문을 복사해 채팅에 붙이고 현재 기능을 유지한 최소 수정을 요청합니다.

Step 3

샘플 데이터와 클릭 동작 연결하기

published

Step 3

샘플 데이터와 클릭 동작 연결하기

원주 ICT 빅데이터 고급

데이터 구조

복사용 텍스트

{ question, answer, sources: [{ documentName, date, evidence }], needsCheck }

기능 추가 프롬프트

복사용 텍스트

현재 정상 작동하는 화면은 유지하고, 아래 mock 데이터와 상호작용만 추가해줘.

필수 동작:
- 추천 질문을 누르면 답변과 근거 카드가 함께 변경
- 근거 문서 카드 펼치기·접기
- 근거 문장과 문서 작성일 표시
- 근거가 부족하면 답을 만들지 않고 확인 필요 표시

데이터 구조:
{ question, answer, sources: [{ documentName, date, evidence }], needsCheck }

규칙:
- mock 데이터 밖의 사실을 지어내지 않음
- 필터나 항목을 바꾸면 관련 카드·표·차트가 함께 갱신
- 계산 기준은 코드에서 한 곳에 모아 나중에 교체하기 쉽게 작성
- 새 기능을 추가한 뒤 기존 화면도 다시 동작하는지 확인

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

직접 눌러보기

  • 근거가 충분한 질문을 선택한다.
  • 근거가 일부만 있는 질문을 선택한다.
  • 관련 문서가 없는 질문을 선택한다.
Step 4

예외 상태와 모바일 화면 다듬기

published

Step 4

예외 상태와 모바일 화면 다듬기

원주 ICT 빅데이터 고급

검수 프롬프트

복사용 텍스트

새 기능을 더 만들지 말고 현재 앱을 수업 데모용으로 검수하고 다듬어줘.

공통 점검:
- 모바일 390px에서 가로 잘림 제거
- 표가 넓으면 표 영역만 가로 스크롤
- 로딩, 빈 데이터, 오류 상태를 서로 다르게 표시
- 버튼·필터·입력칸에 명확한 한국어 라벨과 키보드 포커스 추가
- 색상만으로 정상/주의/오류를 구분하지 않음

이 앱의 테스트 상태:
- 근거가 충분한 질문
- 근거가 일부만 있는 질문
- 관련 문서가 없는 질문

모든 답변에 "샘플 응답"을 표시하고, mock 문서에 없는 규정이나 사실은 만들지 마.
수정 후 Preview에서 확인할 체크리스트를 5개로 알려줘.

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

미리보기가 깨졌을 때 복구 문장

복사용 텍스트

방금 변경으로 미리보기가 깨졌어.
마지막 변경만 되돌리고 직전 정상 화면을 복구해줘.
오류 원인과 다시 시도할 최소 수정도 한 줄씩 알려줘.
Step 5

코드 내보내기와 Cursor 인계서 만들기

published

Step 5

코드 내보내기와 Cursor 인계서 만들기

원주 ICT 빅데이터 고급

Cursor 인계 프롬프트

복사용 텍스트

이 앱을 다음 수업에서 Cursor로 이어서 개발할 수 있게 정리해줘.

1. 현재 React 파일 구조를 설명한다.
2. mock 데이터를 별도 파일로 분리한다.
3. 실제 데이터로 교체할 위치에 TODO_CURSOR 주석을 추가한다.
4. HANDOFF.md를 만들고 아래 내용을 적는다.
   - 앱 목적과 사용자
   - 화면 구성과 완료된 클릭 동작
   - 입력 데이터 필드
   - 로딩·빈 데이터·오류 상태의 완료 기준
   - Cursor에서 다음으로 구현할 작업 5개
5. API 키, 개인정보, 실제 회사자료가 코드에 없는지 확인한다.

Cursor에서 이어갈 핵심 작업: 질문 요청과 answer·sources·evidence·needsCheck 응답 타입을 정의하고 실제 RAG API로 교체합니다.

저장 순서

1. Preview에서 마지막으로 필터와 버튼을 눌러봅니다.

2. Code 탭에서 HANDOFF.mdTODO_CURSOR를 확인합니다.

3. AI Studio의 Download/Export 기능으로 프로젝트를 내려받습니다.

4. ZIP 파일 이름을 ai-studio-document-rag.zip으로 정리합니다.

5. ZIP과 Preview 캡처를 개인 자료실에, 핵심 프롬프트를 개인 메모에 보관합니다.

> API 키와 실제 개인정보는 ZIP에 넣지 않습니다. 다음 Cursor 실습은 이 결과물을 출발점으로 사용합니다.

Module 12practice필수

AI Studio Build 데모 5: 기상청 × 매출 JOIN 분석

날씨와 매출 mock 데이터를 날짜로 결합해 필터와 가설 결과가 작동하는 프론트를 만듭니다.

5 steps

Step 1

완성 화면과 사용자 흐름 정하기

published

Step 1

완성 화면과 사용자 흐름 정하기

원주 ICT 빅데이터 고급

이번 데모에서 만들 앱

기상청 × 매출 JOIN 분석

외부 날씨 데이터와 내부 매출 데이터가 날짜로 연결되는 화면 흐름을 경험합니다.

항목내용
사용자날씨에 따른 매출 차이를 살펴보는 매장 운영자와 데이터 분석 입문자
화면 구성기간·날씨·상품군 필터, 매출 KPI 카드, 날씨별 매출 비교 차트, 날짜별 JOIN 결과 표, 분석 한계
데이터교육용 mock 데이터
오늘의 범위AI Studio Build에서 작동하는 React 프론트 초안
다음 연결뒤쪽 Cursor 모듈에서 실제 파일·데이터·API 연결

화면 기획 프롬프트

Google AI Studio에서 Build를 열고 아래 프롬프트를 입력합니다.

복사용 텍스트

아직 코드를 만들지 말고 "기상청 × 매출 JOIN 분석"의 한 화면 기획서를 작성해줘.

사용자: 날씨에 따른 매출 차이를 살펴보는 매장 운영자와 데이터 분석 입문자
목표: 외부 날씨 데이터와 내부 매출 데이터가 날짜로 연결되는 화면 흐름을 경험합니다.

필수 화면 영역:
- 기간·날씨·상품군 필터
- 매출 KPI 카드
- 날씨별 매출 비교 차트
- 날짜별 JOIN 결과 표
- 분석 한계

출력:
1. 사용자가 화면을 쓰는 순서
2. 컴포넌트 목록
3. 모바일 배치 순서
4. 로딩·빈 데이터·오류 상태

로그인, 데이터베이스, 실제 외부 API는 아직 설계하지 마.

19줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

완료 기준

  • 화면에 들어갈 영역과 클릭 순서를 말로 설명할 수 있다.
  • 실제 개인정보·회사자료 대신 교육용 샘플을 쓰기로 정했다.
  • 백엔드는 만들지 않고 프론트 화면만 먼저 만든다.
Step 2

Build로 첫 React 프론트 생성하기

published

Step 2

Build로 첫 React 프론트 생성하기

원주 ICT 빅데이터 고급

첫 앱 생성 프롬프트

복사용 텍스트

방금 기획한 "기상청 × 매출 JOIN 분석"을 Google AI Studio Build에서 실행 가능한 React 앱으로 만들어줘.

조건:
- 모든 문구는 자연스러운 한국어
- 데이터는 코드 안의 작은 mock 배열 사용
- 기간·날씨·상품군 필터, 매출 KPI 카드, 날씨별 매출 비교 차트, 날짜별 JOIN 결과 표, 분석 한계 포함
- 카드, 필터, 표 또는 차트 중 이 화면에 필요한 요소 사용
- 모바일 390px에서도 내용이 잘리지 않는 반응형
- 실제 API, API 키, 로그인, 데이터베이스, 결제 기능은 추가하지 않음
- 화면 상단에 "교육용 샘플" 배지 표시

먼저 실행되는 프론트 화면을 만들고 Preview에 오류가 없는지 확인해줘.

수강생 확인

1. 오른쪽 Preview에 화면이 나타나는지 확인합니다.

2. Code 탭에서 React 파일이 생성됐는지만 확인합니다. 코드를 외울 필요는 없습니다.

3. 오류가 보이면 오류 전문을 복사해 채팅에 붙이고 현재 기능을 유지한 최소 수정을 요청합니다.

Step 3

샘플 데이터와 클릭 동작 연결하기

published

Step 3

샘플 데이터와 클릭 동작 연결하기

원주 ICT 빅데이터 고급

데이터 구조

복사용 텍스트

{ date, weather, temperature, rainYn }, { date, category, orders, sales }

기능 추가 프롬프트

복사용 텍스트

현재 정상 작동하는 화면은 유지하고, 아래 mock 데이터와 상호작용만 추가해줘.

필수 동작:
- weather와 sales mock 배열을 date 기준으로 결합
- 날씨와 상품군 필터에 따라 카드·차트·표가 함께 갱신
- 비 오는 날과 맑은 날 평균 매출 비교
- JOIN 실패 건수와 표본 수 표시

데이터 구조:
{ date, weather, temperature, rainYn }, { date, category, orders, sales }

규칙:
- mock 데이터 밖의 사실을 지어내지 않음
- 필터나 항목을 바꾸면 관련 카드·표·차트가 함께 갱신
- 계산 기준은 코드에서 한 곳에 모아 나중에 교체하기 쉽게 작성
- 새 기능을 추가한 뒤 기존 화면도 다시 동작하는지 확인

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

직접 눌러보기

  • 맑음·흐림·비 필터를 바꾼다.
  • 상품군 필터를 바꾼다.
  • JOIN되지 않는 날짜와 0건 필터를 확인한다.
Step 4

예외 상태와 모바일 화면 다듬기

published

Step 4

예외 상태와 모바일 화면 다듬기

원주 ICT 빅데이터 고급

검수 프롬프트

복사용 텍스트

새 기능을 더 만들지 말고 현재 앱을 수업 데모용으로 검수하고 다듬어줘.

공통 점검:
- 모바일 390px에서 가로 잘림 제거
- 표가 넓으면 표 영역만 가로 스크롤
- 로딩, 빈 데이터, 오류 상태를 서로 다르게 표시
- 버튼·필터·입력칸에 명확한 한국어 라벨과 키보드 포커스 추가
- 색상만으로 정상/주의/오류를 구분하지 않음

이 앱의 테스트 상태:
- 날씨만 있고 매출이 없는 날짜
- 매출만 있고 날씨가 없는 날짜
- 필터 결과가 0건인 상태

분석 문장은 원인이라고 단정하지 말고 "차이가 관찰된다"와 "추가 데이터 필요" 수준으로 작성해줘.
수정 후 Preview에서 확인할 체크리스트를 5개로 알려줘.

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

미리보기가 깨졌을 때 복구 문장

복사용 텍스트

방금 변경으로 미리보기가 깨졌어.
마지막 변경만 되돌리고 직전 정상 화면을 복구해줘.
오류 원인과 다시 시도할 최소 수정도 한 줄씩 알려줘.
Step 5

코드 내보내기와 Cursor 인계서 만들기

published

Step 5

코드 내보내기와 Cursor 인계서 만들기

원주 ICT 빅데이터 고급

Cursor 인계 프롬프트

복사용 텍스트

이 앱을 다음 수업에서 Cursor로 이어서 개발할 수 있게 정리해줘.

1. 현재 React 파일 구조를 설명한다.
2. mock 데이터를 별도 파일로 분리한다.
3. 실제 데이터로 교체할 위치에 TODO_CURSOR 주석을 추가한다.
4. HANDOFF.md를 만들고 아래 내용을 적는다.
   - 앱 목적과 사용자
   - 화면 구성과 완료된 클릭 동작
   - 입력 데이터 필드
   - 로딩·빈 데이터·오류 상태의 완료 기준
   - Cursor에서 다음으로 구현할 작업 5개
5. API 키, 개인정보, 실제 회사자료가 코드에 없는지 확인한다.

Cursor에서 이어갈 핵심 작업: weather·sales CSV/API를 date 기준으로 JOIN하고 결측·중복·날짜 형식을 검증합니다.

저장 순서

1. Preview에서 마지막으로 필터와 버튼을 눌러봅니다.

2. Code 탭에서 HANDOFF.mdTODO_CURSOR를 확인합니다.

3. AI Studio의 Download/Export 기능으로 프로젝트를 내려받습니다.

4. ZIP 파일 이름을 ai-studio-weather-sales.zip으로 정리합니다.

5. ZIP과 Preview 캡처를 개인 자료실에, 핵심 프롬프트를 개인 메모에 보관합니다.

> API 키와 실제 개인정보는 ZIP에 넣지 않습니다. 다음 Cursor 실습은 이 결과물을 출발점으로 사용합니다.

Module 13lesson필수

이론 강의: AI 시대의 데이터 기반 웹앱 이해

AI Studio 실습을 마치고 Apps Script에 들어가기 전, 데이터 기반 업무 앱의 원리와 두 도구의 역할을 슬라이드로 정리하는 배경 이론 강의입니다.

21 steps

Step 1

표지 — 강의 소개

published

Step 1

표지 — 강의 소개

원주 ICT 빅데이터 고급

AI 시대의 데이터 기반 웹앱 이해 — 이 강의가 답하는 다섯 가지 질문

진행 안내

  • 실습 설명서가 아니라 배경 이론 강의입니다. 코드 작성이나 버튼 위치는 다루지 않습니다.
  • 오전 AI Studio 실습과 오후 Google Sheets·Apps Script 실습 사이의 개념 정리 시간입니다.
  • 슬라이드는 강사 진행에 맞춰 빠르게 넘어갈 수 있습니다. 수업 후 복습용으로 다시 열어 보세요.
Step 2

01. AI 시대, 누구나 앱을 만드는 이유

published

Step 2

01. AI 시대, 누구나 앱을 만드는 이유

원주 ICT 빅데이터 고급

1부 · 업무 도구와 웹앱의 변화

AI 시대, 누구나 앱을 만드는 이유

과거에는 개발자만, 현재는 AI의 지원으로 현업 담당자가 직접
  • 과거에는 개발자만 앱을 만들 수 있었습니다
  • 현재는 AI가 기획·디자인·코딩을 지원합니다
  • 현업 담당자가 자신의 업무를 직접 자동화할 수 있게 되었습니다
  • 중요한 것은 코딩 실력보다 문제와 업무 흐름의 이해입니다

> 핵심 메시지 — AI가 개발을 대신하는 것이 아니라, 개발의 진입장벽을 낮춰줍니다.

Step 3

02. 업무는 데이터의 흐름이다

published

Step 3

02. 업무는 데이터의 흐름이다

원주 ICT 빅데이터 고급

1부 · 업무 도구와 웹앱의 변화

업무는 데이터의 흐름이다

입력 → 검증 → 저장·분류 → 조회 → 공유·알림 — 많은 업무 앱은 이 흐름을 화면으로 만든 것입니다
  • 데이터를 입력하고, 규칙에 맞는지 검증합니다
  • 저장하고 분류한 뒤, 필요한 정보를 조회합니다
  • 결과를 공유하거나 알림을 보냅니다

내 업무를 이 다섯 단계로 쪼개 보는 것이 앱 만들기의 첫걸음입니다.

Step 4

03. 문서·스프레드시트·웹앱의 차이

published

Step 4

03. 문서·스프레드시트·웹앱의 차이

원주 ICT 빅데이터 고급

1부 · 업무 도구와 웹앱의 변화

문서·스프레드시트·웹앱의 차이

문서 → 스프레드시트 → 웹앱 → 자동화 — 오른쪽으로 갈수록 처리를 시스템이 맡습니다
  • 문서: 정보를 읽고 전달
  • 스프레드시트: 데이터를 저장하고 계산
  • 웹앱: 사용자가 정해진 절차에 따라 데이터를 처리
  • 자동화: 반복되는 처리를 시스템이 수행

웹앱은 데이터를 직접 보여주는 것보다 사용자가 해야 할 행동을 안내하는 데 유리합니다.

Step 5

04. 웹앱이 필요한 순간

published

Step 5

04. 웹앱이 필요한 순간

원주 ICT 빅데이터 고급

1부 · 업무 도구와 웹앱의 변화

웹앱이 필요한 순간

여섯 가지 신호 — 하나라도 해당되면 화면이나 자동화를 얹을 때
  • 여러 사람이 같은 양식을 사용해야 할 때
  • 시트를 직접 수정하면 실수가 발생할 때
  • 입력 규칙을 통제해야 할 때
  • 처리 상태를 체계적으로 관리해야 할 때
  • 반복되는 집계와 보고가 필요할 때
  • 외부 사용자에게 시트 전체를 보여주고 싶지 않을

하나라도 해당된다면, 시트 위에 화면이나 자동화를 얹을 때가 된 것입니다.

Step 6

05. 노코드·로우코드·AI 코딩

published

Step 6

05. 노코드·로우코드·AI 코딩

원주 ICT 빅데이터 고급

1부 · 업무 도구와 웹앱의 변화

노코드·로우코드·AI 코딩

노코드 → 로우코드 → AI 코딩 → 전문 개발의 스펙트럼
  • 노코드: 화면 설정 중심
  • 로우코드: 일부 코드를 활용
  • AI 코딩: 자연어로 코드 생성과 수정
  • 전문 개발: 복잡한 시스템을 직접 설계하고 구현

Apps Script는 로우코드와 AI 코딩을 함께 활용하기 좋은 환경입니다.

Step 7

06. Google AI Studio란 무엇인가

published

Step 7

06. Google AI Studio란 무엇인가

원주 ICT 빅데이터 고급

2부 · AI Studio와 AI 앱의 이해

Google AI Studio란 무엇인가

Chat은 프롬프트 실험, Build는 AI 앱 화면 생성 — 오늘 둘 다 만났습니다
  • Gemini 모델을 실험하는 개발 환경
  • 오전에 쓴 Chat: 프롬프트와 AI 동작을 시험 (요약·분류·추출)
  • 데모로 본 Build: 대화·분석·생성 기능을 가진 앱을 프롬프트로 제작
  • 빠른 프로토타입과 기술 검증에 활용

AI Studio의 중심은 AI 모델의 능력을 앱에 적용하는 것입니다.

Step 8

07. AI Studio에 적합한 문제

published

Step 8

07. AI Studio에 적합한 문제

원주 ICT 빅데이터 고급

2부 · AI Studio와 AI 앱의 이해

AI Studio에 적합한 문제

요약·분류·질문답변·생성·추출 — 정답이 규칙으로 정해지지 않은 문제들
  • 문서 요약, 내용 분류
  • 질문과 답변, 이미지·텍스트 분석
  • 아이디어와 콘텐츠 생성
  • 비정형 데이터에서 정보 추출
  • AI와 대화하는 서비스

> 정답이 규칙으로 완전히 정해지지 않은 문제에 특히 유용합니다.

오전에 해 본 공고문 요약이 정확히 이 유형입니다 — "요약"의 정답은 하나로 정해져 있지 않으니까요.

Step 9

08. AI 앱과 일반 업무 앱의 차이

published

Step 9

08. AI 앱과 일반 업무 앱의 차이

원주 ICT 빅데이터 고급

2부 · AI Studio와 AI 앱의 이해

AI 앱과 일반 업무 앱의 차이

처리 방식·입력·결과·목적·주의점 — 다섯 가지 기준으로 비교

두 방식은 경쟁 관계가 아니라 서로 다른 문제를 해결합니다. 이 과정에서도 문서 Q&A는 AI 앱으로, 오후의 데이터 품질 점검은 규칙 기반으로 만듭니다.

Step 10

09. AI를 앱 개발에 활용하는 방법

published

Step 10

09. AI를 앱 개발에 활용하는 방법

원주 ICT 빅데이터 고급

2부 · AI Studio와 AI 앱의 이해

AI를 앱 개발에 활용하는 방법

AI는 앱 내부 기능뿐 아니라 개발 과정에도 활용할 수 있습니다.

개발 과정에서는 도구로, 앱 안에서는 기능으로
  • 요구사항 정리, 화면 구성 제안
  • 데이터 구조 설계
  • 코드 초안 작성, 오류 원인 분석
  • 테스트 항목 작성, 사용자 안내문 작성

> 핵심 메시지 — AI는 개발 도구이면서 동시에 앱의 기능이 될 수 있습니다.

Step 11

10. AI 활용 시 반드시 알아야 할 한계

published

Step 11

10. AI 활용 시 반드시 알아야 할 한계

원주 ICT 빅데이터 고급

2부 · AI Studio와 AI 앱의 이해

AI 활용 시 반드시 알아야 할 한계

여섯 가지 한계 — AI의 결과는 검토가 필요한 초안입니다
  • 답변이 항상 정확하지 않습니다
  • 같은 질문에도 결과가 달라질 수 있습니다
  • 개인정보 입력에 주의해야 합니다
  • 생성된 코드는 보안 검토가 필요합니다
  • 중요한 판단은 사람이 확인해야 합니다
  • 비용과 호출 제한을 고려해야 합니다

> AI의 결과는 완성품이 아니라 검토가 필요한 초안으로 다루는 것이 안전합니다.

환각이 왜 생기는지, 어떤 안전장치를 두는지는 앞의 "생성형 AI가 답을 만드는 원리" 스텝과 2일차 RAG 실습의 "환각을 줄이는 3중 안전장치" 스텝에서 실습과 함께 다시 다룹니다.

Step 12

11. Google Apps Script란 무엇인가

published

Step 12

11. Google Apps Script란 무엇인가

원주 ICT 빅데이터 고급

3부 · Google Sheets와 Apps Script

Google Apps Script란 무엇인가

Sheets·Gmail·Drive·Calendar를 잇는 자동화 허브
  • Google Workspace를 자동화하는 개발 환경
  • JavaScript 기반
  • Google Sheets, Gmail, Drive 등과 연결
  • 별도의 서버 설치 없이 실행
  • 자동화, 사용자 기능, 웹앱 구현 가능

Apps Script의 중심은 Google Workspace의 데이터와 업무를 연결하는 것입니다.

Step 13

12. Apps Script에 적합한 문제

published

Step 13

12. Apps Script에 적합한 문제

원주 ICT 빅데이터 고급

3부 · Google Sheets와 Apps Script

Apps Script에 적합한 문제

여덟 가지 대표 활용처 — 오늘 오후의 품질 점검 봇도 그중 하나
  • 신청서와 접수 시스템
  • 고객·교육생·재고 관리
  • 데이터 검증과 정리
  • 승인 및 처리 상태 관리
  • 이메일 자동 발송, 정기 보고서 생성
  • 내부용 조회 웹앱
  • Google 서비스 간 데이터 이동

> 반복되는 사무 업무를 구조화하는 데 적합합니다.

오늘 오후에 만들 데이터 품질 점검 봇이 세 번째 항목 — "데이터 검증과 정리"의 실물입니다.

Step 14

13. AI Studio와 Apps Script는 별개다

published

Step 14

13. AI Studio와 Apps Script는 별개다

원주 ICT 빅데이터 고급

3부 · Google Sheets와 Apps Script

AI Studio와 Apps Script는 별개다

서로 다른 개발 환경 — 자동 변환은 없고, 공통점은 AI의 도움을 받을 수 있다는 것
  • 서로 다른 개발 환경이며, 결과물이 자동으로 변환되지 않습니다
  • 한쪽에서 만든 앱이 다른 쪽으로 자동 이전되지 않습니다
  • 필요하면 동일한 아이디어를 각각의 방식으로 구현합니다
  • 공통점은 AI를 이용해 개발 과정을 지원받을 수 있다는 것

오전 Build 데모에서 본 React 앱이 오후 Apps Script로 "넘어가는" 것이 아닙니다 — 두 세계는 따로 존재합니다.

Step 15

14. Google Sheets를 데이터 저장소로 보는 방법

published

Step 15

14. Google Sheets를 데이터 저장소로 보는 방법

원주 ICT 빅데이터 고급

3부 · Google Sheets와 Apps Script

Google Sheets를 데이터 저장소로 보는 방법

행=기록, 열=속성, 헤더=필드 이름, 고유번호=ID — 시트를 표가 아니라 구조화된 데이터로 읽습니다
  • : 하나의 데이터 또는 기록
  • : 데이터가 가진 속성
  • 헤더: 필드 이름
  • 시트: 데이터 유형별 저장 공간
  • 고유번호(ID): 데이터를 구별하는 값 / 작성일시: 데이터가 만들어진 시점

이 구조는 내일 배울 Supabase(진짜 데이터베이스)와 정확히 같습니다 — 오늘 시트에서 익힌 감각이 그대로 이어집니다.

Step 16

15. 웹앱은 어떻게 작동하는가

published

Step 16

15. 웹앱은 어떻게 작동하는가

원주 ICT 빅데이터 고급

3부 · Google Sheets와 Apps Script

웹앱은 어떻게 작동하는가

사용자 → 웹 화면 → 처리 로직(Apps Script) → Google Sheets, 그리고 결과 반환

1. 사용자가 화면에 데이터를 입력합니다

2. Apps Script가 입력값을 검사합니다

3. Google Sheets에 저장하거나 조회합니다

4. 처리 결과를 화면에 반환합니다

5. 필요하면 이메일·Drive 등 다른 서비스와 연결합니다

이 구조를 이해하면 간단한 업무 앱 대부분을 설명할 수 있습니다. 화면 대신 시트의 메뉴 버튼이 입구가 되면 오늘 오후에 만들 "시트 자동화"가 됩니다.

Step 17

16. 웹앱 구현의 세 가지 영역

published

Step 17

16. 웹앱 구현의 세 가지 영역

원주 ICT 빅데이터 고급

4부 · 구현 원리와 설계 관점

웹앱 구현의 세 가지 영역

화면 · 로직 · 데이터 — 구현 전에 세 영역을 분리해서 생각합니다
  • 화면: 사용자가 보고 조작하는 부분 — 입력 폼, 버튼, 목록, 차트
  • 로직: 입력값 검증, 계산과 분류, 저장·수정·삭제 처리
  • 데이터: 실제 업무 정보 — Google Sheets 또는 데이터베이스

구현 전에 세 영역을 분리해서 생각해야 어디를 AI에게 맡기고 어디를 직접 결정할지 보입니다.

Step 18

17. 데이터 처리는 CRUD로 이해한다

published

Step 18

17. 데이터 처리는 CRUD로 이해한다

원주 ICT 빅데이터 고급

4부 · 구현 원리와 설계 관점

데이터 처리는 CRUD로 이해한다

Create 등록 · Read 조회 · Update 수정 · Delete 삭제
  • Create: 신규 데이터 등록
  • Read: 목록과 상세 정보 조회
  • Update: 상태와 내용 수정
  • Delete: 잘못된 데이터 삭제

> 대부분의 관리 앱은 CRUD에 검색, 통계, 권한, 알림을 추가한 형태입니다.

Step 19

18. 앱을 만들기 전에 설계할 것

published

Step 19

18. 앱을 만들기 전에 설계할 것

원주 ICT 빅데이터 고급

4부 · 구현 원리와 설계 관점

앱을 만들기 전에 설계할 것

만들기 전에 답해야 할 여덟 가지 질문
  • 누가 사용하는가? 어떤 문제를 해결하는가?
  • 어떤 데이터를 입력하고, 어떤 결과를 보여주는가?
  • 누가 조회하고 수정할 수 있는가?
  • 오류가 발생하면 어떻게 처리하는가?
  • 개인정보가 포함되는가?
  • 데이터가 얼마나 증가하는가?

> 코드를 먼저 만들기보다 업무 흐름과 데이터 구조를 먼저 정해야 합니다.

Step 20

19. AI와 함께 구현하는 방법

published

Step 20

19. AI와 함께 구현하는 방법

원주 ICT 빅데이터 고급

4부 · 구현 원리와 설계 관점

AI와 함께 구현하는 방법

문제 정의부터 배포·개선까지 — 설계는 사람, 초안은 AI

AI에게 코드를 요청할 때 포함할 내용:

  • 앱의 목적과 사용자
  • 시트의 열 구조
  • 데이터 처리 규칙
  • 필요한 화면
  • 권한과 예외 상황
  • 원하는 결과물 형식

이 절차는 내일 Cursor 데이터 앱 실습에서 그대로 사용합니다 — 오늘은 원리만 기억하면 됩니다.

Step 21

20. 어떤 도구를 선택할 것인가

published

Step 21

20. 어떤 도구를 선택할 것인가

원주 ICT 빅데이터 고급

4부 · 구현 원리와 설계 관점

어떤 도구를 선택할 것인가

상황별 선택 가이드 — 대규모·외부 서비스는 내일 배울 Supabase·Vercel 방향

> 마무리 — AI Studio는 AI가 무엇을 할 수 있는지 실험하는 도구이고, Apps Script는 Google Workspace의 데이터와 업무를 자동화하는 도구입니다. 두 도구는 별개이지만, 목적에 맞게 선택하거나 필요할 때 함께 활용할 수 있습니다.

이제 AI 앱과 업무 앱의 차이를 이해했으니, Google Sheets의 데이터를 Apps Script 자동화로 처리하는 과정을 직접 확인해보겠습니다.

Module 14practice필수

Google Sheets 업무자료 관리표 만들기

업무자료를 시트로 관리하고 AI 분석 결과를 누적할 수 있는 표 구조를 설계합니다.

3 steps

Step 1

업무자료 인벤토리 시트 설계

published

Step 1

업무자료 인벤토리 시트 설계

원주 ICT 빅데이터 고급

시트 열 구성

설명예시
id자료 고유번호DOC-001
title자료명의료기기 R&D 지원사업 공고
type자료 유형공고/정책
source출처기관 홈페이지
owner담당자홍길동
status처리 상태요약완료
summaryAI 요약300자 요약
risk주의사항제출물 누락 가능성
next_action다음 작업자격요건 확인

첫 행 붙여넣기 (열 이름)

아래 블록 오른쪽 위 복사 버튼을 누른 뒤, Google Sheets A1 셀에 붙여넣으면 9개 열이 한 번에 채워집니다.

복사용 텍스트

id	title	type	source	owner	status	summary	risk	next_action

샘플 1행 (예시 데이터)

헤더 아래 A2 셀에 붙여넣어 형식을 확인할 수 있습니다.

복사용 텍스트

DOC-001	의료기기 R&D 지원사업 공고	공고/정책	기관 홈페이지	홍길동	요약완료	300자 요약	제출물 누락 가능성	자격요건 확인

실습 순서

1. 브라우저에서 sheets.new를 입력해 새 스프레드시트를 만듭니다.

2. 시트 이름을 업무자료_인벤토리로 바꿉니다.

3. 위 첫 행 붙여넣기 블록을 복사해 A1에 붙여넣습니다. 열 순서는 뒤의 Apps Script 실습이 그대로 사용하므로 바꾸지 않습니다.

4. 오전 AI Studio 실습에서 만든 업무 관리표(또는 샘플 자료 3개)를 열 순서에 맞춰 붙여넣습니다.

업무자료_인벤토리 시트 — 9열 헤더와 샘플 데이터
Step 2

AI 결과 붙여넣기 좋은 구조

published

Step 2

AI 결과 붙여넣기 좋은 구조

원주 ICT 빅데이터 고급

붙여넣기 원칙

AI가 만든 표를 시트에 바로 붙이려면 Step 1과 같은 9열 순서여야 합니다.

AI가 채우기권장 방식
id선택DOC-001 형식. 모르면 빈칸
title자료명
type공고/정책 등
source선택출처. 모르면 빈칸
owner선택담당자. 모르면 빈칸
status선택수집 / 요약완료 등. 모르면 빈칸
summary1문단 요약
risk짧게
next_action행동 단위

근거 문장이 필요하면 evidence 열을 J열에 별도로 추가할 수 있습니다. 기본 9열 순서는 바꾸지 않습니다.

실습 입력

본인 업무자료가 있으면 그걸 쓰고, 없으면 아래 샘플을 열어 프롬프트의 `문서:` 아래에 붙여넣은 뒤 실행합니다. 오전 AI Studio 실습에서 이미 요약한 자료가 있으면 그 내용을 그대로 써도 됩니다.

AI Studio 출력 프롬프트

복사용 텍스트

다음 문서를 읽고 Google Sheets에 붙여넣을 수 있는 TSV 형식으로 출력해줘.
열 순서: id, title, type, source, owner, status, summary, risk, next_action
id, source, owner, status는 모르는 경우 빈칸으로 두고, title/type/summary/risk/next_action은 문서 내용으로 채워줘.
설명 문장은 쓰지 말고 데이터 행만 출력해줘.

문서:
여기에 자료를 붙여넣기

붙여넣기 예시 (1행)

AI 결과와 같은 9열 형식입니다. A2(또는 데이터를 넣을 첫 행)에 붙여넣습니다.

복사용 텍스트

DOC-001	의료기기 R&D 지원사업 공고	공고/정책	기관 홈페이지	홍길동	요약완료	300자 요약	제출물 누락 가능성	자격요건 확인

TSV 결과를 복사해 시트 A열에 붙여넣으면 탭 기준으로 9개 열이 자동 분리됩니다. 열이 분리되지 않고 한 칸에 모두 들어가면, 붙여넣기 직후 나타나는 클립보드 아이콘에서 텍스트를 열로 분할을 선택합니다.

AI 결과 TSV를 9열 구조에 맞춰 시트에 붙여넣은 예시
Step 3

상태값과 필터 만들기

published

Step 3

상태값과 필터 만들기

원주 ICT 빅데이터 고급

추천 상태값

상태의미
수집자료만 확보한 상태
요약완료AI 요약을 붙인 상태
검토필요사람이 다시 봐야 하는 상태
적용완료실제 업무에 반영한 상태

필터 실습

1. 상태 열(F열)을 선택하고 데이터 > 데이터 확인(Data validation)에서 드롭다운을 만듭니다. 항목에 위 상태값 4개를 입력합니다.

2. 첫 행을 선택하고 데이터 > 필터 만들기를 누른 뒤, 상태 열에서 검토필요만 남깁니다.

3. 다음 작업(next_action) 열이 비어 있는 행을 찾습니다.

4. owner 열 필터 버튼에서 정렬을 눌러 담당자별로 정렬합니다.

Module 15practice필수

Apps Script 자동화 메뉴 만들기

Google Sheets에 사용자 메뉴를 추가하고 선택한 행의 요약 템플릿을 생성합니다.

4 steps

Step 1

Apps Script 열기

published

Step 1

Apps Script 열기

원주 ICT 빅데이터 고급

실행 순서

1. Google Sheets에서 확장 프로그램 > Apps Script를 엽니다.

2. 프로젝트 이름을 업무자료 관리 자동화로 바꿉니다.

3. 기본 Code.gs 파일에 코드를 작성합니다.

4. 저장 후 시트로 돌아와 새로고침합니다.

Apps Script는 Google Sheets에 작은 자동화 버튼을 붙이는 방식으로 이해하면 됩니다.

Google Sheets에서 확장 프로그램 > Apps Script 열기
Step 2

사용자 메뉴 추가

published

Step 2

사용자 메뉴 추가

원주 ICT 빅데이터 고급

이 스텝에서 하는 일

Google Sheets 상단에 `AI 업무자료` 메뉴를 만들고, 선택한 행의 요약 템플릿을 G열(summary)에 자동으로 채웁니다.

AI Studio에서 요약을 쓰기 전에, 매번 같은 형식으로 칸을 비워 두는 반복 작업을 줄이는 실습입니다.

준비물

  • 앞 모듈(`wonju-bd-adv-04-sheets`)에서 만든 업무자료_인벤토리 시트
  • 1행 헤더 + 데이터가 최소 1행 이상 있어야 합니다 (Step 1 샘플 1행을 붙여넣어 두면 충분합니다)
  • B열(title), C열(type)에 값이 있는 행을 골라 테스트합니다

실습 순서

1. 업무자료_인벤토리 시트를 연 상태에서 확장 프로그램 > Apps Script를 엽니다.

2. Code.gs 안의 기본 예제 코드를 전부 지우고, 아래 코드 블록을 그대로 붙여넣습니다.

3. Ctrl+S(Mac: Cmd+S)로 저장합니다. 프로젝트 이름이 업무자료 관리 자동화인지 확인합니다.

4. 시트 탭으로 돌아가 브라우저를 새로고침(F5) 합니다. (onOpen은 시트를 열 때 메뉴를 만듭니다.)

5. 데이터가 있는 행(예: 2행) 아무 셀이나 클릭해 그 행을 선택합니다.

6. 상단 메뉴 `AI 업무자료 > 선택 행 요약 템플릿 만들기` 를 클릭합니다.

7. 처음이면 권한 승인 화면이 뜹니다. 아래 표 순서대로 진행한 뒤, 메뉴를 한 번 더 실행합니다.

8. 해당 행 G열(`summary`) 에 아래 형태의 텍스트가 들어갔는지 확인합니다.

복사용 텍스트

자료명: (B열 title 값)
자료유형: (C열 type 값)

요약:
리스크:
다음 작업:

9. G열 내용을 복사해 AI Studio에 붙여넣고 요약:, 리스크:, 다음 작업:만 채워도 됩니다. (완전 자동 요약은 API 연동 후 확장 주제입니다.)

코드

javascript

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('AI 업무자료')
    .addItem('선택 행 요약 템플릿 만들기', 'createSummaryTemplate')
    .addToUi();
}

function createSummaryTemplate() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const row = sheet.getActiveRange().getRow();
  const title = sheet.getRange(row, 2).getValue();
  const type = sheet.getRange(row, 3).getValue();
  const template = [
    '자료명: ' + title,
    '자료유형: ' + type,
    '',
    '요약:',
    '리스크:',
    '다음 작업:'
  ].join('\n');
  sheet.getRange(row, 7).setValue(template);
}

22줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

Code.gs에 붙여넣는 onOpen·createSummaryTemplate 코드

동작 확인 체크리스트

확인기대 결과
시트 새로고침 후상단에 AI 업무자료 메뉴가 보임
2행 선택 후 메뉴 실행G2에 요약 템플릿 텍스트가 생김
B·C열이 비어 있으면자료명:, 자료유형: 뒤가 빈 값 — 데이터 있는 행으로 다시 테스트
헤더(1행)를 선택하면1행 G열에 템플릿이 들어감 — 실습용으론 2행 이하를 선택

확인과 첫 실행 권한 승인

시트를 새로고침하면 상단 메뉴에 AI 업무자료가 나타납니다. 메뉴를 처음 실행하면 권한 승인 화면이 나옵니다. 아래 순서대로 진행하면 됩니다.

화면선택
승인 필요권한 검토
Google 계정 선택본인 계정
확인되지 않은 앱 경고고급 클릭 → (프로젝트 이름)(안전하지 않음)으로 이동
권한 허용허용

"확인되지 않은 앱" 경고는 본인이 방금 만든 스크립트라서 나오는 정상 화면입니다. 승인 후 메뉴를 다시 실행합니다.

메뉴 실행 후 G열 summary에 채워진 요약 템플릿

열 번호 확인

이 코드는 앞 모듈의 인벤토리 시트 열 순서를 기준으로 합니다. getRange(row, 2)가 title(B열), getRange(row, 3)이 type(C열), getRange(row, 7)이 summary(G열)입니다. 열 순서를 바꿨다면 이 숫자를 함께 바꿔야 합니다.

Step 3

시트 자동화 점검표

published

Step 3

시트 자동화 점검표

원주 ICT 빅데이터 고급

점검표

확인 항목해결 방법
메뉴가 안 보임시트 새로고침
권한 요청이 뜸Google 계정 권한 승인
값이 엉뚱한 열에 들어감열 번호 확인
한글이 깨짐코드 복사 시 따옴표 확인

오늘의 목표

Apps Script를 깊게 배우는 것이 아니라, "시트에 내가 필요한 버튼을 추가할 수 있다"는 흐름을 경험합니다.

Step 4

AI Studio와 Sheets 연결 흐름

published

Step 4

AI Studio와 Sheets 연결 흐름

원주 ICT 빅데이터 고급

수동 연결 흐름

단계도구결과
1Sheets자료 목록 관리
2AI Studio자료 요약·분류
3Sheets결과 누적
4Apps Script반복 입력 보조

이번 과정에서는 API 연동보다 "업무 흐름 설계"를 먼저 완성합니다. 이후 API 키를 붙이면 자동 요약까지 확장할 수 있습니다.

Module 16practice필수

Apps Script 쉬운 실습 1: 문의 자동 분류

AI API 없이 문의 문장의 키워드를 찾아 분류와 우선순위를 자동 입력합니다.

10 steps

Step 1

완성 결과와 분류 원리 이해

published

Step 1

완성 결과와 분류 원리 이해

원주 ICT 빅데이터 고급

오늘 만들 것

문의 목록의 문장을 읽고 증명서, 장학, 시설, 수업, 기타로 자동 분류하는 Google Sheets 도구를 만듭니다. 외부 AI API와 API 키는 사용하지 않습니다.

처리 흐름

입력규칙출력
장학금 신청 기간이 궁금합니다장학금·등록금·학비 포함 여부장학
재학증명서를 발급받고 싶습니다증명서 포함 여부증명서
강의실 와이파이가 안 됩니다강의실·와이파이·고장 포함 여부시설
수강신청 변경이 가능한가요수강·강의·시험·성적 포함 여부수업

문장에 정해 둔 단어가 있으면 해당 분류를 넣고, 어떤 단어도 없으면 기타로 넣습니다. 오늘·마감·긴급·고장 같은 단어가 있으면 우선순위를 높음으로 표시합니다.

완성 기준

  • 시트 상단에 문의 분류 데모 메뉴가 보입니다.
  • 샘플 데이터 만들기로 15건의 문의가 생성됩니다.
  • 자동 분류 실행으로 D열과 E열이 채워집니다.
Step 2

실습 시작 전 준비물과 진행 방식

published

Step 2

실습 시작 전 준비물과 진행 방식

원주 ICT 빅데이터 고급

준비물

준비물확인 방법
Google 계정Gmail 또는 학교·회사 Google Workspace 계정으로 로그인합니다
Chrome 또는 EdgeGoogle Sheets와 Apps Script를 각각 탭으로 열어 둡니다
인터넷 연결저장과 권한 승인 과정에 필요합니다
새 Google Sheets 파일이 실습 전용으로 새 파일 하나를 만듭니다

초보자를 위한 용어 5개

용어
스프레드시트Google Sheets 파일 전체입니다
시트파일 아래쪽에 보이는 탭 하나입니다
A1, B2처럼 값을 넣는 한 칸입니다
왼쪽의 1, 2, 3으로 표시되는 가로줄입니다
위쪽의 A, B, C로 표시되는 세로줄입니다

데이터 준비 방법은 하나만 선택합니다

방법추천 대상하는 일
A. 스크립트가 자동 생성처음 실습하는 분코드를 붙인 뒤 샘플 데이터 만들기 메뉴를 누릅니다
B. 교안 표 붙여넣기복사·붙여넣기를 연습할 분다음 Step의 표를 A1에 붙여넣습니다
C. 파일 다운로드CSV·엑셀 업로드를 연습할 분다음 Step의 첨부파일을 Google Drive에서 엽니다

가장 쉬운 방법은 A입니다. A, B, C를 모두 할 필요가 없습니다.

파일을 따로 만드는 이유

문의 분류와 다음 지출 정리는 각각 새 Google Sheets 파일에서 실습합니다. 같은 파일에서 코드를 계속 바꾸면 이전 메뉴와 함수가 섞여 초보자가 오류 원인을 찾기 어렵습니다.

시작 체크

  • Google Sheets 새 파일을 열었습니다.
  • 파일 이름을 Apps Script 문의 분류 실습으로 바꿨습니다.
  • 이 Step을 보는 교안 탭과 Google Sheets 탭을 함께 열어 두었습니다.
Step 3

문의 예시 데이터 붙여넣기 또는 다운로드

published

Step 3

문의 예시 데이터 붙여넣기 또는 다운로드

원주 ICT 빅데이터 고급

가장 빠른 방법

아래 표 전체를 복사해 빈 Google Sheets의 A1 셀에 붙여넣습니다. 탭 기준으로 5개 열이 자동 분리됩니다.

tsv

접수일	신청자	문의내용	분류	우선순위
2026-07-01	김하늘	장학금 신청 기간과 제출 서류가 궁금합니다.	분류대기	대기
2026-07-01	이서준	수강신청 변경은 언제까지 가능한가요?	분류대기	대기
2026-07-02	박지우	재학증명서를 온라인으로 발급받고 싶습니다.	분류대기	대기
2026-07-02	최민서	3층 강의실 와이파이가 연결되지 않습니다.	분류대기	대기
2026-07-03	정도윤	오늘이 등록금 납부 마감인데 확인 부탁드립니다.	분류대기	대기

파일로 준비하는 방법

  • CSV에는 연습용 문의 15건이 들어 있습니다.
  • 통합 엑셀에는 문의목록, 지출내역, 사용방법 시트가 들어 있습니다.
  • 모두 교육용 가상 데이터이며 실제 개인정보가 아닙니다.

첨부파일

문의 자동 분류 예시 CSV

Google Sheets에 올려 바로 분류할 수 있는 교육용 문의 15건입니다.

inquiry_classification_sample.csv

다운로드

첨부파일

Apps Script 쉬운 데모 통합 엑셀

문의 분류, 지출 정리, 유튜브 추적 예시 데이터를 한 파일에 담았습니다.

apps_script_easy_demo_data.xlsx

다운로드
Step 4

Apps Script 편집기 열기

published

Step 4

Apps Script 편집기 열기

원주 ICT 빅데이터 고급

어디를 클릭하나요?

1. Google Sheets 상단 메뉴에서 확장 프로그램을 클릭합니다.

2. 펼쳐진 메뉴에서 Apps Script를 클릭합니다.

3. 새 브라우저 탭에 Apps Script 편집기가 열릴 때까지 기다립니다.

4. 왼쪽 위 제목 없는 프로젝트를 클릭해 이름을 문의 자동 분류 데모로 바꿉니다.

5. 왼쪽 파일 목록에서 Code.gs가 선택되어 있는지 확인합니다.

Google Sheets에서 확장 프로그램 > Apps Script를 여는 위치

화면에서 확인할 위치

위치보이는 내용지금 할 일
왼쪽 위프로젝트 이름문의 자동 분류 데모로 변경
왼쪽 파일 목록Code.gs한 번 클릭
가운데 큰 영역function myFunction 코드다음 Step에서 전체 삭제
위쪽 저장 아이콘디스크 모양코드를 붙인 뒤 클릭
위쪽 실행 버튼실행지금은 누르지 않습니다

편집기가 열리지 않을 때

  • 팝업 차단 표시가 주소창에 보이면 허용합니다.
  • 학교·회사 계정에서 Apps Script가 차단되면 개인 Google 계정으로 새 시트를 만듭니다.
  • 빈 화면이면 새로고침하고 10초 정도 기다립니다.
Step 5

문의 분류 전체 스크립트 복사해서 붙여넣기

published

Step 5

문의 분류 전체 스크립트 복사해서 붙여넣기

원주 ICT 빅데이터 고급

붙여넣기 순서

1. Google Sheets에서 확장 프로그램 > Apps Script를 엽니다.

2. Code.gs의 기본 내용을 모두 지웁니다.

3. 아래 코드를 전체 복사해 붙여넣고 저장합니다.

4. Google Sheets로 돌아와 브라우저를 새로고침합니다.

javascript

const SHEET_NAME = '문의목록';
const SAMPLE_ROWS = [
  ['2026-07-01', '김하늘', '장학금 신청 기간과 제출 서류가 궁금합니다.'],
  ['2026-07-01', '이서준', '수강신청 변경은 언제까지 가능한가요?'],
  ['2026-07-02', '박지우', '재학증명서를 온라인으로 발급받고 싶습니다.'],
  ['2026-07-02', '최민서', '3층 강의실 와이파이가 연결되지 않습니다.'],
  ['2026-07-03', '정도윤', '오늘이 등록금 납부 마감인데 확인 부탁드립니다.'],
  ['2026-07-03', '윤서아', '출석 인정 기준이 궁금합니다.'],
  ['2026-07-04', '한예준', '졸업증명서 영문 발급이 가능한가요?'],
  ['2026-07-04', '오수빈', '엘리베이터가 고장 나서 이용할 수 없습니다.'],
  ['2026-07-05', '임시우', '동아리 모집 공고는 어디에서 확인하나요?'],
  ['2026-07-05', '강채원', '성적 확인 기간을 알려주세요.'],
  ['2026-07-06', '송현우', '교내 장학금과 국가장학금을 함께 받을 수 있나요?'],
  ['2026-07-06', '배유진', '냉방이 작동하지 않아 강의실이 너무 덥습니다.'],
  ['2026-07-07', '문준호', '시험 시간표는 어디에서 볼 수 있나요?'],
  ['2026-07-07', '조아린', '성적증명서에 석차가 표시되나요?'],
  ['2026-07-08', '백도현', '학생증을 분실했는데 재발급 방법이 궁금합니다.']
];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('문의 분류 데모')
    .addItem('1. 샘플 데이터 만들기', 'createInquirySample')
    .addItem('2. 자동 분류 실행', 'classifyInquiries')
    .addToUi();
}

function createInquirySample() {
  const sheet = getOrCreateSheet(SHEET_NAME);
  sheet.clear();
  sheet.getRange(1, 1, 1, 5).setValues([
    ['접수일', '신청자', '문의내용', '분류', '우선순위']
  ]);
  const rows = SAMPLE_ROWS.map(function(row) {
    return [row[0], row[1], row[2], '', ''];
  });
  sheet.getRange(2, 1, rows.length, 5).setValues(rows);
  sheet.getRange(1, 1, 1, 5)
    .setBackground('#0f766e')
    .setFontColor('white')
    .setFontWeight('bold');
  sheet.setColumnWidth(1, 110);
  sheet.setColumnWidth(2, 90);
  sheet.setColumnWidth(3, 420);
  sheet.setColumnWidth(4, 100);
  sheet.setColumnWidth(5, 100);
  SpreadsheetApp.getUi().alert('샘플 문의 15건을 만들었습니다.');
}

function classifyInquiries() {
  const sheet = getOrCreateSheet(SHEET_NAME);
  const lastRow = sheet.getLastRow();
  if (lastRow < 2) {
    SpreadsheetApp.getUi().alert('먼저 샘플 데이터를 만들어주세요.');
    return;
  }

  const texts = sheet.getRange(2, 3, lastRow - 1, 1).getValues();
  const results = texts.map(function(row) {
    const text = String(row[0] || '');
    return [findInquiryCategory(text), findPriority(text)];
  });

  sheet.getRange(2, 4, results.length, 2).setValues(results);
  SpreadsheetApp.getUi().alert(results.length + '건의 문의를 분류했습니다.');
}

function findInquiryCategory(text) {
  const rules = [
    ['증명서', ['증명서', '재학증명', '졸업증명']],
    ['장학', ['장학금', '등록금', '학비']],
    ['시설', ['강의실', '와이파이', '엘리베이터', '냉방', '난방', '화장실', '고장']],
    ['수업', ['수강', '강의', '출석', '시험', '성적']]
  ];

  for (let i = 0; i < rules.length; i += 1) {
    const category = rules[i][0];
    const keywords = rules[i][1];
    if (keywords.some(function(keyword) { return text.includes(keyword); })) {
      return category;
    }
  }
  return '기타';
}

function findPriority(text) {
  const urgentWords = ['오늘', '마감', '긴급', '고장', '작동하지'];
  const isUrgent = urgentWords.some(function(word) { return text.includes(word); });
  return isUrgent ? '높음' : '보통';
}

function getOrCreateSheet(name) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  return ss.getSheetByName(name) || ss.insertSheet(name);
}

95줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

Step 6

붙여넣은 코드의 역할 알아보기

published

Step 6

붙여넣은 코드의 역할 알아보기

원주 ICT 빅데이터 고급

코드를 외울 필요는 없습니다

이번 실습의 목표는 JavaScript 문법을 암기하는 것이 아닙니다. 코드가 어떤 순서로 데이터를 읽고 결과를 쓰는지만 찾으면 됩니다.

코드 지도

코드 부분하는 일초보자가 확인할 것
SHEET_NAME사용할 시트 이름을 정합니다문의목록이라고 되어 있는지 확인
SAMPLE_ROWS연습용 문의 15건을 보관합니다실제 개인정보가 아닌 가상 데이터입니다
onOpen시트를 열 때 위쪽 메뉴를 만듭니다문의 분류 데모 메뉴가 생깁니다
createInquirySample표 제목과 샘플 15건을 시트에 씁니다기존 문의목록 시트 내용은 초기화됩니다
classifyInquiriesC열 문의내용을 한 행씩 읽습니다결과를 D열·E열에 씁니다
findInquiryCategory단어를 찾아 문의 유형을 결정합니다위에 있는 규칙이 먼저 적용됩니다
findPriority긴급 단어가 있는지 확인합니다있으면 높음, 없으면 보통입니다
getOrCreateSheet문의목록 탭을 찾거나 새로 만듭니다시트가 없어도 자동 생성됩니다

데이터가 이동하는 순서

1. 문의내용이 있는 C열을 읽습니다.

2. 증명서·장학·시설·수업 키워드를 차례로 확인합니다.

3. 찾은 분류를 D열에 넣습니다.

4. 오늘·마감·고장 같은 단어를 확인합니다.

5. 우선순위를 E열에 넣습니다.

코드를 수정하지 않고 그대로 실행해도 됩니다. 처음 실행에 성공한 뒤 마지막 Step에서 단어 한 개만 바꿉니다.

Step 7

저장하고 시트에 메뉴 표시하기

published

Step 7

저장하고 시트에 메뉴 표시하기

원주 ICT 빅데이터 고급

저장부터 차례대로 진행합니다

1. Apps Script 위쪽의 저장 아이콘을 누릅니다.

2. Windows는 Ctrl+S, Mac은 Cmd+S를 눌러도 됩니다.

3. 화면 위쪽의 저장 중 표시가 사라질 때까지 기다립니다.

4. 원래 열어 둔 Google Sheets 탭으로 돌아갑니다.

5. 브라우저 새로고침 버튼을 누르거나 F5를 누릅니다.

6. 시트가 다시 열린 뒤 2~5초 기다립니다.

7. 상단 메뉴 오른쪽에 문의 분류 데모가 생겼는지 확인합니다.

메뉴가 안 보이면

순서해결 방법
1Apps Script에서 저장 아이콘을 다시 누릅니다
2Google Sheets 탭을 새로고침합니다
3Apps Script 위쪽 함수 선택 목록에서 onOpen을 선택하고 실행을 누릅니다
4빨간 오류가 나오면 코드 첫 줄부터 마지막 줄까지 모두 복사했는지 확인합니다

메뉴가 보이면 코드 연결은 성공한 것입니다. 아직 데이터 분류 결과가 없어도 정상입니다.

Step 8

처음 실행 권한 승인과 결과 확인

published

Step 8

처음 실행 권한 승인과 결과 확인

원주 ICT 빅데이터 고급

실행 순서

1. 시트를 새로고침합니다.

2. 상단 문의 분류 데모 > 1. 샘플 데이터 만들기를 누릅니다.

3. 처음 실행이면 Google 계정 권한을 승인합니다.

4. 문의 분류 데모 > 2. 자동 분류 실행을 누릅니다.

처음 한 번만 나오는 권한 화면

화면 문구누를 항목
승인 필요 또는 Authorization required권한 검토 또는 Review permissions
계정 선택현재 Google Sheets를 만든 계정
Google에서 확인하지 않은 앱고급
고급 메뉴 아래문의 자동 분류 데모로 이동
권한 목록허용

본인이 방금 만든 개인 스크립트라 Google의 공개 앱 심사를 받지 않았다는 안내가 나올 수 있습니다. 출처를 모르는 스크립트에는 권한을 주면 안 되지만, 이 수업에서 직접 만든 시트와 교안 코드는 승인해도 됩니다.

승인 뒤 시트로 돌아왔는데 아무 변화가 없으면 메뉴를 한 번 더 누릅니다.

CSV나 엑셀을 이미 올렸다면 샘플 데이터 만들기는 생략하고, 시트 이름만 문의목록으로 맞춘 뒤 자동 분류를 실행합니다.

결과 확인

문의 예시분류우선순위
장학금 신청 기간장학보통
재학증명서 온라인 발급증명서보통
와이파이 연결 안 됨시설보통
오늘 등록금 납부 마감장학높음
엘리베이터 고장시설높음

샘플 15건의 정답 개수

항목기대 결과
증명서3건
장학3건
시설3건
수업4건
기타2건
우선순위 높음3건
우선순위 보통12건

분류가 예상과 다르면 오류가 아니라 규칙을 수정할 지점을 찾은 것입니다.

Step 9

자주 생기는 오류와 처음부터 다시 하기

published

Step 9

자주 생기는 오류와 처음부터 다시 하기

원주 ICT 빅데이터 고급

오류 해결표

증상원인해결 방법
문의 분류 데모 메뉴가 없음저장 또는 새로고침을 하지 않음Apps Script 저장 후 시트 F5
함수가 없다는 메시지코드 일부만 복사됨Code.gs 전체 삭제 후 코드 전체 다시 붙여넣기
문의목록 탭은 있는데 데이터가 없음샘플 만들기를 실행하지 않음메뉴의 1. 샘플 데이터 만들기 실행
D열·E열이 비어 있음자동 분류를 실행하지 않음메뉴의 2. 자동 분류 실행
전부 기타로 나옴문의내용이 C열이 아님접수일·신청자·문의내용 순서 확인
권한 승인이 반복됨다른 Google 계정 탭을 사용함시트와 Apps Script의 로그인 계정 통일
회사·학교 정책으로 차단됨Workspace 관리자가 Apps Script 제한개인 Gmail 계정의 새 시트에서 실습

처음부터 다시 실행하는 방법

1. Google Sheets에서 문의 분류 데모 > 1. 샘플 데이터 만들기를 다시 누릅니다.

2. 문의목록 탭이 샘플 15건으로 초기화됩니다.

3. 2. 자동 분류 실행을 누릅니다.

4. D열과 E열 결과를 다시 확인합니다.

샘플 데이터 만들기는 문의목록 탭의 기존 내용을 지웁니다. 실제 자료를 넣기 전에는 반드시 파일을 복사해 두거나 새 파일에서 연습합니다.

Step 10

내 업무 단어로 규칙 바꿔보기

published

Step 10

내 업무 단어로 규칙 바꿔보기

원주 ICT 빅데이터 고급

5분 확장 실습

findInquiryCategory 함수의 규칙에 본인이 자주 보는 단어를 하나 추가합니다.

적용 분야분류 예시키워드 예시
학교 행정취업취업, 인턴, 현장실습
일반 행정계약계약서, 협약, 날인
고객 지원결제결제, 환불, 영수증

예를 들어 취업 분류를 추가하려면 rules 배열의 첫 부분에 다음 한 줄을 넣습니다.

javascript

['취업', ['취업', '인턴', '현장실습']],

새 문의 한 줄을 추가하고 자동 분류 실행을 다시 눌러 결과를 확인합니다.

Module 17practice필수

Apps Script 쉬운 실습 2: 지출 자동 정리

AI API 없이 지출 적요를 규칙으로 분류하고 분류별 건수와 합계를 새 시트에 만듭니다.

10 steps

Step 1

완성 결과와 집계 원리 이해

published

Step 1

완성 결과와 집계 원리 이해

원주 ICT 빅데이터 고급

오늘 만들 것

지출 적요에서 단어를 찾아 회의비, 교통비, 식비, 소모품비, 기타로 분류하고, 분류별 건수와 금액 합계를 새 시트에 만듭니다.

처리 흐름

입력 적요찾는 단어분류
외근 택시비택시교통비
프린터 토너 구입토너소모품비
부서 점심 식사식사식비
프로젝트 회의실 대여회의실회의비

분류가 끝나면 Apps Script가 지출요약 시트를 만들고 각 분류의 건수와 합계를 적습니다. 외부 AI API와 API 키는 필요하지 않습니다.

Step 2

실습 시작 전 준비물과 지출 데이터 읽기

published

Step 2

실습 시작 전 준비물과 지출 데이터 읽기

원주 ICT 빅데이터 고급

새 파일에서 시작합니다

1. Google Drive에서 새로 만들기 > Google 스프레드시트를 누릅니다.

2. 파일 이름을 Apps Script 지출 정리 실습으로 바꿉니다.

3. 문의 분류 실습 파일과는 다른 새 파일인지 확인합니다.

문의 분류 코드와 지출 정리 코드는 각각 onOpen 함수를 사용합니다. 같은 파일에 두 코드를 함께 넣으면 메뉴가 섞일 수 있으므로 초보 실습에서는 파일을 분리합니다.

지출표에서 사용하는 말

용어쉬운 뜻예시
날짜돈을 사용한 날2026-06-02
적요어디에 왜 돈을 썼는지 적은 설명외근 택시비
금액실제 지출한 숫자18200
분류비슷한 지출을 묶은 이름교통비
집계같은 분류의 건수와 금액을 더하는 작업교통비 4건, 134400원

금액 입력 규칙

  • 가장 안전한 입력은 18200처럼 숫자만 쓰는 것입니다.
  • 쉼표나 원 문자가 들어가도 스크립트가 제거하도록 만들었지만, 처음에는 숫자만 입력합니다.
  • 금액이 왼쪽 정렬되면 문자로 들어갔을 수 있습니다. 숫자는 보통 오른쪽 정렬됩니다.

데이터 준비 방법은 하나만 선택합니다

방법추천 대상진행 방식
A. 자동 생성가장 쉬운 실습스크립트 메뉴에서 샘플 데이터 만들기 실행
B. 표 붙여넣기시트 입력 연습다음 Step 표를 A1에 붙여넣기
C. 파일 다운로드업로드 연습CSV 또는 통합 엑셀을 Google Drive에서 열기

처음 실습하는 분은 A. 자동 생성만 진행하면 됩니다.

Step 3

지출 예시 데이터 붙여넣기 또는 다운로드

published

Step 3

지출 예시 데이터 붙여넣기 또는 다운로드

원주 ICT 빅데이터 고급

바로 붙여넣기

아래 표 전체를 복사해 빈 Google Sheets의 A1 셀에 붙여넣습니다.

tsv

날짜	적요	금액	분류
2026-06-02	팀 회의 도시락 구입	68000	분류대기
2026-06-03	외근 택시비	18200	분류대기
2026-06-04	복사용지와 문구류 구입	35600	분류대기
2026-06-05	간담회 장소 대관	120000	분류대기
2026-06-09	교육 참석 기차표	74200	분류대기

다운로드 자료

  • CSV에는 연습용 지출 15건이 들어 있습니다.
  • 통합 엑셀에는 두 데모의 데이터와 사용방법이 함께 들어 있습니다.
  • 모두 교육용 가상 데이터입니다.

첨부파일

지출 자동 정리 예시 CSV

Google Sheets에 올려 분류와 합계를 실습하는 교육용 지출 15건입니다.

expense_classification_sample.csv

다운로드

첨부파일

Apps Script 쉬운 데모 통합 엑셀

문의 분류, 지출 정리, 유튜브 추적 예시 데이터를 한 파일에 담았습니다.

apps_script_easy_demo_data.xlsx

다운로드
Step 4

지출 실습용 Apps Script 편집기 열기

published

Step 4

지출 실습용 Apps Script 편집기 열기

원주 ICT 빅데이터 고급

클릭 순서

1. 새로 만든 Google Sheets에서 확장 프로그램을 클릭합니다.

2. Apps Script를 클릭합니다.

3. 새 탭이 열리면 왼쪽 위 프로젝트 이름을 클릭합니다.

4. 이름을 지출 자동 정리 데모로 바꿉니다.

5. 왼쪽의 Code.gs를 클릭합니다.

6. 가운데 기본 코드를 클릭하고 Ctrl+A로 전체 선택합니다.

7. Delete 또는 Backspace로 기본 코드를 모두 지웁니다.

Google Sheets에서 확장 프로그램 > Apps Script를 여는 위치

꼭 확인합니다

확인정상 상태
프로젝트 이름지출 자동 정리 데모
파일 이름Code.gs
코드 입력 영역기존 myFunction 코드가 삭제된 빈 상태
Google 계정지출 실습 시트를 만든 계정과 동일

다음 Step의 코드는 일부가 아니라 첫 줄부터 마지막 줄까지 모두 복사합니다.

Step 5

지출 정리 전체 스크립트 복사해서 붙여넣기

published

Step 5

지출 정리 전체 스크립트 복사해서 붙여넣기

원주 ICT 빅데이터 고급

붙여넣기 순서

1. 새 Google Sheets에서 확장 프로그램 > Apps Script를 엽니다.

2. Code.gs의 기본 내용을 모두 지웁니다.

3. 아래 코드를 전체 복사해 붙여넣고 저장합니다.

4. Google Sheets로 돌아와 새로고침합니다.

javascript

const EXPENSE_SHEET = '지출내역';
const SUMMARY_SHEET = '지출요약';
const EXPENSE_ROWS = [
  ['2026-06-02', '팀 회의 도시락 구입', 68000],
  ['2026-06-03', '외근 택시비', 18200],
  ['2026-06-04', '복사용지와 문구류 구입', 35600],
  ['2026-06-05', '간담회 장소 대관', 120000],
  ['2026-06-09', '교육 참석 기차표', 74200],
  ['2026-06-10', '회의용 커피와 간식', 28500],
  ['2026-06-12', '프린터 토너 구입', 99000],
  ['2026-06-13', '출장지 주차비', 12000],
  ['2026-06-16', '부서 점심 식사', 86000],
  ['2026-06-18', '업무용 USB 케이블', 19500],
  ['2026-06-20', '프로젝트 회의실 대여', 80000],
  ['2026-06-23', '시내버스 교통카드 충전', 30000],
  ['2026-06-25', '행사 현수막 제작', 55000],
  ['2026-06-27', '워크숍 도시락 주문', 145000],
  ['2026-06-30', '택배 발송비', 16400]
];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('지출 정리 데모')
    .addItem('1. 샘플 데이터 만들기', 'createExpenseSample')
    .addItem('2. 분류하고 요약하기', 'classifyAndSummarizeExpenses')
    .addToUi();
}

function createExpenseSample() {
  const sheet = getOrCreateExpenseSheet(EXPENSE_SHEET);
  sheet.clear();
  sheet.getRange(1, 1, 1, 4).setValues([['날짜', '적요', '금액', '분류']]);
  const rows = EXPENSE_ROWS.map(function(row) {
    return [row[0], row[1], row[2], ''];
  });
  sheet.getRange(2, 1, rows.length, 4).setValues(rows);
  sheet.getRange(1, 1, 1, 4)
    .setBackground('#0f766e')
    .setFontColor('white')
    .setFontWeight('bold');
  sheet.getRange(2, 3, rows.length, 1).setNumberFormat('#,##0');
  sheet.setColumnWidth(1, 110);
  sheet.setColumnWidth(2, 350);
  sheet.setColumnWidth(3, 120);
  sheet.setColumnWidth(4, 110);
  SpreadsheetApp.getUi().alert('샘플 지출 15건을 만들었습니다.');
}

function classifyAndSummarizeExpenses() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(EXPENSE_SHEET);
  if (!sheet || sheet.getLastRow() < 2) {
    SpreadsheetApp.getUi().alert('먼저 샘플 데이터를 만들어주세요.');
    return;
  }

  const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 3).getValues();
  const totals = {};
  const categories = [];

  rows.forEach(function(row) {
    const category = findExpenseCategory(String(row[1] || ''));
    const amount = Number(String(row[2]).replace(/[,원\s]/g, '')) || 0;
    categories.push([category]);
    if (!totals[category]) totals[category] = { count: 0, amount: 0 };
    totals[category].count += 1;
    totals[category].amount += amount;
  });

  sheet.getRange(2, 4, categories.length, 1).setValues(categories);
  writeExpenseSummary(ss, totals, rows.length);
  SpreadsheetApp.getUi().alert(rows.length + '건을 분류하고 요약했습니다.');
}

function findExpenseCategory(text) {
  const rules = [
    ['회의비', ['회의', '간담회', '회의실']],
    ['교통비', ['택시', '버스', '기차', '주차']],
    ['식비', ['식사', '도시락', '커피', '간식']],
    ['소모품비', ['문구', '용지', '토너', 'USB', '케이블']]
  ];

  for (let i = 0; i < rules.length; i += 1) {
    const category = rules[i][0];
    const keywords = rules[i][1];
    if (keywords.some(function(keyword) { return text.includes(keyword); })) {
      return category;
    }
  }
  return '기타';
}

function writeExpenseSummary(ss, totals, totalCount) {
  const order = ['회의비', '교통비', '식비', '소모품비', '기타'];
  const summary = [['분류', '건수', '합계']];
  let grandTotal = 0;

  order.forEach(function(category) {
    const item = totals[category] || { count: 0, amount: 0 };
    summary.push([category, item.count, item.amount]);
    grandTotal += item.amount;
  });
  summary.push(['전체', totalCount, grandTotal]);

  const sheet = getOrCreateExpenseSheet(SUMMARY_SHEET);
  sheet.clear();
  sheet.getRange(1, 1, summary.length, 3).setValues(summary);
  sheet.getRange(1, 1, 1, 3)
    .setBackground('#0f766e')
    .setFontColor('white')
    .setFontWeight('bold');
  sheet.getRange(2, 3, summary.length - 1, 1).setNumberFormat('#,##0');
  sheet.autoResizeColumns(1, 3);
}

function getOrCreateExpenseSheet(name) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  return ss.getSheetByName(name) || ss.insertSheet(name);
}

119줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

Step 6

지출 정리 코드가 하는 일 알아보기

published

Step 6

지출 정리 코드가 하는 일 알아보기

원주 ICT 빅데이터 고급

코드 전체 흐름

코드 부분역할만들어지는 결과
EXPENSE_SHEET원본 지출 탭 이름을 정함지출내역 탭
SUMMARY_SHEET결과 탭 이름을 정함지출요약 탭
EXPENSE_ROWS연습용 지출 15건을 보관샘플 데이터
onOpen시트 위쪽에 메뉴 생성지출 정리 데모 메뉴
createExpenseSample샘플 표를 지출내역에 작성A열부터 D열까지 데이터 생성
classifyAndSummarizeExpenses적요를 읽고 분류·합계를 계산D열 분류와 지출요약 시트
findExpenseCategory키워드에 맞는 분류를 반환회의비·교통비·식비·소모품비·기타
writeExpenseSummary분류별 건수와 금액을 표로 작성지출요약 표
getOrCreateExpenseSheet필요한 탭을 찾거나 새로 생성탭이 없어도 자동 생성

한 행이 처리되는 과정

외근 택시비, 18200원 행은 다음 순서로 처리됩니다.

1. B열 적요에서 택시라는 단어를 찾습니다.

2. 택시는 교통비 규칙에 있으므로 D열에 교통비를 씁니다.

3. 교통비 건수를 1건 늘립니다.

4. 교통비 합계에 18200을 더합니다.

5. 모든 행이 끝나면 지출요약 시트에 최종 값을 씁니다.

여러 단어가 함께 있으면

팀 회의 도시락 구입에는 회의와 도시락이 함께 있습니다. 규칙 표에서 회의비가 식비보다 위에 있으므로 회의비로 분류됩니다. 규칙의 순서도 데이터 처리 기준입니다.

Step 7

코드 저장 후 지출 정리 메뉴 표시하기

published

Step 7

코드 저장 후 지출 정리 메뉴 표시하기

원주 ICT 빅데이터 고급

저장과 새로고침

1. Apps Script 위쪽의 저장 아이콘을 누릅니다.

2. 빨간 밑줄이나 오류 표시가 없는지 확인합니다.

3. Google Sheets 탭으로 돌아갑니다.

4. F5 또는 브라우저 새로고침을 누릅니다.

5. 시트가 열린 뒤 2~5초 기다립니다.

6. 상단에 지출 정리 데모 메뉴가 보이는지 확인합니다.

메뉴가 보이지 않을 때

순서할 일
1Apps Script 탭에서 저장을 다시 누릅니다
2Code.gs 첫 줄이 EXPENSE_SHEET로 시작하는지 확인합니다
3Google Sheets 탭을 다시 새로고침합니다
4Apps Script 함수 목록에서 onOpen을 선택해 한 번 실행합니다

위쪽 실행 버튼으로 모든 함수를 하나씩 실행할 필요는 없습니다. 메뉴가 표시된 뒤에는 Google Sheets에서 메뉴만 사용합니다.

Step 8

첫 권한 승인과 분류·요약 결과 확인

published

Step 8

첫 권한 승인과 분류·요약 결과 확인

원주 ICT 빅데이터 고급

실행 순서

1. 시트를 새로고침합니다.

2. 지출 정리 데모 > 1. 샘플 데이터 만들기를 누릅니다.

3. 처음 실행이면 Google 계정 권한을 승인합니다.

4. 지출 정리 데모 > 2. 분류하고 요약하기를 누릅니다.

권한 승인 순서

화면 문구선택
승인 필요권한 검토
계정 선택현재 시트를 만든 Google 계정
Google에서 확인하지 않은 앱고급
이동 링크지출 자동 정리 데모로 이동
요청 권한허용

권한 승인 후 자동으로 결과가 생기지 않으면 시트로 돌아와 같은 메뉴를 다시 실행합니다. 권한 승인은 이 프로젝트에서 처음 실행할 때 한 번만 진행합니다.

CSV나 엑셀을 사용한다면 샘플 데이터 만들기는 생략하고 시트 이름을 지출내역으로 맞춥니다.

성공 기준

확인 위치결과
지출내역 D열회의비·교통비·식비·소모품비·기타가 입력됨
시트 탭지출요약 시트가 새로 생김
지출요약분류별 건수와 합계가 표시됨
전체 행전체 15건과 전체 금액이 표시됨

샘플 데이터의 정답표

분류건수합계
회의비4건296,500원
교통비4건134,400원
식비2건231,000원
소모품비3건154,100원
기타2건71,400원
전체15건887,400원

팀 회의 도시락 구입처럼 여러 단어가 있는 경우 위쪽에 적힌 규칙이 먼저 적용되므로 회의비가 됩니다.

Step 9

지출 실습 오류 해결과 다시 실행하기

published

Step 9

지출 실습 오류 해결과 다시 실행하기

원주 ICT 빅데이터 고급

오류 해결표

증상확인할 원인해결 방법
지출 정리 데모 메뉴가 없음저장·새로고침 누락Apps Script 저장 후 시트 F5
샘플 데이터가 없음1번 메뉴 미실행샘플 데이터 만들기 실행
D열이 모두 기타적요가 B열에 있지 않음날짜·적요·금액·분류 순서 확인
합계가 0원금액이 C열에 없거나 문자임C열에 숫자만 입력하고 다시 실행
지출요약 탭이 없음분류하고 요약하기 미실행2번 메뉴 실행
함수가 없다는 오류코드 일부 누락Code.gs 전체를 교안 코드로 다시 교체
권한 화면이 계속 나옴시트와 편집기의 계정이 다름같은 Google 계정으로 다시 로그인

다시 실행해도 괜찮나요?

  • 분류하고 요약하기는 여러 번 실행해도 됩니다.
  • D열의 기존 분류는 새 결과로 바뀝니다.
  • 지출요약 탭은 기존 내용을 지우고 최신 결과를 다시 만듭니다.
  • 샘플 데이터 만들기는 지출내역 탭 전체를 초기화하므로 실제 데이터를 넣은 뒤에는 누르지 않습니다.

가장 확실한 초기화 방법

1. 새 Google Sheets 파일을 만듭니다.

2. Apps Script에 전체 코드를 다시 붙여넣습니다.

3. 저장하고 시트를 새로고침합니다.

4. 샘플 데이터 만들기와 분류하고 요약하기를 차례대로 실행합니다.

Step 10

분류 규칙과 요약을 바꿔보기

published

Step 10

분류 규칙과 요약을 바꿔보기

원주 ICT 빅데이터 고급

5분 확장 실습

본인 업무에 맞는 분류를 하나 추가합니다.

적용 분야분류키워드
대학생행사비축제, 행사, 현수막
행정업무우편비택배, 우편, 등기
부서 운영교육비교육, 수강, 세미나

예를 들어 우편비를 추가하려면 rules 배열에 다음 줄을 넣고, writeExpenseSummary 함수의 order에도 우편비를 추가합니다.

javascript

['우편비', ['택배', '우편', '등기']],

다시 분류하고 요약하기를 실행해 택배 발송비가 기타에서 우편비로 바뀌는지 확인합니다.

Module 18practice필수

Apps Script 쉬운 실습 3: 유튜브 조회수 추적기

공개 영상 5개의 기본 통계를 공식 YouTube Data API로 가져와 날짜별 이력과 이전 대비 증가량을 기록합니다.

13 steps

Step 1

완성 결과와 수집 범위 이해

published

Step 1

완성 결과와 수집 범위 이해

원주 ICT 빅데이터 고급

오늘 만들 것

Google Sheets의 영상목록에 YouTube 주소를 넣고 메뉴를 누르면 공개 영상의 기본 정보를 가져오는 조회수 추적기를 만듭니다. AI API는 사용하지 않으며, YouTube가 제공하는 공식 YouTube Data API v3를 사용합니다.

가져오는 기본 데이터

데이터예시쓰임
영상 제목Me at the zoo어떤 영상인지 확인
채널명jawed게시 채널 확인
게시일2005-04-24오래된 영상과 새 영상 구분
조회수실행 시점의 공개 숫자이전 수집값과 비교
좋아요 수공개된 경우의 숫자참고 지표
댓글 수댓글이 공개된 경우의 숫자이전 수집값과 비교
수집일시2026-07-13 14:30:00언제 확인한 값인지 기록

이번 실습에서 하지 않는 것

  • 댓글 본문, 댓글 작성자, 구독자 개인정보를 수집하지 않습니다.
  • 로그인해야 보이는 데이터, 비공개 영상, 연령 제한 자료를 우회하지 않습니다.
  • HTML 화면을 긁어오는 방식이 아니라 공식 API 응답만 사용합니다.
  • 조회수 예측이나 영상 평가를 하지 않습니다. 관찰 시점의 숫자를 기록하고 비교합니다.

완성 기준

1. 상단에 YouTube 데이터 분석 메뉴가 표시됩니다.

2. 공개 영상 5개를 실행하면 수집이력에 5행이 추가됩니다.

3. 나중에 다시 실행하면 기존 행을 덮어쓰지 않고 5행이 더 추가됩니다.

4. 최신현황에서 현재값, 이전값, 증가량을 한눈에 확인합니다.

Step 2

영상목록·수집이력·최신현황 구조 이해

published

Step 2

영상목록·수집이력·최신현황 구조 이해

원주 ICT 빅데이터 고급

시트 3개가 서로 다른 역할을 합니다

시트역할직접 입력하는 열스크립트가 만드는 열
영상목록조사할 영상 주소 관리영상주소, 메모video_id, 상태
수집이력실행할 때마다 관찰값 누적없음제목, 채널, 게시일, 조회수, 댓글 수 등
최신현황최근 2회 값을 비교없음현재값, 이전값, 증가량, 수집 간격

핵심 개념 4개

용어쉬운 뜻이 실습의 예
API서비스가 정해 둔 방식으로 데이터를 요청하는 창구YouTube에 영상 통계를 요청
video_id영상을 구분하는 11자리 고유값jNQXAC9IVRw
이력같은 대상을 여러 시점에 기록한 표오늘 조회수와 내일 조회수
누적 저장기존 행을 지우지 않고 아래에 새 행 추가5개 영상 × 2회 실행 = 10행

첫 실행과 두 번째 실행의 차이

실행 횟수수집이력최신현황
첫 번째영상마다 1행 생성현재값만 있고 이전값·증가량은 빈칸
두 번째영상마다 새 1행 추가최근 2개 값의 차이를 계산
세 번째 이후실행할 때마다 계속 누적항상 가장 최근 2개를 비교

조회수가 바로 변하지 않아 증가량이 0이어도 정상입니다. 데이터 처리의 핵심은 큰 숫자를 만드는 것이 아니라 언제 수집한 값인지 함께 남기는 것입니다.

Step 3

데모로 조사할 공개 영상 5개 확인

published

Step 3

데모로 조사할 공개 영상 5개 확인

원주 ICT 빅데이터 고급

수업용 조사 링크

아래 5개는 서로 다른 유형과 규모의 공개 영상입니다. 2026년 7월 13일 기준 공개 응답과 제목·채널을 확인했습니다.

번호구분영상·채널조사 링크확인할 점
1YouTube 역사Me at the zoo · jawed영상 열기오래된 공개 영상의 게시일
2K-popGANGNAM STYLE · officialpsy영상 열기큰 조회수의 자릿수
3키즈 콘텐츠Baby Shark Dance · Pinkfong영상 열기채널명과 공개 통계
4교육 강연Do schools kill creativity? · TED영상 열기게시일과 댓글 수
5개발자 자료Embedded Web Player Customization · Google for Developers영상 열기일반 영상과 같은 구조인지

이 링크를 사용하는 이유

  • 검색 API 없이 영상 주소에서 ID를 바로 꺼내므로 실습이 단순합니다.
  • 같은 5개 영상을 사용하면 수강생끼리 표 구조와 오류를 비교하기 쉽습니다.
  • 규모와 유형이 달라 정렬, 숫자 형식, 변화량 비교를 연습하기 좋습니다.
  • 공개 영상이라도 운영자가 삭제·비공개 전환하거나 댓글을 끌 수 있습니다. 이 경우 상태 열 또는 빈 통계값으로 확인합니다.

첫 수집 뒤 답할 질문

1. 게시일이 가장 오래된 영상은 무엇인가요?

2. 조회수가 가장 큰 영상은 무엇인가요?

3. 댓글 수가 빈칸인 영상이 있나요?

4. 하루 뒤 증가량이 가장 큰 영상은 무엇인가요?

공개 통계는 계속 변하므로 교안에 고정된 정답 숫자는 두지 않습니다.

Step 4

예시 데이터 붙여넣기 또는 파일 다운로드

published

Step 4

예시 데이터 붙여넣기 또는 파일 다운로드

원주 ICT 빅데이터 고급

방법 A: 아래 표를 A1에 붙여넣기

아래 전체를 복사해 빈 Google Sheets의 A1 셀에 붙여넣습니다. 탭 기준으로 4개 열이 나뉩니다.

방법 B: 파일 다운로드

  • CSV에는 위 공개 영상 주소 5개가 들어 있습니다.
  • 통합 엑셀에는 사용방법, 문의목록, 지출내역, 유튜브목록 시트가 들어 있습니다.
  • Google Drive에 올린 뒤 파일 > Google Sheets로 저장하면 됩니다.

방법 C: 스크립트가 자동 생성

코드를 먼저 붙인 뒤 YouTube 데이터 분석 > 1. 샘플 영상 5개 만들기를 누릅니다. 초보자에게 가장 쉬운 방법입니다.

세 방법을 모두 할 필요는 없습니다. A, B, C 중 하나만 선택합니다.

첨부파일

유튜브 조사 링크 5개 CSV

영상주소와 메모가 들어 있는 UTF-8 CSV입니다. Google Sheets에서 바로 열 수 있습니다.

youtube_video_sample.csv

다운로드

첨부파일

Apps Script 쉬운 데모 통합 엑셀

문의 분류, 지출 정리, 유튜브 추적 예시 데이터를 한 파일에 담았습니다.

apps_script_easy_demo_data.xlsx

다운로드
Step 5

새 Google Sheets 파일과 영상목록 준비

published

Step 5

새 Google Sheets 파일과 영상목록 준비

원주 ICT 빅데이터 고급

새 파일에서 시작합니다

1. Google Drive에서 새로 만들기 > Google 스프레드시트를 누릅니다.

2. 파일 이름을 Apps Script 유튜브 조회수 추적 실습으로 바꿉니다.

3. 아래쪽 첫 시트 탭 이름을 영상목록으로 바꿉니다.

4. 앞 Step의 A, B, C 중 선택한 한 가지 방법으로 데이터를 준비합니다.

직접 붙여넣었을 때 확인할 것

제목정상 예시
A영상주소https://www.youtube.com/watch?v=...
B메모K-pop 대표 공개 영상
Cvideo_id처음에는 빈칸
D상태처음에는 빈칸

입력 규칙

  • 한 행에는 영상 주소 하나만 넣습니다.
  • 주소 앞뒤의 불필요한 공백은 스크립트가 제거합니다.
  • 같은 영상 주소가 두 번 있으면 첫 번째만 수집하고 나머지는 중복 주소로 표시합니다.
  • 일반 주소, youtu.be 단축 주소, Shorts 주소, embed 주소, 11자리 ID를 처리할 수 있습니다.
  • 비공개 업무 링크나 개인정보가 포함된 링크는 넣지 않습니다.

샘플 만들기 메뉴 사용 시 주의

샘플 영상 5개 만들기는 영상목록 시트의 기존 내용을 지우고 예시 5개를 다시 만듭니다. 본인의 영상 주소를 입력한 뒤에는 이 메뉴를 누르지 않습니다. 수집이력과 최신현황은 지우지 않습니다.

Step 6

Apps Script 편집기 열고 YouTube 서비스 추가

published

Step 6

Apps Script 편집기 열고 YouTube 서비스 추가

원주 ICT 빅데이터 고급

1. Apps Script 편집기 열기

1. Google Sheets 상단에서 확장 프로그램을 누릅니다.

2. Apps Script를 누릅니다.

3. 새 탭이 열리면 프로젝트 이름을 유튜브 조회수 추적기로 바꿉니다.

4. 왼쪽 파일 목록의 Code.gs를 누릅니다.

5. 가운데 기본 function myFunction() 코드를 전체 삭제합니다.

2. YouTube Data API v3 서비스 추가

1. Apps Script 왼쪽 메뉴에서 서비스 옆의 + 버튼을 누릅니다.

2. 목록에서 YouTube Data API v3를 찾습니다.

3. 버전은 v3, 식별자는 YouTube인지 확인합니다.

4. 아래쪽 추가 버튼을 누릅니다.

5. 왼쪽 서비스 목록에 YouTube가 보이면 준비 완료입니다.

Google Sheets에서 확장 프로그램 > Apps Script를 여는 위치

API 키가 필요한가요?

이 실습은 Apps Script의 고급 Google 서비스를 사용하므로 코드에 별도의 API 키를 붙이지 않습니다. 처음 실행할 때 현재 Google 계정으로 권한을 승인합니다.

일반적인 Apps Script 기본 Cloud 프로젝트에서는 서비스를 추가하면 연결됩니다. 학교·회사 계정 정책으로 서비스가 차단되거나 별도 표준 Cloud 프로젝트를 연결한 경우에는 관리자의 API 사용 허용 또는 Google Cloud의 YouTube Data API v3 활성화가 추가로 필요할 수 있습니다.

Step 7

유튜브 추적 전체 스크립트 복사해서 붙여넣기

published

Step 7

유튜브 추적 전체 스크립트 복사해서 붙여넣기

원주 ICT 빅데이터 고급

붙여넣기 순서

1. Code.gs의 기존 내용을 모두 지웁니다.

2. 아래 코드를 첫 줄부터 마지막 줄까지 전체 복사합니다.

3. Code.gs에 붙여넣고 저장 아이콘을 누릅니다.

4. 빨간 밑줄이 없는지 확인합니다.

javascript

const YOUTUBE_LIST_SHEET = '영상목록';
const YOUTUBE_HISTORY_SHEET = '수집이력';
const YOUTUBE_LATEST_SHEET = '최신현황';
const YOUTUBE_SPREADSHEET_ID_KEY = 'YOUTUBE_SPREADSHEET_ID';

const YOUTUBE_SAMPLE_VIDEOS = [
  ['https://www.youtube.com/watch?v=jNQXAC9IVRw', 'YouTube 역사: 첫 공개 영상'],
  ['https://www.youtube.com/watch?v=9bZkp7q19f0', 'K-pop 대표 공개 영상'],
  ['https://www.youtube.com/watch?v=XqZsoesa55w', '키즈 콘텐츠 대표 공개 영상'],
  ['https://www.youtube.com/watch?v=iG9CE55wbtY', '교육 강연 공개 영상'],
  ['https://www.youtube.com/watch?v=M7lc1UVf-VE', 'Google 개발자 공개 영상']
];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('YouTube 데이터 분석')
    .addItem('1. 샘플 영상 5개 만들기', 'createYouTubeSample')
    .addItem('2. 현재 데이터 수집', 'collectYouTubeData')
    .addItem('3. 최신현황 다시 만들기', 'writeLatestSummary')
    .addSeparator()
    .addItem('4. 매일 오전 9시 자동 수집', 'createDailyTrigger')
    .addItem('5. 자동 수집 해제', 'removeDailyTrigger')
    .addToUi();
}

function createYouTubeSample() {
  const ss = getYouTubeSpreadsheet();
  const sheet = getOrCreateYouTubeSheet(ss, YOUTUBE_LIST_SHEET);
  const rows = YOUTUBE_SAMPLE_VIDEOS.map(function(row) {
    return [row[0], row[1], '', ''];
  });

  sheet.clear();
  sheet.getRange(1, 1, 1, 4).setValues([
    ['영상주소', '메모', 'video_id', '상태']
  ]);
  sheet.getRange(2, 1, rows.length, 4).setValues(rows);
  styleYouTubeHeader(sheet, 4);
  sheet.setFrozenRows(1);
  sheet.setColumnWidth(1, 430);
  sheet.setColumnWidth(2, 250);
  sheet.setColumnWidth(3, 130);
  sheet.setColumnWidth(4, 210);
  SpreadsheetApp.getUi().alert('공개 영상 5개를 영상목록에 만들었습니다.');
}

function collectYouTubeData() {
  const result = collectYouTubeDataCore();
  SpreadsheetApp.getUi().alert(result.message);
}

function collectYouTubeDataDaily() {
  const result = collectYouTubeDataCore();
  console.log(result.message);
}

function collectYouTubeDataCore() {
  if (typeof YouTube === 'undefined') {
    return {
      ok: false,
      message: 'Apps Script 왼쪽 서비스 + 에서 YouTube Data API v3를 먼저 추가하세요.'
    };
  }

  const ss = getYouTubeSpreadsheet();
  const listSheet = ss.getSheetByName(YOUTUBE_LIST_SHEET);
  if (!listSheet || listSheet.getLastRow() < 2) {
    return {
      ok: false,
      message: '영상목록 시트에 영상 주소를 한 개 이상 넣어주세요.'
    };
  }

  const inputRows = listSheet
    .getRange(2, 1, listSheet.getLastRow() - 1, 2)
    .getDisplayValues();
  const statusRows = inputRows.map(function() {
    return ['', ''];
  });
  const targets = [];
  const seen = Object.create(null);

  inputRows.forEach(function(row, index) {
    const url = String(row[0] || '').trim();
    const note = String(row[1] || '').trim();
    if (!url) {
      statusRows[index] = ['', '주소 없음'];
      return;
    }

    const videoId = extractVideoId(url);
    if (!videoId) {
      statusRows[index] = ['', '주소 형식 확인'];
      return;
    }
    if (seen[videoId]) {
      statusRows[index] = [videoId, '중복 주소'];
      return;
    }

    seen[videoId] = true;
    statusRows[index] = [videoId, '수집 대기'];
    targets.push({
      sourceIndex: index,
      url: url,
      note: note,
      videoId: videoId
    });
  });

  listSheet.getRange(2, 3, statusRows.length, 2).setValues(statusRows);
  if (targets.length === 0) {
    return {
      ok: false,
      message: '수집할 수 있는 YouTube 주소가 없습니다. 영상주소 열을 확인하세요.'
    };
  }

  const videoMap = Object.create(null);
  try {
    for (let start = 0; start < targets.length; start += 50) {
      const batch = targets.slice(start, start + 50);
      const ids = batch.map(function(item) {
        return item.videoId;
      });
      const response = YouTube.Videos.list('snippet,statistics', {
        id: ids.join(',')
      });
      (response.items || []).forEach(function(video) {
        videoMap[video.id] = video;
      });
    }
  } catch (error) {
    targets.forEach(function(target) {
      statusRows[target.sourceIndex] = [target.videoId, 'API 오류'];
    });
    listSheet.getRange(2, 3, statusRows.length, 2).setValues(statusRows);
    return {
      ok: false,
      message: 'YouTube API 호출에 실패했습니다. 서비스 추가, 권한, 할당량을 확인하세요.\n\n' + error.message
    };
  }

  const collectedAt = new Date();
  const historyRows = [];

  targets.forEach(function(target) {
    const video = videoMap[target.videoId];
    if (!video) {
      statusRows[target.sourceIndex] = [
        target.videoId,
        '비공개·삭제·제한 또는 ID 확인'
      ];
      return;
    }

    const snippet = video.snippet || {};
    const statistics = video.statistics || {};
    historyRows.push([
      collectedAt,
      target.videoId,
      target.url,
      snippet.title || '',
      snippet.channelTitle || '',
      snippet.publishedAt ? new Date(snippet.publishedAt) : '',
      toOptionalNumber(statistics.viewCount),
      toOptionalNumber(statistics.likeCount),
      toOptionalNumber(statistics.commentCount)
    ]);
    statusRows[target.sourceIndex] = [target.videoId, '수집 완료'];
  });

  listSheet.getRange(2, 3, statusRows.length, 2).setValues(statusRows);
  if (historyRows.length === 0) {
    return {
      ok: false,
      message: '공개 정보를 가져온 영상이 없습니다. 상태 열을 확인하세요.'
    };
  }

  const historySheet = prepareHistorySheet(ss);
  const startRow = historySheet.getLastRow() + 1;
  historySheet
    .getRange(startRow, 1, historyRows.length, 9)
    .setValues(historyRows);
  historySheet
    .getRange(startRow, 1, historyRows.length, 1)
    .setNumberFormat('yyyy-mm-dd hh:mm:ss');
  historySheet
    .getRange(startRow, 6, historyRows.length, 1)
    .setNumberFormat('yyyy-mm-dd');
  historySheet
    .getRange(startRow, 7, historyRows.length, 3)
    .setNumberFormat('#,##0');

  writeLatestSummaryCore(ss);
  return {
    ok: true,
    message: historyRows.length + '개 영상의 현재 값을 수집이력에 추가했습니다.'
  };
}

function writeLatestSummary() {
  const result = writeLatestSummaryCore(getYouTubeSpreadsheet());
  SpreadsheetApp.getUi().alert(result.message);
}

function writeLatestSummaryCore(ss) {
  const historySheet = ss.getSheetByName(YOUTUBE_HISTORY_SHEET);
  if (!historySheet || historySheet.getLastRow() < 2) {
    return {
      ok: false,
      message: '수집이력이 없습니다. 먼저 현재 데이터 수집을 실행하세요.'
    };
  }

  const history = historySheet
    .getRange(2, 1, historySheet.getLastRow() - 1, 9)
    .getValues();
  const grouped = Object.create(null);

  history.forEach(function(row) {
    const videoId = String(row[1] || '');
    const time = row[0] instanceof Date ? row[0] : new Date(row[0]);
    if (!videoId || Number.isNaN(time.getTime())) return;
    if (!grouped[videoId]) grouped[videoId] = [];
    grouped[videoId].push(row);
  });

  const summaryRows = Object.keys(grouped).map(function(videoId) {
    const rows = grouped[videoId].sort(function(a, b) {
      return new Date(b[0]).getTime() - new Date(a[0]).getTime();
    });
    const latest = rows[0];
    const previous = rows.length > 1 ? rows[1] : null;

    return [
      videoId,
      latest[3],
      latest[4],
      latest[6],
      previous ? previous[6] : '',
      previous ? calculateDelta(latest[6], previous[6]) : '',
      latest[8],
      previous ? previous[8] : '',
      previous ? calculateDelta(latest[8], previous[8]) : '',
      latest[0],
      previous ? previous[0] : '',
      previous ? calculateHours(latest[0], previous[0]) : ''
    ];
  });

  summaryRows.sort(function(a, b) {
    return String(a[1]).localeCompare(String(b[1]));
  });

  const latestSheet = getOrCreateYouTubeSheet(ss, YOUTUBE_LATEST_SHEET);
  latestSheet.clear();
  latestSheet.getRange(1, 1, 1, 12).setValues([[
    'video_id',
    '제목',
    '채널명',
    '현재조회수',
    '이전조회수',
    '조회수증가',
    '현재댓글수',
    '이전댓글수',
    '댓글증가',
    '최근수집일시',
    '이전수집일시',
    '수집간격(시간)'
  ]]);
  if (summaryRows.length > 0) {
    latestSheet
      .getRange(2, 1, summaryRows.length, 12)
      .setValues(summaryRows);
    latestSheet
      .getRange(2, 4, summaryRows.length, 6)
      .setNumberFormat('#,##0');
    latestSheet
      .getRange(2, 10, summaryRows.length, 2)
      .setNumberFormat('yyyy-mm-dd hh:mm:ss');
    latestSheet
      .getRange(2, 12, summaryRows.length, 1)
      .setNumberFormat('0.0');
  }

  styleYouTubeHeader(latestSheet, 12);
  latestSheet.setFrozenRows(1);
  latestSheet.setColumnWidth(1, 130);
  latestSheet.setColumnWidth(2, 360);
  latestSheet.setColumnWidth(3, 220);
  latestSheet.setColumnWidths(4, 6, 120);
  latestSheet.setColumnWidths(10, 2, 170);
  latestSheet.setColumnWidth(12, 120);

  return {
    ok: true,
    message: summaryRows.length + '개 영상의 최신현황을 다시 만들었습니다.'
  };
}

function prepareHistorySheet(ss) {
  const sheet = getOrCreateYouTubeSheet(ss, YOUTUBE_HISTORY_SHEET);
  if (sheet.getLastRow() === 0) {
    sheet.getRange(1, 1, 1, 9).setValues([[
      '수집일시',
      'video_id',
      '영상주소',
      '제목',
      '채널명',
      '게시일',
      '조회수',
      '좋아요수',
      '댓글수'
    ]]);
  }
  styleYouTubeHeader(sheet, 9);
  sheet.setFrozenRows(1);
  sheet.setColumnWidth(1, 170);
  sheet.setColumnWidth(2, 130);
  sheet.setColumnWidth(3, 360);
  sheet.setColumnWidth(4, 360);
  sheet.setColumnWidth(5, 220);
  sheet.setColumnWidth(6, 110);
  sheet.setColumnWidths(7, 3, 120);
  return sheet;
}

function createDailyTrigger() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  if (!ss) {
    SpreadsheetApp.getUi().alert('Google Sheets에서 이 메뉴를 실행하세요.');
    return;
  }

  PropertiesService
    .getScriptProperties()
    .setProperty(YOUTUBE_SPREADSHEET_ID_KEY, ss.getId());
  deleteDailyTriggers();
  ScriptApp
    .newTrigger('collectYouTubeDataDaily')
    .timeBased()
    .atHour(9)
    .everyDays(1)
    .inTimezone('Asia/Seoul')
    .create();
  SpreadsheetApp.getUi().alert(
    '매일 한국시간 오전 9시부터 10시 사이에 자동 수집하도록 설정했습니다.'
  );
}

function removeDailyTrigger() {
  const removedCount = deleteDailyTriggers();
  PropertiesService
    .getScriptProperties()
    .deleteProperty(YOUTUBE_SPREADSHEET_ID_KEY);
  SpreadsheetApp.getUi().alert(
    removedCount + '개의 YouTube 자동 수집 트리거를 해제했습니다.'
  );
}

function deleteDailyTriggers() {
  let removedCount = 0;
  ScriptApp.getProjectTriggers().forEach(function(trigger) {
    if (trigger.getHandlerFunction() === 'collectYouTubeDataDaily') {
      ScriptApp.deleteTrigger(trigger);
      removedCount += 1;
    }
  });
  return removedCount;
}

function extractVideoId(value) {
  const text = String(value || '').trim();
  if (/^[A-Za-z0-9_-]{11}$/.test(text)) return text;

  const patterns = [
    /[?&]v=([A-Za-z0-9_-]{11})/,
    /youtu\.be\/([A-Za-z0-9_-]{11})/,
    /youtube(?:-nocookie)?\.com\/(?:shorts|embed|live)\/([A-Za-z0-9_-]{11})/
  ];

  for (let i = 0; i < patterns.length; i += 1) {
    const match = text.match(patterns[i]);
    if (match) return match[1];
  }
  return '';
}

function toOptionalNumber(value) {
  if (value === undefined || value === null || value === '') return '';
  return Number(value);
}

function calculateDelta(current, previous) {
  if (
    current === '' ||
    current === null ||
    previous === '' ||
    previous === null
  ) {
    return '';
  }
  return Number(current) - Number(previous);
}

function calculateHours(currentTime, previousTime) {
  const milliseconds =
    new Date(currentTime).getTime() - new Date(previousTime).getTime();
  return Math.round(milliseconds / 360000) / 10;
}

function getYouTubeSpreadsheet() {
  const active = SpreadsheetApp.getActiveSpreadsheet();
  if (active) return active;

  const spreadsheetId = PropertiesService
    .getScriptProperties()
    .getProperty(YOUTUBE_SPREADSHEET_ID_KEY);
  if (!spreadsheetId) {
    throw new Error(
      '연결된 스프레드시트를 찾을 수 없습니다. Google Sheets에서 자동 수집 메뉴를 다시 설정하세요.'
    );
  }
  return SpreadsheetApp.openById(spreadsheetId);
}

function getOrCreateYouTubeSheet(ss, name) {
  return ss.getSheetByName(name) || ss.insertSheet(name);
}

function styleYouTubeHeader(sheet, columnCount) {
  sheet
    .getRange(1, 1, 1, columnCount)
    .setBackground('#0f766e')
    .setFontColor('white')
    .setFontWeight('bold')
    .setHorizontalAlignment('center');
}

440줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

붙여넣은 뒤 바로 실행하지 않습니다

다음 Step에서 코드의 큰 흐름을 먼저 확인한 뒤 저장·권한 승인을 진행합니다. 코드를 외우거나 한 줄씩 입력할 필요는 없습니다.

Step 8

코드 지도와 데이터 이동 순서 알아보기

published

Step 8

코드 지도와 데이터 이동 순서 알아보기

원주 ICT 빅데이터 고급

코드 전체 지도

코드 부분역할결과
YOUTUBE_SAMPLE_VIDEOS수업용 공개 링크 5개 보관샘플 영상목록
onOpen상단 메뉴 생성YouTube 데이터 분석 메뉴
createYouTubeSample영상목록을 예시 5개로 초기화A~D열 생성
collectYouTubeDataCore주소 확인, API 요청, 이력 추가수집이력 새 행
YouTube.Videos.list공개 영상의 snippet·statistics 요청제목·채널·통계
writeLatestSummaryCore영상별 최근 2개 기록 비교최신현황
createDailyTrigger한국시간 매일 오전 자동 실행 예약시간 기반 트리거
extractVideoId여러 주소 형식에서 11자리 ID 추출video_id

한 영상이 처리되는 순서

1. 영상목록 A열에서 주소를 읽습니다.

2. 주소에서 9bZkp7q19f0 같은 video_id를 꺼냅니다.

3. 최대 50개 ID를 한 번의 videos.list 요청으로 묶습니다.

4. 제목, 채널, 게시일, 조회수, 좋아요 수, 댓글 수를 받습니다.

5. 수집 시각과 함께 수집이력의 마지막 행 아래에 추가합니다.

6. 영상별 최근 기록 2개를 찾아 증가량을 계산합니다.

7. 최신현황 시트를 새로 정리합니다.

내가 만든 데이터와 외부 데이터

메모는 수강생이 영상을 구분하기 위해 적는 내부 설명입니다. API에는 video_id만 보냅니다. 메모와 API 응답을 구분하면 내가 만든 데이터와 외부에서 받은 데이터의 차이를 이해할 수 있습니다.

숫자가 빈칸일 수 있는 이유

좋아요 수나 댓글 수는 영상 설정에 따라 공개되지 않을 수 있습니다. 스크립트는 없는 값을 0으로 단정하지 않고 빈칸으로 남깁니다. 0과 미공개는 다른 데이터이기 때문입니다.

Step 9

저장·새로고침·첫 권한 승인

published

Step 9

저장·새로고침·첫 권한 승인

원주 ICT 빅데이터 고급

1. 저장하고 메뉴 표시

1. Apps Script 위쪽 저장 아이콘을 누릅니다.

2. 저장 중 표시가 사라질 때까지 기다립니다.

3. Google Sheets 탭으로 돌아갑니다.

4. 브라우저 새로고침 또는 F5를 누릅니다.

5. 2~5초 뒤 상단에 YouTube 데이터 분석 메뉴가 보이는지 확인합니다.

2. 처음 한 번 권한 승인

1. YouTube 데이터 분석 > 1. 샘플 영상 5개 만들기를 누릅니다.

2. 승인 필요 화면이 나오면 권한 검토를 누릅니다.

3. 현재 시트를 만든 Google 계정을 선택합니다.

4. 본인이 방금 만든 스크립트의 확인되지 않은 앱 안내라면 고급 > 유튜브 조회수 추적기로 이동을 누릅니다.

5. 요청 권한을 읽고 허용을 누릅니다.

6. 권한 승인 뒤 자동 실행이 멈췄다면 같은 메뉴를 다시 누릅니다.

3. 서비스 연결 확인

Apps Script로 돌아가 왼쪽 서비스 아래에 YouTube가 보이는지 확인합니다. 보이지 않으면 이전 Step의 서비스 + > YouTube Data API v3 > 추가를 다시 진행합니다.

정상 상태

확인 위치정상 결과
상단 메뉴YouTube 데이터 분석
영상목록 A열영상 주소 5개
영상목록 B열각 영상 메모
영상목록 C·D열아직 빈칸이어도 정상

출처를 모르는 스크립트에는 권한을 주지 않습니다. 이번 실습에서는 교안 코드를 직접 붙여넣고 코드 범위를 확인한 뒤 승인합니다.

Step 10

첫 데이터 수집과 결과 시트 확인

published

Step 10

첫 데이터 수집과 결과 시트 확인

원주 ICT 빅데이터 고급

실행 순서

1. Google Sheets 상단 YouTube 데이터 분석을 누릅니다.

2. 2. 현재 데이터 수집을 누릅니다.

3. 첫 API 실행 권한 화면이 추가로 나오면 같은 계정으로 허용합니다.

4. 완료 안내가 나올 때까지 기다립니다.

5. 아래쪽 수집이력최신현황 탭이 생겼는지 확인합니다.

영상목록에서 확인

성공 결과
C열 video_id각 영상의 11자리 ID
D열 상태수집 완료

수집이력에서 확인

샘플 5개를 한 번 실행했다면 헤더 아래에 5행이 있어야 합니다.

확인 내용
수집일시5행이 같은 실행 시각
제목·채널명영상 페이지와 일치
게시일영상이 공개된 날짜
조회수·좋아요수·댓글수실행 시점의 공개 통계

최신현황에서 확인

첫 실행에는 각 영상 기록이 한 개뿐입니다. 따라서 현재조회수·현재댓글수는 채워지고, 이전조회수·증가량·이전수집일시는 빈칸인 것이 정상입니다.

숫자 검산

조회수는 계속 변하므로 교안 숫자와 비교하지 않습니다. 영상 페이지 값은 축약·반올림될 수 있고 API는 정수 값을 주므로 표시가 완전히 같지 않을 수도 있습니다. 제목, 채널, video_id가 맞고 숫자 열에 값이 들어오면 성공입니다.

Step 11

두 번째 수집으로 조회수·댓글 증가량 읽기

published

Step 11

두 번째 수집으로 조회수·댓글 증가량 읽기

원주 ICT 빅데이터 고급

다시 실행하기

1. 첫 실행 시각을 메모합니다.

2. 10분 뒤 또는 다음 날 같은 시트를 엽니다.

3. YouTube 데이터 분석 > 2. 현재 데이터 수집을 다시 누릅니다.

4. 수집이력의 마지막에 새 5행이 추가됐는지 확인합니다.

5. 최신현황에서 이전값과 증가량을 확인합니다.

5개 영상 기준 행 수

실행 횟수수집이력 데이터 행
1회5행
2회10행
3회15행
7일간 하루 1회35행

최신현황 열 읽기

계산 방식
현재조회수가장 최근 수집값
이전조회수바로 전 수집값
조회수증가현재조회수 - 이전조회수
댓글증가현재댓글수 - 이전댓글수
수집간격(시간)최근수집일시 - 이전수집일시

증가량이 0이면

  • 짧은 시간 동안 공개 숫자가 변하지 않았을 수 있습니다.
  • YouTube 통계 반영 시점에 차이가 있을 수 있습니다.
  • 오류가 아니라 변화 없음이라는 관찰 결과입니다.

5분 분석

1. 최신현황의 조회수증가 열을 큰 값부터 정렬합니다.

2. 게시일이 오래된 영상과 최근 증가량이 큰 영상이 같은지 비교합니다.

3. 댓글증가가 빈칸인 영상은 댓글 비공개인지 확인합니다.

4. 결과를 한 문장으로 씁니다: “최근 수집 구간에서 증가량이 가장 큰 영상은 ___이며, 수집 간격은 ___시간이다.”

Step 12

매일 오전 9시 자동 수집 설정과 해제

published

Step 12

매일 오전 9시 자동 수집 설정과 해제

원주 ICT 빅데이터 고급

자동 수집 설정

1. 수동 수집이 한 번 성공했는지 먼저 확인합니다.

2. 상단 YouTube 데이터 분석 > 4. 매일 오전 9시 자동 수집을 누릅니다.

3. 추가 권한 화면이 나오면 내용을 확인하고 허용합니다.

4. 완료 안내에서 한국시간 기준인지 확인합니다.

시간 기반 트리거는 정확히 09:00:00에 실행되는 예약이 아닙니다. 코드의 atHour(9)Asia/Seoul 설정에 따라 한국시간 오전 9시부터 10시 사이에 한 번 실행됩니다.

Apps Script에서 트리거 확인

1. Apps Script 편집기 왼쪽의 트리거 시계 아이콘을 누릅니다.

2. 실행 함수가 collectYouTubeDataDaily인지 확인합니다.

3. 이벤트 소스가 시간 기반인지 확인합니다.

4. 다음 날 수집이력에 새 5행이 생겼는지 확인합니다.

자동 수집 해제

실습이 끝났거나 더 이상 추적하지 않을 때는 YouTube 데이터 분석 > 5. 자동 수집 해제를 누릅니다. 메뉴가 이 실습에서 만든 같은 함수의 트리거만 삭제합니다.

운영 주의

  • 트리거는 설정한 Google 계정의 권한과 할당량으로 실행됩니다.
  • 계정 권한이 취소되거나 영상이 비공개로 바뀌면 실행이 실패할 수 있습니다.
  • Apps Script 왼쪽 실행 메뉴에서 실패 기록과 메시지를 확인할 수 있습니다.
  • 강의 중에는 자동 수집을 설정하지 않아도 됩니다. 수동 2회 실행만으로 증가량 구조를 확인할 수 있습니다.
Step 13

오류 해결·데이터 해석·제출 체크

published

Step 13

오류 해결·데이터 해석·제출 체크

원주 ICT 빅데이터 고급

오류 해결표

증상 또는 메시지원인해결 방법
YouTube is not defined고급 서비스 미추가서비스 +에서 YouTube Data API v3 추가
YouTube 데이터 분석 메뉴 없음저장·새로고침 누락Code.gs 저장 후 시트 F5
주소 형식 확인A열 주소에서 ID를 찾지 못함영상 페이지 주소를 다시 복사
중복 주소같은 video_id가 두 번 있음한 행만 남기거나 다른 영상 입력
비공개·삭제·제한 또는 ID 확인API가 공개 영상을 반환하지 않음공개 영상인지 브라우저에서 확인
댓글수가 빈칸댓글 미사용 또는 통계 비공개0으로 바꾸지 말고 빈칸 유지
API 오류 또는 quotaExceeded권한·서비스·할당량 문제서비스와 권한 확인, 잠시 뒤 재시도
첫 실행 증가량이 빈칸이전 기록이 없음나중에 두 번째 수집 실행
자동 수집 기록이 없음트리거 권한 또는 연결 ID 문제자동 수집 해제 후 시트 메뉴에서 다시 설정

할당량을 아끼는 방법

이 스크립트는 영상 주소를 직접 사용하고, 최대 50개 video_id를 한 videos.list 요청으로 묶습니다. 불필요하게 검색 API를 호출하지 않습니다. 수업에서는 5개 영상과 수동 1~2회 실행만으로 충분합니다.

제출 체크리스트

제출 항목완료 기준
영상목록공개 영상 5개와 수집 완료 상태
수집이력같은 video_id가 서로 다른 시각에 2행 이상
최신현황현재값·이전값·증가량이 표시됨
해석 문장증가량과 수집 간격을 포함한 한 문장
개인정보 점검댓글 본문·작성자·비공개 정보가 없음

선택 확장

1. 본인이 조사할 공개 영상 1개를 영상목록 마지막 행에 추가합니다.

2. 현재 데이터 수집을 다시 실행합니다.

3. 채널명과 제목이 올바른지 확인합니다.

4. 자동 수집을 계속할지, 실습 후 해제할지 결정합니다.

이 실습의 완성은 숫자를 많이 모으는 것이 아니라 주소 입력 → 공식 API 요청 → 시점별 누적 → 이전 대비 비교 → 자동 반복의 전체 흐름을 이해하는 것입니다.

Module 19practice필수

Apps Script 데이터 품질 점검 봇 만들기

CSV를 Google Sheets에 올린 뒤 Apps Script로 결측, 중복, 범위 오류를 자동 표시하고 리포트 시트를 만듭니다.

7 steps

Step 1

완성 결과와 데이터 품질 규칙 이해

published

Step 1

완성 결과와 데이터 품질 규칙 이해

원주 ICT 빅데이터 고급

오늘 만들 것

Google Sheets에 수동으로 CSV를 올린 뒤, Apps Script 메뉴를 눌러 데이터 품질 점검 봇을 실행합니다.

완성 결과

결과설명
데이터 점검 메뉴시트 상단에 데이터 품질 점검 메뉴가 생깁니다
오류 행 표시결측, 중복, 음수, 비정상 상태값이 있는 행이 색으로 표시됩니다
issue_note 열각 행의 문제를 문장으로 적어줍니다
report 시트전체 행 수, 오류 행 수, 오류 유형별 건수를 요약합니다

점검 규칙

규칙오류 예시
주문 ID는 비어 있으면 안 됨order_id 공백
주문 ID는 중복되면 안 됨ORD-1007 두 번 등장
수량은 1 이상이어야 함quantity 0 또는 음수
금액은 0보다 커야 함amount 0 또는 음수
상태값은 정해진 값만 허용완료오타, 지연확인
날짜는 YYYY-MM-DD 형식만 허용2026/07/05, not-a-date
납기일은 주문일보다 빠르면 안 됨due_date < order_date
실습 CSV 25행에 숨어 있는 오류 유형별 건수 — 점검 봇이 전부 찾아냅니다

25행짜리 표에서도 오류 행이 12개나 됩니다. 실제 업무 데이터는 수백~수천 행이라 사람이 눈으로 다 찾는 것은 불가능합니다. 그래서 규칙을 코드로 적어 두고 반복 실행하는 것이고, 이 실습은 Apps Script 문법을 외우는 것이 아니라 시트를 작은 데이터 검수 도구로 바꾸는 흐름을 익히는 데 목적이 있습니다.

Step 2

CSV 다운로드와 Google Sheets 업로드

published

Step 2

CSV 다운로드와 Google Sheets 업로드

원주 ICT 빅데이터 고급

CSV 준비

아래 CSV를 내려받아 Google Sheets에 업로드합니다.

  • 파일명: quality_check_orders.csv
  • 업로드 방식: Google Drive에 파일 업로드 → Google Sheets로 열기
  • 시트 이름: raw_data로 변경

업로드 후 날짜 열 너비 맞추기

order_date(B열), due_date(H열)이 #####로 보이면 날짜가 깨진 것이 아니라 열이 좁아서 글자가 잘린 것입니다.

1. B열·H열 머리글 사이 경계선을 더블클릭해 열 너비를 자동 맞춤합니다.

2. 2026-07-01처럼 날짜가 보이는지 확인합니다.

3. #####가 보이는 상태에서 복사·붙여넣기하지 않습니다. (시트에 ######만 들어갈 수 있습니다.)

Google Sheets: B·H열 선택 → 열 너비에서 120px 정도로 넓혀도 됩니다.

업로드 후 확인

확인 항목정상 기준
첫 행order_id, order_date, customer, product, quantity, amount, status, due_date, owner
데이터 행20개 이상
날짜 열B·H열 너비 맞춘 뒤 2026-07-01 형식으로 보임
일부 오류빈 값, 중복 ID, 음수 수량, 상태값 오타가 일부 포함
시트 이름raw_data
Google Drive CSV를 Google Sheets로 열어 raw_data 시트로 사용

주의

CSV는 일부러 문제가 섞인 교육용 합성 데이터입니다. 실제 고객명, 실제 주문 정보가 아닙니다.

첨부파일

Apps Script 데이터 품질 점검 실습 CSV

Google Sheets에 업로드해 결측, 중복, 범위 오류를 점검하는 교육용 주문 데이터입니다.

quality_check_orders.csv

다운로드
Step 3

Apps Script 프로젝트 열고 기본 메뉴 만들기

published

Step 3

Apps Script 프로젝트 열고 기본 메뉴 만들기

원주 ICT 빅데이터 고급

실행 순서

1. raw_data 시트에서 확장 프로그램 > Apps Script를 엽니다.

2. 프로젝트 이름을 데이터 품질 점검 봇으로 바꿉니다.

3. Code.gs에 아래 코드를 붙여넣습니다.

4. 저장 후 Google Sheets를 새로고침합니다.

javascript

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('데이터 품질 점검')
    .addItem('점검 실행', 'runQualityCheck')
    .addItem('표시 초기화', 'clearQualityCheck')
    .addToUi();
}

function runQualityCheck() {
  SpreadsheetApp.getUi().alert('다음 Step에서 점검 로직을 붙입니다.');
}

function clearQualityCheck() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('raw_data');
  if (!sheet) return;
  sheet.getDataRange().setBackground(null);
}

17줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인

시트를 새로고침했을 때 상단 메뉴에 데이터 품질 점검이 보이면 성공입니다.

Step 4

결측, 중복, 범위 오류 점검 코드 붙이기

published

Step 4

결측, 중복, 범위 오류 점검 코드 붙이기

원주 ICT 빅데이터 고급

Code.gs 전체 교체

기존 Code.gs 내용을 모두 지우고 아래 코드를 붙여넣습니다.

javascript

const SOURCE_SHEET_NAME = 'raw_data';
const REPORT_SHEET_NAME = 'report';
const ALLOWED_STATUS = ['접수', '검토중', '출고대기', '완료', '지연'];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('데이터 품질 점검')
    .addItem('점검 실행', 'runQualityCheck')
    .addItem('표시 초기화', 'clearQualityCheck')
    .addToUi();
}

function runQualityCheck() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(SOURCE_SHEET_NAME);
  if (!sheet) {
    SpreadsheetApp.getUi().alert('raw_data 시트를 찾을 수 없습니다.');
    return;
  }

  const range = sheet.getDataRange();
  const values = range.getValues();
  if (values.length < 2) {
    SpreadsheetApp.getUi().alert('점검할 데이터가 없습니다.');
    return;
  }

  const headers = values[0].map(String);
  const col = makeColumnMap(headers);
  ensureIssueNoteColumn(sheet, headers);
  const issueCol = sheet.getLastColumn();

  sheet.getDataRange().setBackground(null);
  sheet.getRange(2, issueCol, Math.max(sheet.getLastRow() - 1, 1), 1).clearContent();

  const seenOrderIds = new Map();
  const rowIssues = [];
  const issueCounts = {};

  for (let r = 1; r < values.length; r += 1) {
    const row = values[r];
    const issues = [];
    const orderId = String(row[col.order_id] ?? '').trim();
    const quantity = Number(row[col.quantity]);
    const amount = Number(row[col.amount]);
    const status = String(row[col.status] ?? '').trim();
    const orderDate = parseDate(row[col.order_date]);
    const dueDate = parseDate(row[col.due_date]);

    if (!orderId) issues.push('주문 ID 누락');
    if (orderId && seenOrderIds.has(orderId)) issues.push('주문 ID 중복');
    if (orderId) seenOrderIds.set(orderId, r + 1);
    if (!String(row[col.customer] ?? '').trim()) issues.push('고객명 누락');
    if (!String(row[col.product] ?? '').trim()) issues.push('제품명 누락');
    if (!Number.isFinite(quantity) || quantity < 1) issues.push('수량 오류');
    if (!Number.isFinite(amount) || amount <= 0) issues.push('금액 오류');
    if (!ALLOWED_STATUS.includes(status)) issues.push('상태값 오류');
    if (!orderDate) issues.push('주문일 형식 오류');
    if (!dueDate) issues.push('납기일 형식 오류');
    if (orderDate && dueDate && dueDate < orderDate) issues.push('납기일 역전');

    issues.forEach((issue) => {
      issueCounts[issue] = (issueCounts[issue] || 0) + 1;
    });
    rowIssues.push(issues);
  }

  rowIssues.forEach((issues, index) => {
    const rowNumber = index + 2;
    if (issues.length > 0) {
      sheet.getRange(rowNumber, 1, 1, sheet.getLastColumn()).setBackground('#fff2cc');
      sheet.getRange(rowNumber, issueCol).setValue(issues.join(', '));
    }
  });

  writeReport(ss, values.length - 1, rowIssues, issueCounts);
  SpreadsheetApp.getUi().alert('데이터 품질 점검이 완료되었습니다.');
}

function makeColumnMap(headers) {
  return headers.reduce((acc, header, index) => {
    acc[String(header).trim()] = index;
    return acc;
  }, {});
}

function ensureIssueNoteColumn(sheet, headers) {
  if (headers.includes('issue_note')) return;
  sheet.getRange(1, sheet.getLastColumn() + 1).setValue('issue_note');
}

function parseDate(value) {
  if (value instanceof Date && !Number.isNaN(value.getTime())) return value;
  const text = String(value == null ? '' : value).trim();
  if (!/^\d{4}-\d{2}-\d{2}$/.test(text)) return null;
  const parsed = new Date(text);
  return Number.isNaN(parsed.getTime()) ? null : parsed;
}

function writeReport(ss, totalRows, rowIssues, issueCounts) {
  let report = ss.getSheetByName(REPORT_SHEET_NAME);
  if (!report) report = ss.insertSheet(REPORT_SHEET_NAME);
  report.clear();

  const errorRows = rowIssues.filter((issues) => issues.length > 0).length;
  const summary = [
    ['항목', '값'],
    ['전체 행 수', totalRows],
    ['오류 행 수', errorRows],
    ['정상 행 수', totalRows - errorRows],
    ['오류 행 비율', totalRows ? errorRows / totalRows : 0],
  ];

  report.getRange(1, 1, summary.length, 2).setValues(summary);
  report.getRange(5, 2).setNumberFormat('0.0%');

  const details = [['오류 유형', '건수']].concat(
    Object.entries(issueCounts).sort((a, b) => b[1] - a[1])
  );
  report.getRange(1, 4, details.length, 2).setValues(details);
  report.autoResizeColumns(1, 5);
}

function clearQualityCheck() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(SOURCE_SHEET_NAME);
  if (sheet) {
    sheet.getDataRange().setBackground(null);
    const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    const issueIndex = headers.indexOf('issue_note');
    if (issueIndex >= 0 && sheet.getLastRow() > 1) {
      sheet.getRange(2, issueIndex + 1, sheet.getLastRow() - 1, 1).clearContent();
    }
  }
  const report = ss.getSheetByName(REPORT_SHEET_NAME);
  if (report) report.clear();
}

137줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

결측·중복·범위 오류를 점검하는 Apps Script 코드
Step 5

점검 실행과 권한 승인

published

Step 5

점검 실행과 권한 승인

원주 ICT 빅데이터 고급

실행 순서

1. Apps Script에서 저장합니다.

2. Google Sheets로 돌아갑니다.

3. 새로고침합니다.

4. 데이터 품질 점검 > 점검 실행을 누릅니다.

5. 처음 실행 시 권한을 승인합니다.

권한 승인 중 보이는 화면

화면선택
권한 필요권한 검토
Google 계정 선택본인 계정
확인되지 않은 앱고급 → 프로젝트로 이동
권한 허용허용

성공 기준

확인 항목정상 기준
raw_data오류가 있는 행이 노란색으로 표시
issue_note오류 내용이 행마다 입력
report요약표와 오류 유형별 건수 생성
알림데이터 품질 점검 완료 메시지 표시
점검 실행 후 오류 행 하이라이트·issue_note·report 시트

참고: Google Sheets가 업로드 과정에서 2026/07/05 같은 값을 날짜로 자동 변환한 경우, 해당 행은 형식 오류로 잡히지 않을 수 있습니다. 셀에 왼쪽 정렬된 텍스트로 남아 있는 값만 형식 오류로 표시됩니다.

Step 6

리포트 읽고 오류 원인 해석하기

published

Step 6

리포트 읽고 오류 원인 해석하기

원주 ICT 빅데이터 고급

report 시트 해석

지표의미
전체 행 수CSV에서 읽은 데이터 행 수
오류 행 수하나 이상의 오류가 있는 행 수
정상 행 수오류가 없는 행 수
오류 행 비율전체 중 검토가 필요한 비율

해석 질문

1. 가장 많이 발생한 오류 유형은 무엇인가요?

2. 오류가 실제 업무에서 어떤 문제로 이어질 수 있나요?

3. 수동으로 고쳐야 하는 오류와 시스템에서 자동 보정 가능한 오류는 무엇인가요?

4. 추가하고 싶은 점검 규칙은 무엇인가요?

AI Studio에 붙여넣을 프롬프트

복사용 텍스트

아래 데이터 품질 점검 결과를 읽고 실무자가 볼 수 있는 5줄 브리핑으로 정리해줘.
1. 가장 큰 문제
2. 우선 수정할 항목
3. 자동화로 막을 수 있는 항목
4. 사람이 확인해야 하는 항목
5. 다음 개선 제안

점검 결과:
여기에 report 시트 내용을 붙여넣기
Step 7

확장 과제와 제출 체크

published

Step 7

확장 과제와 제출 체크

원주 ICT 빅데이터 고급

제출 체크

제출물확인
Google Sheets 링크
raw_data 오류 표시 화면
report 시트
본인이 추가하고 싶은 점검 규칙 1개

확장 과제

  • 상태값이 지연인 주문만 별도 시트로 복사하기
  • 오류 행 비율이 20%를 넘으면 담당자에게 이메일 보내기
  • owner별 오류 건수를 report에 추가하기
  • CSV 업로드 후 자동으로 점검 메뉴를 실행하는 운영 절차 만들기

업무 적용 아이디어

이 구조는 주문 데이터뿐 아니라 민원 목록, 교육 신청자 명단, 장비 점검표, 실험 기록표에도 그대로 응용할 수 있습니다.

Module 20practice필수

Apps Script 쉬운 실습 4: 시트 기반 이메일 발송기

Google Sheets의 수신자·제목·본문을 읽어 본인 메일 테스트, 선택 발송, 개인화, 결과 기록까지 안전하게 실습합니다.

16 steps

Step 1

완성 결과와 안전 원칙 이해

published

Step 1

완성 결과와 안전 원칙 이해

원주 ICT 빅데이터 고급

오늘 만들 것

Google Sheets에 이름, 이메일, 제목, 본문을 준비하고 체크한 행만 Gmail로 발송하는 작은 업무 도구를 만듭니다. 별도의 메일 API 키나 외부 서버 없이 Google Apps Script의 MailApp을 사용합니다.

완성 화면에서 할 수 있는 일

메뉴하는 일시트에 남는 결과
1. 샘플 발송목록 만들기연습용 5행과 체크박스 생성상태가 모두 대기인 목록
2. 내 이메일로 테스트입력한 본인 주소에 테스트 메일 1통 발송목록은 바뀌지 않음
3. 선택 메일 미리보기체크한 행의 수신자·제목·본문 확인실제 발송 없음
4. 선택 메일 발송체크한 대기 행만 순서대로 발송발송완료·발송일시 기록
5. 남은 발송 한도 확인현재 계정의 남은 일일 수신자 한도 확인안내창 표시
6. 선택 실패행 대기로 돌리기오류를 고친 행을 다시 준비 상태로 변경상태·오류 초기화

반드시 지킬 안전 원칙

1. 처음에는 본인의 이메일 주소 한 개만 입력합니다.

2. 미리보기에서 수신자, 제목, 본문을 확인한 뒤 발송합니다.

3. 실습 중에는 한 번에 5명 이하만 발송합니다.

4. 동의 없이 광고성 메일이나 반복 메일을 보내지 않습니다.

5. 주민등록번호, 건강정보, 성적표 같은 민감정보를 본문에 넣지 않습니다.

6. 발송완료발송중인 행은 코드가 다시 보내지 않습니다.

완성 기준

  • 시트 상단에 이메일 발송 도구 메뉴가 보입니다.
  • 본인 주소로 테스트 메일 1통을 받습니다.
  • 체크한 행만 발송되고, 성공한 행에 발송완료와 시간이 기록됩니다.
  • 실패한 행은 실패 상태와 원인을 확인할 수 있습니다.
Step 2

실제 발신 계정과 권한 구조 이해

published

Step 2

실제 발신 계정과 권한 구조 이해

원주 ICT 빅데이터 고급

누구의 Gmail에서 발송되나요?

이 스크립트는 코드를 실행하면서 권한을 승인한 Google 계정으로 메일을 보냅니다. Google Sheets 파일의 제목이나 시트에 적힌 이름이 발신 계정을 바꾸지는 않습니다.

항목실제 동작
발신 이메일 주소스크립트를 승인하고 실행한 Google 계정
발신자 표시 이름코드의 EMAIL_SENDER_NAME
회신 받을 주소REPLY_TO_EMAIL을 입력한 경우 그 주소
발송 내역Gmail의 보낸편지함과 시트 상태 열에서 확인
비용Gmail·Google Workspace 계정 정책과 할당량 범위에서 사용

예를 들어 student@gmail.com 계정으로 승인했다면 수신자는 실제 발신 주소를 student@gmail.com으로 봅니다. 코드의 표시 이름을 “원주 ICT 교육”으로 설정해도 발신 주소 자체가 임의의 기관 주소로 바뀌지는 않습니다.

API 키와 서비스 추가가 필요한가요?

이 실습의 MailApp은 Apps Script 기본 서비스입니다.

  • API 키를 만들지 않습니다.
  • Apps Script 왼쪽 서비스 +에서 Gmail API를 추가하지 않습니다.
  • 처음 실행할 때 현재 Google 계정으로 메일 발송 권한만 승인합니다.
  • 회사·학교 Google Workspace는 관리자가 Apps Script 또는 외부 수신자 발송을 제한할 수 있습니다.

시간 트리거를 나중에 붙인다면

자동 실행도 트리거를 만든 계정의 권한으로 발송됩니다. 이번 초보 실습에서는 오발송을 막기 위해 수동 선택 발송만 사용합니다.

Step 3

메일발송목록 8개 열 이해

published

Step 3

메일발송목록 8개 열 이해

원주 ICT 빅데이터 고급

한 행이 메일 한 통입니다

제목누가 입력하나요?예시 또는 의미
A발송선택사용자가 체크TRUE인 행만 발송 후보
B이름사용자김하늘
C이메일사용자본인의 실제 수신 주소
D제목사용자[원주 ICT] {{이름}}님 참가 안내
E본문사용자{{이름}}님, 안녕하세요. ...
F상태스크립트대기, 발송중, 발송완료, 실패, 중복 제외
G발송일시스크립트2026-07-13 16:20:10
H오류스크립트주소 형식 오류 등 실패 원인

입력 열과 결과 열을 구분합니다

  • A~E열은 발송 전에 사람이 확인하고 수정하는 입력 데이터입니다.
  • F~H열은 실행 결과를 남기는 운영 기록입니다.
  • 발송이 끝난 뒤 F~H열을 임의로 지우면 중복 발송 방지 근거가 사라집니다.

이름 개인화 표시

제목이나 본문에 {{이름}}을 쓰면 각 행의 B열 이름으로 바뀝니다.

원본김하늘 행에서 실제 발송되는 내용
{{이름}}님 교육 참가 안내김하늘님 교육 참가 안내
{{이름}}님, 안녕하세요.김하늘님, 안녕하세요.

이름이 빈칸이면 {{이름}}은 “참가자”로 바뀝니다. 실무에서는 보내기 전에 이름과 이메일이 같은 사람인지 한 번 더 대조합니다.

Step 4

샘플 데이터 붙여넣기 또는 파일 다운로드

published

Step 4

샘플 데이터 붙여넣기 또는 파일 다운로드

원주 ICT 빅데이터 고급

방법 A: 아래 표를 A1에 붙여넣기

아래 전체를 복사해 빈 Google Sheets의 A1 셀에 붙여넣습니다. 이메일 열은 안전을 위해 비워 두었습니다.

tsv

발송선택	이름	이메일	제목	본문	상태	발송일시	오류
FALSE	김하늘		[원주 ICT] {{이름}}님 교육 참가 안내	{{이름}}님, 안녕하세요.\n원주 ICT 교육 참가 안내드립니다.\n일정: 2026년 7월 13일~14일\n장소: 의료기기종합지원센터 3층 ICT교육실	대기
FALSE	이서준		[원주 ICT] {{이름}}님 사전 준비 안내	{{이름}}님, 안녕하세요.\n실습 전 Chrome 로그인과 개인 Google 계정을 확인해 주세요.\n개인 노트북을 사용한다면 충전기도 준비해 주세요.	대기
FALSE	박지우		[원주 ICT] {{이름}}님 교육 장소 안내	{{이름}}님, 안녕하세요.\n교육 장소는 원주기업도시 내 의료기기종합지원센터 3층 ICT교육실입니다.\n시작 10분 전까지 입실해 주세요.	대기
FALSE	최민서		[원주 ICT] {{이름}}님 수료 안내	{{이름}}님, 안녕하세요.\n2일 교육을 모두 수료하면 수료증이 발급됩니다.\n출석 확인을 위해 시작 시간에 맞춰 입실해 주세요.	대기
FALSE	정도윤		[원주 ICT] {{이름}}님 만족도 조사 안내	{{이름}}님, 교육에 참여해 주셔서 감사합니다.\n교육 종료 후 만족도 조사 링크를 안내드릴 예정입니다.	대기

6줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

붙여넣은 본문의 \n 문자는 줄바꿈 표시입니다. 스크립트가 샘플을 만들면 실제 셀 안의 줄바꿈으로 들어갑니다.

방법 B: 파일 다운로드

  • CSV는 메일발송목록 예시 5행만 들어 있습니다.
  • 통합 엑셀은 사용방법, 문의목록, 지출내역, 유튜브목록, 메일발송목록을 한 파일에 담습니다.
  • Google Drive에 올린 뒤 파일 > Google Sheets로 저장하면 됩니다.

방법 C: 스크립트로 자동 생성

코드를 붙여넣은 뒤 이메일 발송 도구 > 1. 샘플 발송목록 만들기를 누르면 체크박스와 서식까지 자동으로 만들어집니다. 가장 쉬운 방법입니다.

세 방법을 모두 할 필요는 없습니다. A, B, C 중 하나만 선택합니다.

첨부파일

이메일 발송 예시 목록 CSV

이름·제목·본문 예시 5행이 들어 있으며 이메일 주소는 안전을 위해 비어 있습니다.

email_sender_sample.csv

다운로드

첨부파일

Apps Script 쉬운 데모 통합 엑셀

문의 분류, 지출 정리, 유튜브 추적, 이메일 발송 예시 데이터를 한 파일에 담았습니다.

apps_script_easy_demo_data.xlsx

다운로드
Step 5

새 Google Sheets와 본인 이메일 준비

published

Step 5

새 Google Sheets와 본인 이메일 준비

원주 ICT 빅데이터 고급

새 파일에서 시작합니다

1. Google Drive에서 새로 만들기 > Google 스프레드시트를 누릅니다.

2. 파일 이름을 Apps Script 이메일 발송 실습으로 바꿉니다.

3. 아래쪽 첫 시트 탭 이름을 메일발송목록으로 바꿉니다.

4. 앞 Step의 A, B, C 중 한 가지 방법으로 예시 데이터를 준비합니다.

첫 테스트용 행 하나만 수정합니다

입력할 내용
A2아직 체크하지 않음
B2본인 이름
C2지금 확인할 수 있는 본인 이메일 주소
D2예시 제목을 그대로 사용하거나 본인용으로 수정
E2예시 본문을 그대로 사용하거나 본인용으로 수정
F2대기

체크박스가 없을 때

스크립트의 샘플 만들기 메뉴를 사용하지 않고 표를 붙여넣었다면 A열에 TRUE/FALSE 글자가 보일 수 있습니다.

1. A2:A6 범위를 선택합니다.

2. 상단 삽입 > 체크박스를 누릅니다.

3. 모두 체크 해제 상태인지 확인합니다.

발송 전에 점검

  • C2가 다른 사람의 주소가 아닌지 확인합니다.
  • 제목과 본문에 비밀번호, 주민번호, 건강정보가 없는지 확인합니다.
  • 실습용 문구임을 알 수 있게 제목 앞에 [테스트]를 붙여도 좋습니다.
  • 나머지 C3:C6은 비워 둡니다.
Step 6

Apps Script 편집기 열기

published

Step 6

Apps Script 편집기 열기

원주 ICT 빅데이터 고급

편집기 여는 순서

1. Google Sheets 상단에서 확장 프로그램을 누릅니다.

2. Apps Script를 누릅니다.

3. 새 탭이 열리면 프로젝트 이름을 시트 이메일 발송기로 바꿉니다.

4. 왼쪽 파일 목록에서 Code.gs를 누릅니다.

5. 가운데 기본 function myFunction() 코드를 전체 삭제합니다.

Google Sheets에서 확장 프로그램 > Apps Script를 여는 위치

이번 실습에서는 추가하지 않는 것

항목해야 하나요?이유
API 키아니요MailApp은 Apps Script 기본 서비스
서비스 + > Gmail API아니요받은편지함 조회가 아니라 발송만 사용
Google Cloud 프로젝트아니요기본 실습 범위에서는 불필요
외부 메일 서비스아니요먼저 연결된 Gmail 계정으로 소량 발송

왼쪽 서비스 +를 눌러 Gmail API를 추가하면 오히려 권한과 코드가 복잡해집니다. 이번 실습에서는 Code.gs에 전체 코드를 붙여넣는 것만 진행합니다.

Step 7

이메일 발송 전체 스크립트 붙여넣기

published

Step 7

이메일 발송 전체 스크립트 붙여넣기

원주 ICT 빅데이터 고급

붙여넣기 순서

1. Code.gs의 기존 내용을 모두 지웁니다.

2. 아래 코드를 첫 줄부터 마지막 줄까지 전체 복사합니다.

3. Code.gs에 붙여넣습니다.

4. 위쪽 저장 아이콘을 누릅니다.

5. 빨간 밑줄이 없는지 확인합니다.

javascript

const EMAIL_SHEET_NAME = '메일발송목록';
const EMAIL_SENDER_NAME = '원주 ICT 교육';
const REPLY_TO_EMAIL = '';
const EMAIL_MAX_BATCH_SIZE = 5;

const EMAIL_HEADERS = [
  '발송선택',
  '이름',
  '이메일',
  '제목',
  '본문',
  '상태',
  '발송일시',
  '오류'
];

const EMAIL_SAMPLE_ROWS = [
  [
    false,
    '김하늘',
    '',
    '[원주 ICT] {{이름}}님 교육 참가 안내',
    '{{이름}}님, 안녕하세요.\n\n원주 ICT 교육 참가 안내드립니다.\n일정: 2026년 7월 13일~14일\n장소: 의료기기종합지원센터 3층 ICT교육실',
    '대기',
    '',
    ''
  ],
  [
    false,
    '이서준',
    '',
    '[원주 ICT] {{이름}}님 사전 준비 안내',
    '{{이름}}님, 안녕하세요.\n\n실습 전 Chrome 로그인과 개인 Google 계정을 확인해 주세요.\n개인 노트북을 사용한다면 충전기도 준비해 주세요.',
    '대기',
    '',
    ''
  ],
  [
    false,
    '박지우',
    '',
    '[원주 ICT] {{이름}}님 교육 장소 안내',
    '{{이름}}님, 안녕하세요.\n\n교육 장소는 원주기업도시 내 의료기기종합지원센터 3층 ICT교육실입니다.\n시작 10분 전까지 입실해 주세요.',
    '대기',
    '',
    ''
  ],
  [
    false,
    '최민서',
    '',
    '[원주 ICT] {{이름}}님 수료 안내',
    '{{이름}}님, 안녕하세요.\n\n2일 교육을 모두 수료하면 수료증이 발급됩니다.\n출석 확인을 위해 시작 시간에 맞춰 입실해 주세요.',
    '대기',
    '',
    ''
  ],
  [
    false,
    '정도윤',
    '',
    '[원주 ICT] {{이름}}님 만족도 조사 안내',
    '{{이름}}님, 교육에 참여해 주셔서 감사합니다.\n\n교육 종료 후 만족도 조사 링크를 안내드릴 예정입니다.',
    '대기',
    '',
    ''
  ]
];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('이메일 발송 도구')
    .addItem('1. 샘플 발송목록 만들기', 'createEmailSample')
    .addItem('2. 내 이메일로 테스트', 'sendTestEmail')
    .addItem('3. 선택 메일 미리보기', 'previewSelectedEmails')
    .addItem('4. 선택 메일 발송', 'sendSelectedEmails')
    .addSeparator()
    .addItem('5. 남은 발송 한도 확인', 'showRemainingQuota')
    .addItem('6. 선택 실패행 대기로 돌리기', 'resetFailedSelectedRows')
    .addToUi();
}

function createEmailSample() {
  const sheet = getOrCreateEmailSheet();
  sheet.clear();
  sheet.clearConditionalFormatRules();
  sheet.getRange(1, 1, 1, EMAIL_HEADERS.length).setValues([EMAIL_HEADERS]);
  sheet
    .getRange(2, 1, EMAIL_SAMPLE_ROWS.length, EMAIL_HEADERS.length)
    .setValues(EMAIL_SAMPLE_ROWS);
  sheet.getRange(2, 1, EMAIL_SAMPLE_ROWS.length, 1).insertCheckboxes();

  sheet
    .getRange(1, 1, 1, EMAIL_HEADERS.length)
    .setBackground('#0f766e')
    .setFontColor('white')
    .setFontWeight('bold')
    .setHorizontalAlignment('center');
  sheet.getRange(2, 1, EMAIL_SAMPLE_ROWS.length, 1).setHorizontalAlignment('center');
  sheet.getRange(2, 5, EMAIL_SAMPLE_ROWS.length, 1).setWrap(true);
  sheet.getRange(2, 7, EMAIL_SAMPLE_ROWS.length, 1).setNumberFormat('yyyy-mm-dd hh:mm:ss');
  sheet.setFrozenRows(1);
  sheet.setColumnWidth(1, 95);
  sheet.setColumnWidth(2, 90);
  sheet.setColumnWidth(3, 220);
  sheet.setColumnWidth(4, 340);
  sheet.setColumnWidth(5, 480);
  sheet.setColumnWidth(6, 110);
  sheet.setColumnWidth(7, 170);
  sheet.setColumnWidth(8, 280);
  sheet.setRowHeights(2, EMAIL_SAMPLE_ROWS.length, 72);

  SpreadsheetApp.getUi().alert(
    '연습용 5행을 만들었습니다. 이메일 열은 비어 있습니다. 먼저 C2에 본인 이메일 주소만 입력하세요.'
  );
}

function sendTestEmail() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.prompt(
    '내 이메일로 테스트',
    '지금 확인할 수 있는 본인 이메일 주소를 입력하세요.',
    ui.ButtonSet.OK_CANCEL
  );
  if (response.getSelectedButton() !== ui.Button.OK) return;

  const recipient = String(response.getResponseText() || '').trim();
  if (!isValidEmail(recipient)) {
    ui.alert('이메일 주소 형식을 확인하세요. 예: name@example.com');
    return;
  }
  if (MailApp.getRemainingDailyQuota() < 1) {
    ui.alert('오늘 남은 수신자 발송 한도가 없습니다. 다음 날 다시 시도하세요.');
    return;
  }

  const body =
    'Apps Script 이메일 발송 테스트입니다.\n\n' +
    '이 메일을 받았다면 Google Sheets와 Gmail 권한 연결이 정상입니다.\n' +
    '테스트 시각: ' +
    Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd HH:mm:ss');

  try {
    sendEmailMessage(
      recipient,
      '[테스트] Google Sheets 메일 발송 연결 확인',
      body
    );
    ui.alert(
      '테스트 메일을 보냈습니다. 받은편지함과 스팸함을 확인하세요.\n\n남은 일일 수신자 한도: ' +
        MailApp.getRemainingDailyQuota()
    );
  } catch (error) {
    ui.alert(
      '테스트 메일 발송 실패',
      getErrorMessage(error) +
        '\n\n회사·학교 계정이라면 외부 메일 발송 정책도 확인하세요.',
      ui.ButtonSet.OK
    );
  }
}

function previewSelectedEmails() {
  const ui = SpreadsheetApp.getUi();
  const sheet = getOrCreateEmailSheet();
  const targets = getSendableSelectedRows(sheet);
  if (targets.length === 0) {
    ui.alert('미리 볼 대기 행이 없습니다. A열을 체크하고 상태를 확인하세요.');
    return;
  }

  const previews = targets.slice(0, 5).map(function(target) {
    const name = target.name || '참가자';
    const subject = replaceNameToken(target.subject, name);
    const body = replaceNameToken(target.body, name);
    return (
      target.rowNumber +
      '행 | ' +
      (target.email || '(이메일 미입력)') +
      '\n제목: ' +
      subject +
      '\n본문: ' +
      body.slice(0, 160) +
      (body.length > 160 ? '...' : '')
    );
  });
  const more = targets.length > 5 ? '\n\n외 ' + (targets.length - 5) + '개 행' : '';

  ui.alert(
    '선택 메일 미리보기',
    '발송 후보: ' + targets.length + '개\n\n' + previews.join('\n\n---\n\n') + more,
    ui.ButtonSet.OK
  );
}

function sendSelectedEmails() {
  const ui = SpreadsheetApp.getUi();
  const firstSheet = getOrCreateEmailSheet();
  const firstTargets = getSendableSelectedRows(firstSheet);
  if (firstTargets.length === 0) {
    ui.alert('발송할 대기 행이 없습니다. A열을 체크하고 상태를 확인하세요.');
    return;
  }
  if (firstTargets.length > EMAIL_MAX_BATCH_SIZE) {
    ui.alert(
      '실습에서는 한 번에 최대 ' +
        EMAIL_MAX_BATCH_SIZE +
        '명까지만 발송할 수 있습니다. 체크 수를 줄인 뒤 다시 실행하세요.'
    );
    return;
  }

  const answer = ui.alert(
    '선택 메일 발송 확인',
    firstTargets.length +
      '개 행을 발송합니다. 본인 메일 테스트와 미리보기를 완료했나요?',
    ui.ButtonSet.YES_NO
  );
  if (answer !== ui.Button.YES) return;

  const lock = LockService.getDocumentLock();
  if (!lock) {
    ui.alert('Google Sheets의 확장 프로그램 > Apps Script에서 실행하세요.');
    return;
  }
  if (!lock.tryLock(5000)) {
    ui.alert('다른 사용자가 발송 중입니다. 잠시 뒤 다시 시도하세요.');
    return;
  }

  let successCount = 0;
  let failureCount = 0;
  let duplicateCount = 0;

  try {
    const sheet = getOrCreateEmailSheet();
    const targets = getSendableSelectedRows(sheet);
    if (targets.length === 0) {
      ui.alert('잠금 후 다시 확인한 결과 발송할 대기 행이 없습니다.');
      return;
    }

    const remainingQuota = MailApp.getRemainingDailyQuota();
    if (remainingQuota < targets.length) {
      ui.alert(
        '발송을 중단했습니다.\n\n선택 수신자: ' +
          targets.length +
          '명\n남은 일일 수신자 한도: ' +
          remainingQuota +
          '명\n\n선택 수를 줄인 뒤 다시 실행하세요.'
      );
      return;
    }

    const seen = Object.create(null);

    targets.forEach(function(target) {
      const row = target.rowNumber;
      const name = target.name || '참가자';
      const email = String(target.email || '').trim();
      const subject = replaceNameToken(target.subject, name).trim();
      const body = replaceNameToken(target.body, name).trim();

      if (!isValidEmail(email) || !subject || !body) {
        const reasons = [];
        if (!isValidEmail(email)) reasons.push('이메일 주소 형식');
        if (!subject) reasons.push('제목 누락');
        if (!body) reasons.push('본문 누락');
        writeEmailResult(sheet, row, false, '실패', '', reasons.join(', ') + ' 확인');
        failureCount += 1;
        return;
      }

      const duplicateKey = email.toLowerCase() + '|' + subject;
      if (seen[duplicateKey]) {
        writeEmailResult(
          sheet,
          row,
          false,
          '중복 제외',
          '',
          '같은 실행에서 동일한 이메일과 제목이 먼저 선택됨'
        );
        duplicateCount += 1;
        return;
      }
      seen[duplicateKey] = true;

      sheet.getRange(row, 6).setValue('발송중');
      sheet.getRange(row, 8).clearContent();
      SpreadsheetApp.flush();

      try {
        sendEmailMessage(email, subject, body);
        writeEmailResult(sheet, row, false, '발송완료', new Date(), '');
        successCount += 1;
      } catch (error) {
        writeEmailResult(
          sheet,
          row,
          false,
          '실패',
          '',
          getErrorMessage(error).slice(0, 500)
        );
        failureCount += 1;
      }

      Utilities.sleep(250);
    });
  } finally {
    lock.releaseLock();
  }

  ui.alert(
    '발송 작업이 끝났습니다.\n\n' +
      '성공: ' +
      successCount +
      '개\n실패: ' +
      failureCount +
      '개\n중복 제외: ' +
      duplicateCount +
      '개\n남은 일일 수신자 한도: ' +
      MailApp.getRemainingDailyQuota()
  );
}

function showRemainingQuota() {
  SpreadsheetApp.getUi().alert(
    '현재 계정의 오늘 남은 수신자 발송 한도는 ' +
      MailApp.getRemainingDailyQuota() +
      '명입니다.\n\n한 통에 여러 수신자를 넣으면 수신자 수만큼 차감됩니다.'
  );
}

function resetFailedSelectedRows() {
  const ui = SpreadsheetApp.getUi();
  const sheet = getOrCreateEmailSheet();
  if (sheet.getLastRow() < 2) {
    ui.alert('초기화할 데이터가 없습니다.');
    return;
  }

  const values = sheet
    .getRange(2, 1, sheet.getLastRow() - 1, EMAIL_HEADERS.length)
    .getValues();
  let resetCount = 0;

  values.forEach(function(row, index) {
    const selected = row[0] === true;
    const status = String(row[5] || '').trim();
    if (!selected || (status !== '실패' && status !== '중복 제외')) return;

    const rowNumber = index + 2;
    sheet.getRange(rowNumber, 1).setValue(false);
    sheet.getRange(rowNumber, 6).setValue('대기');
    sheet.getRange(rowNumber, 7, 1, 2).clearContent();
    resetCount += 1;
  });

  ui.alert(
    resetCount +
      '개 행을 대기로 돌렸습니다. 원인을 수정한 뒤 다시 체크하고 미리보기부터 진행하세요.'
  );
}

function getSendableSelectedRows(sheet) {
  if (sheet.getLastRow() < 2) return [];

  const values = sheet
    .getRange(2, 1, sheet.getLastRow() - 1, EMAIL_HEADERS.length)
    .getValues();
  const allowedStatuses = ['', '대기', '실패'];

  return values
    .map(function(row, index) {
      return {
        rowNumber: index + 2,
        selected: row[0] === true,
        name: String(row[1] || '').trim(),
        email: String(row[2] || '').trim(),
        subject: String(row[3] || ''),
        body: String(row[4] || ''),
        status: String(row[5] || '').trim()
      };
    })
    .filter(function(row) {
      return row.selected && allowedStatuses.indexOf(row.status) !== -1;
    });
}

function sendEmailMessage(to, subject, plainBody) {
  const options = {
    htmlBody: buildHtmlBody(plainBody),
    name: EMAIL_SENDER_NAME
  };
  if (REPLY_TO_EMAIL) {
    if (!isValidEmail(REPLY_TO_EMAIL)) {
      throw new Error('REPLY_TO_EMAIL의 이메일 주소 형식을 확인하세요.');
    }
    options.replyTo = REPLY_TO_EMAIL;
  }
  MailApp.sendEmail(to, subject, plainBody, options);
}

function writeEmailResult(sheet, row, checked, status, sentAt, errorMessage) {
  sheet.getRange(row, 1).setValue(checked);
  sheet.getRange(row, 6, 1, 3).setValues([[status, sentAt, errorMessage]]);
  sheet.getRange(row, 7).setNumberFormat('yyyy-mm-dd hh:mm:ss');
}

function replaceNameToken(text, name) {
  return String(text || '').split('{{이름}}').join(name || '참가자');
}

function buildHtmlBody(text) {
  return escapeHtml(text).replace(/\r?\n/g, '<br>');
}

function escapeHtml(text) {
  return String(text || '')
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

function isValidEmail(value) {
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(value || '').trim());
}

function getErrorMessage(error) {
  if (error && error.message) return String(error.message);
  return String(error || '알 수 없는 오류');
}

function getOrCreateEmailSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  if (!ss) throw new Error('Google Sheets에서 이 스크립트를 실행하세요.');
  return ss.getSheetByName(EMAIL_SHEET_NAME) || ss.insertSheet(EMAIL_SHEET_NAME);
}

442줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

붙여넣은 뒤 확인

  • 코드 첫 줄이 const EMAIL_SHEET_NAME인지 확인합니다.
  • 마지막 줄이 getOrCreateEmailSheet 함수의 닫는 중괄호인지 확인합니다.
  • 중간 일부만 복사하지 않았는지 스크롤로 확인합니다.
  • 저장 뒤 오류가 표시되면 잘못 붙은 따옴표나 빠진 줄이 없는지 먼저 확인합니다.
Step 8

코드 지도와 발송 흐름 이해

published

Step 8

코드 지도와 발송 흐름 이해

원주 ICT 빅데이터 고급

코드 전체 지도

코드 부분역할안전장치
EMAIL_SAMPLE_ROWS교육용 이름·제목·본문 5행 보관이메일 주소는 모두 빈칸
onOpen시트 상단 메뉴 생성메뉴로 정해진 함수만 실행
sendTestEmail본인 주소에 독립 테스트 1통목록을 건드리지 않음
previewSelectedEmails발송 후보의 내용을 안내창으로 표시MailApp을 호출하지 않음
sendSelectedEmails선택한 대기 행을 순차 발송5명 제한, 확인창, 한도 검사, 잠금, 상태 기록
sendEmailMessage일반 본문과 HTML 본문을 함께 발송공식 4인자 MailApp 호출, 회신 주소 검사
getSendableSelectedRows체크·상태 조건에 맞는 행만 선별발송완료·발송중 제외
replaceNameToken{{이름}}을 B열 이름으로 변경빈 이름은 참가자로 대체
buildHtmlBody일반 텍스트 줄바꿈을 HTML로 표시HTML 특수문자를 먼저 안전하게 변환
resetFailedSelectedRows실패·중복 제외 행을 대기로 복구성공한 행은 초기화하지 않음

선택 발송 한 행의 처리 순서

1. A열 체크 여부와 F열 상태를 읽습니다.

2. 발송완료·발송중 행을 후보에서 제외합니다.

3. 전체 선택 수와 남은 발송 한도를 비교합니다.

4. 같은 이메일과 제목이 한 번의 실행에 중복되면 뒤 행을 제외합니다.

5. 실제 호출 직전에 상태를 발송중으로 먼저 기록합니다.

6. MailApp으로 메일을 보냅니다.

7. 성공하면 발송완료와 발송일시를, 실패하면 오류 원인을 기록합니다.

8. 체크박스를 해제해 같은 행이 계속 선택된 상태로 남지 않게 합니다.

왜 발송중을 먼저 기록하나요?

메일 전송 직후 브라우저가 닫히거나 시트 기록 단계에서 문제가 생기면 성공 여부를 단정하기 어렵습니다. 먼저 발송중으로 바꾸면 다음 실행에서 자동 재발송하지 않으므로 중복 발송 가능성을 줄일 수 있습니다. 발송중 상태가 오래 남으면 Gmail 보낸편지함을 확인한 뒤 사람이 판단합니다.

Step 9

저장·새로고침·첫 권한 승인

published

Step 9

저장·새로고침·첫 권한 승인

원주 ICT 빅데이터 고급

1. 저장하고 메뉴 표시

1. Apps Script 위쪽 저장 아이콘을 누릅니다.

2. 저장 중 표시가 사라질 때까지 기다립니다.

3. Google Sheets 탭으로 돌아갑니다.

4. 브라우저 새로고침 또는 F5를 누릅니다.

5. 2~5초 뒤 상단에 이메일 발송 도구 메뉴가 보이는지 확인합니다.

2. 처음 한 번 권한 승인

1. 이메일 발송 도구 > 2. 내 이메일로 테스트를 누릅니다.

2. 본인 이메일을 입력하고 확인합니다.

3. 승인 필요 화면이 나오면 권한 검토를 누릅니다.

4. 이 시트를 만든 Google 계정을 선택합니다.

5. 본인이 방금 만든 스크립트의 확인되지 않은 앱 안내라면 고급 > 시트 이메일 발송기로 이동을 누릅니다.

6. 요청 권한에서 메일 발송 내용을 읽고 허용을 누릅니다.

7. 승인 뒤 실행이 멈췄다면 같은 메뉴를 다시 실행합니다.

권한 승인 전 확인할 것

  • 브라우저 주소가 Google Apps Script인지 확인합니다.
  • 프로젝트 이름과 코드가 본인이 방금 만든 것인지 확인합니다.
  • 알 수 없는 사람이 공유한 스크립트에는 메일 권한을 주지 않습니다.
  • 학교·회사 계정에서 차단되면 개인 Google 계정 또는 관리자 정책을 확인합니다.

정상 상태

확인 위치정상 결과
시트 상단이메일 발송 도구 메뉴
권한 화면Gmail을 대신해 이메일을 보내는 권한 안내
Apps Script 실행 기록완료됨
Step 10

본인 이메일 1통으로 연결 테스트

published

Step 10

본인 이메일 1통으로 연결 테스트

원주 ICT 빅데이터 고급

목록 발송 전에 독립 테스트부터 합니다

수업 테스트용 수신 계정

계정확인 용도
jubileokr@gmail.comGmail 수신함·스팸함·보낸편지함 확인
pd@uslab.ai업무 도메인 수신·회신 주소 확인
jubileo@naver.com외부 메일 수신 및 한글 본문 표시 확인

한 번에 한 계정만 입력해 테스트 메일 1통을 보냅니다. 세 계정을 모두 확인하려면 각 주소에 한 번씩, 총 3번 실행합니다. 목록 발송 메뉴로 세 주소를 동시에 테스트하지 않습니다.

1. 이메일 발송 도구 > 2. 내 이메일로 테스트를 누릅니다.

2. 지금 받은편지함을 확인할 수 있는 본인 이메일 주소를 입력합니다.

3. 주소 철자를 다시 확인하고 확인을 누릅니다.

4. 완료 안내에서 남은 일일 수신자 한도를 확인합니다.

5. 받은편지함을 새로고침합니다.

6. 보이지 않으면 스팸함과 프로모션함도 확인합니다.

받은 메일 확인표

확인 항목정상 결과
발신 이메일Apps Script를 승인한 Google 계정
발신자 표시 이름원주 ICT 교육
제목[테스트] Google Sheets 메일 발송 연결 확인
본문연결 정상 안내와 테스트 시각
Gmail 보낸편지함같은 메일 1건

테스트 메일이 오지 않을 때

1. Apps Script 왼쪽 실행에서 실패 여부를 확인합니다.

2. 입력한 주소 오타를 확인합니다.

3. Gmail 보낸편지함에 메일이 생성됐는지 확인합니다.

4. 수신함의 스팸·차단 정책을 확인합니다.

5. 회사·학교 계정이라면 외부 메일 발송 제한을 확인합니다.

테스트가 성공하기 전에는 목록의 선택 메일 발송을 실행하지 않습니다.

Step 11

체크박스 선택과 메일 미리보기

published

Step 11

체크박스 선택과 메일 미리보기

원주 ICT 빅데이터 고급

첫 목록 테스트 준비

1. 메일발송목록의 C2에 방금 성공한 본인 이메일을 입력합니다.

2. 나머지 C3:C6은 비워 둡니다.

3. A2 체크박스만 체크합니다.

4. F2가 대기인지 확인합니다.

5. 이메일 발송 도구 > 3. 선택 메일 미리보기를 누릅니다.

미리보기에서 확인할 내용

항목확인 방법
발송 후보 수1개인지 확인
행 번호2행인지 확인
이메일본인 주소인지 확인
제목{{이름}}이 실제 이름으로 바뀌었는지 확인
본문일정·장소·문구에 오타가 없는지 확인

미리보기 함수는 MailApp.sendEmail을 호출하지 않으므로 실제 메일이 나가지 않습니다. 여러 행을 선택하면 안내창이 너무 길어지지 않게 앞 5개만 보여주고 나머지 개수를 표시합니다.

미리보기 후보가 0개일 때

  • A열 체크박스가 체크됐는지 확인합니다.
  • F열이 대기, 실패 또는 빈칸인지 확인합니다.
  • 발송완료·발송중·중복 제외 상태는 자동 후보가 아닙니다.
  • 중복 제외 상태는 원인을 고친 뒤 선택 실패행 대기로 돌리기를 먼저 실행합니다.
Step 12

선택 메일 발송과 결과 확인

published

Step 12

선택 메일 발송과 결과 확인

원주 ICT 빅데이터 고급

본인 주소로 목록 발송 1통 실행

1. A2만 체크된 상태인지 다시 확인합니다.

2. 이메일 발송 도구 > 4. 선택 메일 발송을 누릅니다.

3. “1개 행을 발송합니다” 확인창에서 를 누릅니다.

4. 완료 안내가 나올 때까지 시트를 닫지 않습니다.

5. A2, F2, G2, H2의 결과를 확인합니다.

성공한 행의 변화

발송 전발송 후
A 발송선택TRUEFALSE
F 상태대기발송완료
G 발송일시빈칸실제 발송 시각
H 오류빈칸빈칸

실패한 행의 변화

상황F 상태H 오류 예시
이메일 형식이 잘못됨실패이메일 주소 형식 확인
제목이 비어 있음실패제목 누락 확인
본문이 비어 있음실패본문 누락 확인
계정·정책·할당량 오류실패MailApp이 반환한 오류 메시지

재발송 방지 확인

발송완료 행의 A2를 다시 체크해도 선택 발송 후보에서 제외됩니다. 같은 안내를 다시 보내야 한다면 기존 성공 기록을 지우기보다 새 행에 새 제목과 발송 사유를 작성하는 편이 이력 관리에 안전합니다.

Step 13

이름 개인화·HTML·발신자 설정 바꾸기

published

Step 13

이름 개인화·HTML·발신자 설정 바꾸기

원주 ICT 빅데이터 고급

1. 이름 개인화

D열과 E열의 {{이름}}은 B열 값으로 바뀝니다.

B열 이름D열 원본실제 제목
김하늘{{이름}}님 참가 안내김하늘님 참가 안내
빈칸{{이름}}님 참가 안내참가자님 참가 안내

2. 줄바꿈이 있는 HTML 본문

스크립트는 E열의 일반 텍스트를 먼저 HTML 특수문자 처리한 뒤 줄바꿈을 <br>로 바꿉니다. 따라서 수강생은 HTML 태그를 직접 작성하지 않아도 줄바꿈이 있는 메일을 보낼 수 있습니다. HTML을 표시하지 못하는 수신 환경에는 같은 내용의 일반 텍스트 body도 함께 전달됩니다.

3. 발신자 표시 이름 변경

Code.gs 위쪽 값을 수정합니다.

javascript

const EMAIL_SENDER_NAME = '우리 부서 교육운영팀';

이 값은 수신함에 보이는 표시 이름입니다. 실제 발신 이메일 주소는 권한을 승인한 Google 계정입니다.

4. 회신 받을 주소 설정

회신을 담당자 공용 주소로 받고 싶다면 아래 값을 입력합니다.

javascript

const REPLY_TO_EMAIL = 'education@example.com';

실습에서는 존재하지 않는 예시 주소를 그대로 쓰지 않습니다. 실제로 확인 가능한 주소가 있을 때만 입력합니다. 수정했다면 저장 후 본인 메일 테스트를 다시 실행해 회신 주소를 확인합니다.

Step 14

발송 한도·중복·실패행 안전하게 관리

published

Step 14

발송 한도·중복·실패행 안전하게 관리

원주 ICT 빅데이터 고급

남은 한도 먼저 확인

이메일 발송 도구 > 5. 남은 발송 한도 확인을 누르면 현재 계정이 오늘 더 보낼 수 있는 수신자 수를 표시합니다. 한 통의 To·CC·BCC에 여러 사람이 있으면 사람 수만큼 차감될 수 있습니다.

Google이 공개한 일반적인 일일 수신자 한도는 개인 Gmail과 Google Workspace가 서로 다르며 정책에 따라 바뀔 수 있습니다. 현재 공식 문서에는 개인 Gmail 100명, Google Workspace 1,500명이 안내되어 있지만, 수업에서는 계정 종류와 관계없이 5명 이하 소량 테스트만 합니다. 실제 운영 전에는 공식 할당량 문서를 다시 확인합니다.

코드의 네 가지 중복 방지 장치

장치막는 문제
확인창실수로 메뉴를 누른 즉시 대량 발송
문서 잠금 LockService두 사람이 같은 시트에서 동시에 실행
발송중 선기록발송 직후 중단됐을 때 자동 재시도
발송완료 후보 제외성공한 행을 다시 체크해도 재발송

같은 실행 안에서 이메일과 제목이 완전히 같은 행이 두 개면 첫 행만 보내고 뒤 행을 중복 제외로 표시합니다.

실패·중복 제외 행 다시 준비

1. H열 오류를 읽습니다.

2. 이메일, 제목 또는 본문을 수정합니다.

3. 고친 행의 A열을 체크합니다.

4. 6. 선택 실패행 대기로 돌리기를 누릅니다.

5. 상태가 대기로 바뀌고 체크가 해제됐는지 확인합니다.

6. 다시 체크하고 미리보기부터 진행합니다.

발송중이 오래 남아 있을 때

발송중은 자동 초기화하지 않습니다. Gmail 보낸편지함에서 해당 수신자와 제목을 검색한 뒤, 보냈다면 발송완료로 수동 기록하고 보내지 않았다면 대기로 바꿉니다. 확인 없이 재발송하면 중복 메일이 될 수 있습니다.

Step 15

오류 해결과 제출 체크리스트

published

Step 15

오류 해결과 제출 체크리스트

원주 ICT 빅데이터 고급

오류 해결표

증상 또는 메시지원인해결 방법
이메일 발송 도구 메뉴 없음저장·새로고침 누락Code.gs 저장 후 시트 F5
함수 또는 구문 오류코드 일부 누락·따옴표 변형전체 코드 다시 복사, 첫 줄·마지막 줄 확인
테스트 메일 발송 실패 안내창계정 권한·주소·정책 또는 회신 주소 문제안내창의 원문 오류를 확인하고 해당 항목 수정
권한 승인 화면이 반복됨다른 Google 계정으로 열었거나 승인 미완료시트 소유 계정 확인 후 다시 승인
이메일 주소 형식 확인C열 주소 오타·공백·@ 누락주소를 다시 입력
발송 후보 0개체크 안 됨 또는 상태가 발송완료·발송중A열과 F열 확인
한 번에 최대 5명 안내실습 안전 수보다 많이 체크함체크를 5개 이하로 줄여 나누어 발송
남은 수신자 한도 부족선택 수가 잔여 한도보다 큼선택 수를 줄이거나 다음 날 실행
Service invoked too many timesApps Script 또는 Gmail 할당량 초과발송 중단 후 공식 할당량 확인
메일이 수신함에 없음스팸 분류·수신 정책·주소 오타보낸편지함, 스팸함, 주소 확인
외부 메일만 실패회사·학교 정책 제한Workspace 관리자 정책 확인
중복 제외같은 실행의 이메일+제목 중복중복 행 삭제 또는 제목·대상 확인
발송중이 계속 남음발송 후 시트 기록 전 실행 중단 가능Gmail 보낸편지함 확인 후 수동 판단

제출 체크리스트

제출 항목완료 기준
메일발송목록8개 열과 체크박스가 있음
본인 테스트테스트 메일 1통을 받은 화면 또는 확인 기록
선택 발송본인 주소 행이 발송완료 상태
발송일시G열에 실제 날짜와 시간이 표시됨
개인화제목 또는 본문에서 {{이름}}이 실제 이름으로 바뀜
오류 실험잘못된 이메일 한 행이 실패로 기록된 것을 확인한 뒤 수정
안전 점검다른 수강생 실제 주소와 민감정보가 없음

운영 범위 구분

상황적합한 방법
개인·소규모 팀의 안내 메일, 수십 명 이하Google Sheets + MailApp
사내 계정 정책 안의 정기 소량 발송Apps Script + 승인된 트리거·검수 절차
많은 수신자, 반송 추적, 구독 해지, 발송 도메인 관리Resend 같은 전문 발송 서비스와 별도 백엔드

이번 실습의 완성은 대량 메일을 보내는 것이 아니라 표로 대상 준비 → 본인 테스트 → 미리보기 → 선택 발송 → 상태 기록 → 실패 복구의 업무 흐름을 안전하게 구현하는 것입니다.

Step 16

선택 확장 과제로 업무 흐름 완성

published

Step 16

선택 확장 과제로 업무 흐름 완성

원주 ICT 빅데이터 고급

선택 과제 1: 교육 안내 3단계 만들기

새 행 3개에 같은 본인 이메일을 넣고 제목을 서로 다르게 작성합니다.

단계제목 예시발송 시점
참가 확정[교육] 참가가 확정되었습니다신청 승인 직후
사전 안내[교육] 내일 준비물을 확인해 주세요교육 전날
만족도 조사[교육] 참여 후 설문을 부탁드립니다교육 종료 후

한 번에 세 행을 발송하지 말고 각각 미리보기로 문맥을 확인합니다.

선택 과제 2: 상태별 필터 만들기

1. A1:H열을 선택합니다.

2. 데이터 > 필터 만들기를 누릅니다.

3. F열에서 실패만 필터링합니다.

4. H열 오류를 읽고 수정 대상 목록을 만듭니다.

5. 발송완료만 필터링해 오늘 발송 건수를 확인합니다.

선택 과제 3: 실제 운영 전 체크 열 추가

I열에 검수자, J열에 검수일시를 추가합니다. 발송 담당자와 검수 담당자가 다르다면 제목·본문·수신자 확인을 누가 했는지 기록할 수 있습니다. 코드는 A~H열만 사용하므로 I열 이후를 추가해도 기본 발송은 동작합니다.

자동 발송을 바로 붙이지 않는 이유

시간 트리거를 만들면 사람이 마지막으로 수신자와 본문을 확인하지 않아도 실행될 수 있습니다. 자동화는 편리하지만, 발송 대상이 있는 업무에서는 승인·중복·오류 복구 규칙을 먼저 정해야 합니다. 수동 흐름이 안정적으로 운영된 뒤에만 별도 검토를 거쳐 자동화를 확장합니다.

마무리 질문

1. 우리 업무에서 메일 한 행에 꼭 필요한 열은 무엇인가요?

2. 발송완료 기록을 누가 확인해야 하나요?

3. 잘못된 주소와 중복 발송을 어떤 절차로 막을 수 있나요?

4. MailApp으로 충분한 규모와 전문 메일 서비스가 필요한 규모의 경계는 어디인가요?

Module 21practice필수

Apps Script 쉬운 실습 5: 문의 게시판 AI 답변 봇

Google Form 문의 게시판을 만들고 Gemini API로 자동 분류와 답변 초안을 생성한 뒤, 사람이 검토해 메일로 발송하는 전체 흐름을 완성합니다.

11 steps

Step 1

완성 결과와 처리 흐름 이해

published

Step 1

완성 결과와 처리 흐름 이해

원주 ICT 빅데이터 고급

오늘 만들 것

Google Form으로 접수된 문의를 Gemini AI가 자동 분류하고 답변 초안까지 작성하면, 사람이 초안을 검토·수정한 뒤 버튼 한 번으로 답변 메일을 발송하는 문의 처리 시스템입니다.

복사용 텍스트

문의자: Google Form 제출
   ↓ (자동으로 시트에 쌓임)
담당자: [2. 새 문의 분류·답변 초안 만들기] 실행
   ↓ (Gemini가 분류 + 답변 초안 작성)
담당자: 초안을 읽고 수정 (가장 중요한 단계)

담당자: 체크 후 [4. 선택 답변 발송]

문의자: 답변 메일 수신

완성 화면에서 할 수 있는 일

메뉴하는 일시트에 남는 결과
1. 결과 열 준비하기분류·답변초안·상태 등 결과 열 생성E~J열 헤더와 서식
2. 새 문의 분류·답변 초안 만들기미처리 문의를 Gemini API로 분류·초안 작성분류, 답변초안, 상태 초안완료
3. 선택 답변 미리보기체크한 행의 수신자·분류·답변 확인실제 발송 없음
4. 선택 답변 발송체크한 초안완료 행만 메일 발송발송완료·발송일시 기록
5. 남은 발송 한도 확인오늘 더 보낼 수 있는 수신자 수 확인안내창 표시

반드시 지킬 안전 원칙

1. AI 초안은 읽지 않고 발송하지 않습니다. 검토·수정 후 체크한 행만 발송됩니다.

2. 처음에는 본인 이메일로 제출한 테스트 문의로만 연습합니다.

3. 문의 내용에 주민등록번호, 건강정보 같은 민감정보를 넣지 않습니다.

4. API 키는 코드에 넣지 않고 Apps Script 사용자 속성에 저장합니다. GitHub·문서·공개 채팅에 키를 올리지 않습니다.

5. AI가 금액·날짜를 지어낼 수 있으므로, 초안의 사실 관계는 사람이 확인합니다.

이 실습이 특별한 이유

앞의 쉬운 실습들이 하나씩 연습한 조각 — 분류(실습 1), 시트 기록(실습 3), 메일 발송(실습 4) — 을 하나의 업무 흐름으로 연결하고, 여기에 처음으로 Gemini API 호출이 더해집니다. 오전 AI Studio Chat에서 손으로 실험했던 프롬프트가 코드 안에 들어가 자동으로 실행되는 것을 확인하게 됩니다.

Step 2

Google Form으로 문의 게시판 만들기

published

Step 2

Google Form으로 문의 게시판 만들기

원주 ICT 빅데이터 고급

새 폼 만들기

1. 브라우저 주소창에 forms.new를 입력합니다.

2. 폼 제목을 문의 게시판으로 바꿉니다.

3. 설명에 "문의를 남겨 주시면 확인 후 이메일로 답변드립니다."를 입력합니다.

문항 3개 만들기

순서문항유형필수
1이름단답형
2답변받을 이메일단답형
3문의 내용장문형

문항 순서를 바꾸지 않습니다. 이 순서대로 시트의 B, C, D열이 되고, 스크립트가 열 위치를 그대로 사용합니다.

문의 유형 문항이 없는 이유

보통의 문의 폼은 "문의 유형을 선택하세요" 문항을 넣습니다. 이 실습에서는 일부러 뺐습니다 — 유형 분류가 AI의 일이기 때문입니다. 문의자는 유형을 고민할 필요 없이 하고 싶은 말만 쓰고, 분류는 접수 쪽에서 자동으로 처리됩니다. 사용자의 입력 부담을 줄이는 것도 자동화의 효과입니다.

이메일을 문항으로 받는 이유

폼 설정의 "이메일 주소 수집" 기능은 Google 계정 로그인을 요구할 수 있습니다. 실습에서는 누구나 제출할 수 있도록 일반 단답형 문항으로 이메일을 받습니다. 실제 운영에서는 조직 정책에 맞게 선택하면 됩니다.

Step 3

응답을 Google Sheets에 연결하기

published

Step 3

응답을 Google Sheets에 연결하기

원주 ICT 빅데이터 고급

응답 시트 연결

1. 폼 편집 화면 상단의 응답 탭을 누릅니다.

2. 오른쪽의 Sheets에 연결(초록 시트 아이콘)을 누릅니다.

3. 새 스프레드시트 만들기를 선택하고 이름을 문의 게시판 응답으로 합니다.

4. 만들어진 스프레드시트를 엽니다.

5. 아래쪽 시트 탭 이름(예: "설문지 응답 시트1")을 더블클릭해 문의접수로 바꿉니다.

시트 탭 이름이 문의접수가 아니면 스크립트가 시트를 찾지 못합니다. 오타 없이 바꿔 주세요.

열 구조 확인

폼 응답이 쌓이는 열은 A~D이고, 스크립트가 E~J열을 추가로 사용합니다.

제목누가 채우나요?
A타임스탬프폼이 자동 기록
B이름문의자
C답변받을 이메일문의자
D문의 내용문의자
E분류Gemini AI
F답변초안Gemini AI가 쓰고, 사람이 수정
G발송선택담당자가 체크
H상태스크립트 (초안완료, 발송완료, 실패)
I발송일시스크립트
J오류스크립트

테스트 문의 제출

폼 편집 화면 오른쪽 위 미리보기(눈 모양)를 눌러 실제 폼을 열고, 본인 이름과 본인 이메일로 테스트 문의 1건을 제출합니다. 시트에 한 행이 자동으로 나타나는지 확인하세요.

문의 내용 예시:

복사용 텍스트

지난주에 신청한 교육 과정 교재가 아직 도착하지 않았습니다. 언제쯤 받을 수 있을까요?
Step 4

Gemini API 키와 비용 이해

published

Step 4

Gemini API 키와 비용 이해

원주 ICT 빅데이터 고급

API 키란

API 키는 AI를 코드에서 호출할 때 쓰는 출입증입니다. 오전에 AI Studio Chat에서는 화면에 로그인해서 썼지만, 코드가 Gemini를 부르려면 키가 필요합니다. 키는 비밀번호처럼 다룹니다 — 외부에 공유하거나 공개 게시판에 올리지 않습니다.

이번 실습의 키 저장 방식

다음 스텝의 코드에는 API 키가 들어 있지 않습니다. 코드를 저장한 뒤 Google Sheets의 문의 답변 도구 > 0. Gemini API 키 등록 메뉴에서 키를 한 번 입력합니다. 입력한 값은 현재 Google 사용자의 Apps Script 사용자 속성에 저장되며 시트 셀이나 코드에는 표시되지 않습니다.

강사가 수업용 임시 키를 별도로 안내한 경우에도 같은 메뉴로 등록하고, 수업 뒤에는 임시 키를 삭제합니다. GitHub, Learn 교안, 메신저 공개방에는 키를 붙여넣지 않습니다.

본인 키 발급 방법

1. https://aistudio.google.com/apikey에 접속합니다.

2. API 키 만들기를 누릅니다.

3. 만들어진 키를 복사합니다.

4. 시트의 문의 답변 도구 > 0. Gemini API 키 등록을 눌러 입력합니다.

5. 키가 노출되었다면 AI Studio에서 삭제하고 새로 발급합니다.

어떤 모델을 쓰나요

항목이유
모델gemini-3.1-flash-lite현재 Gemini 라인업에서 가장 저렴한 텍스트 모델
온도0.2답변 형식이 일정해야 업무에 쓸 수 있음 (오전 이론 복습)
출력 형식JSON 고정분류와 답변을 코드가 안정적으로 읽기 위함

비용 감각

문의 1건 처리에 드는 토큰은 수백 개 수준입니다. flash-lite 요금 기준으로 문의 수천 건을 처리해도 몇십 원 단위라서, 이런 소규모 업무 자동화에서 API 비용은 사실상 걱정할 필요가 없습니다. 다만 키 소유 계정으로 과금되므로, 운영 시에는 사용량 한도를 설정해 두는 것이 안전합니다.

Step 5

Apps Script 열기와 전체 코드 붙여넣기

published

Step 5

Apps Script 열기와 전체 코드 붙여넣기

원주 ICT 빅데이터 고급

편집기 열기

1. 문의 게시판 응답 스프레드시트에서 확장 프로그램 > Apps Script를 누릅니다.

2. 프로젝트 이름을 문의 답변 봇으로 바꿉니다.

3. Code.gs의 기본 코드를 전체 삭제합니다.

4. 아래 코드를 첫 줄부터 마지막 줄까지 전체 복사해 붙여넣고 저장합니다.

javascript

const INQUIRY_SHEET_NAME = '문의접수';
const GEMINI_API_KEY_PROPERTY = 'GEMINI_API_KEY';
const GEMINI_MODEL = 'gemini-3.1-flash-lite';
const REPLY_SENDER_NAME = '원주 ICT 문의 담당';
const INQUIRY_CATEGORIES = ['제품/서비스 문의', '가격/견적', '배송/일정', '불만/개선', '기타'];
const RESULT_HEADERS = ['분류', '답변초안', '발송선택', '상태', '발송일시', '오류'];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('문의 답변 도구')
    .addItem('0. Gemini API 키 등록', 'setGeminiApiKey')
    .addSeparator()
    .addItem('1. 결과 열 준비하기', 'setupInquiryColumns')
    .addItem('2. 새 문의 분류·답변 초안 만들기', 'draftNewInquiries')
    .addItem('3. 선택 답변 미리보기', 'previewSelectedReplies')
    .addItem('4. 선택 답변 발송', 'sendSelectedReplies')
    .addSeparator()
    .addItem('5. 남은 발송 한도 확인', 'showRemainingQuota')
    .addToUi();
}

function setGeminiApiKey() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.prompt(
    'Gemini API 키 등록',
    'AI Studio에서 발급한 키를 입력하세요. 키는 현재 Google 사용자의 Apps Script 사용자 속성에 저장됩니다.',
    ui.ButtonSet.OK_CANCEL
  );
  if (response.getSelectedButton() !== ui.Button.OK) return;

  const apiKey = response.getResponseText().trim();
  if (apiKey.length < 20) {
    ui.alert('API 키가 너무 짧습니다. 값을 다시 확인해 주세요.');
    return;
  }

  PropertiesService.getUserProperties().setProperty(GEMINI_API_KEY_PROPERTY, apiKey);
  ui.alert('Gemini API 키를 사용자 속성에 저장했습니다. 코드와 시트에는 표시되지 않습니다.');
}

function getGeminiApiKey() {
  const apiKey = PropertiesService.getUserProperties().getProperty(GEMINI_API_KEY_PROPERTY);
  if (!apiKey) {
    throw new Error('문의 답변 도구 > 0. Gemini API 키 등록을 먼저 실행하세요.');
  }
  return apiKey;
}

function setupInquiryColumns() {
  const sheet = getInquirySheet();
  sheet.getRange(1, 5, 1, RESULT_HEADERS.length).setValues([RESULT_HEADERS]);
  sheet
    .getRange(1, 1, 1, 4 + RESULT_HEADERS.length)
    .setBackground('#1d4ed8')
    .setFontColor('white')
    .setFontWeight('bold')
    .setHorizontalAlignment('center');
  sheet.setFrozenRows(1);
  sheet.setColumnWidth(4, 360);
  sheet.setColumnWidth(5, 130);
  sheet.setColumnWidth(6, 420);
  sheet.setColumnWidth(8, 100);
  sheet.setColumnWidth(9, 160);
  sheet.setColumnWidth(10, 260);

  const lastRow = sheet.getLastRow();
  if (lastRow >= 2) {
    sheet.getRange(2, 4, lastRow - 1, 1).setWrap(true);
    sheet.getRange(2, 6, lastRow - 1, 1).setWrap(true);
    sheet.getRange(2, 7, lastRow - 1, 1).insertCheckboxes();
  }

  SpreadsheetApp.getUi().alert(
    '결과 열 E~J를 준비했습니다. 이제 "2. 새 문의 분류·답변 초안 만들기"를 실행하세요.'
  );
}

function draftNewInquiries() {
  const ui = SpreadsheetApp.getUi();
  const sheet = getInquirySheet();
  const lastRow = sheet.getLastRow();
  if (lastRow < 2) {
    ui.alert('처리할 문의가 없습니다. 먼저 폼으로 테스트 문의를 제출해 보세요.');
    return;
  }

  const values = sheet.getRange(2, 1, lastRow - 1, 10).getValues();
  const targets = [];
  values.forEach(function(row, index) {
    const inquiry = String(row[3] || '').trim();
    const status = String(row[7] || '').trim();
    if (!inquiry) return;
    if (status === '' || status === '실패') {
      targets.push({
        rowNumber: index + 2,
        name: String(row[1] || '').trim(),
        inquiry: inquiry
      });
    }
  });

  if (targets.length === 0) {
    ui.alert('새로 처리할 문의가 없습니다. 상태가 비어 있거나 실패인 행만 처리 대상입니다.');
    return;
  }

  const batch = targets.slice(0, 10);
  let successCount = 0;
  let failureCount = 0;

  batch.forEach(function(target) {
    try {
      const result = callGeminiForInquiry(target.name, target.inquiry);
      sheet.getRange(target.rowNumber, 5, 1, 2).setValues([[result.category, result.reply]]);
      sheet.getRange(target.rowNumber, 6).setWrap(true);
      sheet.getRange(target.rowNumber, 7).insertCheckboxes();
      sheet.getRange(target.rowNumber, 8).setValue('초안완료');
      sheet.getRange(target.rowNumber, 10).clearContent();
      successCount += 1;
    } catch (error) {
      sheet.getRange(target.rowNumber, 8).setValue('실패');
      sheet
        .getRange(target.rowNumber, 10)
        .setValue(String(error && error.message ? error.message : error).slice(0, 400));
      failureCount += 1;
    }
    Utilities.sleep(400);
  });

  const remaining = targets.length - batch.length;
  ui.alert(
    'AI 초안 작성이 끝났습니다.\n\n성공: ' +
      successCount +
      '개\n실패: ' +
      failureCount +
      '개' +
      (remaining > 0 ? '\n남은 문의: ' + remaining + '개 (메뉴를 다시 실행하세요)' : '') +
      '\n\n초안은 반드시 읽고 수정한 뒤 발송하세요.'
  );
}

function callGeminiForInquiry(name, inquiry) {
  const apiKey = getGeminiApiKey();

  const prompt =
    '당신은 친절하고 신중한 고객 문의 담당자입니다.\n' +
    '아래 문의를 읽고 두 가지를 만드세요.\n\n' +
    '1) category: [' + INQUIRY_CATEGORIES.join(', ') + '] 중 하나만 선택\n' +
    '2) reply: 존댓말 한국어 3~5문장의 답변 초안\n' +
    '   - 확정할 수 없는 금액, 날짜, 보상은 약속하지 말고 "확인 후 다시 안내드리겠습니다"라고 쓰세요.\n' +
    '   - 문의에 없는 사실을 지어내지 마세요.\n\n' +
    '반드시 JSON 형식으로만 출력하세요: {"category":"...","reply":"..."}\n\n' +
    '문의자 이름: ' + (name || '고객') + '\n' +
    '문의 내용: ' + inquiry;

  const payload = {
    contents: [{ parts: [{ text: prompt }] }],
    generationConfig: { temperature: 0.2, responseMimeType: 'application/json' }
  };

  const response = UrlFetchApp.fetch(
    'https://generativelanguage.googleapis.com/v1beta/models/' + GEMINI_MODEL + ':generateContent',
    {
      method: 'post',
      contentType: 'application/json',
      headers: { 'x-goog-api-key': apiKey },
      payload: JSON.stringify(payload),
      muteHttpExceptions: true
    }
  );

  const code = response.getResponseCode();
  const bodyText = response.getContentText();
  if (code !== 200) {
    let message = 'HTTP ' + code;
    try {
      const errorData = JSON.parse(bodyText);
      if (errorData.error && errorData.error.message) message += ': ' + errorData.error.message;
    } catch (ignored) {}
    throw new Error('Gemini API 오류 — ' + message);
  }

  const data = JSON.parse(bodyText);
  const parts =
    data.candidates &&
    data.candidates[0] &&
    data.candidates[0].content &&
    data.candidates[0].content.parts;
  if (!parts || parts.length === 0) throw new Error('Gemini 응답에 내용이 없습니다.');

  const text = parts
    .map(function(part) {
      return part.text || '';
    })
    .join('');
  const parsed = JSON.parse(text);
  const category =
    INQUIRY_CATEGORIES.indexOf(String(parsed.category || '').trim()) !== -1
      ? String(parsed.category).trim()
      : '기타';
  const reply = String(parsed.reply || '').trim();
  if (!reply) throw new Error('답변 초안이 비어 있습니다.');

  return { category: category, reply: reply };
}

function previewSelectedReplies() {
  const ui = SpreadsheetApp.getUi();
  const targets = getSendableReplyRows(getInquirySheet());
  if (targets.length === 0) {
    ui.alert('미리 볼 행이 없습니다. G열을 체크하고 상태가 초안완료인지 확인하세요.');
    return;
  }

  const previews = targets.slice(0, 5).map(function(target) {
    return (
      target.rowNumber +
      '행 | ' +
      (target.email || '(이메일 미입력)') +
      ' | ' +
      target.category +
      '\n답변: ' +
      target.reply.slice(0, 160) +
      (target.reply.length > 160 ? '...' : '')
    );
  });
  const more = targets.length > 5 ? '\n\n외 ' + (targets.length - 5) + '개 행' : '';

  ui.alert(
    '선택 답변 미리보기',
    '발송 후보: ' + targets.length + '개\n\n' + previews.join('\n\n---\n\n') + more,
    ui.ButtonSet.OK
  );
}

function sendSelectedReplies() {
  const ui = SpreadsheetApp.getUi();
  const sheet = getInquirySheet();
  const targets = getSendableReplyRows(sheet);
  if (targets.length === 0) {
    ui.alert('발송할 행이 없습니다. G열 체크와 상태(초안완료)를 확인하세요.');
    return;
  }

  const answer = ui.alert(
    '선택 답변 발송 확인',
    targets.length + '개 답변을 발송합니다. 초안을 모두 읽고 수정했나요?',
    ui.ButtonSet.YES_NO
  );
  if (answer !== ui.Button.YES) return;

  if (MailApp.getRemainingDailyQuota() < targets.length) {
    ui.alert('오늘 남은 발송 한도가 부족합니다. 선택 수를 줄이거나 내일 발송하세요.');
    return;
  }

  let successCount = 0;
  let failureCount = 0;

  targets.forEach(function(target) {
    const row = target.rowNumber;
    if (!isValidEmail(target.email)) {
      sheet.getRange(row, 8).setValue('실패');
      sheet.getRange(row, 10).setValue('이메일 주소 형식 확인');
      failureCount += 1;
      return;
    }

    sheet.getRange(row, 8).setValue('발송중');
    SpreadsheetApp.flush();

    try {
      const name = target.name || '고객';
      MailApp.sendEmail({
        to: target.email,
        subject: '[답변] ' + name + '님 문의에 대한 안내 (' + target.category + ')',
        body:
          name +
          '님, 안녕하세요.\n\n' +
          target.reply +
          '\n\n추가로 궁금한 점이 있으면 이 메일에 회신해 주세요.\n감사합니다.\n' +
          REPLY_SENDER_NAME,
        name: REPLY_SENDER_NAME
      });
      sheet.getRange(row, 7).setValue(false);
      sheet.getRange(row, 8).setValue('발송완료');
      sheet.getRange(row, 9).setValue(new Date()).setNumberFormat('yyyy-mm-dd hh:mm:ss');
      sheet.getRange(row, 10).clearContent();
      successCount += 1;
    } catch (error) {
      sheet.getRange(row, 8).setValue('실패');
      sheet
        .getRange(row, 10)
        .setValue(String(error && error.message ? error.message : error).slice(0, 400));
      failureCount += 1;
    }
    Utilities.sleep(250);
  });

  ui.alert(
    '발송이 끝났습니다.\n\n성공: ' +
      successCount +
      '개\n실패: ' +
      failureCount +
      '개\n남은 일일 수신자 한도: ' +
      MailApp.getRemainingDailyQuota()
  );
}

function getSendableReplyRows(sheet) {
  if (sheet.getLastRow() < 2) return [];

  const values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 10).getValues();
  return values
    .map(function(row, index) {
      return {
        rowNumber: index + 2,
        name: String(row[1] || '').trim(),
        email: String(row[2] || '').trim(),
        category: String(row[4] || '').trim(),
        reply: String(row[5] || '').trim(),
        selected: row[6] === true,
        status: String(row[7] || '').trim()
      };
    })
    .filter(function(row) {
      return row.selected && row.status === '초안완료' && row.reply;
    });
}

function showRemainingQuota() {
  SpreadsheetApp.getUi().alert(
    '현재 계정의 오늘 남은 수신자 발송 한도는 ' + MailApp.getRemainingDailyQuota() + '명입니다.'
  );
}

function isValidEmail(value) {
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(value || '').trim());
}

function getInquirySheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  if (!ss) throw new Error('Google Sheets에서 이 스크립트를 실행하세요.');
  const sheet = ss.getSheetByName(INQUIRY_SHEET_NAME);
  if (!sheet) throw new Error('시트 탭 이름을 "' + INQUIRY_SHEET_NAME + '"로 바꿔 주세요.');
  return sheet;
}

347줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

붙여넣은 뒤 확인

  • 첫 줄이 const INQUIRY_SHEET_NAME인지 확인합니다.
  • 마지막 줄이 getInquirySheet 함수의 닫는 중괄호인지 확인합니다.
  • 저장 후 빨간 오류 표시가 없는지 확인합니다.
Step 6

코드 지도와 AI 호출 흐름 이해

published

Step 6

코드 지도와 AI 호출 흐름 이해

원주 ICT 빅데이터 고급

코드 전체 지도

코드 부분역할안전장치
GEMINI_API_KEY_PROPERTY사용자 속성에서 키를 찾는 이름실제 키는 코드·시트에 없음
setGeminiApiKey메뉴에서 키를 안전하게 등록현재 Google 사용자의 속성에 저장
getGeminiApiKey호출 직전에 저장된 키 읽기미등록이면 실행 중단과 안내
INQUIRY_CATEGORIES분류 선택지 5종AI가 다른 값을 내면 기타로 처리
onOpen시트 상단 메뉴 생성메뉴로 정해진 함수만 실행
setupInquiryColumns결과 열 E~J 준비A~D 폼 데이터는 건드리지 않음
draftNewInquiries미처리 문의를 AI로 분류·초안 작성한 번에 10건까지, 상태 있는 행 제외
callGeminiForInquiryGemini API 호출과 JSON 해석오류 코드·빈 응답을 실패로 기록
previewSelectedReplies발송 전 내용 확인메일을 호출하지 않음
sendSelectedReplies체크한 초안완료 행만 발송확인창, 한도 검사, 발송중 선기록
getSendableReplyRows발송 후보 선별발송완료 행 재발송 차단

AI 호출 한 건의 처리 순서

1. D열 문의 내용과 B열 이름을 읽습니다.

2. 프롬프트에 분류 선택지, 답변 규칙, JSON 출력 형식을 담아 Gemini에 보냅니다.

3. 응답 JSON에서 categoryreply를 꺼냅니다.

4. 분류가 선택지에 없으면 기타로 바꿉니다 (AI 출력 검증).

5. E열에 분류, F열에 답변 초안을 쓰고 상태를 초안완료로 기록합니다.

6. 실패하면 상태를 실패로, J열에 원인을 남깁니다.

프롬프트가 어디서 왔는지 보세요

callGeminiForInquiry 안의 프롬프트를 읽어 보면 오전 AI Studio 실습에서 배운 구조 그대로입니다 — 역할 부여, 분류 기준 고정, 출력 형식 고정, 검증 조건. 오전에는 사람이 Chat 화면에 붙여넣었고, 지금은 코드가 같은 일을 자동으로 합니다. 온도 0.2로 낮춘 이유도 오전 이론과 같습니다: 업무 자동화는 답이 일정해야 하기 때문입니다.

Step 7

저장·권한 승인·결과 열 준비

published

Step 7

저장·권한 승인·결과 열 준비

원주 ICT 빅데이터 고급

1. 저장하고 메뉴 표시

1. Apps Script에서 저장을 누릅니다.

2. 문의 게시판 응답 시트 탭으로 돌아가 브라우저를 새로고침(F5)합니다.

3. 2~5초 뒤 상단에 문의 답변 도구 메뉴가 보이는지 확인합니다.

2. 처음 한 번 권한 승인

1. 문의 답변 도구 > 1. 결과 열 준비하기를 누릅니다.

2. 승인 화면이 나오면 권한 검토를 누르고 시트를 만든 본인 계정을 선택합니다.

3. 확인되지 않은 앱 안내가 나오면 고급 > 문의 답변 봇으로 이동을 누릅니다.

4. 요청 권한을 읽고 허용을 누릅니다.

이번 실습은 두 가지 권한을 요청합니다.

권한왜 필요한가요?
외부 서비스 연결Gemini API 호출 (UrlFetchApp)
메일 발송답변 메일 발송 (MailApp)

3. 결과 열 확인

승인 뒤 실행이 멈췄다면 1. 결과 열 준비하기를 다시 누릅니다. 정상이면:

  • E1~J1에 분류, 답변초안, 발송선택, 상태, 발송일시, 오류 헤더가 생깁니다.
  • 헤더 행이 파란색으로 바뀌고 고정됩니다.
  • 기존 문의 행의 G열에 체크박스가 생깁니다.

권한 승인 전 확인할 것

  • 프로젝트 이름과 코드가 본인이 방금 만든 것인지 확인합니다.
  • 알 수 없는 사람이 공유한 스크립트에는 권한을 주지 않습니다.
  • 회사·학교 계정에서 차단되면 개인 Google 계정을 사용합니다.
Step 8

AI 분류·답변 초안 실행

published

Step 8

AI 분류·답변 초안 실행

원주 ICT 빅데이터 고급

실행 전 준비

폼으로 제출한 테스트 문의가 시트에 1건 이상 있어야 합니다. 없다면 폼 미리보기에서 본인 이메일로 2~3건 제출하세요. 서로 다른 유형이면 분류를 비교하기 좋습니다.

복사용 텍스트

문의 1: 교육 과정 수강료가 얼마인가요? 단체 할인도 있나요?
문의 2: 지난주 주문한 교재가 아직 안 왔어요. 배송 조회 부탁드립니다.
문의 3: 지난 교육에서 실습 시간이 너무 짧았습니다. 개선해 주세요.

실행

1. 문의 답변 도구 > 2. 새 문의 분류·답변 초안 만들기를 누릅니다.

2. 완료 안내창에서 성공·실패 개수를 확인합니다.

3. 시트에서 결과를 확인합니다.

확인할 내용
E 분류가격/견적, 배송/일정, 불만/개선처럼 내용에 맞는 분류
F 답변초안존댓말 3~5문장, 확정 금액·날짜를 약속하지 않는 문구
H 상태초안완료

분류가 잘 됐는지 살펴보기

같은 메뉴를 다시 눌러도 초안완료 행은 건너뜁니다 — 상태가 비어 있거나 실패인 행만 처리하므로 중복 호출로 비용이 새지 않습니다. 분류가 이상한 행이 있다면 그 문의가 정말 애매한 내용인지 읽어 보세요. 사람도 헷갈리는 문의는 AI도 헷갈립니다. 그래서 마지막 판단은 항상 사람의 몫입니다.

한 번에 10건까지 처리하는 이유

Apps Script는 한 번의 실행 시간에 제한이 있고, API 호출이 많으면 그만큼 오래 걸립니다. 문의가 10건 넘게 쌓였다면 안내창의 남은 개수를 보고 메뉴를 다시 실행하면 됩니다.

Step 9

초안 검토·수정 후 선택 발송

published

Step 9

초안 검토·수정 후 선택 발송

원주 ICT 빅데이터 고급

가장 중요한 단계: 사람의 검토

F열의 답변 초안을 문의자에게 실제로 보낼 문장이라고 생각하고 읽으세요.

검토 항목확인 질문
사실 관계초안이 언급한 정책·절차가 실제와 맞는가?
약속확정되지 않은 금액·날짜·보상을 약속하지 않았는가?
어조불만 문의에 충분히 공감하는 어조인가?
구체성우리 회사 상황에 맞는 안내로 고칠 부분은 없는가?

셀을 더블클릭해 초안을 직접 수정하면 됩니다. 수정한 내용이 그대로 발송됩니다.

발송 순서

1. 답변을 보낼 행의 G열 체크박스를 체크합니다. (첫 테스트는 본인 이메일 행 1개만)

2. 문의 답변 도구 > 3. 선택 답변 미리보기로 수신자·분류·답변을 확인합니다.

3. 문의 답변 도구 > 4. 선택 답변 발송을 누르고 확인창에서 를 누릅니다.

4. 본인 받은편지함에서 답변 메일을 확인합니다.

발송 후 시트의 변화

발송 전발송 후
G 발송선택체크됨해제됨
H 상태초안완료발송완료
I 발송일시빈칸실제 발송 시각

받은 메일 확인표

항목정상 결과
제목[답변] 이름님 문의에 대한 안내 (분류)
본문검토·수정한 답변 + 회신 안내 문구
발신자 표시 이름원주 ICT 문의 담당

발송완료 행은 다시 체크해도 발송 후보에서 제외되므로 같은 답변이 두 번 나가지 않습니다.

Step 10

오류 해결과 제출 체크리스트

published

Step 10

오류 해결과 제출 체크리스트

원주 ICT 빅데이터 고급

오류 해결표

증상 또는 메시지원인해결 방법
문의 답변 도구 메뉴 없음저장·새로고침 누락Code.gs 저장 후 시트 F5
시트 탭 이름을 "문의접수"로 바꿔 주세요응답 시트 탭 이름이 다름시트 탭 이름을 문의접수로 변경
Gemini API 오류 — HTTP 400키 값이 잘리거나 잘못 등록됨0. Gemini API 키 등록 메뉴에서 다시 입력
Gemini API 오류 — HTTP 403키가 삭제·차단됨 (수업 키는 7/15 삭제)본인 키를 발급해 교체
Gemini API 오류 — HTTP 404모델 이름 오타GEMINI_MODEL 값 확인
Gemini API 오류 — HTTP 429짧은 시간에 호출이 몰림1~2분 뒤 다시 실행
JSON 파싱 오류AI가 형식을 벗어난 응답해당 행 상태가 실패로 남으므로 메뉴 재실행
새로 처리할 문의가 없습니다모든 행이 초안완료·발송완료정상 — 새 문의 제출 후 실행
발송할 행이 없습니다G열 미체크 또는 상태가 초안완료 아님체크와 H열 확인
이메일 주소 형식 확인문의자가 이메일을 잘못 입력C열 수정 후 상태를 지우고 재처리
권한 승인 화면 반복다른 계정으로 열었음시트 소유 계정으로 다시 승인

제출 체크리스트

제출 항목완료 기준
문의 게시판 폼문항 3개(이름·이메일·문의 내용)
응답 시트 연결문의접수 탭에 A~J열 구조
AI 분류·초안테스트 문의에 분류와 답변초안이 채워짐
검토·수정초안을 한 군데 이상 직접 수정
답변 발송본인 이메일로 답변 메일 수신
안전 점검다른 수강생 실제 주소·민감정보 없음

운영 범위 구분

상황적합한 방법
소규모 팀의 문의 접수·답변 (일 수십 건)이 실습 구조 그대로
문의량이 많고 담당자가 여럿상태·담당자 열 추가, 권한 분리 검토
대외 서비스 수준의 고객센터전문 헬프데스크 도구와 별도 백엔드 검토
Step 11

확장 과제와 마무리

published

Step 11

확장 과제와 마무리

원주 ICT 빅데이터 고급

선택 과제 1: 분류 기준을 우리 업무에 맞추기

코드 상단의 분류 선택지를 실제 업무 유형으로 바꿔 보세요.

javascript

const INQUIRY_CATEGORIES = ['견적 요청', '기술 지원', 'A/S 접수', '제휴 제안', '기타'];

바꾼 뒤 새 문의를 제출하고 초안 만들기를 실행하면, 프롬프트에 새 선택지가 자동으로 들어갑니다. 분류 기준을 정하는 것은 사람의 설계 영역이라는 점을 확인하세요.

선택 과제 2: 답변 어조 바꾸기

callGeminiForInquiry의 프롬프트에서 "존댓말 한국어 3~5문장"을 "매우 정중한 존댓말로, 첫 문장은 반드시 감사 인사"처럼 바꿔 보세요. 프롬프트 한 줄이 모든 답변의 어조를 바꿉니다 — 오전에 배운 프롬프트 구조화가 코드에서도 그대로 통합니다.

선택 과제 3: 라이브 접수 데모

폼 링크를 QR 코드로 만들어 동료들에게 공유하고, 여러 문의가 실시간으로 쌓이는 상태에서 분류·초안·발송 흐름을 시연해 보세요. 폼 보내기 버튼 옆에서 링크를 복사할 수 있습니다.

자동 발송을 붙이지 않는 이유

onFormSubmit 트리거를 쓰면 문의 접수 즉시 AI가 초안을 만들고 자동으로 발송하게 만들 수도 있습니다. 하지만 이 실습에서는 일부러 사람의 검토를 사이에 두었습니다. AI 초안은 검토가 필요한 초안이고(이론 강의 10장), 회사 이름으로 나가는 답변의 책임은 사람에게 있기 때문입니다. 자동화할 부분과 사람이 지킬 부분을 나누는 것이 좋은 설계입니다.

마무리 — 오늘 하루가 이 한 장에 있습니다

오늘 배운 것이 실습에서 쓰인 곳
AI Studio 프롬프트 구조화 (오전)코드 속 분류·답변 프롬프트
시트 = 데이터 저장소 (이론 강의)문의접수 시트의 열 구조
AI 앱 vs 업무 앱의 분업 (이론 강의)판단은 Gemini, 기록·발송은 규칙 코드
데이터 검증 (실습 1~3)분류 검증, 이메일 형식 검사
메일 발송 (실습 4)답변 발송과 상태 기록

마무리 질문:

1. 우리 회사 문의 유형 5가지는 무엇인가요?

2. AI 초안에서 사람이 반드시 확인해야 할 항목은 무엇인가요?

3. 이 구조를 문의 외에 어떤 접수 업무에 응용할 수 있을까요?

Module 22practice필수

AI Studio Build 실습: 문의 운영 대시보드

앞 실습의 문의접수 시트 데이터를 AI Studio Build로 만든 운영 대시보드에서 검색·필터·미발송 관리·통계로 확인합니다.

11 steps

Step 1

완성 결과와 역할 분담 이해

published

Step 1

완성 결과와 역할 분담 이해

원주 ICT 빅데이터 고급

오늘 만들 것

앞 실습(문의 게시판 AI 답변 봇)에서 데이터는 시트에 잘 쌓이기 시작했습니다. 문의가 많아지면 시트를 직접 뒤지는 대신 운영자용 화면이 필요해집니다. 이번 실습에서는 Google AI Studio Build로 문의 운영 대시보드를 만듭니다.

완성 화면에서 할 수 있는 일

기능하는 일
통계 카드전체 문의, 발송완료, 미발송, 실패 건수를 한눈에
분류 차트5가지 분류별 문의 수 막대 차트
검색이름·이메일·문의 내용으로 찾기
상태 필터초안완료 / 발송완료 / 실패만 골라 보기
미발송만 보기아직 답변이 나가지 않은 문의만 표시
상세 보기행을 누르면 문의 전문과 답변초안 확인

역할 분담 — 이론 강의가 그대로 실현됩니다

역할담당 도구
데이터 접수·저장Google Form + Sheets데이터가 쌓이는 곳
판단·자동화·발송Apps Script + Gemini업무 규칙과 AI 초안
운영자 화면AI Studio Build화면 생성이 가장 빠른 도구

이론 강의 20장의 결론 — "화면·AI 실험은 AI Studio, 데이터·자동화는 Apps Script" — 이 한 문장이 이번 실습의 설계도입니다. 두 도구는 별개지만(13장), 같은 시트 데이터를 사이에 두고 협업할 수 있습니다.

이 대시보드는 읽기 전용입니다

Build로 만든 앱은 시트에 쓰지는 못하고 읽기만 합니다. 상태 변경과 발송은 앞 실습의 시트 메뉴가 담당합니다. 왜 이렇게 나누는지는 마지막 스텝에서 다시 정리합니다.

Step 2

대시보드 요구사항과 데이터 구조 정의

published

Step 2

대시보드 요구사항과 데이터 구조 정의

원주 ICT 빅데이터 고급

코드보다 먼저: 요구사항 한 장

이론 강의 18장(만들기 전에 설계할 것)의 질문에 이 대시보드로 답해 봅니다.

질문이 대시보드의 답
누가 사용하는가?문의 담당 운영자 (내부용)
어떤 문제를 해결하는가?시트를 뒤지지 않고 처리 현황을 한눈에
어떤 데이터를 입력하는가?문의접수 시트의 CSV
어떤 결과를 보여주는가?건수 통계, 분류 차트, 검색·필터된 목록
누가 수정할 수 있는가?아무도 — 읽기 전용 화면
오류가 나면?잘못된 CSV는 안내 메시지 표시

데이터 구조 — 앞 실습의 열을 그대로 사용

앞 실습 시트의 10개 열이 이 대시보드의 데이터 사양입니다.

복사용 텍스트

타임스탬프, 이름, 답변받을 이메일, 문의 내용, 분류,
답변초안, 발송선택, 상태, 발송일시, 오류
대시보드 기능사용하는 열
통계 카드상태
분류 차트분류
검색이름, 답변받을 이메일, 문의 내용
미발송 목록상태 = 초안완료
상세 보기문의 내용, 답변초안, 발송일시, 오류

화면 스케치

복사용 텍스트

┌─────────────────────────────────────────┐
│ [전체 15] [발송완료 8] [미발송 5] [실패 2]  │  ← 통계 카드
├─────────────────────────────────────────┤
│ 분류별 문의 수 ▇▇▇▇ 막대 차트              │
├─────────────────────────────────────────┤
│ 🔍 검색 ___  [전체|초안완료|발송완료|실패]  │  ← 검색 + 필터
│ □ 미발송만 보기                           │
├─────────────────────────────────────────┤
│ 접수일시 | 이름 | 분류 | 상태 | 문의 요약   │  ← 목록
│  (행 클릭 → 오른쪽 상세 패널)              │
└─────────────────────────────────────────┘

설계가 이 정도 구체적이면 AI에게 요청할 준비가 된 것입니다 — 이론 강의 19장에서 배운 "AI에게 요청할 때 포함할 내용"이 전부 모였습니다.

Step 3

데이터 준비: 시트 CSV 또는 샘플 CSV

published

Step 3

데이터 준비: 시트 CSV 또는 샘플 CSV

원주 ICT 빅데이터 고급

방법 A: 내 문의접수 시트에서 다운로드 (권장)

앞 실습을 완료했다면 본인 데이터를 씁니다.

1. 문의 게시판 응답 스프레드시트에서 문의접수 탭을 엽니다.

2. 파일 > 다운로드 > 쉼표로 구분된 값(.csv)을 누릅니다.

3. 현재 탭만 CSV로 저장됩니다.

문의가 3건뿐이어도 괜찮지만, 대시보드가 풍성해 보이려면 폼으로 문의를 5건 이상 제출하고 초안 만들기·발송까지 섞어 두면 좋습니다.

방법 B: 샘플 CSV 다운로드

앞 실습을 건너뛰었거나 데이터가 부족하면 아래 샘플을 받습니다. 문의 15건이 들어 있고 발송완료 8건, 초안완료(미발송) 5건, 실패 2건, 5가지 분류가 골고루 섞여 있습니다.

CSV를 메모장으로 열어 확인

다운로드한 CSV를 메모장(또는 텍스트 편집기)으로 열어 첫 행이 아래 헤더인지 확인합니다.

복사용 텍스트

타임스탬프,이름,답변받을 이메일,문의 내용,분류,답변초안,발송선택,상태,발송일시,오류

문의 내용에 쉼표가 있으면 그 칸은 따옴표("...")로 감싸져 있습니다 — 이것이 정상적인 CSV 규칙이고, 다음 스텝의 프롬프트에서 AI에게 이 규칙대로 파싱하라고 요청합니다.

개인정보 점검

Build 앱에 붙여넣는 데이터는 AI Studio 환경으로 전송됩니다. 실습에서는 테스트 데이터만 사용하고, 실제 고객의 이름·이메일이 담긴 운영 데이터는 조직의 정책을 확인한 뒤에 다룹니다.

첨부파일

문의 대시보드 샘플 CSV

문의 15건 — 발송완료 8, 미발송 5, 실패 2건과 5가지 분류가 섞인 대시보드 실습용 데이터입니다.

inquiry_dashboard_sample.csv

다운로드
Step 4

AI Studio Build에서 첫 화면 생성

published

Step 4

AI Studio Build에서 첫 화면 생성

원주 ICT 빅데이터 고급

Build 열기

1. https://aistudio.google.com에 접속합니다.

2. 왼쪽 메뉴에서 Build를 누릅니다. (공식 가이드)

3. 새 앱 프롬프트 입력창에 아래 전체를 붙여넣고 실행합니다.

메인 프롬프트

복사용 텍스트

교육 문의 운영 대시보드를 React 웹앱으로 만들어줘.

목적: Google Sheets로 관리하는 문의 접수 데이터를 운영 담당자가 한눈에 보는 내부용 화면.

데이터 입력 방법:
- 화면 상단에 접을 수 있는 "데이터 불러오기" 영역을 만들고, 큰 붙여넣기 칸(textarea)과 [불러오기] 버튼을 넣어줘.
- CSV 첫 행은 헤더: 타임스탬프, 이름, 답변받을 이메일, 문의 내용, 분류, 답변초안, 발송선택, 상태, 발송일시, 오류
- 문의 내용처럼 쉼표가 들어간 칸은 따옴표로 감싸져 있으니 표준 CSV 규칙으로 파싱해줘.
- 날짜 열은 변환하지 말고 문자열 그대로 표시하고, 형식이 달라도 앱이 멈추지 않게 해줘.
- 데이터가 없을 때는 사용 방법 안내를 보여줘.

화면 구성 (위에서 아래 순서):
1) 통계 카드 4개: 전체 문의, 발송완료, 미발송(상태가 초안완료), 실패
2) 분류별 문의 수 가로 막대 차트: 제품/서비스 문의, 가격/견적, 배송/일정, 불만/개선, 기타
3) 검색창: 이름·이메일·문의 내용에서 부분 일치 검색
4) 상태 필터 버튼: 전체 / 초안완료 / 발송완료 / 실패
5) "미발송만 보기" 토글 스위치
6) 문의 목록 표: 접수일시, 이름, 분류, 상태 배지, 문의 내용 앞 50자
7) 행을 클릭하면 오른쪽에 상세 패널: 문의 전문, 답변초안, 발송일시, 오류

스타일:
- 밝고 깔끔한 내부 운영 도구 느낌, 한국어 UI
- 상태 배지 색: 초안완료=노란색, 발송완료=초록색, 실패=빨간색
- 검색·필터·토글은 동시에 적용되고, 결과 건수를 목록 위에 표시해줘

24줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

생성 결과 확인

오른쪽 Preview 탭에 빈 대시보드와 데이터 불러오기 영역이 보이면 성공입니다. 처음 생성된 화면이 스케치와 조금 달라도 괜찮습니다 — 다음 스텝들에서 데이터를 넣고 다듬습니다.

Step 5

CSV 붙여넣기와 파싱 확인

published

Step 5

CSV 붙여넣기와 파싱 확인

원주 ICT 빅데이터 고급

데이터 넣기

1. 준비한 CSV 파일을 메모장으로 엽니다.

2. 전체 선택(Ctrl+A) > 복사(Ctrl+C) 합니다.

3. Build 미리보기의 붙여넣기 칸에 붙여넣고 [불러오기]를 누릅니다.

확인 체크리스트

확인 위치정상 결과 (샘플 CSV 기준)
전체 문의 카드15
발송완료 카드8
미발송 카드5
실패 카드2
분류 차트5개 분류에 막대가 모두 표시
목록15행, 상태 배지 색 구분

자주 나오는 파싱 문제와 해결 프롬프트

숫자가 맞지 않거나 행이 깨져 보이면, 화면을 직접 고치려 하지 말고 Build 대화창에 증상을 그대로 말합니다.

복사용 텍스트

문의 내용에 쉼표가 있는 행이 두 칸으로 쪼개져서 표가 밀려 보여.
따옴표로 감싼 CSV 칸을 표준 규칙대로 파싱하도록 고쳐줘.

복사용 텍스트

헤더 행이 데이터 행으로 같이 표에 나오고 있어. 첫 행은 헤더로만 사용해줘.

복사용 텍스트

빈 칸(발송일시, 오류)이 undefined로 표시돼. 빈 칸은 그냥 비워서 보여줘.

오류를 고치는 것도 프롬프트로 — 이것이 AI 코딩의 기본 리듬입니다. 유튜브 다운로드 실습에서 Cursor 에이전트에게 오류문을 붙여넣던 것과 같은 방식입니다.

Step 6

기능 다듬기: 검색·필터·미발송·통계

published

Step 6

기능 다듬기: 검색·필터·미발송·통계

원주 ICT 빅데이터 고급

하나씩 시험하고, 부족하면 프롬프트로 요청

기능 4가지를 순서대로 시험합니다. 기대와 다르게 동작하는 것만 골라 아래 프롬프트를 사용하세요.

1. 검색 시험

검색창에 교재를 입력 → 배송 문의 1건이 나와야 합니다.

복사용 텍스트

검색이 이름만 되는 것 같아. 이름, 이메일, 문의 내용 세 곳 모두에서
부분 일치로 검색되게 하고, 검색어를 지우면 전체가 다시 보이게 해줘.

2. 상태 필터 시험

실패 버튼 → 2건(이메일 형식 오류, API 429)이 나와야 합니다.

복사용 텍스트

상태 필터를 눌러도 목록이 안 바뀌어. 필터 버튼과 검색, 미발송 토글이
동시에 적용되도록 고치고, 지금 적용된 조건을 목록 위에 표시해줘.

3. 미발송 목록 시험

미발송만 보기 토글 → 초안완료 5건만 남아야 합니다. 이것이 운영자가 매일 아침 확인할 화면입니다 — "오늘 답변 나가야 할 문의가 몇 건인가".

복사용 텍스트

미발송 목록에 접수일시가 오래된 문의가 위로 오게 정렬해줘.
오래 기다린 문의부터 처리해야 하니까.

4. 상세 패널 시험

아무 행이나 클릭 → 문의 전문과 답변초안이 보여야 합니다.

복사용 텍스트

상세 패널에서 답변초안이 없는 행은 "아직 초안이 없습니다"라고 표시하고,
실패 행은 오류 내용을 빨간 상자로 강조해줘.

다듬기를 멈추는 기준

체크리스트 4가지가 모두 통과하면 멈춥니다. 화면을 계속 다듬고 싶어지지만, 내부 운영 도구는 정확한 숫자와 빠른 검색이 전부입니다. 예쁘게 만드는 것은 남는 시간에 합니다.

Step 7

확장: 시트 웹에 게시로 자동 연결

published

Step 7

확장: 시트 웹에 게시로 자동 연결

원주 ICT 빅데이터 고급

붙여넣기 없이 시트에서 바로 읽기

지금은 시트가 바뀔 때마다 CSV를 다시 붙여넣어야 합니다. Google Sheets의 웹에 게시 기능을 쓰면 대시보드가 시트를 URL로 직접 읽을 수 있습니다.

1. 시트 게시

1. 문의 게시판 응답 스프레드시트에서 파일 > 공유 > 웹에 게시를 누릅니다.

2. 첫 칸에서 문의접수 시트만 선택합니다 (전체 문서 아님).

3. 두 번째 칸에서 쉼표로 구분된 값(.csv)을 선택합니다.

4. 게시를 누르고 만들어진 URL을 복사합니다.

> 먼저 읽어 주세요 — 게시된 URL은 링크를 아는 누구나 볼 수 있습니다. 테스트 데이터라서 실습에서는 괜찮지만, 실제 고객 데이터가 담긴 시트는 이 방법을 쓰기 전에 반드시 조직의 정책을 확인하세요. 실습이 끝나면 같은 메뉴에서 게시 중지를 눌러 되돌립니다.

2. Build 앱에 URL 불러오기 추가

복사용 텍스트

CSV 붙여넣기 외에 URL로 불러오는 방법을 추가해줘.

- 데이터 불러오기 영역에 "게시된 CSV 주소" 입력칸과 [주소에서 불러오기] 버튼 추가
- 버튼을 누르면 그 주소에서 CSV를 받아 지금과 같은 방식으로 파싱
- 성공한 주소는 기억해 두고, 화면 상단에 [새로고침] 버튼을 만들어
  누르면 같은 주소에서 다시 불러오게 해줘
- 불러오기에 실패하면 "주소를 확인하거나 붙여넣기 방식을 사용하세요"라고 안내

3. 실시간 운영 흐름 시험

1. 대시보드에서 [주소에서 불러오기]로 시트 데이터를 띄웁니다.

2. 시트로 가서 폼 테스트 문의를 1건 더 제출하거나 상태를 바꿉니다.

3. 대시보드의 [새로고침]을 누릅니다.

4. 숫자와 목록이 바뀌는 것을 확인합니다.

시트(데이터)와 Build 앱(화면)이 처음으로 살아 있는 연결이 된 순간입니다. 게시 반영에 몇 분 걸릴 수 있으니 바로 안 바뀌면 잠시 뒤 다시 새로고침하세요.

Step 8

운영 시나리오로 전체 흐름 검증

published

Step 8

운영 시나리오로 전체 흐름 검증

원주 ICT 빅데이터 고급

두 실습을 하나의 업무로 연결해 봅니다

창을 두 개 띄웁니다 — 왼쪽: 문의접수 시트, 오른쪽: Build 대시보드.

순서어디서하는 일대시보드에서 확인할 것
1새 테스트 문의 제출새로고침 → 전체 +1, 미발송 그대로(아직 초안 없음)
2시트 메뉴2. 새 문의 분류·답변 초안 만들기새로고침 → 미발송 +1, 분류 차트 변화
3시트F열 초안 검토·수정— (사람의 판단 단계)
4시트 메뉴4. 선택 답변 발송새로고침 → 미발송 -1, 발송완료 +1

아침 운영 루틴 시뮬레이션

운영자가 된 셈 치고 이 순서로 화면을 사용해 봅니다.

1. 대시보드를 열고 미발송만 보기 — 오늘 처리할 문의 확인

2. 실패 필터 — 원인(J열 오류)을 보고 시트에서 수정

3. 불만/개선 분류 검색 — 반복되는 불만이 있는지 확인

4. 분류 차트 — 이번 주 문의가 어디에 몰리는지 확인

여기서 보이는 것

같은 데이터를 두고 시트는 처리하는 곳, 대시보드는 파악하는 곳으로 역할이 나뉘었습니다. 이론 강의 2장에서 "업무는 데이터의 흐름"이라고 했던 것이 접수 → 검증 → 저장 → 조회 → 공유의 실물로 완성됐습니다.

Step 9

한계 이해와 확장 방향

published

Step 9

한계 이해와 확장 방향

원주 ICT 빅데이터 고급

이 대시보드가 못 하는 것

못 하는 것이유지금의 해결책
시트에 쓰기 (상태 변경 등)게시 URL은 읽기 전용쓰기는 시트 메뉴가 담당
실시간 자동 갱신게시 반영에 지연이 있음새로고침 버튼
로그인·권한 구분Build 프로토타입 범위 밖내부 공유만, 민감 데이터 금지

쓰기까지 하려면 무엇이 필요한가

대시보드에서 직접 "발송" 버튼을 누르고 싶다면 화면이 데이터에 쓸 수 있어야 합니다. 그 순간 필요한 것들 — 진짜 데이터베이스, 권한 관리, 서버 — 이 바로 이론 강의 20장 표의 마지막 행("대규모·외부 서비스 → 전문 웹 개발과 데이터베이스")입니다.

복사용 텍스트

지금:   Build 화면 → (읽기) → Google Sheets ← (쓰기) ← Apps Script
확장:   화면 → (읽기·쓰기) → Supabase(DB) ← 서버 로직

내일 배우는 Supabase·Vercel이 정확히 이 확장입니다. 오늘 시트로 익힌 "행=기록, 열=속성" 구조가 내일 진짜 DB 테이블이 되고, 오늘 읽기 전용이던 화면이 내일은 읽고 쓰는 앱이 됩니다.

AI Studio Build의 다른 연결 방법

Build는 Gemini API 호출을 내장할 수 있어서, 대시보드 안에 "이번 주 문의 요약" 같은 AI 기능을 넣는 것도 가능합니다. 다만 화면에서 API 키를 다루는 문제(키 노출)가 생기므로, 이번 과정에서는 AI 호출은 Apps Script 쪽에 두는 구성을 기본으로 했습니다. 관심 있는 분은 확장 과제로 시도해 보세요.

Step 10

오류 해결과 제출 체크리스트

published

Step 10

오류 해결과 제출 체크리스트

원주 ICT 빅데이터 고급

오류 해결표

증상원인해결 방법
통계 숫자가 0CSV가 파싱되지 않음헤더 행 포함 전체를 붙여넣었는지 확인
표가 옆으로 밀림쉼표 포함 칸 파싱 실패파싱 수정 프롬프트 사용 (5번 스텝)
미발송 수가 이상함상태 문자열 불일치"상태가 정확히 초안완료인 행만 세어줘" 프롬프트
한글이 깨짐CSV 인코딩 문제시트에서 다시 다운로드 (UTF-8) 또는 샘플 CSV 사용
URL 불러오기 실패게시 안 됨 또는 주소 오류웹에 게시 상태와 CSV 형식 선택 확인
새로고침해도 안 바뀜게시 반영 지연1~2분 뒤 다시 새로고침
Preview가 하얗게 멈춤생성 코드 오류Build 대화창에 "미리보기가 안 떠. 오류를 고쳐줘"

제출 체크리스트

제출 항목완료 기준
대시보드 화면통계 카드 4개와 분류 차트가 데이터와 일치
검색이름·이메일·문의 내용 검색 동작 화면 캡처
미발송 목록초안완료만 표시된 화면 캡처
상세 보기문의 전문과 답변초안이 보이는 화면 캡처
확장(선택)게시 URL 새로고침으로 시트 변경이 반영된 화면
안전 점검실제 개인정보 없음, 실습 후 웹에 게시 중지

캡처는 학습 대시보드의 개인 자료실에, 잘 동작한 프롬프트는 이 스텝의 개인 메모에 보관하세요.

Step 11

확장 과제와 마무리

published

Step 11

확장 과제와 마무리

원주 ICT 빅데이터 고급

선택 과제 1: 우리 업무용으로 바꾸기

분류 5종과 통계 카드를 본인 업무의 용어로 바꿔 보세요. 앞 실습에서 INQUIRY_CATEGORIES를 바꿨다면 대시보드도 같은 분류로 맞춥니다.

복사용 텍스트

분류를 [견적 요청, 기술 지원, A/S 접수, 제휴 제안, 기타]로 바꾸고
차트와 필터도 새 분류에 맞춰줘.

선택 과제 2: 주간 리포트 화면

복사용 텍스트

"주간 요약" 탭을 추가해줘. 접수일시 기준으로 최근 7일 문의 수,
분류별 증감, 평균 처리 흐름(접수→발송완료 비율)을 카드로 보여줘.

선택 과제 3: AI 요약 실험 (심화)

Build 앱에 Gemini 호출을 넣어 "미발송 문의 전체를 3줄로 요약" 버튼을 만들어 보세요. Build가 API 연동 코드를 생성해 줍니다. 단, 화면에 키를 넣는 방식의 위험(키 노출)을 앞 실습에서 배운 대로 기억하고, 실험용 키로만 시도합니다.

두 실습이 완성한 그림

복사용 텍스트

문의자 ──폼──▶ Google Sheets ◀──메뉴── 운영자
                 │      ▲
                 │      └─ Apps Script (분류·초안·발송)

          AI Studio Build 대시보드 (검색·필터·통계)
오늘 쓴 도구맡은 역할과정에서 배운 곳
Google Form접수 창구실습 5
Google Sheets데이터 저장소이론 강의 14장
Apps Script규칙 자동화 + AI 호출쉬운 실습 1~5
Gemini API판단이 필요한 초안실습 5
AI Studio Build운영자 화면이 실습

마무리 질문

1. 우리 팀 운영 화면에 꼭 필요한 통계 카드 4개는 무엇인가요?

2. 읽기 전용 화면으로 충분한 업무와, 쓰기가 필요한 업무는 어떻게 다른가요?

3. 내일 Supabase를 배우면 이 구조에서 무엇을 바꾸고 싶나요?

Module 23practice필수

캡스톤 1: 사업비·지출 관리 대시보드

예산편성·지출내역·증빙현황 3개 표와 240건의 합성 데이터를 Apps Script로 만들고, AI Studio Build에서 예산 소진율과 증빙 누락을 관리하는 앱을 완성합니다.

15 steps

Step 1

캡스톤 결과물과 전체 데이터 흐름 이해

published

Step 1

캡스톤 결과물과 전체 데이터 흐름 이해

원주 ICT 빅데이터 고급

이번 캡스톤에서 만들 것

부서별 예산표, 실제 지출 내역, 증빙 제출 상태를 한곳에 모아 예산이 얼마나 남았는지어떤 지출을 먼저 확인해야 하는지 보여주는 운영 대시보드를 만듭니다.

복사용 텍스트

Apps Script
  ├─ 예산 30행 생성
  ├─ 지출 240행 생성
  ├─ 증빙 240행 생성
  └─ 예산요약 30행 계산

Google Sheets = 업무 데이터 저장소

Google AI Studio Build
  ├─ 예산 소진율 KPI
  ├─ 부서·분류 필터
  ├─ 월별 지출 차트
  ├─ 증빙 누락 목록
  └─ 상세 지출 검색

앞 실습에서 확장되는 지점

앞에서 한 실습이번 캡스톤에서 확장되는 내용
지출 자동 분류15건이 아니라 240건을 분류·집계
데이터 품질 점검금액·증빙·승인 상태를 함께 검토
Google Sheets한 표가 아니라 3개 표를 지출ID로 연결
AI Studio Build샘플 화면이 아니라 실제 시트를 읽는 운영 화면

완성 기준

1. Google Sheets에 4개 시트가 만들어집니다.

2. 예산 30행, 지출 240행, 증빙 240행이 생성됩니다.

3. 예산요약에서 집행액·잔액·소진율·증빙누락을 확인합니다.

4. AI Studio 앱에서 부서와 분류를 바꾸면 모든 지표가 함께 갱신됩니다.

5. 원본 시트의 값을 바꾼 뒤 새로고침하면 앱에도 반영됩니다.

Step 2

데이터 모델과 연결 기준 설계

published

Step 2

데이터 모델과 연결 기준 설계

원주 ICT 빅데이터 고급

사용할 시트 4개

시트한 행의 의미기본키·연결키
예산편성부서×분류별 한 해 예산예산키
지출내역한 번의 지출지출ID, 예산키
증빙현황지출 1건의 증빙 상태지출ID
예산요약예산 대비 집행 결과예산키

왜 표를 나누나요

예산은 1년에 한 번 정하지만 지출은 계속 늘어납니다. 증빙 상태도 지출 금액과 별도로 바뀝니다. 서로 다른 성격의 데이터를 한 시트에 모두 넣으면 같은 예산이 수백 번 반복되고 수정하기 어려워집니다.

복사용 텍스트

예산편성.예산키 1 ───── N 지출내역.예산키
지출내역.지출ID 1 ───── 1 증빙현황.지출ID

이렇게 공통 열로 표를 붙이는 작업을 JOIN(조인)이라고 합니다. 이번 실습에서는 Apps Script가 조인과 집계를 대신 수행합니다.

개인정보 원칙

  • 모든 부서명·담당자·지출은 교육용 합성 데이터입니다.
  • 실제 계좌번호, 카드번호, 주민등록번호, 거래처 개인정보를 입력하지 않습니다.
  • 처음 만든 AI Studio 앱은 조회 전용으로 구성합니다.
Step 3

새 Google Sheets와 Apps Script 프로젝트 준비

published

Step 3

새 Google Sheets와 Apps Script 프로젝트 준비

원주 ICT 빅데이터 고급

Google Sheets 만들기

1. 브라우저 주소창에 sheets.new를 입력합니다.

2. 문서 이름을 사업비 지출 캡스톤으로 바꿉니다.

3. 기본 시트 이름은 그대로 두어도 됩니다. 스크립트가 필요한 시트를 자동으로 만듭니다.

4. 상단에서 확장 프로그램 > Apps Script를 누릅니다.

5. 프로젝트 이름을 사업비 지출 데이터 도구로 바꿉니다.

6. Code.gs의 기본 myFunction 코드를 모두 지웁니다.

메뉴 실행 순서

전체 코드를 붙여넣으면 시트 상단에 사업비 캡스톤 메뉴가 생깁니다.

메뉴실행 결과
1. 샘플 데이터 240건 만들기4개 시트와 합성 데이터 생성
2. 예산요약 다시 계산현재 시트 값을 읽어 요약 갱신
3. 데이터 품질 확인연결되지 않은 행·금액 오류·증빙 누락 확인

샘플 생성은 기존 실습 데이터를 지우므로 처음 한 번만 실행합니다. 이후에는 요약 다시 계산을 사용합니다.

Step 4

사업비 캡스톤 전체 Apps Script 붙여넣기

published

Step 4

사업비 캡스톤 전체 Apps Script 붙여넣기

원주 ICT 빅데이터 고급

Code.gs 전체 교체

아래 코드를 첫 줄부터 마지막 줄까지 복사해 Code.gs에 붙여넣고 저장합니다.

javascript

const BUDGET_SHEETS = {
  budget: '예산편성',
  expense: '지출내역',
  evidence: '증빙현황',
  summary: '예산요약'
};

const BUDGET_DEPARTMENTS = ['학생지원팀', '교육운영팀', '기획팀', '홍보팀', '시설관리팀'];
const BUDGET_CATEGORIES = ['교육비', '회의비', '홍보비', '소모품비', '교통비', '시설비'];
const BUDGET_PROJECTS = ['신입생지원', '직무교육', '지역행사', '홍보콘텐츠', '시설개선'];
const BUDGET_OWNERS = ['김담당', '이주임', '박연구원', '최매니저', '정코디'];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('사업비 캡스톤')
    .addItem('1. 샘플 데이터 240건 만들기', 'createBudgetCapstoneData')
    .addItem('2. 예산요약 다시 계산', 'rebuildBudgetSummary')
    .addItem('3. 데이터 품질 확인', 'checkBudgetDataQuality')
    .addToUi();
}

function createBudgetCapstoneData() {
  const ui = SpreadsheetApp.getUi();
  const answer = ui.alert(
    '샘플 데이터 만들기',
    '예산편성·지출내역·증빙현황·예산요약 시트의 기존 내용을 지우고 다시 만듭니다.',
    ui.ButtonSet.OK_CANCEL
  );
  if (answer !== ui.Button.OK) return;

  const random = makeSeededRandom(20260713);
  const budgets = [];
  BUDGET_DEPARTMENTS.forEach(function(department, departmentIndex) {
    BUDGET_CATEGORIES.forEach(function(category, categoryIndex) {
      const base = 1800000 + departmentIndex * 250000 + categoryIndex * 100000;
      const budgetAmount = Math.round((base + random() * 1600000) / 10000) * 10000;
      budgets.push([
        makeBudgetKey(department, category),
        department,
        category,
        budgetAmount,
        BUDGET_OWNERS[departmentIndex]
      ]);
    });
  });

  const descriptions = {
    '교육비': ['외부강사 교육비', '온라인 강좌 수강', '워크숍 교재 제작'],
    '회의비': ['운영회의 도시락', '협력기관 간담회', '회의실 대관'],
    '홍보비': ['행사 포스터 제작', '온라인 광고 집행', '홍보 영상 편집'],
    '소모품비': ['복사용지 구입', '프린터 토너 구입', '사무용품 구입'],
    '교통비': ['현장방문 교통비', '출장 기차표', '업무 택시비'],
    '시설비': ['강의실 장비 수리', '안내판 교체', '시설 안전점검']
  };

  const expenses = [];
  const evidences = [];
  for (let index = 0; index < 240; index += 1) {
    const department = BUDGET_DEPARTMENTS[Math.floor(random() * BUDGET_DEPARTMENTS.length)];
    const category = BUDGET_CATEGORIES[Math.floor(random() * BUDGET_CATEGORIES.length)];
    const project = BUDGET_PROJECTS[Math.floor(random() * BUDGET_PROJECTS.length)];
    const date = new Date(2026, Math.floor(index / 20), 1 + (index * 7) % 27);
    const amount = Math.round((40000 + random() * 720000) / 1000) * 1000;
    const expenseId = 'EXP-' + String(index + 1).padStart(4, '0');
    const descriptionList = descriptions[category];
    const description = descriptionList[index % descriptionList.length];
    const approvalStatus = index % 13 === 0 ? '보완요청' : index % 7 === 0 ? '검토중' : '승인';
    const evidenceStatus = index % 11 === 0 ? '미제출' : index % 17 === 0 ? '보완필요' : '제출완료';
    const owner = BUDGET_OWNERS[BUDGET_DEPARTMENTS.indexOf(department)];

    expenses.push([
      expenseId,
      formatBudgetDate(date),
      makeBudgetKey(department, category),
      department,
      category,
      project,
      description,
      amount,
      owner,
      approvalStatus
    ]);
    evidences.push([
      expenseId,
      evidenceStatus,
      evidenceStatus === '미제출' ? '' : expenseId.toLowerCase() + '.pdf',
      evidenceStatus === '제출완료' ? formatBudgetDate(date) : '',
      evidenceStatus === '보완필요' ? '금액 또는 거래일 확인 필요' : ''
    ]);
  }

  writeBudgetSheet(
    BUDGET_SHEETS.budget,
    ['예산키', '부서', '분류', '예산액', '담당자'],
    budgets
  );
  writeBudgetSheet(
    BUDGET_SHEETS.expense,
    ['지출ID', '지출일', '예산키', '부서', '분류', '사업명', '적요', '금액', '담당자', '승인상태'],
    expenses
  );
  writeBudgetSheet(
    BUDGET_SHEETS.evidence,
    ['지출ID', '증빙상태', '파일명', '제출일', '검토메모'],
    evidences
  );
  rebuildBudgetSummary(false);
  formatBudgetSheets();
  ui.alert('예산 30행, 지출 240행, 증빙 240행을 만들었습니다.');
}

function rebuildBudgetSummary(showAlert) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const budgetSheet = ss.getSheetByName(BUDGET_SHEETS.budget);
  const expenseSheet = ss.getSheetByName(BUDGET_SHEETS.expense);
  const evidenceSheet = ss.getSheetByName(BUDGET_SHEETS.evidence);
  if (!budgetSheet || !expenseSheet || !evidenceSheet) {
    SpreadsheetApp.getUi().alert('먼저 샘플 데이터를 만들어 주세요.');
    return;
  }

  const budgets = budgetSheet.getRange(2, 1, budgetSheet.getLastRow() - 1, 5).getValues();
  const expenses = expenseSheet.getRange(2, 1, expenseSheet.getLastRow() - 1, 10).getValues();
  const evidences = evidenceSheet.getRange(2, 1, evidenceSheet.getLastRow() - 1, 5).getValues();
  const evidenceByExpense = {};
  evidences.forEach(function(row) {
    evidenceByExpense[String(row[0])] = String(row[1]);
  });

  const totals = {};
  expenses.forEach(function(row) {
    const budgetKey = String(row[2]);
    const expenseId = String(row[0]);
    if (!totals[budgetKey]) totals[budgetKey] = { amount: 0, count: 0, missing: 0 };
    totals[budgetKey].amount += Number(row[7]) || 0;
    totals[budgetKey].count += 1;
    if (evidenceByExpense[expenseId] !== '제출완료') totals[budgetKey].missing += 1;
  });

  const summaryRows = budgets.map(function(row) {
    const budgetKey = String(row[0]);
    const budgetAmount = Number(row[3]) || 0;
    const total = totals[budgetKey] || { amount: 0, count: 0, missing: 0 };
    const executionRate = budgetAmount ? total.amount / budgetAmount : 0;
    const risk = executionRate >= 1 ? '초과' : executionRate >= 0.85 ? '주의' : '정상';
    return [
      budgetKey,
      row[1],
      row[2],
      budgetAmount,
      total.amount,
      budgetAmount - total.amount,
      executionRate,
      total.count,
      total.missing,
      risk,
      row[4]
    ];
  });

  writeBudgetSheet(
    BUDGET_SHEETS.summary,
    ['예산키', '부서', '분류', '예산액', '집행액', '잔액', '소진율', '지출건수', '증빙확인필요', '위험상태', '담당자'],
    summaryRows
  );
  formatBudgetSheets();
  if (showAlert !== false) SpreadsheetApp.getUi().alert('예산요약을 최신 값으로 다시 계산했습니다.');
}

function checkBudgetDataQuality() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const budgetSheet = ss.getSheetByName(BUDGET_SHEETS.budget);
  const expenseSheet = ss.getSheetByName(BUDGET_SHEETS.expense);
  const evidenceSheet = ss.getSheetByName(BUDGET_SHEETS.evidence);
  if (!budgetSheet || !expenseSheet || !evidenceSheet) {
    SpreadsheetApp.getUi().alert('먼저 샘플 데이터를 만들어 주세요.');
    return;
  }

  const budgetKeys = new Set(
    budgetSheet.getRange(2, 1, budgetSheet.getLastRow() - 1, 1).getValues().flat().map(String)
  );
  const expenses = expenseSheet.getRange(2, 1, expenseSheet.getLastRow() - 1, 10).getValues();
  const evidenceIds = new Set(
    evidenceSheet.getRange(2, 1, evidenceSheet.getLastRow() - 1, 1).getValues().flat().map(String)
  );
  let missingBudgetKey = 0;
  let invalidAmount = 0;
  let missingEvidenceRow = 0;
  expenses.forEach(function(row) {
    if (!budgetKeys.has(String(row[2]))) missingBudgetKey += 1;
    if (!Number.isFinite(Number(row[7])) || Number(row[7]) <= 0) invalidAmount += 1;
    if (!evidenceIds.has(String(row[0]))) missingEvidenceRow += 1;
  });

  SpreadsheetApp.getUi().alert(
    '데이터 품질 결과\n' +
    '- 연결되지 않은 예산키: ' + missingBudgetKey + '건\n' +
    '- 금액 오류: ' + invalidAmount + '건\n' +
    '- 증빙 행 누락: ' + missingEvidenceRow + '건'
  );
}

function writeBudgetSheet(name, headers, rows) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(name) || ss.insertSheet(name);
  sheet.clear();
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  if (rows.length) sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
  sheet.getRange(1, 1, 1, headers.length)
    .setBackground('#0f766e')
    .setFontColor('white')
    .setFontWeight('bold');
  sheet.setFrozenRows(1);
  sheet.getDataRange().setWrap(true);
  sheet.autoResizeColumns(1, headers.length);
}

function formatBudgetSheets() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const budget = ss.getSheetByName(BUDGET_SHEETS.budget);
  const expense = ss.getSheetByName(BUDGET_SHEETS.expense);
  const summary = ss.getSheetByName(BUDGET_SHEETS.summary);
  if (budget && budget.getLastRow() > 1) budget.getRange(2, 4, budget.getLastRow() - 1, 1).setNumberFormat('#,##0');
  if (expense && expense.getLastRow() > 1) expense.getRange(2, 8, expense.getLastRow() - 1, 1).setNumberFormat('#,##0');
  if (summary && summary.getLastRow() > 1) {
    summary.getRange(2, 4, summary.getLastRow() - 1, 3).setNumberFormat('#,##0');
    summary.getRange(2, 7, summary.getLastRow() - 1, 1).setNumberFormat('0.0%');
  }
}

function makeBudgetKey(department, category) {
  return department + '|' + category;
}

function formatBudgetDate(date) {
  return Utilities.formatDate(date, Session.getScriptTimeZone(), 'yyyy-MM-dd');
}

function makeSeededRandom(seed) {
  let value = seed % 2147483647;
  return function() {
    value = value * 16807 % 2147483647;
    return (value - 1) / 2147483646;
  };
}

246줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

저장 후 시간대 확인

Apps Script 왼쪽 프로젝트 설정에서 시간대를 (GMT+09:00) 서울로 맞춥니다. 저장한 뒤 Google Sheets를 새로고침합니다.

Step 5

샘플 240건 생성하고 시트 구조 확인

published

Step 5

샘플 240건 생성하고 시트 구조 확인

원주 ICT 빅데이터 고급

실행 순서

1. Google Sheets를 새로고침합니다.

2. 상단 사업비 캡스톤 > 1. 샘플 데이터 240건 만들기를 누릅니다.

3. 확인창에서 확인을 누릅니다.

4. 처음 실행이라면 Google 계정을 선택하고 권한을 허용합니다.

5. 아래쪽에 4개 시트가 생겼는지 확인합니다.

생성 결과

시트헤더 제외 행 수확인할 열
예산편성30예산키, 예산액, 담당자
지출내역240지출ID, 예산키, 금액, 승인상태
증빙현황240지출ID, 증빙상태, 파일명
예산요약30집행액, 잔액, 소진율, 위험상태

권한 화면이 막힐 때

화면선택
승인 필요권한 검토
Google 계정 선택현재 시트를 만든 계정
Google에서 확인하지 않은 앱고급
프로젝트로 이동사업비 지출 데이터 도구로 이동
요청 권한허용

권한 승인 뒤 결과가 바로 생기지 않으면 같은 메뉴를 한 번 더 실행합니다.

Step 6

예산요약과 데이터 품질 결과 해석

published

Step 6

예산요약과 데이터 품질 결과 해석

원주 ICT 빅데이터 고급

예산요약 읽는 순서

1. 위험상태가 초과인 행을 찾습니다.

2. 초과가 없다면 주의 행을 찾습니다.

3. 증빙확인필요가 큰 행을 찾습니다.

4. 담당자와 부서·분류를 확인합니다.

5. 해당 예산키로 지출내역을 필터링합니다.

핵심 지표

지표계산업무 질문
집행액해당 예산키 지출 합계지금까지 얼마를 썼나
잔액예산액 - 집행액앞으로 얼마를 쓸 수 있나
소진율집행액 ÷ 예산액예산을 너무 빨리 쓰고 있나
증빙확인필요미제출+보완필요 건수어떤 서류부터 챙겨야 하나

데이터 품질 검사

사업비 캡스톤 > 3. 데이터 품질 확인을 실행합니다. 생성 직후에는 연결되지 않은 예산키, 금액 오류, 증빙 행 누락이 모두 0건이어야 합니다.

지출내역의 예산키 한 셀을 임의로 없는부서|기타로 바꾸고 다시 검사해 오류가 1건으로 바뀌는지 확인한 뒤 원래 값으로 되돌립니다.

Step 7

AI Studio Build 앱의 화면 요구사항 작성

published

Step 7

AI Studio Build 앱의 화면 요구사항 작성

원주 ICT 빅데이터 고급

앱 사용자를 먼저 정합니다

이 앱의 사용자는 코드를 보는 개발자가 아니라 매일 예산을 확인하는 행정 담당자입니다. 첫 화면에서 바로 아래 세 질문에 답할 수 있어야 합니다.

1. 전체 예산 중 얼마를 썼나요?

2. 초과 또는 주의 상태인 항목은 무엇인가요?

3. 증빙을 확인해야 할 지출은 무엇인가요?

화면 구성

영역포함할 내용
상단 필터부서, 분류, 위험상태, 기간, 검색
KPI총예산, 총집행, 총잔액, 평균소진율, 증빙확인필요
차트부서별 예산·집행 비교, 월별 지출 추이, 분류별 비중
위험 목록초과·주의 예산키 순위
상세표지출ID, 날짜, 적요, 금액, 승인상태, 증빙상태

디자인 원칙

  • 행정업무 화면답게 조용하고 밀도 있게 구성합니다.
  • 모바일에서도 KPI와 필터가 겹치지 않아야 합니다.
  • 돈은 천 단위 구분과 원 단위로 표시합니다.
  • 소진율은 정상·주의·초과의 색을 구분하되 색만으로 의미를 전달하지 않습니다.
Step 8

AI Studio Build에서 첫 앱 생성

published

Step 8

AI Studio Build에서 첫 앱 생성

원주 ICT 빅데이터 고급

Build 열기

1. https://aistudio.google.com/에 접속합니다.

2. 왼쪽에서 Build를 엽니다.

3. 새 앱을 만들고 아래 프롬프트를 붙여넣습니다.

복사용 텍스트

한국어로 사용하는 "사업비·지출 관리 대시보드"를 만들어줘.

사용자는 대학·기관의 행정 담당자야.
상단에는 부서, 지출분류, 위험상태, 기간, 검색 필터를 배치해줘.
KPI는 총예산, 총집행액, 총잔액, 평균소진율, 증빙확인필요 건수를 보여줘.
본문에는 부서별 예산 대비 집행 막대차트, 월별 지출 추이, 분류별 지출 비중,
초과·주의 예산 목록, 지출 상세표를 배치해줘.

처음에는 mock data로 화면을 완성하되 다음 단계에서 Google Sheets의
예산편성, 지출내역, 증빙현황, 예산요약 시트를 연결할 수 있도록 데이터 계층을 분리해줘.
금액은 원 단위와 천 단위 구분으로 표시하고 모바일에서도 표와 필터가 겹치지 않게 해줘.

첫 결과에서 확인할 것

  • 화면이 Preview에 정상 표시되는가
  • 필터를 바꾸면 KPI와 차트가 함께 바뀌는가
  • 상세표에서 긴 적요가 화면을 밀어내지 않는가
  • 모바일 너비에서도 가로 스크롤이나 줄바꿈이 자연스러운가
Step 9

Google Sheets Workspace 통합 연결

published

Step 9

Google Sheets Workspace 통합 연결

원주 ICT 빅데이터 고급

Google Sheets 통합 켜기

AI Studio Build는 Google Workspace 통합을 통해 사용자가 승인한 Google Sheets를 읽고 쓸 수 있습니다. 앱 제작자는 별도 OAuth 프로젝트를 만들지 않고, 사용자는 앱에서 Google 로그인을 거쳐 본인 데이터 접근을 승인합니다.

1. Build 오른쪽의 Integrations 또는 설정의 통합 패널을 엽니다.

2. Google Sheets를 활성화합니다.

3. 앱 Preview에서 Google 로그인이 나타나면 실습 시트를 만든 계정으로 로그인합니다.

4. 요청 권한을 읽고 본인 실습 데이터에 필요한 범위만 승인합니다.

인터페이스에서 통합 버튼을 찾기 어렵다면 Build 채팅에 다음 문장을 입력합니다.

복사용 텍스트

이 앱에 Google Sheets Workspace 통합을 추가해줘.
사용자가 Google 로그인으로 본인 시트 접근을 승인한 뒤,
지정한 스프레드시트의 데이터를 서버 측에서 읽게 해줘.
API 키나 OAuth 비밀값을 클라이언트 코드에 넣지 마.

공식 안내: https://ai.google.dev/gemini-api/docs/aistudio-fullstack

주의

  • 실제 운영 시트가 아니라 방금 만든 합성 데이터 시트만 연결합니다.
  • 링크가 있는 모든 사람에게 공개로 바꾸지 않습니다.
  • 앱에 비밀번호, 서비스 계정 키, API 키를 붙여넣지 않습니다.
Step 10

4개 시트를 실제 데이터 소스로 연결

published

Step 10

4개 시트를 실제 데이터 소스로 연결

원주 ICT 빅데이터 고급

스프레드시트 정보 준비

Google Sheets 주소는 다음 형태입니다.

주소에서 /d//edit 사이 값을 확인합니다. Build가 파일 선택창을 제공하면 직접 시트를 선택하고, 코드가 ID를 요구하면 이 값을 사용합니다.

연결 프롬프트

복사용 텍스트

mock data를 제거하고 Google Sheets 통합으로 실제 데이터를 읽게 바꿔줘.

사용할 시트 이름과 역할:
1. 예산편성: 예산키별 부서, 분류, 예산액, 담당자
2. 지출내역: 지출ID, 날짜, 예산키, 적요, 금액, 승인상태
3. 증빙현황: 지출ID별 증빙상태와 검토메모
4. 예산요약: KPI와 위험 목록의 기본 데이터

예산키로 예산편성과 지출내역을 연결하고,
지출ID로 지출내역과 증빙현황을 연결해줘.
처음 버전은 읽기 전용으로 만들고 데이터 수정 버튼은 만들지 마.
로딩 중, 접근 권한 없음, 시트 없음, 빈 데이터 상태도 각각 표시해줘.

연결 성공 기준

예산요약 첫 행의 예산액·집행액·소진율이 앱 상세 화면의 값과 같아야 합니다. mock data 값이 남아 있다면 아직 실제 시트가 연결되지 않은 것입니다.

Step 11

필터·KPI·차트를 하나의 데이터 흐름으로 연결

published

Step 11

필터·KPI·차트를 하나의 데이터 흐름으로 연결

원주 ICT 빅데이터 고급

개선 프롬프트

복사용 텍스트

현재 Google Sheets 데이터를 기준으로 필터와 모든 시각화를 연결해줘.

- 부서 필터를 바꾸면 KPI, 모든 차트, 위험 목록, 상세표가 함께 바뀐다.
- 분류와 위험상태 필터를 함께 적용할 수 있다.
- 기간 필터는 지출내역의 지출일을 기준으로 한다.
- 검색은 지출ID, 적요, 사업명, 담당자를 찾는다.
- 소진율 85% 이상은 주의, 100% 이상은 초과로 표시한다.
- 금액은 한국 원화로 표시한다.
- 차트 범례와 툴팁에 실제 숫자를 보여준다.
- 필터 초기화 버튼을 제공한다.

직접 테스트할 조합

테스트기대 결과
학생지원팀 선택학생지원팀 데이터만 남음
홍보비+주의 선택두 조건을 모두 만족하는 항목만 남음
EXP-0001 검색해당 지출 상세행을 찾음
필터 초기화전체 데이터로 돌아감

필터 한 개만 화면 모양이 바뀌고 숫자가 그대로라면 mock 상태가 남아 있는 것입니다. Build 채팅에 해당 현상을 구체적으로 적어 수정합니다.

Step 12

증빙 검토 화면과 지출 상세 패널 완성

published

Step 12

증빙 검토 화면과 지출 상세 패널 완성

원주 ICT 빅데이터 고급

상세 기능 추가

복사용 텍스트

지출 상세표의 행을 누르면 오른쪽 상세 패널을 열어줘.
패널에는 지출ID, 날짜, 부서, 분류, 사업명, 적요, 금액, 담당자,
승인상태, 증빙상태, 파일명, 검토메모를 표시해줘.

증빙상태가 미제출 또는 보완필요인 행은 "확인 필요" 목록에도 보여줘.
처음 버전은 읽기 전용이며 상태를 변경하거나 메일을 발송하지 않는다.
상세 패널을 닫아도 기존 필터는 유지해줘.

왜 읽기 전용으로 시작하나요

집계 화면과 데이터 수정 화면을 한 번에 만들면 잘못된 쓰기 요청으로 원본 데이터가 바뀔 수 있습니다. 먼저 조회·필터·상세 확인이 정확한지 검증하고, 실제 업무 적용 단계에서 권한과 변경 이력을 설계한 뒤 수정 기능을 추가합니다.

성공 기준

  • 지출 상세와 증빙 상세가 지출ID로 정확히 연결됩니다.
  • 파일명이 없는 미제출 행에서도 화면이 깨지지 않습니다.
  • 상세 패널을 열고 닫아도 선택한 부서·분류 필터가 유지됩니다.
Step 13

시트 수정·요약 갱신·앱 새로고침 테스트

published

Step 13

시트 수정·요약 갱신·앱 새로고침 테스트

원주 ICT 빅데이터 고급

데이터가 실제로 연결됐는지 확인하는 테스트

1. 지출내역에서 한 행의 금액을 기억합니다.

2. 해당 금액을 10,000원 늘립니다.

3. 사업비 캡스톤 > 2. 예산요약 다시 계산을 실행합니다.

4. 예산요약에서 해당 예산키의 집행액과 잔액이 바뀌었는지 확인합니다.

5. AI Studio 앱을 새로고침합니다.

6. KPI와 상세행의 금액이 바뀌었는지 확인합니다.

7. 테스트가 끝나면 원래 금액으로 되돌리고 요약을 다시 계산합니다.

값이 바뀌지 않을 때

증상확인할 내용
시트만 바뀜예산요약 다시 계산 실행 여부
요약은 바뀌고 앱은 그대로앱 새로고침·재조회 함수 확인
다른 스프레드시트를 읽음연결한 스프레드시트 ID 확인
권한 오류Preview에서 Google 로그인과 Sheets 승인 확인
0 또는 NaN 표시금액 열을 문자열이 아닌 숫자로 변환하는지 확인
Step 14

모바일·빈 데이터·권한 오류까지 QA

published

Step 14

모바일·빈 데이터·권한 오류까지 QA

원주 ICT 빅데이터 고급

필수 QA 체크리스트

영역확인 방법완료
모바일Preview 너비를 약 390px로 축소
긴 텍스트긴 적요가 표 밖으로 나오지 않는지 확인
빈 필터 결과존재하지 않는 검색어 입력
권한 없음로그아웃 상태 화면 확인
로딩데이터 호출 중 로딩 표시 확인
숫자원화·퍼센트·음수 잔액 표시 확인
색상정상·주의·초과에 텍스트 라벨도 있는지 확인

QA 수정 프롬프트

복사용 텍스트

이 앱을 모바일과 행정업무 반복 사용 기준으로 점검하고 수정해줘.
버튼·필터·표·상세 패널이 겹치지 않아야 하고,
빈 데이터, 로딩, Google 로그인 필요, Sheets 권한 거부,
시트 이름 오류 상태를 각각 사용자가 이해할 수 있는 한국어로 보여줘.
색상만으로 정상·주의·초과를 구분하지 말고 텍스트 라벨도 유지해줘.
Step 15

캡스톤 제출물과 업무 확장안 정리

published

Step 15

캡스톤 제출물과 업무 확장안 정리

원주 ICT 빅데이터 고급

제출물

제출 항목완료 기준
Google Sheets4개 시트와 240건 지출 데이터
Apps Script데이터 생성·요약·품질검사 메뉴 실행
AI Studio 앱실제 Sheets 데이터가 연결된 대시보드
검증 화면필터 적용 전후 또는 시트 수정 전후 캡처
적용 메모우리 조직에서 바꿀 열과 분류 3가지

발표할 때 설명할 흐름

복사용 텍스트

예산·지출·증빙이 서로 다른 표에 있습니다.
Apps Script가 공통키로 데이터를 정리하고 예산요약을 만듭니다.
AI Studio 앱은 요약과 원본을 읽어 위험 항목부터 보여줍니다.
시트가 바뀌면 다시 집계해 최신 현황을 확인할 수 있습니다.

실제 업무로 확장할 때

  • 실제 데이터 사본에서 열 이름과 상태값을 먼저 표준화합니다.
  • 편집 기능을 추가할 때는 사용자 역할·변경일시·변경자를 기록합니다.
  • 여러 사람이 함께 쓰거나 데이터가 계속 커지면 뒤 과정의 Supabase DB로 이전합니다.
  • Apps Script와 AI Studio 앱에 비밀키나 민감 개인정보를 직접 넣지 않습니다.
Module 24practice필수

캡스톤 2: 시설·공간 예약 운영 대시보드

공간목록·예약내역·이용기록·시설문의 데이터를 대량 생성하고, 시간대별 이용률·노쇼·미처리 문의를 관리하는 AI Studio Build 앱을 완성합니다.

15 steps

Step 1

캡스톤 결과물과 운영 질문 이해

published

Step 1

캡스톤 결과물과 운영 질문 이해

원주 ICT 빅데이터 고급

이번 캡스톤에서 만들 것

스터디룸, 회의실, 교육장 같은 공간의 예약과 실제 이용을 비교하고 시설 문의까지 함께 보는 운영 앱을 만듭니다.

복사용 텍스트

공간목록 8행
   ├─ 예약내역 320행
   │      └─ 이용기록 320행
   └─ 시설문의 64행
            ↓ Apps Script 집계
공간요약 + 시간대요약
            ↓ Google Sheets 통합
AI Studio Build 운영 대시보드

화면에서 답할 질문

1. 어떤 공간이 가장 많이 사용되나요?

2. 예약했지만 오지 않은 노쇼는 얼마나 되나요?

3. 가장 붐비는 요일과 시간대는 언제인가요?

4. 아직 처리되지 않은 시설 문의는 무엇인가요?

5. 특정 공간의 예약·이용·문의 이력을 함께 볼 수 있나요?

첫 캡스톤과 다른 데이터 축

사업비 캡스톤공간 예약 캡스톤
금액·예산·증빙날짜·시간·공간·이용 패턴
부서×분류 JOIN예약ID·공간ID JOIN
소진율·잔액이용률·노쇼율·시간대 분포
조회 중심문의 상태 변경까지 확장
Step 2

6개 시트와 관계 구조 설계

published

Step 2

6개 시트와 관계 구조 설계

원주 ICT 빅데이터 고급

사용할 시트

시트한 행의 의미주요 키
공간목록운영 중인 공간 1개공간ID
예약내역예약 신청 1건예약ID, 공간ID
이용기록예약 1건의 실제 이용예약ID
시설문의공간 관련 문의 1건문의ID, 공간ID
공간요약공간별 운영 지표공간ID
시간대요약요일×시간대별 예약 건수요일, 시간대

복사용 텍스트

공간목록.공간ID 1 ── N 예약내역.공간ID
예약내역.예약ID 1 ── 1 이용기록.예약ID
공간목록.공간ID 1 ── N 시설문의.공간ID

실습 데이터 원칙

  • 신청자는 USER-001 같은 가상 ID만 사용합니다.
  • 전화번호와 실제 이메일은 만들지 않습니다.
  • 공간명도 교육장·회의실 등 일반 명칭을 사용합니다.
  • 상태 변경 기능은 합성 데이터에서만 테스트합니다.
Step 3

새 Google Sheets와 Apps Script 준비

published

Step 3

새 Google Sheets와 Apps Script 준비

원주 ICT 빅데이터 고급

준비 순서

1. 주소창에 sheets.new를 입력합니다.

2. 문서 이름을 시설 공간 예약 캡스톤으로 바꿉니다.

3. 확장 프로그램 > Apps Script를 엽니다.

4. 프로젝트 이름을 공간 예약 운영 도구로 바꿉니다.

5. Code.gs 기본 내용을 전부 지웁니다.

6. 다음 Step의 전체 코드를 붙여넣습니다.

만들어질 메뉴

메뉴기능
1. 예약 샘플 320건 만들기공간·예약·이용·문의 데이터 생성
2. 운영요약 다시 계산공간별·시간대별 통계 갱신
3. 데이터 연결 검사예약ID·공간ID 누락 검사
4. 선택 문의 처리완료합성 데이터 상태 변경 실습

선택 문의 처리완료는 시설문의 시트에서 한 행을 클릭한 뒤 실행합니다. 실제 업무에서는 사용자 권한과 변경 이력을 추가해야 합니다.

Step 4

공간 예약 캡스톤 전체 Apps Script 붙여넣기

published

Step 4

공간 예약 캡스톤 전체 Apps Script 붙여넣기

원주 ICT 빅데이터 고급

Code.gs 전체 교체

javascript

const SPACE_SHEETS = {
  spaces: '공간목록',
  reservations: '예약내역',
  usage: '이용기록',
  inquiries: '시설문의',
  spaceSummary: '공간요약',
  timeSummary: '시간대요약'
};

const SPACE_LIST = [
  ['SPACE-01', '스터디룸 A', '스터디룸', 6, '3층', '운영중'],
  ['SPACE-02', '스터디룸 B', '스터디룸', 8, '3층', '운영중'],
  ['SPACE-03', '소회의실', '회의실', 10, '2층', '운영중'],
  ['SPACE-04', '대회의실', '회의실', 24, '2층', '운영중'],
  ['SPACE-05', 'ICT 교육실', '교육장', 30, '3층', '운영중'],
  ['SPACE-06', '세미나실', '교육장', 40, '1층', '운영중'],
  ['SPACE-07', '미디어실', '특수공간', 12, '4층', '운영중'],
  ['SPACE-08', '프로젝트룸', '특수공간', 16, '4층', '운영중']
];

const SPACE_PURPOSES = ['팀 프로젝트', '학습 모임', '부서 회의', '교육 진행', '발표 연습', '상담'];
const SPACE_USER_TYPES = ['대학생', '교직원', '일반참여자'];
const SPACE_INQUIRY_TYPES = ['장비', '청결', '냉난방', '출입', '예약변경', '기타'];
const SPACE_WEEKDAYS = ['일', '월', '화', '수', '목', '금', '토'];

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('공간 예약 캡스톤')
    .addItem('1. 예약 샘플 320건 만들기', 'createSpaceCapstoneData')
    .addItem('2. 운영요약 다시 계산', 'rebuildSpaceSummaries')
    .addItem('3. 데이터 연결 검사', 'checkSpaceDataLinks')
    .addSeparator()
    .addItem('4. 선택 문의 처리완료', 'completeSelectedSpaceInquiry')
    .addToUi();
}

function createSpaceCapstoneData() {
  const ui = SpreadsheetApp.getUi();
  const answer = ui.alert(
    '예약 샘플 만들기',
    '공간 예약 캡스톤의 6개 시트 기존 내용을 지우고 합성 데이터로 다시 만듭니다.',
    ui.ButtonSet.OK_CANCEL
  );
  if (answer !== ui.Button.OK) return;

  const random = makeSpaceRandom(240713);
  const reservations = [];
  const usageRows = [];
  for (let index = 0; index < 320; index += 1) {
    const reservationId = 'RSV-' + String(index + 1).padStart(4, '0');
    const space = SPACE_LIST[Math.floor(random() * SPACE_LIST.length)];
    const dayOffset = index % 60;
    const date = new Date(2026, 6, 1 + dayOffset);
    const startHour = 9 + (index * 2) % 9;
    const duration = index % 4 === 0 ? 2 : 1;
    const people = Math.max(2, Math.min(space[3], 2 + Math.floor(random() * space[3])));
    const status = index % 19 === 0 ? '취소' : index % 13 === 0 ? '대기' : '승인';
    const isNoShow = status === '승인' && index % 7 === 0;
    const actualStatus = status !== '승인' ? '해당없음' : isNoShow ? '노쇼' : '이용완료';

    reservations.push([
      reservationId,
      formatSpaceDate(date),
      space[0],
      space[1],
      String(startHour).padStart(2, '0') + ':00',
      String(startHour + duration).padStart(2, '0') + ':00',
      'USER-' + String(1 + index % 80).padStart(3, '0'),
      SPACE_USER_TYPES[index % SPACE_USER_TYPES.length],
      SPACE_PURPOSES[index % SPACE_PURPOSES.length],
      people,
      status
    ]);
    usageRows.push([
      reservationId,
      actualStatus,
      actualStatus === '이용완료' ? String(startHour).padStart(2, '0') + ':' + (index % 3) * 5 : '',
      actualStatus === '이용완료' ? String(startHour + duration).padStart(2, '0') + ':00' : '',
      actualStatus === '이용완료' ? Math.max(1, people - index % 3) : 0,
      actualStatus === '노쇼' ? '예약시간 30분 후 미입실' : ''
    ]);
  }

  const inquiries = [];
  for (let index = 0; index < 64; index += 1) {
    const inquiryId = 'INQ-' + String(index + 1).padStart(3, '0');
    const space = SPACE_LIST[index % SPACE_LIST.length];
    const type = SPACE_INQUIRY_TYPES[index % SPACE_INQUIRY_TYPES.length];
    const statusSeed = (index * 5 + 3) % 11;
    const status = statusSeed < 2 ? '접수' : statusSeed < 4 ? '처리중' : '완료';
    const priority = type === '출입' || type === '장비' ? '높음' : '보통';
    inquiries.push([
      inquiryId,
      formatSpaceDate(new Date(2026, 6, 1 + index % 45)),
      space[0],
      space[1],
      type,
      makeSpaceInquiryText(type, space[1]),
      priority,
      status,
      status === '완료' ? formatSpaceDate(new Date(2026, 6, 2 + index % 45)) : '',
      status === '완료' ? '현장 확인 및 조치 완료' : ''
    ]);
  }

  writeSpaceSheet(SPACE_SHEETS.spaces, ['공간ID', '공간명', '공간유형', '정원', '위치', '운영상태'], SPACE_LIST);
  writeSpaceSheet(
    SPACE_SHEETS.reservations,
    ['예약ID', '예약일', '공간ID', '공간명', '시작시간', '종료시간', '신청자ID', '이용자유형', '이용목적', '예약인원', '예약상태'],
    reservations
  );
  writeSpaceSheet(
    SPACE_SHEETS.usage,
    ['예약ID', '이용상태', '입실시간', '퇴실시간', '실제인원', '이용메모'],
    usageRows
  );
  writeSpaceSheet(
    SPACE_SHEETS.inquiries,
    ['문의ID', '접수일', '공간ID', '공간명', '문의유형', '문의내용', '우선순위', '처리상태', '처리일', '처리메모'],
    inquiries
  );
  rebuildSpaceSummaries(false);
  ui.alert('공간 8개, 예약 320건, 이용기록 320건, 시설문의 64건을 만들었습니다.');
}

function rebuildSpaceSummaries(showAlert) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const reservationSheet = ss.getSheetByName(SPACE_SHEETS.reservations);
  const usageSheet = ss.getSheetByName(SPACE_SHEETS.usage);
  const inquirySheet = ss.getSheetByName(SPACE_SHEETS.inquiries);
  if (!reservationSheet || !usageSheet || !inquirySheet) {
    SpreadsheetApp.getUi().alert('먼저 예약 샘플 데이터를 만들어 주세요.');
    return;
  }

  const reservations = reservationSheet.getRange(2, 1, reservationSheet.getLastRow() - 1, 11).getValues();
  const usageRows = usageSheet.getRange(2, 1, usageSheet.getLastRow() - 1, 6).getValues();
  const inquiries = inquirySheet.getRange(2, 1, inquirySheet.getLastRow() - 1, 10).getValues();
  const usageByReservation = {};
  usageRows.forEach(function(row) { usageByReservation[String(row[0])] = String(row[1]); });

  const spaceStats = {};
  SPACE_LIST.forEach(function(space) {
    spaceStats[space[0]] = { approved: 0, used: 0, noShow: 0, people: 0, openInquiries: 0 };
  });
  const timeStats = {};

  reservations.forEach(function(row) {
    const reservationId = String(row[0]);
    const spaceId = String(row[2]);
    const status = String(row[10]);
    if (!spaceStats[spaceId]) return;
    if (status === '승인') spaceStats[spaceId].approved += 1;
    if (usageByReservation[reservationId] === '이용완료') {
      spaceStats[spaceId].used += 1;
      spaceStats[spaceId].people += Number(row[9]) || 0;
    }
    if (usageByReservation[reservationId] === '노쇼') spaceStats[spaceId].noShow += 1;

    const rawDate = row[1];
    const date = rawDate instanceof Date ? rawDate : new Date(String(rawDate) + 'T00:00:00');
    const weekday = SPACE_WEEKDAYS[date.getDay()];
    const timeKey = weekday + '|' + String(row[4]);
    if (!timeStats[timeKey]) timeStats[timeKey] = { weekday: weekday, hour: String(row[4]), count: 0, people: 0 };
    if (status === '승인') {
      timeStats[timeKey].count += 1;
      timeStats[timeKey].people += Number(row[9]) || 0;
    }
  });

  inquiries.forEach(function(row) {
    const spaceId = String(row[2]);
    const status = String(row[7]);
    if (spaceStats[spaceId] && status !== '완료') spaceStats[spaceId].openInquiries += 1;
  });

  const spaceSummaryRows = SPACE_LIST.map(function(space) {
    const stat = spaceStats[space[0]];
    const usageRate = stat.approved ? stat.used / stat.approved : 0;
    const noShowRate = stat.approved ? stat.noShow / stat.approved : 0;
    const status = stat.openInquiries >= 3 || noShowRate >= 0.15 ? '확인필요' : '정상';
    return [
      space[0], space[1], space[2], space[3], space[4],
      stat.approved, stat.used, stat.noShow, usageRate, noShowRate,
      stat.people, stat.openInquiries, status
    ];
  });

  const timeSummaryRows = Object.values(timeStats)
    .sort(function(a, b) { return a.weekday.localeCompare(b.weekday) || a.hour.localeCompare(b.hour); })
    .map(function(item) { return [item.weekday, item.hour, item.count, item.people]; });

  writeSpaceSheet(
    SPACE_SHEETS.spaceSummary,
    ['공간ID', '공간명', '공간유형', '정원', '위치', '승인예약', '실제이용', '노쇼', '이용률', '노쇼율', '예약인원합계', '미처리문의', '운영상태'],
    spaceSummaryRows
  );
  writeSpaceSheet(
    SPACE_SHEETS.timeSummary,
    ['요일', '시간대', '승인예약건수', '예약인원합계'],
    timeSummaryRows
  );
  formatSpaceSummarySheets();
  if (showAlert !== false) SpreadsheetApp.getUi().alert('공간요약과 시간대요약을 최신 값으로 계산했습니다.');
}

function checkSpaceDataLinks() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const spaceSheet = ss.getSheetByName(SPACE_SHEETS.spaces);
  const reservationSheet = ss.getSheetByName(SPACE_SHEETS.reservations);
  const usageSheet = ss.getSheetByName(SPACE_SHEETS.usage);
  const inquirySheet = ss.getSheetByName(SPACE_SHEETS.inquiries);
  if (!spaceSheet || !reservationSheet || !usageSheet || !inquirySheet) {
    SpreadsheetApp.getUi().alert('먼저 예약 샘플 데이터를 만들어 주세요.');
    return;
  }

  const spaceIds = new Set(spaceSheet.getRange(2, 1, spaceSheet.getLastRow() - 1, 1).getValues().flat().map(String));
  const reservations = reservationSheet.getRange(2, 1, reservationSheet.getLastRow() - 1, 11).getValues();
  const reservationIds = new Set(reservations.map(function(row) { return String(row[0]); }));
  const usageRows = usageSheet.getRange(2, 1, usageSheet.getLastRow() - 1, 6).getValues();
  const inquiries = inquirySheet.getRange(2, 1, inquirySheet.getLastRow() - 1, 10).getValues();
  let unknownReservationSpace = 0;
  let unknownUsageReservation = 0;
  let unknownInquirySpace = 0;
  reservations.forEach(function(row) { if (!spaceIds.has(String(row[2]))) unknownReservationSpace += 1; });
  usageRows.forEach(function(row) { if (!reservationIds.has(String(row[0]))) unknownUsageReservation += 1; });
  inquiries.forEach(function(row) { if (!spaceIds.has(String(row[2]))) unknownInquirySpace += 1; });

  SpreadsheetApp.getUi().alert(
    '연결 검사 결과\n' +
    '- 공간이 없는 예약: ' + unknownReservationSpace + '건\n' +
    '- 예약이 없는 이용기록: ' + unknownUsageReservation + '건\n' +
    '- 공간이 없는 문의: ' + unknownInquirySpace + '건'
  );
}

function completeSelectedSpaceInquiry() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  if (sheet.getName() !== SPACE_SHEETS.inquiries) {
    SpreadsheetApp.getUi().alert('시설문의 시트에서 처리할 행을 선택해 주세요.');
    return;
  }
  const row = sheet.getActiveRange().getRow();
  if (row < 2) {
    SpreadsheetApp.getUi().alert('헤더가 아닌 문의 행을 선택해 주세요.');
    return;
  }
  const inquiryId = String(sheet.getRange(row, 1).getValue());
  const ui = SpreadsheetApp.getUi();
  const answer = ui.alert(inquiryId + ' 처리완료', '선택한 합성 문의를 처리완료로 변경할까요?', ui.ButtonSet.OK_CANCEL);
  if (answer !== ui.Button.OK) return;
  sheet.getRange(row, 8).setValue('완료');
  sheet.getRange(row, 9).setValue(formatSpaceDate(new Date()));
  sheet.getRange(row, 10).setValue('대시보드 실습에서 처리완료');
  rebuildSpaceSummaries(false);
  ui.alert(inquiryId + '의 상태를 완료로 변경하고 요약을 갱신했습니다.');
}

function writeSpaceSheet(name, headers, rows) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(name) || ss.insertSheet(name);
  sheet.clear();
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  if (rows.length) sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
  sheet.getRange(1, 1, 1, headers.length)
    .setBackground('#1d4ed8')
    .setFontColor('white')
    .setFontWeight('bold');
  sheet.setFrozenRows(1);
  sheet.getDataRange().setWrap(true);
  sheet.autoResizeColumns(1, headers.length);
}

function formatSpaceSummarySheets() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const summary = ss.getSheetByName(SPACE_SHEETS.spaceSummary);
  if (summary && summary.getLastRow() > 1) {
    summary.getRange(2, 9, summary.getLastRow() - 1, 2).setNumberFormat('0.0%');
  }
}

function makeSpaceInquiryText(type, spaceName) {
  const texts = {
    '장비': spaceName + '의 화면 연결 장비를 확인해 주세요.',
    '청결': spaceName + ' 이용 전 정리가 필요합니다.',
    '냉난방': spaceName + ' 실내 온도를 확인해 주세요.',
    '출입': spaceName + ' 출입 방법을 안내해 주세요.',
    '예약변경': spaceName + ' 예약 시간을 변경하고 싶습니다.',
    '기타': spaceName + ' 이용 관련 확인 요청입니다.'
  };
  return texts[type];
}

function formatSpaceDate(date) {
  return Utilities.formatDate(date, Session.getScriptTimeZone(), 'yyyy-MM-dd');
}

function makeSpaceRandom(seed) {
  let value = seed % 2147483647;
  return function() {
    value = value * 16807 % 2147483647;
    return (value - 1) / 2147483646;
  };
}

306줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

저장한 뒤 프로젝트 설정의 시간대를 (GMT+09:00) 서울로 바꾸고 Google Sheets를 새로고침합니다.

Step 5

예약 320건과 시설문의 64건 생성

published

Step 5

예약 320건과 시설문의 64건 생성

원주 ICT 빅데이터 고급

실행

1. Google Sheets 상단 공간 예약 캡스톤 메뉴를 찾습니다.

2. 1. 예약 샘플 320건 만들기를 실행합니다.

3. 첫 실행 권한을 승인합니다.

4. 생성 완료 알림을 확인합니다.

생성 결과

시트헤더 제외 행 수
공간목록8
예약내역320
이용기록320
시설문의64
공간요약8
시간대요약요일·시간대 조합 수

데이터 둘러보기

  • 예약내역에서 예약상태를 필터링해 승인·대기·취소를 확인합니다.
  • 이용기록에서 이용상태를 필터링해 이용완료·노쇼를 확인합니다.
  • 시설문의에서 처리상태가 접수 또는 처리중인 행을 확인합니다.
  • 공간요약에서 이용률·노쇼율·미처리문의가 큰 공간을 찾습니다.
Step 6

예약·이용·문의 데이터 연결 검사

published

Step 6

예약·이용·문의 데이터 연결 검사

원주 ICT 빅데이터 고급

연결 검사가 필요한 이유

예약은 있는데 공간이 없거나, 이용기록은 있는데 원래 예약이 없다면 통계가 잘못됩니다. 여러 표를 붙이기 전에 공통키가 모두 연결되는지 먼저 확인합니다.

공간 예약 캡스톤 > 3. 데이터 연결 검사를 실행합니다.

정상 결과는 다음 세 항목이 모두 0건입니다.

검사정상
공간이 없는 예약0건
예약이 없는 이용기록0건
공간이 없는 문의0건

오류를 일부러 만들어 보기

1. 예약내역 한 행의 공간ID를 SPACE-99로 바꿉니다.

2. 연결 검사를 다시 실행합니다.

3. 공간이 없는 예약이 1건인지 확인합니다.

4. 원래 공간ID로 되돌립니다.

5. 운영요약 다시 계산을 실행합니다.

이 과정으로 화면이 예뻐도 연결키가 틀리면 분석은 틀린다는 점을 확인합니다.

Step 7

공간 운영 대시보드 화면 요구사항 작성

published

Step 7

공간 운영 대시보드 화면 요구사항 작성

원주 ICT 빅데이터 고급

첫 화면 구성

영역내용
필터기간, 공간, 공간유형, 예약상태, 이용자유형
KPI승인예약, 실제이용, 이용률, 노쇼율, 미처리문의
차트공간별 이용률, 요일×시간대 히트맵, 예약 추이
운영목록노쇼 예약, 미처리 시설문의, 확인필요 공간
상세패널한 공간의 예약·이용·문의 이력

사용자 시나리오

복사용 텍스트

운영 담당자가 오늘 대시보드를 연다.
확인필요 공간과 미처리 문의를 먼저 본다.
공간을 선택해 예약과 노쇼 이력을 확인한다.
요일×시간대 히트맵으로 붐비는 시간을 찾는다.
시설문의 한 건을 처리한 뒤 지표가 줄어드는지 확인한다.

화면은 시설 사진이나 장식보다 숫자·필터·상태가 빠르게 읽히는 운영 도구 형태로 만듭니다.

Step 8

AI Studio Build에서 공간 운영 앱 생성

published

Step 8

AI Studio Build에서 공간 운영 앱 생성

원주 ICT 빅데이터 고급

첫 생성 프롬프트

복사용 텍스트

한국어로 사용하는 "시설·공간 예약 운영 대시보드"를 만들어줘.

사용자는 대학 또는 기관의 공간 운영 담당자야.
상단에는 기간, 공간, 공간유형, 예약상태, 이용자유형 필터를 배치해줘.
KPI는 승인예약, 실제이용, 이용률, 노쇼율, 미처리 시설문의야.

본문에는 공간별 이용률 비교, 요일×시간대 예약 히트맵,
일자별 예약 추이, 노쇼 예약 목록, 미처리 시설문의 목록을 보여줘.
공간 행을 누르면 예약·이용·문의 이력을 함께 보는 상세 패널을 열어줘.

처음에는 mock data로 화면과 상호작용을 완성하고,
다음 단계에서 Google Sheets 6개 시트를 연결할 수 있게 데이터 계층을 분리해줘.
업무용으로 밀도 있게 만들고 모바일에서는 차트와 표가 자연스럽게 세로로 배치되게 해줘.

첫 화면 점검

  • 필터가 실제로 목록과 차트를 바꾸는가
  • 히트맵에 요일과 시간이 모두 표시되는가
  • 노쇼와 미처리 문의가 구분되는가
  • 상세 패널에서 공간명이 명확히 보이는가
Step 9

Google Sheets 통합과 6개 시트 연결

published

Step 9

Google Sheets 통합과 6개 시트 연결

원주 ICT 빅데이터 고급

Workspace 통합 켜기

Build 오른쪽 Integrations에서 Google Sheets를 활성화합니다. 찾기 어렵다면 채팅에 다음과 같이 요청합니다.

복사용 텍스트

Google Sheets Workspace 통합을 추가해줘.
사용자가 Google 로그인으로 본인 시트 접근을 승인하게 하고,
클라이언트에 비밀키를 넣지 말고 서버 측에서 Sheets API를 호출해줘.

데이터 연결 프롬프트

복사용 텍스트

mock data를 제거하고 내가 승인한 Google Sheets의 실제 데이터를 사용해줘.

시트 구조:
- 공간목록: 공간ID, 공간명, 유형, 정원, 위치, 운영상태
- 예약내역: 예약ID, 날짜, 공간ID, 시간, 이용자유형, 목적, 인원, 상태
- 이용기록: 예약ID, 이용상태, 입퇴실시간, 실제인원
- 시설문의: 문의ID, 공간ID, 유형, 내용, 우선순위, 처리상태
- 공간요약: 공간별 이용률, 노쇼율, 미처리문의
- 시간대요약: 요일과 시간대별 승인예약건수

공간ID와 예약ID로 관계를 연결해줘.
데이터 읽기에 실패하면 mock data로 조용히 대체하지 말고
로그인 필요, 권한 없음, 시트 이름 오류를 화면에 명확히 보여줘.

각 사용자는 Google 로그인으로 본인 계정의 데이터 접근을 승인합니다. 실제 개인정보가 있는 공유 시트는 이 실습에 연결하지 않습니다.

Step 10

이용률·노쇼율·시간대 히트맵 검증

published

Step 10

이용률·노쇼율·시간대 히트맵 검증

원주 ICT 빅데이터 고급

지표 정의를 앱에 명확히 전달합니다

복사용 텍스트

지표 계산과 필터 동작을 아래 기준으로 통일해줘.

- 승인예약 = 예약상태가 승인인 건수
- 실제이용 = 이용상태가 이용완료인 건수
- 이용률 = 실제이용 / 승인예약
- 노쇼율 = 이용상태가 노쇼인 건수 / 승인예약
- 미처리문의 = 처리상태가 완료가 아닌 건수
- 시간대 히트맵 = 시간대요약의 요일×시간대별 승인예약건수

기간 또는 공간 필터를 바꾸면 KPI, 차트, 히트맵, 목록이 함께 갱신되게 해줘.
분모가 0이면 NaN이나 Infinity 대신 0%로 표시해줘.

검증표

검증비교 위치
공간별 이용률공간요약 I열
공간별 노쇼율공간요약 J열
미처리문의공간요약 L열
시간대 예약건수시간대요약 C열

앱 값과 시트 값이 다르면 필터가 적용된 범위와 분모 정의부터 확인합니다.

Step 11

시설문의 처리 상태 변경 기능 추가

published

Step 11

시설문의 처리 상태 변경 기능 추가

원주 ICT 빅데이터 고급

조회에서 작은 업무 앱으로 확장

이번 캡스톤에서는 합성 데이터에 한해 시설문의 상태 변경을 추가합니다.

복사용 텍스트

미처리 시설문의 상세 패널에 "처리완료" 버튼을 추가해줘.
버튼을 누르면 바로 저장하지 말고 문의ID와 공간명을 포함한 확인창을 먼저 보여줘.
확인하면 시설문의 시트에서 해당 문의ID 행의 처리상태를 완료로,
처리일을 오늘 날짜로 변경하고 처리메모를 입력받아 저장해줘.
저장 성공 후 시설문의 목록과 미처리문의 KPI를 다시 불러와 갱신해줘.
중복 클릭을 막고 저장 중 상태와 실패 메시지를 제공해줘.

먼저 Apps Script 메뉴로 동일 기능 확인

1. 시설문의 시트에서 상태가 접수인 행을 클릭합니다.

2. 공간 예약 캡스톤 > 4. 선택 문의 처리완료를 실행합니다.

3. 확인창을 승인합니다.

4. 처리상태·처리일·처리메모가 바뀌는지 확인합니다.

5. 공간요약의 미처리문의가 1건 줄었는지 확인합니다.

AI Studio 앱 쓰기 기능이 연결되지 않더라도 Apps Script 메뉴를 이용해 전체 상태 변경 흐름을 실습할 수 있습니다.

Step 12

공간 상세 패널과 운영 우선순위 완성

published

Step 12

공간 상세 패널과 운영 우선순위 완성

원주 ICT 빅데이터 고급

운영 담당자가 먼저 볼 목록

복사용 텍스트

첫 화면에 "오늘 확인할 일" 영역을 추가해줘.
우선순위는 다음 순서야.
1. 우선순위 높음이면서 미처리인 시설문의
2. 노쇼율 15% 이상인 공간
3. 미처리문의 3건 이상인 공간
4. 오늘 예약 중 대기 상태인 건

각 항목에는 왜 확인이 필요한지 한 줄 근거를 표시해줘.
공간을 선택하면 공간 기본정보, 최근 예약, 노쇼 이력,
미처리 문의를 탭으로 나누지 말고 한 상세 패널에서 스크롤로 확인하게 해줘.

확인할 결과

  • 운영 우선순위가 단순 색상이 아니라 근거 문장을 포함합니다.
  • 공간ID가 아닌 사람이 읽는 공간명이 먼저 보입니다.
  • 예약·이용·문의가 각각의 공통키로 정확히 연결됩니다.
  • 데이터가 없는 영역에는 빈 표 대신 안내 문구가 보입니다.
Step 13

실제 시트 변경과 대시보드 갱신 테스트

published

Step 13

실제 시트 변경과 대시보드 갱신 테스트

원주 ICT 빅데이터 고급

E2E 테스트

1. AI Studio 앱에서 미처리 시설문의 건수를 기록합니다.

2. 시설문의 시트에서 접수 상태 한 행을 선택합니다.

3. Apps Script 메뉴로 처리완료를 실행합니다.

4. 공간요약에서 해당 공간의 미처리문의가 줄었는지 확인합니다.

5. AI Studio 앱을 새로고침하거나 데이터 새로고침을 누릅니다.

6. 앱의 미처리문의 KPI와 목록에서도 해당 건이 사라졌는지 확인합니다.

추가 변화 테스트

예약내역에서 승인 예약 한 건을 취소로 바꾸고 운영요약 다시 계산을 실행합니다. 해당 공간의 승인예약과 이용률이 바뀌는지 확인한 뒤 원래 값으로 되돌립니다.

이 테스트가 통과하면 앱이 mock data가 아니라 실제 Sheets를 읽고 있다는 근거가 됩니다.

Step 14

모바일·오류·동시 저장 상태 QA

published

Step 14

모바일·오류·동시 저장 상태 QA

원주 ICT 빅데이터 고급

QA 체크리스트

상황기대 화면완료
모바일 390pxKPI 1~2열, 차트 세로 배치
데이터 로딩스켈레톤 또는 로딩 안내
Google 로그아웃로그인 필요 안내
Sheets 권한 거부다시 승인하는 방법 안내
빈 검색 결과조건을 바꾸라는 안내
처리완료 저장 중버튼 비활성화·중복 클릭 방지
저장 실패원래 상태 유지·재시도 안내

QA 프롬프트

복사용 텍스트

시설 운영 담당자가 매일 반복 사용한다고 가정하고 모바일과 오류 상태를 점검해줘.
필터, KPI, 히트맵, 표, 상세 패널이 서로 겹치지 않아야 해.
Google 로그인 필요, 권한 없음, 시트 없음, 빈 데이터, 저장 중, 저장 실패를
각각 명확한 한국어 상태로 보여줘.
처리완료 버튼은 확인창과 중복 클릭 방지를 반드시 유지해줘.
Step 15

캡스톤 제출과 다른 업무로 확장

published

Step 15

캡스톤 제출과 다른 업무로 확장

원주 ICT 빅데이터 고급

제출물

제출 항목완료 기준
Google Sheets공간 8개, 예약 320건, 문의 64건과 요약 시트
Apps Script생성·집계·연결검사·상태변경 메뉴
AI Studio 앱Sheets 연동 운영 대시보드
동작 증거문의 처리 전후 KPI 변화 화면
적용 메모실제 운영에 필요한 공간·상태·권한 정의

1분 발표 구조

복사용 텍스트

예약과 실제 이용은 같은 데이터가 아닙니다.
예약ID로 두 표를 연결해 이용률과 노쇼율을 계산했습니다.
공간ID로 시설문의까지 연결해 운영 우선순위를 만들었습니다.
Google Sheets를 수정하면 요약과 AI Studio 앱이 함께 갱신됩니다.

다른 업무로 바꾸기

  • 회의실 예약 → 장비 대여·반납 관리
  • 스터디룸 → 상담 일정·노쇼 관리
  • 교육장 → 강의 신청·출석·만족도 관리
  • 시설문의 → 민원·유지보수 요청 관리

여러 사용자의 권한, 장기 이력, 감사 로그가 필요해지면 뒤 과정의 Supabase와 Vercel 배포 구조로 확장합니다.

Module 25lesson필수

이론 강의: AI 사용의 패러다임 변화

묻는 도구에서 일하는 동료로 — 대화형 AI, 업무 속 AI, 에이전트까지 3단계 전환을 이해하고 2일차 Cursor 실습으로 연결하는 오프닝 이론입니다.

30 steps

Step 1

표지 — 묻는 도구에서 일하는 동료로

published

Step 1

표지 — 묻는 도구에서 일하는 동료로

원주 ICT 빅데이터 고급

AI 사용의 패러다임 변화 — 물어보기, 자리에 앉히기, 일 맡기기
  • 2일차 오프닝 이론 강의입니다. 슬라이드는 강사 진행에 맞춰 빠르게 넘어갑니다.
  • 어려운 용어는 전부 비유 먼저, 용어는 나중에 나옵니다. 편하게 들으세요.
Step 2

01. 스마트폰이 처음 왔을 때를 기억하시나요

published

Step 2

01. 스마트폰이 처음 왔을 때를 기억하시나요

원주 ICT 빅데이터 고급

1부 · 일하는 방식이 바뀌는 순간

계산기 → PC → 인터넷 → 스마트폰 → AI, 다섯 번째 전환

> 패러다임 전환은 처음이 아닙니다. 우리는 이미 네 번 적응해 봤고, 이번에도 할 수 있습니다.

Step 3

02. 예전엔 검색창에, 지금은 AI에게

published

Step 3

02. 예전엔 검색창에, 지금은 AI에게

원주 ICT 빅데이터 고급

1부 · 일하는 방식이 바뀌는 순간

검색의 시대와 대화의 시대 — 조합은 AI가, 판단은 내가

> 일의 무게중심이 "찾기"에서 "검토하기"로 옮겨갔습니다.

Step 4

03. 왜 따라가기 벅찰까요

published

Step 4

03. 왜 따라가기 벅찰까요

원주 ICT 빅데이터 고급

1부 · 일하는 방식이 바뀌는 순간

도구는 그대로인데 쓰는 방법이 계속 바뀐다 — 그래서 단계를 이해해야 한다

> 새 기능을 쫓아다닐 필요 없습니다. 방향은 3년째 하나 — AI에게 점점 더 큰 일을 맡기는 쪽.

Step 5

04. 오늘의 지도 — AI를 쓰는 세 가지 방법

published

Step 5

04. 오늘의 지도 — AI를 쓰는 세 가지 방법

원주 ICT 빅데이터 고급

1부 · 일하는 방식이 바뀌는 순간

물어보기 → 자리에 앉히기 → 일 맡기기, 그리고 이 과정의 매핑

> 이 그림 하나가 오늘 강의 전부입니다. 여러분은 이미 1·2단계를 어제 경험했고, 오늘 3단계를 경험합니다.

Step 6

05. 질문하면 답해주는 AI

published

Step 6

05. 질문하면 답해주는 AI

원주 ICT 빅데이터 고급

2부 · 물어보는 AI (1단계)

나 → 질문 → AI → 답변 — 옆 부서 전문가에게 물어보러 가기

> 1단계는 "옆 부서의 아주 똑똑한 전문가"입니다. 뭐든 물어볼 수 있고, 바로 답합니다.

Step 7

06. 어떻게 묻느냐에 따라 답이 달라진다

published

Step 7

06. 어떻게 묻느냐에 따라 답이 달라진다

원주 ICT 빅데이터 고급

2부 · 물어보는 AI (1단계)

막연한 질문과 일 시키듯 하는 질문의 차이

> 어제 오전에 직접 확인한 것 — 신입에게 일 시키듯, 원하는 결과의 모양까지 말해주면 답이 달라집니다.

Step 8

07. 물어보기만 해도 되는 일들

published

Step 8

07. 물어보기만 해도 되는 일들

원주 ICT 빅데이터 고급

2부 · 물어보는 AI (1단계)

요약 · 초안 · 아이디어 · 학습 — 채팅창으로 충분한 일들

> 공통점은 "한 번 묻고, 한 번 받고, 끝나는 일"입니다. 여기까지는 채팅창이면 충분합니다.

Step 9

08. 그런데, 매일 하다 보면 불편합니다

published

Step 9

08. 그런데, 매일 하다 보면 불편합니다

원주 ICT 빅데이터 고급

2부 · 물어보는 AI (1단계)

복사 → 붙여넣기 → 답 복사 → 시트 정리, 문서 10개면 10번

> 매번 처음부터, 손이 계속 가고, 실행은 못 해줍니다 — 1단계의 세 가지 한계입니다.

Step 10

09. "어? 나 어제도 똑같은 걸 물어봤는데"

published

Step 10

09. "어? 나 어제도 똑같은 걸 물어봤는데"

원주 ICT 빅데이터 고급

2부 · 물어보는 AI (1단계)

반복되는 질문은 자동화 후보 — 다음 단계로 넘어갈 신호

> 이 생각이 드는 순간이 2단계로 넘어갈 때입니다.

Step 11

10. AI가 내 프로그램 안으로 들어왔다

published

Step 11

10. AI가 내 프로그램 안으로 들어왔다

원주 ICT 빅데이터 고급

3부 · 자리에 앉힌 AI (2단계)

문서 · 시트 · 메일 안의 AI — 코파일럿

> 전문가가 옆 부서가 아니라 내 책상 옆에 앉았습니다. 복사·붙여넣기가 사라집니다.

Step 12

11. 화면 없이, 코드가 AI를 부른다

published

Step 12

11. 화면 없이, 코드가 AI를 부른다

원주 ICT 빅데이터 고급

3부 · 자리에 앉힌 AI (2단계)

사람이 쓸 때와 코드가 쓸 때(API) — 어제 문의 봇이 이 구조

> API는 "프로그램끼리 쓰는 주문 창구"입니다. 어제 만든 문의 봇에서 사람은 화면을 열지도 않았습니다.

Step 13

12. 역할 나누기 — 잘하는 쪽에 맡긴다

published

Step 13

12. 역할 나누기 — 잘하는 쪽에 맡긴다

원주 ICT 빅데이터 고급

3부 · 자리에 앉힌 AI (2단계)

판단은 AI, 규칙은 코드, 확인은 사람

> 이 3분할만 기억하면, 어떤 업무든 AI를 붙일 자리가 보입니다.

Step 14

13. 아침 문의 20건, 무엇이 달라지나

published

Step 14

13. 아침 문의 20건, 무엇이 달라지나

원주 ICT 빅데이터 고급

3부 · 자리에 앉힌 AI (2단계)

20번 반복 vs 버튼 한 번 — 시간과 집중력의 차이

> 반복은 시스템이, 나는 검토자로. 이것이 2단계의 가치입니다.

Step 15

14. 그래도 남는 답답함 — 시킨 일만 한다

published

Step 15

14. 그래도 남는 답답함 — 시킨 일만 한다

원주 ICT 빅데이터 고급

3부 · 자리에 앉힌 AI (2단계)

2단계 AI는 깔아둔 레일 위만 달린다 — 예외가 생기면 멈춤

> "상황을 보고 알아서 움직여 줬으면" — 그 바람이 3단계, 에이전트를 만들었습니다.

Step 16

15. 답을 주는 AI vs 일을 끝내는 AI

published

Step 16

15. 답을 주는 AI vs 일을 끝내는 AI

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

챗봇은 설명하고, 에이전트는 직접 한다

> 차이는 딱 하나 — "설명하느냐, 직접 하느냐". 오늘 오전에 오른쪽을 경험합니다.

Step 17

16. 에이전트는 이렇게 일한다

published

Step 17

16. 에이전트는 이렇게 일한다

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

목표 → 계획 → 실행 → 확인 → 반복 → 보고

> 신입사원이 일을 배우는 순서와 같습니다. 다른 점은 훨씬 빠르고 지치지 않는다는 것.

Step 18

17. 에이전트에게는 "손"이 있다

published

Step 18

17. 에이전트에게는 "손"이 있다

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

파일 읽고 쓰기 · 프로그램 실행 · 웹 검색 · 앱 연결

> 1·2단계 AI가 "입"만 있었다면, 3단계 AI는 도구를 쥔 "손"이 생겼습니다.

Step 19

18. MCP — AI에게 도구를 꽂는 멀티탭

published

Step 19

18. MCP — AI에게 도구를 꽂는 멀티탭

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

AI 에이전트 → MCP(공용 콘센트) → Supabase · Vercel · 무엇이든

> 콘센트 규격이 통일되어야 어떤 가전이든 꽂아 쓰듯, MCP 덕분에 어떤 도구든 AI에 꽂을 수 있습니다. 오늘 오후에 Supabase를 직접 꽂아봅니다.

Step 20

19. 바이브코딩 — 말로 프로그램을 만든다

published

Step 20

19. 바이브코딩 — 말로 프로그램을 만든다

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

"만들어줘" → 에이전트 작업 → 돌아가는 프로그램

> 개발자가 아니어도 프로그램을 갖게 됩니다. 잠시 후 Cursor로 직접 만들어 봅니다.

Step 21

20. 그럼 나는 뭘 하나 — 실행자에서 감독자로

published

Step 21

20. 그럼 나는 뭘 하나 — 실행자에서 감독자로

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

손을 움직이는 일에서, 판단하는 일로

> 일을 잘 시키는 능력이, 일을 잘 하는 능력만큼 중요해집니다.

Step 22

21. 오늘 실습의 세 가지 규칙

published

Step 22

21. 오늘 실습의 세 가지 규칙

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

명령은 에이전트에게 · 실행 전 설명 듣기 · 승인은 사람이

> 이 세 줄이 에이전트 시대의 업무 규칙 그 자체입니다. 오늘 하루 몸에 익혀 가세요.

Step 23

22. 맡겨도 되는 일, 아직 안 되는 일

published

Step 23

22. 맡겨도 되는 일, 아직 안 되는 일

원주 ICT 빅데이터 고급

4부 · 일을 맡기는 AI (3단계)

기준은 하나 — 되돌릴 수 있는가

> 초안·반복·조회는 맡기고, 삭제·돈·대외 발송·비밀은 사람이 쥡니다.

Step 24

23. 사라지는 건 직업이 아니라, 반복 작업

published

Step 24

23. 사라지는 건 직업이 아니라, 반복 작업

원주 ICT 빅데이터 고급

5부 · 그래서 내 일은 어떻게 되나

하루의 구성이 바뀐다 — 반복은 줄고, 판단은 늘고

> "초안의 시대" — 모든 초안은 AI가, 완성과 책임은 사람이. 일이 없어지는 게 아니라 내용이 바뀝니다.

Step 25

24. 새로 중요해지는 능력

published

Step 25

24. 새로 중요해지는 능력

원주 ICT 빅데이터 고급

5부 · 그래서 내 일은 어떻게 되나

문법 암기는 내려가고, 문제 정의·검증·데이터 이해가 올라간다

> 이 과정이 코딩 문법 대신 "업무 흐름과 데이터"를 가르친 이유가 여기 있습니다.

Step 26

25. 바뀌지 않는 것이 하나 있습니다

published

Step 26

25. 바뀌지 않는 것이 하나 있습니다

원주 ICT 빅데이터 고급

5부 · 그래서 내 일은 어떻게 되나

업무를 아는 사람이 가장 강하다

> 여러분의 업무 경험 × AI 도구 — 이 조합을 이길 사람은 없습니다.

Step 27

26. 단계가 올라가도, 조심할 것은 그대로

published

Step 27

26. 단계가 올라가도, 조심할 것은 그대로

원주 ICT 빅데이터 고급

5부 · 그래서 내 일은 어떻게 되나

지어낸 답 · 정보 유출 · 저작권 · 과신

> AI가 강해질수록 필요한 건 두려움이 아니라 "확인하는 습관"입니다. 자세한 안전장치는 각 실습 스텝에서 실제 사례와 함께 다룹니다.

Step 28

27. 회사에 들여오는 현실적인 순서

published

Step 28

27. 회사에 들여오는 현실적인 순서

원주 ICT 빅데이터 고급

5부 · 그래서 내 일은 어떻게 되나

나부터 → 우리 팀으로 → 회사 시스템으로

> 거창한 도입 계획보다 내 업무 하나가 먼저입니다. 1번은 수료하는 순간 시작할 수 있습니다.

Step 29

28. 사실, 이 과정 전체가 세 단계였습니다

published

Step 29

28. 사실, 이 과정 전체가 세 단계였습니다

원주 ICT 빅데이터 고급

5부 · 그래서 내 일은 어떻게 되나

1일차 오전=물어보기, 오후=자리에 앉히기, 2일차=일 맡기기

> 이틀의 커리큘럼은 AI 패러다임 10년의 압축 체험입니다. 수료 후 회사에서도 같은 순서로 도입하면 됩니다.

Step 30

29. 마무리 — 이제 3단계를 직접 경험할 시간

published

Step 30

29. 마무리 — 이제 3단계를 직접 경험할 시간

원주 ICT 빅데이터 고급

오늘 기억할 세 문장, 그리고 Cursor 온보딩으로

> 다음 모듈에서 여러분의 첫 에이전트, Cursor를 만납니다.

Module 26practice필수

기본 설치와 계정 인증

Python, Cursor, Git, GitHub, Node.js를 정해진 순서대로 설치하고 각 도구의 실행과 인증 상태를 확인합니다.

6 steps

Step 1

1. Python 설치와 실행 확인

published

Step 1

1. Python 설치와 실행 확인

원주 ICT 빅데이터 고급

Python을 먼저 설치합니다

Python은 CSV를 읽고 데이터 분석 앱을 실행하는 기본 엔진입니다. 설치가 끝난 뒤에는 반드시 터미널에서 버전이 보이는지 확인합니다.

설치 순서

1. Windows 시작 메뉴에서 PowerShell 또는 터미널을 엽니다.

2. 아래 명령을 한 줄씩 붙여넣고 실행합니다.

powershell

winget install --id Python.Python.3.13 -e

3. 설치 창에서 동의를 묻는 경우 안내에 따라 진행합니다.

4. 설치가 끝나면 터미널을 완전히 닫았다가 새로 열고, 아래를 실행합니다.

powershell

python --version
py --version
python -m pip --version

완료 기준

Python 3.13... 또는 설치된 Python 버전과 pip 버전이 표시되면 성공입니다. python 명령을 찾지 못하면 설치 창의 Add Python to PATH 옵션을 확인한 뒤 강사에게 화면을 보여주세요.

Step 2

2. Cursor 설치

published

Step 2

2. Cursor 설치

원주 ICT 빅데이터 고급

Cursor를 설치합니다

Cursor는 파일을 열고, AI에게 데이터 분석과 앱 제작을 요청하는 이번 과정의 작업 공간입니다.

설치 순서

1. 브라우저에서 https://cursor.com에 접속합니다.

2. Download for Windows를 선택해 설치 파일을 받습니다.

3. 받은 설치 파일을 실행하고 기본 설치 옵션으로 완료합니다.

4. 설치가 끝나면 Cursor를 한 번 실행합니다.

완료 기준

Cursor 첫 화면 또는 빈 작업 창이 열리면 성공입니다. 설치 직후 업데이트 창이 보이면 업데이트가 끝날 때까지 기다린 뒤 다음 단계로 갑니다.

Step 3

3. Cursor 인증

published

Step 3

3. Cursor 인증

원주 ICT 빅데이터 고급

Cursor에 교육용 계정으로 로그인합니다

Cursor를 실행한 뒤 로그인 화면에서 강사가 안내한 교육용 계정인 pd@ustudio.co.kr를 선택하여 인증합니다.

인증 순서

1. Cursor의 Sign in 또는 Continue 버튼을 선택합니다.

2. 브라우저 인증 화면이 열리면 이메일에 pd@ustudio.co.kr를 입력합니다.

3. 비밀번호와 2단계 인증은 강사의 안내에 따라 직접 입력합니다.

4. 브라우저가 Cursor로 돌아오면, Cursor 왼쪽 아래의 계정 메뉴에서 로그인 상태를 확인합니다.

Cursor 설치 후 로그인 화면

꼭 지킬 점

  • 비밀번호, 인증번호, 토큰은 채팅·메모·프로젝트 파일에 적지 않습니다.
  • 개인 PC가 아닌 경우에는 수업이 끝난 뒤 강사 안내에 따라 로그아웃합니다.
  • 인증이 막히면 반복 시도하지 말고 인증 화면을 그대로 둔 채 강사에게 알려주세요.

완료 기준

Cursor 안에서 계정 메뉴가 보이고 로그인 안내 화면이 사라지면 성공입니다.

Step 4

4. Git 설치와 버전 확인

published

Step 4

4. Git 설치와 버전 확인

원주 ICT 빅데이터 고급

Git을 설치합니다

Git은 파일이 어떻게 바뀌었는지 기록하는 버전 관리 도구입니다. 오늘 만든 분석 앱을 안전하게 저장하고 나중에 되돌릴 때 사용합니다.

설치 순서

1. PowerShell 또는 터미널을 엽니다.

2. 아래 명령을 실행합니다.

powershell

winget install --id Git.Git -e

3. 설치가 끝나면 터미널을 새로 열고 아래 명령을 실행합니다.

powershell

git --version

완료 기준

git version 2...처럼 버전이 표시되면 성공입니다. 설치 중 선택지가 나오면 특별한 안내가 없는 한 기본값으로 계속 진행합니다.

Step 5

5. GitHub 인증

published

Step 5

5. GitHub 인증

원주 ICT 빅데이터 고급

GitHub에 연결합니다

GitHub는 Git으로 기록한 프로젝트를 온라인에 보관하는 곳입니다. GitHub CLI를 설치하고 브라우저에서 계정을 인증합니다.

설치와 인증 순서

1. 터미널에서 아래 명령으로 GitHub CLI를 설치합니다.

powershell

winget install --id GitHub.cli -e

2. 터미널을 새로 열고 인증을 시작합니다.

powershell

gh auth login

3. 화면에서 다음을 차례로 선택합니다.

복사용 텍스트

GitHub.com
HTTPS
Login with a web browser

4. 브라우저가 열리면 강사가 안내한 GitHub 계정으로 로그인하고 인증을 승인합니다.

5. 터미널로 돌아와 아래 명령을 실행합니다.

powershell

gh auth status

꼭 지킬 점

토큰이나 일회용 코드를 복사해 문서·채팅·프로젝트에 저장하지 않습니다. 개인 GitHub 계정을 사용하는 경우에도 비밀번호는 본인만 입력합니다.

완료 기준

Logged in to github.com 문구와 계정명이 보이면 성공입니다.

Step 6

6. Node.js 설치와 최종 점검

published

Step 6

6. Node.js 설치와 최종 점검

원주 ICT 빅데이터 고급

Node.js와 npm을 설치합니다

Node.js는 웹 앱 도구와 배포 도구를 실행하는 엔진이고, npm은 필요한 도구를 설치하는 명령입니다. 이후 Supabase와 Vercel 실습에서도 사용합니다.

설치 순서

1. 터미널에서 아래 명령을 실행합니다.

powershell

winget install --id OpenJS.NodeJS.LTS -e

2. 설치가 끝나면 터미널을 새로 열고 아래 명령을 실행합니다.

powershell

node --version
npm --version

기본 설치 완료 점검표

확인 항목터미널 또는 화면에서 확인할 내용
Pythonpython --version 결과가 보임
CursorCursor가 열리고 pd@ustudio.co.kr 계정 인증 상태가 보임
Gitgit --version 결과가 보임
GitHubgh auth status가 로그인 상태를 표시함
Node.jsnode --versionnpm --version 결과가 보임

다섯 항목을 모두 확인한 뒤 다음 모듈로 이동합니다. 다음 모듈에서는 Cursor로 프로젝트 폴더를 열고 AI Agent와 터미널을 실제로 사용합니다.

Module 27practice필수

Cursor 온보딩과 개발환경 기초

기본 설치를 마친 뒤 Cursor Agent, 프로젝트 폴더, 가상환경, GitHub private 저장소로 실제 작업 환경을 완성합니다.

15 steps

Step 1

이론: 개발 도구 지도 — 무엇을 왜 설치하나

published

Step 1

이론: 개발 도구 지도 — 무엇을 왜 설치하나

원주 ICT 빅데이터 고급

오늘 설치할 것들, 겁먹지 않아도 되는 이유

앞 모듈에서 Cursor, Python, Node.js, Git, GitHub CLI의 기본 설치와 인증을 마쳤습니다. 이제 각 도구가 어떤 역할을 하는지 확인하고, Cursor의 AI 에이전트에게 실제 작업을 맡기는 방법을 익힙니다.

Cursor가 작업실, 나머지는 에이전트가 대신 다루는 공구들입니다

도구별 역할 한 줄 정리

도구역할비유
CursorAI 에이전트가 있는 작업실공장장 딸린 작업실
Python데이터 앱(Streamlit)을 실행하는 엔진기계 A의 모터
Node.js · npm웹 도구와 MCP 서버를 실행하는 엔진기계 B의 모터
Git파일 변경 이력 기록 — 실수해도 되돌림문서의 "버전 기록"
GitHub · gh CLI기록을 인터넷 금고에 보관회사 밖 금고

왜 이만큼이나 필요한가

내일까지의 목표가 "데이터 앱을 만들어 인터넷에 배포"이기 때문입니다. 앱을 실행하려면 엔진(Python·Node.js)이, 안전하게 저장하려면 Git이, 배포하려면 GitHub이 필요합니다. 오늘 오전에 한 번 세팅하면 과정 내내 다시 만질 일이 거의 없습니다.

여러분의 역할은 세 가지뿐

복사용 텍스트

1. 요청하기 — "현재 프로젝트의 Python 환경을 확인해줘"
2. 승인하기 — 에이전트가 실행할 명령을 보고 [Run] 승인
3. 확인하기 — 결과 메시지에서 성공/실패 확인

명령어를 외울 필요가 없습니다. 다만 에이전트가 무엇을 하려는지 읽고 승인하는 습관이 이 과정의 핵심 기술입니다.

Step 2

Cursor 로그인 상태와 작업 화면 확인

published

Step 2

Cursor 로그인 상태와 작업 화면 확인

원주 ICT 빅데이터 고급

앞 모듈에서 설치한 Cursor를 엽니다

1. Cursor를 실행합니다.

2. 왼쪽 아래 계정 메뉴에서 pd@ustudio.co.kr 교육용 계정의 로그인 상태를 확인합니다.

3. 로그인 화면이 다시 보이면 앞 모듈의 Cursor 인증 단계로 돌아가 인증합니다.

4. 왼쪽 파일 탐색기와 오른쪽 채팅창 위치를 확인합니다.

Cursor 로그인 상태와 작업 화면

확인표

확인 항목체크
Cursor 실행
로그인 완료
왼쪽 파일 탐색기 확인
채팅창 열기 확인
Step 3

프로젝트 폴더 만들기

published

Step 3

프로젝트 폴더 만들기

원주 ICT 빅데이터 고급

폴더 구조

바탕화면 또는 문서 폴더에 아래 구조를 만듭니다.

복사용 텍스트

wonju-ict-advanced/
  data/
  docs/
  scripts/
  outputs/

폴더 역할

폴더역할
dataCSV, 원문 자료
docsMarkdown 지식베이스
scripts분석 스크립트
outputs결과 리포트

Cursor에서 File > Open Folderwonju-ict-advanced 폴더를 엽니다.

wonju-ict-advanced 프로젝트 폴더 구조
Step 4

에이전트에게 일 시키는 방법

published

Step 4

에이전트에게 일 시키는 방법

원주 ICT 빅데이터 고급

채팅창 열기

Ctrl + L(또는 오른쪽 위 채팅 아이콘)을 누르면 채팅창이 열립니다. 채팅창 아래 모드 선택에서 Agent를 선택합니다.

Agent 모드는 대화만 하는 것이 아니라 파일 생성과 터미널 실행까지 대신해 주는 모드입니다.

Cursor Agent 모드 — 파일 생성·터미널 실행까지 요청

기본 사용 흐름

이번 과정의 모든 실습은 Agent 모드에서 진행합니다.

순서내가 하는 것에이전트가 하는 것
1요청 입력 (강의의 프롬프트를 복사해 붙여넣기)작업 계획 설명
2기다리기파일 생성·수정 제안
3내용을 훑어보고 Accept(수락)변경 적용
4터미널 명령이 나오면 Run(실행) 승인명령 실행
5결과 확인오류가 있으면 설명하고 수정

첫 연습 (30초)

복사용 텍스트

hello.txt 파일을 만들어서 "원주 ICT 고급과정 실습 시작"이라고 적어줘.

왼쪽 파일 트리에 hello.txt가 생기고 내용이 맞으면 성공입니다. 확인했으면 "hello.txt를 삭제해줘"로 정리까지 해봅니다.

안전장치 — 실수해도 괜찮습니다

  • 제안이 마음에 안 들면 Reject(거절)를 누르면 아무것도 바뀌지 않습니다.
  • 이미 적용한 변경도 채팅 메시지 옆의 Restore checkpoint로 그 시점으로 되돌릴 수 있습니다.
  • 뭔가 꼬였을 때 만능 요청: 방금 작업을 되돌리고, 무엇이 문제였는지 설명한 뒤 다시 해줘.

요청을 잘하는 요령

요령예시
결과물을 명확히 말하기"CSV를 읽어서 표로 보여주는 앱을 만들어줘"
파일 이름 정해주기"app.py라는 이름으로 만들어줘"
모르는 건 맡기기"네가 추천하는 방식으로 진행해줘"
오류는 통째로 붙여넣기오류 메시지를 자르지 말고 전체 복사
Step 5

터미널 실행과 파일 확인

published

Step 5

터미널 실행과 파일 확인

원주 ICT 빅데이터 고급

터미널 위치 확인

Cursor 상단 메뉴에서 Terminal > New Terminal을 선택합니다. 이 과정에서 터미널 명령은 직접 입력하지 않지만, 에이전트가 실행하는 명령과 앱 실행 주소(URL)가 이 창에 표시되므로 위치를 알아둡니다.

hello.txt와 파일 트리 확인

앞 스텝 첫 연습에서 hello.txt를 만들었다면, 아래를 확인합니다.

확인기대 결과
왼쪽 파일 트리hello.txt가 보임
파일 내용원주 ICT 고급과정 실습 시작
하단 터미널에이전트가 Run을 실행한 이력(필요 시)

환경 확인도 에이전트에게 요청

복사용 텍스트

이 컴퓨터에 Python과 Node.js가 설치되어 있는지 버전을 확인하고,
데이터 앱 실습이 가능한 상태인지 알려줘.
없다면 설치 방법을 초보자 기준으로 안내해줘.
에이전트가 만든 hello.txt와 터미널·파일 트리 확인

채팅창 질문 예시

복사용 텍스트

현재 프로젝트 폴더 구조를 설명하고,
data, docs, scripts, outputs 폴더를 어떤 순서로 사용하면 좋을지 알려줘.
Step 6

Cursor 채팅으로 폴더 분석 요청

published

Step 6

Cursor 채팅으로 폴더 분석 요청

원주 ICT 빅데이터 고급

실습 요청문

복사용 텍스트

이 프로젝트 폴더를 업무 지식베이스 실습용으로 점검해줘.
부족한 폴더나 파일이 있으면 제안하고,
초보자가 따라 할 수 있는 다음 작업 5개를 순서대로 알려줘.

Cursor는 코드만 작성하는 도구가 아니라, 폴더 안의 자료를 같이 읽고 작업 순서를 잡아주는 실습 파트너로 사용합니다.

Step 7

Cursor에서 Python 인터프리터 선택

published

Step 7

Cursor에서 Python 인터프리터 선택

원주 ICT 빅데이터 고급

Python이 필요한 이유

2일차의 Streamlit 데이터 앱, CSV 분석, 유튜브 다운로드 로컬앱은 Python으로 실행합니다. Python 설치와 PATH 확인은 앞 모듈에서 마쳤으므로, 여기서는 Cursor가 사용할 Python을 선택합니다.

Cursor에서 사용할 Python 선택

1. Cursor에서 Ctrl + Shift + P를 누릅니다.

2. Python: Select Interpreter를 검색해 선택합니다.

3. 목록에서 설치된 Python 3.13을 선택합니다.

4. 이후 가상환경을 만든 뒤에는 프로젝트의 .venv를 다시 선택합니다.

설치 확인

powershell

python --version
py --version
python -m pip --version
Cursor Python 인터프리터 선택

python이 동작하지 않고 py만 동작하면 이후 명령의 pythonpy로 바꿉니다. 두 명령 모두 안 되면 PATH 체크 후 Cursor를 다시 시작합니다.

Step 8

Python 실행 테스트와 가상환경 만들기

published

Step 8

Python 실행 테스트와 가상환경 만들기

원주 ICT 빅데이터 고급

첫 실행 테스트

Cursor 에이전트에게 요청합니다.

복사용 텍스트

python_check.py 파일을 만들고 현재 Python 버전과 "원주 ICT Python 준비 완료"를 출력하게 해줘.
파일을 실행해서 정상 출력되는지 확인해줘.

직접 실행할 때는 아래 명령을 사용합니다.

powershell

python python_check.py

프로젝트 전용 가상환경

가상환경은 이 프로젝트에서 사용하는 패키지만 따로 보관하는 폴더입니다.

powershell

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip

PowerShell 실행 정책 오류가 나면 현재 터미널에서만 허용한 뒤 다시 활성화합니다.

powershell

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass


[[image:screenshots/27-8-python.png|Python 실행 테스트와 가상환경|wide]].\.venv\Scripts\Activate.ps1

완료 기준

  • 터미널 앞에 (.venv)가 보인다.
  • python python_check.py가 정상 출력된다.
  • Cursor 하단 인터프리터가 프로젝트의 .venv를 가리킨다.
Step 9

Node.js LTS와 npm 확인

published

Step 9

Node.js LTS와 npm 확인

원주 ICT 빅데이터 고급

Node.js를 함께 준비하는 이유

Node.js와 npm은 AI Studio 프론트 결과물, Vercel 배포, MCP·CLI 도구를 실행할 때 사용합니다. 설치는 앞 모듈에서 마쳤으므로, Cursor 안 터미널에서 실행 상태만 확인합니다.

설치 확인

powershell

node -v
npm -v
Node.js LTS와 npm 버전 확인

node -vnpm -v에서 각각 버전 번호가 출력되면 통과입니다. 버전이 나오지 않으면 새 터미널을 열고 다시 확인합니다.

Step 10

Git 사용자 정보 설정

published

Step 10

Git 사용자 정보 설정

원주 ICT 빅데이터 고급

Git 사용자 정보 설정

Git은 AI가 바꾼 파일의 이력을 저장하고 정상 상태로 되돌릴 수 있게 해주는 버전 관리 도구입니다. 앞 모듈에서 설치한 Git이 Cursor 터미널에서 보이는지 먼저 확인합니다.

powershell

git --version

첫 commit을 위한 사용자 설정

아래 이름과 이메일은 자신의 GitHub 계정 정보로 바꿉니다.

powershell

git config --global user.name "내 GitHub 이름"
git config --global user.email "내 GitHub 이메일"
git config --global init.defaultBranch main
git config --global --list
Git 사용자 정보 설정

공용 교육장 PC라면 수업 종료 후 강사 안내에 따라 저장된 계정 정보를 확인하고 로그아웃합니다.

Step 11

GitHub 계정과 GitHub CLI 상태 확인

published

Step 11

GitHub 계정과 GitHub CLI 상태 확인

원주 ICT 빅데이터 고급

GitHub 계정 준비

1. 앞 모듈에서 인증한 GitHub 계정을 https://github.com/에서 확인합니다.

2. 본인 프로필 화면에서 사용자 이름과 이메일을 확인합니다.

3. 공용 교육장 PC에서는 인증 정보를 따로 저장하거나 공유하지 않습니다.

GitHub CLI 확인

GitHub CLI(gh)는 터미널에서 저장소를 만들고 로그인·push하는 도구입니다. 앞 모듈에서 설치한 뒤 Cursor를 다시 시작해 아래 명령으로 확인합니다.

powershell

gh --version
GitHub 계정과 GitHub CLI 상태 확인

버전이 출력되지 않으면 새 터미널을 열거나 Windows를 로그아웃한 뒤 다시 확인합니다.

Step 12

GitHub CLI 인증 상태 확인

published

Step 12

GitHub CLI 인증 상태 확인

원주 ICT 빅데이터 고급

현재 인증 상태 확인

powershell

gh auth status

Logged in 상태가 보이면 다음 단계로 갑니다. 로그인 상태가 보이지 않을 때만 아래 명령으로 브라우저 인증을 다시 시작합니다.

복사용 텍스트

gh auth login

브라우저 인증이 필요한 경우에는 GitHub.comHTTPSLogin with a web browser를 선택하고 강사의 안내에 따라 승인합니다.

로그인 확인

powershell

gh auth status
GitHub CLI 인증 상태 — Logged in 확인

내 GitHub 사용자 이름과 Logged in 상태가 표시되면 성공입니다. 공용 PC에서는 토큰이나 인증 코드를 개인 메모에 복사해 두지 않습니다.

Step 13

Private 저장소 첫 commit과 push

published

Step 13

Private 저장소 첫 commit과 push

원주 ICT 빅데이터 고급

먼저 비밀정보 제외하기

Cursor 에이전트에게 요청합니다.

복사용 텍스트

현재 프로젝트를 GitHub private 저장소에 올릴 준비를 해줘.
.gitignore에 .env, .env.local, .env.*.local, .venv/, node_modules/, downloads/, __pycache__/, *.pyc를 넣고
비밀번호, API 키, 개인정보 파일이 추적되지 않는지 먼저 점검해줘.
아직 push하지 말고 점검 결과를 설명해줘.

점검이 끝나면 아래 명령을 실행합니다.

powershell

git init
git status
git add .
git commit -m "chore: initialize wonju advanced workspace"
git branch -M main
gh repo create wonju-ict-advanced --private --source=. --remote=origin --push

같은 이름의 저장소가 이미 있으면 wonju-ict-advanced-내이니셜처럼 이름을 바꿉니다.

결과 확인

powershell

git status
gh repo view --web

브라우저에서 저장소가 Private으로 표시되고, git status가 깨끗하면 첫 저장이 완료된 것입니다.

Step 14

이론: API란 무엇인가 — 데이터를 주고받는 주문 창구

published

Step 14

이론: API란 무엇인가 — 데이터를 주고받는 주문 창구

원주 ICT 빅데이터 고급

식당 주문으로 이해하는 API

다음 실습부터 "공휴일 API", "DART API", "기상청 API" 같은 말이 계속 나옵니다. API는 프로그램끼리 데이터를 주고받기로 약속한 주문 창구입니다. 식당과 똑같이 움직입니다.

내 앱(손님)이 주문서(요청)를 보내면 API 서버(주방)가 데이터(음식)를 내어 줍니다
식당API
손님내 앱 (Streamlit, 프론트 화면)
주문서요청 — 주소(URL) + 원하는 조건 + 인증키
주방API 서버 (공공데이터포털, DART, 기상청 등)
나온 음식응답 — 정해진 형식의 데이터(JSON/XML)

주문서를 뜯어보면

복사용 텍스트

...openapi.../getRestDeInfo?solYear=2026&solMonth=07&serviceKey=발급받은키
                 ↑ 메뉴 이름        ↑ 조건(2026년 7월)      ↑ 회원증
  • 인증키(serviceKey): 누가 주문했는지 확인하는 회원증. 무료로 발급받지만 코드에 직접 쓰지 않고 .env 파일에 보관합니다 — 코드는 GitHub에 올라가기 때문입니다.
  • 정해진 형식(JSON/XML): 응답 모양이 늘 같아야 프로그램이 자동으로 읽어 표로 만들 수 있습니다. 사람용 웹페이지 대신 기계용 데이터를 주는 이유입니다.

오늘 만들 앱 전부가 이 구조입니다

공휴일 조회, 기업 공시(DART), 주가(KIS), 날씨(기상청), 아파트 실거래가 — 데모 10종이 전부 "주문서를 보내고, 받은 데이터를 표와 차트로 바꾸는" 같은 구조입니다. 구조가 같으니 하나를 이해하면 열 개를 만들 수 있습니다. 실습에서는 먼저 내려받은 샘플 데이터로 연습하고, 확장 단계에서 실제 API 주문으로 바꿉니다.

Step 15

개발환경 최종 준비 점검

published

Step 15

개발환경 최종 준비 점검

원주 ICT 빅데이터 고급

한 번에 버전과 로그인 상태 확인

powershell

python --version
python -m pip --version
node -v
npm -v
git --version
gh --version
gh auth status
git status

최종 체크리스트

확인 항목완료 기준체크
Cursor로그인, 프로젝트 폴더, Agent 채팅 사용 가능
Python3.13 실행, .venv 활성화, 테스트 파일 실행 성공
Node.js현재 LTS와 npm 버전 출력
Git버전 출력, 이름·이메일 설정
GitHub CLIgh auth status 로그인 확인
Private 저장소첫 commit과 push 완료, 비밀정보 제외

하나라도 실패하면 오류 메시지 전체를 Cursor 에이전트에 붙여넣고 아래처럼 요청합니다.

복사용 텍스트

이 오류를 Windows PowerShell과 Cursor 기준으로 설명해줘.
원인을 먼저 진단하고, 기존 파일을 지우지 않는 최소 해결 순서를 한 단계씩 알려줘.

모든 항목이 완료되면 다음 공휴일 API 워밍업 앱과 유튜브 다운로드 로컬앱 실습을 시작합니다.

Module 28practice필수

공휴일 API 워밍업 앱 만들기

작은 공휴일 데이터로 API 호출, 날짜 파싱, 업무 데이터 보강의 기본 흐름을 익힙니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

공휴일 API 워밍업 앱

API 응답이 데이터 파일이 되고, 그 데이터를 내 업무 CSV에 붙일 수 있다는 감각을 잡습니다.

항목내용
데이터 축API 호출, 날짜 데이터, 작은 JSON
주요 입력holidays_2026.json, inquiries_sample.csv
최종 결과물공휴일 목록과 문의 데이터의 휴일 여부를 보여주는 작은 대시보드
권장 구현Python + Streamlit + pandas

완성 화면 기준

  • 공휴일 표가 보인다.
  • 문의 데이터에 휴일 여부가 붙는다.
  • 휴일과 문의량의 관계가 한 문단으로 요약된다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 API 워밍업 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

01-holiday-api 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("공휴일 목록과 문의 데이터의 휴일 여부를 보여주는 작은 대시보드")와 실습 준비 순서를 적어줘.
Cursor Agent — 폴더·샘플 데이터 준비 프롬프트

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 01-holiday-api/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
01-holiday-api 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 2개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 API 워밍업 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 공휴일 API 워밍업 앱을 만들어줘.

요구사항:
1. 공휴일 JSON을 읽어 날짜와 공휴일명을 표로 보여준다.
2. 문의 CSV에 휴일 여부 컬럼을 붙인다.
3. 휴일 전날/당일 문의 건수를 비교한다.
4. 결과를 outputs/report.md로 저장한다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

Cursor Agent — 첫 구현 요청 프롬프트

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 API 워밍업 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 01-holiday-api 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표문의 데이터에 holiday_yn 컬럼이 붙어 보인다
리포트outputs/report.md가 생성된다
Streamlit 실행 화면 — 공휴일 목록과 문의 데이터

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 API 워밍업 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 날짜 형식 통일
  • holiday_yn 컬럼 생성
  • 휴일/비휴일 문의 건수 비교
  • 휴일 전날 문의량 계산

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.
Cursor Agent — 분석 로직 점검 프롬프트

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 API 워밍업 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Cursor Agent — AI 브리핑 생성 프롬프트
Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 API 워밍업 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 공휴일 API 워밍업 앱

확장 과제

  • 실제 공공데이터 API 호출 코드로 바꾸기
  • 내 업무 데이터에 공휴일 컬럼 붙이기
  • 요일별 패턴까지 함께 분석하기

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 29practice필수

Cursor 실습: 유튜브 다운로드 프로그램 만들기

Cursor와 AI Studio로 명세를 다듬고 PyQt5·yt-dlp·ffmpeg·GitHub·PyInstaller까지 연결해 로컬앱을 완성합니다.

18 steps

Step 1

파이썬 프로젝트 시작

published

Step 1

파이썬 프로젝트 시작

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 1단계, "파이썬 프로젝트 시작"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 전 필수 정책·안전 안내

> 이 실습은 바이브코딩 학습을 위한 교육용 실습입니다. 다운로드 권한이 있는 영상만 사용하며, 저작권과 YouTube 이용약관을 반드시 준수합니다.

허용되는 실습 범위

  • 본인이 직접 제작·업로드한 영상
  • 저작권자가 다운로드를 명시적으로 허용한 영상
  • 강사가 교육용 테스트 대상으로 지정한 짧은 공개 샘플 1개

금지되는 사용

  • 권한 없는 타인의 영상, 연령 제한·유료·비공개 영상 다운로드
  • DRM, 접근 제어, 로그인 제한 또는 결제 장치 우회
  • 브라우저 쿠키, 로그인 세션, 인증 토큰을 추출·저장하거나 다운로드에 사용하는 행위
  • 재생목록·채널 전체 또는 여러 영상을 한꺼번에 받는 대량 다운로드
  • 내려받은 파일의 무단 재배포·공유·상업적 이용
  • 서비스에 과도한 요청을 보내거나 운영을 방해하는 자동화

권한이나 이용 조건이 불분명하면 다운로드하지 않습니다. 수업에서는 강사가 지정한 테스트 영상으로 조회·다운로드·오류 수정·패키징 흐름만 연습합니다.

진행 방식 — 명령은 에이전트에게

이 모듈의 스텝들에는 터미널 명령어가 그대로 적혀 있습니다. 직접 타이핑하지 않아도 됩니다. 명령 블록을 복사해 Cursor 에이전트 채팅에 붙여넣고 아래처럼 요청한 뒤, 실행을 승인하고 결과만 확인합니다.

복사용 텍스트

아래 명령을 이 프로젝트에서 실행해줘.
실행 전에 무엇을 하는 명령인지 한 줄로 설명하고, 오류가 나면 원인과 해결 순서를 알려줘.

(여기에 명령 블록 붙여넣기)

직접 입력해 보고 싶은 분은 그대로 따라 해도 됩니다 — 두 방식 모두 결과는 같습니다.

---

파이썬 프로젝트 시작

이번 2부의 목표

새 프로젝트를 시작하고, Ai Studio와 Cursor를 오가며 명세를 다듬고, 실행 가능한 파이썬 GUI 프로그램을 완성합니다.

핵심 기술

Python, PyQt5, yt-dlp, ffmpeg, GitHub, PyInstaller

최종 결과물

유튜브 조회 기능 → 다운로드 기능 → Full HD / 4K 지원 → exe 파일

---

Step 2

파이썬으로 만드는 로컬앱 개발

published

Step 2

파이썬으로 만드는 로컬앱 개발

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 2단계, "파이썬으로 만드는 로컬앱 개발"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

파이썬으로 만드는 로컬앱 개발

왜 파이썬으로 실습하는지, 로컬앱이 무엇인지 이해합니다.

왜 파이썬으로 실습하나요?

파이썬은 초보자도 쉽게 배울 수 있는 언어입니다. 문법이 간단하고 읽기 쉬워서, 코드를 작성하는 것보다 문제를 해결하는 것에 집중할 수 있습니다.

또한 파이썬은 풍부한 라이브러리를 제공합니다. GUI를 만들고 싶으면 PyQt5, 웹에서 데이터를 가져오고 싶으면 requests, 유튜브 영상을 다운로드하고 싶으면 yt-dlp 같은 도구들이 이미 준비되어 있어서 처음부터 모든 것을 만들 필요가 없습니다.

이번 실습에서는 AI와 협업하는 개발 방식을 배우는 것이 목표입니다. 파이썬은 AI가 코드를 생성하고 수정하기에도 적합한 언어이기 때문에, Cursor나 Ai Studio 같은 도구와 함께 사용하기에 최적입니다.

로컬앱이란 무엇인가요?

로컬앱(Local App)은 인터넷 연결 없이도 내 컴퓨터에서 직접 실행되는 프로그램입니다. 웹 브라우저를 열지 않아도 되고, 서버에 접속할 필요도 없습니다.

로컬앱의 특징:

  • 내 PC에서 바로 실행됩니다
  • 인터넷 연결이 없어도 동작합니다 (다운로드 기능은 인터넷 필요)
  • 웹 브라우저 없이 독립적으로 실행됩니다
  • 파일 시스템에 직접 접근할 수 있습니다

이번 실습에서 만드는 유튜브 다운로더도 로컬앱입니다. 프로그램을 실행하면 창이 뜨고, URL을 입력하면 내 컴퓨터의 Downloads 폴더에 영상이 저장됩니다.

exe 파일로 패키징하기

  • PyInstaller 같은 도구를 사용합니다
  • 파이썬 코드와 필요한 라이브러리를 하나의 exe 파일로 묶습니다
  • exe 파일을 더블클릭하면 프로그램이 실행됩니다
  • 다른 사람에게 exe 파일만 전달해도 사용할 수 있습니다

---

Step 3

2부 전체 흐름

published

Step 3

2부 전체 흐름

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 3단계, "2부 전체 흐름"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 전체 흐름

이번 실습은 이렇게 진행합니다

전제: 1부에서 Cursor, Python, Git, GitHub CLI 기본 구축을 끝낸 상태입니다.

실습 단계

1. 새 프로젝트 폴더를 만듭니다

2. AGENTS.md를 넣어 AI의 작업 규칙을 정합니다

3. Ai Studio에서 plan.md 초안을 만듭니다

4. Cursor로 기술 검토를 받고 다시 Ai Studio에서 수정합니다

5. Go 판단 후 조회 프로그램부터 구현합니다

6. 다운로드 기능을 추가하고 720p 한계를 확인합니다

7. ffmpeg와 명령줄 도구, PATH 환경변수를 이해하고 설정합니다

8. Full HD / 4K 다운로드를 구현합니다

9. GitHub에 프로젝트를 저장합니다

10. exe 파일로 패키징합니다

왜 단계적으로 만드나요?

처음부터 완성 앱을 한 번에 요구하면 명세가 커지고 불안정해집니다. 이번 2부는 작은 기능부터 확인하고, 잘 되는 것을 바탕으로 확장하는 방식으로 진행합니다.

주의

유튜브 다운로드 실습은 저작권과 플랫폼 정책을 준수하는 범위에서만 사용합니다. 교육 목적의 로컬 실습을 기준으로 진행합니다.

---

Step 4

프로젝트 시작하기

published

Step 4

프로젝트 시작하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 4단계, "프로젝트 시작하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

프로젝트 시작하기

새 프로젝트 폴더를 만들고, 2부 실습 전용 작업 공간을 준비합니다.

이번 2부는 기존 프로젝트가 아니라 새 프로젝트로 시작합니다. 그래야 실습 결과물을 깔끔하게 분리할 수 있고, Git 이력도 명확하게 남길 수 있습니다.

프로젝트 폴더 생성

터미널에서 다음 명령어를 실행합니다:

`

mkdir youtube-downloader

cd youtube-downloader

`

예상 프로젝트 구조

`

youtube-downloader/

├─ AGENTS.md

├─ plan.md

├─ main.py

├─ requirements.txt

└─ README.md

`

왜 새 프로젝트로 시작하나요?

  • 실습 결과물을 다른 프로젝트와 분리할 수 있습니다
  • Git 이력과 산출물을 깔끔하게 관리할 수 있습니다
  • AI가 프로젝트 문맥을 더 정확하게 이해합니다

권장 파일명

처음 실행 파일은 main.py로 두면 초보자가 따라가기 쉽습니다.

---

Step 5

AGENTS.md 설정하기

published

Step 5

AGENTS.md 설정하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 5단계, "AGENTS.md 설정하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AGENTS.md 설정하기

AI가 이 프로젝트에서 어떻게 행동해야 하는지 규칙을 먼저 정합니다.

AGENTS.md는 이 프로젝트에서 AI가 따라야 할 운영 규칙입니다. 이번 실습에서는 특히 PLAN → GO → ACT 순서를 지키게 하는 것이 중요합니다.

AGENTS.md 예시

```markdown

AGENTS.md

Working Rules

  • Always start in PLAN mode
  • Read plan.md before proposing work
  • Do not write code until the user says GO
  • Keep changes small and scoped
  • Explain changed files and run steps after each task

`

AGENTS.md가 하는 일

  • AI에게 PLAN → GO → ACT 순서를 강제합니다
  • 코드 범위를 벗어나는 과도한 수정을 줄입니다
  • plan.md를 먼저 읽고 일하게 만들어 협업 품질을 높입니다

실습 팁

규칙은 짧고 강해야 합니다. 너무 길면 AI도 사람도 잘 지키지 못합니다.

---

Step 6

Google AI Studio에서 아이디어 초안 만들기

published

Step 6

Google AI Studio에서 아이디어 초안 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 6단계, "Google AI Studio에서 아이디어 초안 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Google AI Studio에서 아이디어 초안 만들기

처음에는 크게 시작하지 않습니다. 먼저 유튜브 조회 프로그램만 만드는 명세부터 시작합니다.

이번 실습의 핵심은 처음부터 모든 기능을 다 넣지 않는 것입니다. 처음에는 다운로드 기능을 넣지 않고, 조회 기능만 있는 작은 프로그램을 기준으로 명세를 만듭니다.

Cursor 프롬프트

`

PyQt5와 yt-dlp를 사용해서 유튜브 조회 프로그램을 만들어줘.

아직 다운로드 기능은 넣지 말고,

아래 기능만 포함한 plan.md 초안을 작성해줘.

  • 유튜브 URL 입력
  • 조회 버튼
  • 썸네일 표시
  • 제목 표시
  • 조회수 표시

그리고 초보자 교육용 문서가 되도록

아래도 함께 정리해줘.

  • 필요한 pip 패키지
  • 각 패키지의 역할
  • 예상 예외 처리
  • 첫 실행 방법

`

이 단계의 목표

  • plan.md 초안을 만든다
  • 다운로드 기능은 아직 넣지 않는다
  • 기능보다 명세의 구조를 먼저 만든다

plan.md에 들어가면 좋은 항목

  • 프로젝트 목표
  • 핵심 기능
  • 필요한 pip 패키지
  • 예외 처리
  • 실행 방법
  • 결과물 파일

---

Step 7

Ai Studio와 Cursor를 번갈아 사용합니다

published

Step 7

Ai Studio와 Cursor를 번갈아 사용합니다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 7단계, "Ai Studio와 Cursor를 번갈아 사용합니다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Ai Studio와 Cursor를 번갈아 사용합니다

명세는 한 번에 완성하지 않습니다. 생성 → 검토 → 수정 → 재검토를 반복하다가 원하는 수준이 되면 Go 합니다.

Ai Studio는 아이디어를 문서로 정리하는 데 강하고, Cursor는 실제 구현 가능성을 검토하는 데 강합니다. 두 도구를 번갈아 사용하면 더 안정적인 명세를 만들 수 있습니다.

Cursor 검토 요청 프롬프트

`

plan.md 초안이야. 아직 코드는 작성하지 말고

구현 관점에서만 검토해줘.

다음 기준으로 정리해줘.

1. 구현하기에 모호한 부분

2. 빠진 요구사항

3. 필요한 예외 처리

4. 추천 파일 구조

5. 초보자가 막히기 쉬운 지점

`

Ai Studio 수정 요청 프롬프트

`

아래는 Cursor의 기술 검토 의견이야.

이 피드백을 반영해서 plan.md를 수정해줘.

조건:

  • 문서는 너무 길지 않게
  • 실습용으로 간결하게
  • 구현 순서가 보이게
  • pip 패키지 설명은 유지

`

Go 판단 기준

  • 목표 기능이 명확하다
  • 예외 처리 기준이 보인다
  • 필요한 패키지가 정리됐다
  • 실행 방법이 적혀 있다
  • 지금 단계에서 구현 범위가 크지 않다

같은 방식을 계속 사용합니다

다운로드 기능 추가, ffmpeg 반영, 고화질 확장 때도 plan.md를 갱신하고 같은 핑퐁 구조로 검토한 뒤 Go 하면 됩니다.

---

Step 8

pip 패키지 이해하고 설치하기

published

Step 8

pip 패키지 이해하고 설치하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 8단계, "pip 패키지 이해하고 설치하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

pip 패키지 이해하고 설치하기

`pip`는 파이썬 패키지 설치 도구입니다. 코드는 있어도 패키지가 없으면 실행되지 않습니다.

우리는 모든 기능을 처음부터 직접 만들지 않습니다. 이미 잘 만들어진 패키지를 설치해서 조합합니다.

필요한 패키지

PyQt5

  • 윈도우, 버튼, 입력창 같은 GUI를 만듭니다.

yt-dlp

  • 유튜브 정보 조회와 다운로드를 담당합니다.

requests

  • 썸네일 이미지를 내려받을 때 자주 사용됩니다.

설치 명령어

Windows:

`

python -m venv .venv

.venv\Scripts\activate

python -m pip install -U "yt-dlp[default]" PyQt5 requests

`

macOS:

`

python3 -m venv .venv

source .venv/bin/activate

python -m pip install -U "yt-dlp[default]" PyQt5 requests

`

왜 이 설명이 중요한가요?

Cursor가 코드를 잘 만들어도 필요한 패키지가 설치되지 않으면 프로그램은 실행되지 않습니다. 그래서 "무엇을 설치하는지"를 이해하고 넘어가야 합니다.

---

Step 9

조회 프로그램 구현하기

published

Step 9

조회 프로그램 구현하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 9단계, "조회 프로그램 구현하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

조회 프로그램 구현하기

이제 첫 번째 Go를 냅니다. 아직은 조회 기능만 구현합니다.

지금부터는 코드 생성 단계입니다. 다만 plan.md에 정의한 범위 안에서만 구현하도록 요청합니다.

Cursor 프롬프트

`

좋아. Go.

현재 plan.md 범위 안에서만 구현해줘.

요구:

  • main.py로 구현
  • PyQt5 GUI
  • 유튜브 URL 입력창
  • 조회 버튼
  • 썸네일, 제목, 조회수 표시
  • requests를 사용해 썸네일 로딩 가능
  • 초보자가 읽기 쉬운 주석 포함
  • 실행 방법도 함께 정리

`

실행 명령어

`

python main.py

`

성공 기준

  • 프로그램 창이 뜬다
  • 유튜브 URL을 입력할 수 있다
  • 조회 버튼을 누르면 썸네일이 보인다
  • 제목과 조회수가 표시된다

실습 팁

좋아요 수는 영상마다 안정적으로 조회되지 않을 수 있어 초반 목표에서 제외하는 편이 좋습니다.

---

Step 10

다운로드 기능 추가하기

published

Step 10

다운로드 기능 추가하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 10단계, "다운로드 기능 추가하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

다운로드 기능 추가하기

조회가 되면 이제 저장 기능을 붙입니다. 이 단계에서 보통 720p 한계를 만나게 됩니다.

먼저 기본 다운로드 기능부터 구현합니다. 이 단계의 목표는 "다운로드가 된다"는 것 자체를 확인하는 것입니다.

Cursor 프롬프트

`

조회 기능이 동작하니 이제 다운로드 버튼을 추가해줘.

조건:

  • 기존 조회 기능은 유지
  • 다운로드 버튼 추가
  • 기본 저장 위치는 운영체제의 Downloads 폴더
  • 다운로드 진행 상태를 간단히 표시
  • 먼저 구현이 쉬운 방식으로 시작

`

이 단계에서 관찰할 것

  • 파일은 잘 저장되는가?
  • 음성이 함께 들어오는가?
  • 일부 영상이 720p까지만 되는가?

왜 720p까지만 될까요?

고화질 영상은 영상 스트림과 오디오 스트림이 분리된 경우가 많습니다. 이때는 둘을 합칠 도구가 따로 필요합니다.

---

Step 11

ffmpeg와 명령줄 도구 이해하기

published

Step 11

ffmpeg와 명령줄 도구 이해하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 11단계, "ffmpeg와 명령줄 도구 이해하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

ffmpeg와 명령줄 도구 이해하기

ffmpeg는 파이썬 패키지가 아니라 명령줄(CLI) 프로그램입니다. 그래서 설치와 PATH 설정이 함께 필요합니다.

명령줄 도구는 터미널에서 명령어로 실행하는 프로그램입니다. 우리는 이미 여러 명령줄 도구를 사용하고 있습니다.

명령줄 도구 예시

  • python: 파이썬 프로그램 실행
  • pip: 파이썬 패키지 설치
  • git: 버전 관리
  • ffmpeg: 영상/음성 변환 및 병합

작업 흐름

`

PyQt5 GUI → yt-dlp → ffmpeg → 완성 파일 저장

`

CLI란?

터미널에서 명령어로 실행하는 프로그램입니다. 화면 버튼 대신 명령어로 동작합니다.

ffmpeg는 왜 필요한가요?

Full HD 이상에서는 영상과 음성을 각각 받은 뒤 합치는 작업이 필요한데, 그 병합을 ffmpeg가 담당합니다.

---

Step 12

Windows에서 ffmpeg 설치와 PATH 설정

published

Step 12

Windows에서 ffmpeg 설치와 PATH 설정

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 12단계, "Windows에서 ffmpeg 설치와 PATH 설정"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Windows에서 ffmpeg 설치와 PATH 설정

운영체제가 ffmpeg 위치를 찾을 수 있게 해야 합니다. 그 설정이 PATH 환경변수입니다.

Windows에서는 ffmpeg를 내려받아 압축을 푼 뒤, bin 폴더 경로를 PATH에 등록해야 합니다.

설치 단계

1. ffmpeg 압축 파일을 내려받아 압축을 풉니다

2. 예시로 C:\ffmpeg 위치에 폴더를 둡니다

3. C:\ffmpeg\bin 경로를 복사합니다

4. Windows 검색에서 "환경 변수"를 열고 Path에 새 항목으로 추가합니다

5. 터미널을 완전히 다시 열고 아래 명령으로 확인합니다

확인 명령어

`

ffmpeg -version

`

왜 PATH를 설정하나요?

프로그램이 ffmpeg를 호출할 때 운영체제가 ffmpeg.exe가 어디 있는지 알아야 하기 때문입니다. PATH가 없으면 "ffmpeg not found" 오류가 납니다.

체크 포인트

  • 새 터미널에서 ffmpeg -version이 출력된다
  • Cursor 터미널도 재시작한다
  • bin 폴더까지 들어간 경로인지 다시 확인한다

---

Step 13

macOS에서 ffmpeg 설치와 PATH 확인

published

Step 13

macOS에서 ffmpeg 설치와 PATH 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 13단계, "macOS에서 ffmpeg 설치와 PATH 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

macOS에서 ffmpeg 설치와 PATH 확인

macOS에서는 보통 Homebrew로 설치하는 것이 가장 단순합니다.

설치 명령어

`

brew install ffmpeg

ffmpeg -version

`

PATH 설정 (필요한 경우)

`

echo 'export PATH="$(brew --prefix)/bin:$PATH"' >> ~/.zshrc

source ~/.zshrc

`

왜 PATH를 확인하나요?

brew로 설치해도 쉘 설정에 따라 터미널이 ffmpeg를 바로 못 찾는 경우가 있습니다. 이때 PATH에 brew bin 경로를 잡아주면 됩니다.

실습 팁

macOS에서는 zsh를 쓰는 경우가 많아서 ~/.zshrc를 수정하는 예시를 사용합니다.

---

Step 14

Full HD · 4K 다운로드 구현

published

Step 14

Full HD · 4K 다운로드 구현

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 14단계, "Full HD · 4K 다운로드 구현"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Full HD · 4K 다운로드 구현

ffmpeg 준비가 끝났다면 다시 명세를 확장하고, 고화질 다운로드를 구현합니다.

이제부터는 단순 다운로드가 아니라 영상 + 음성 병합을 포함한 고화질 다운로드를 목표로 합니다.

Cursor 프롬프트

`

plan.md를 업데이트했어.

이제 고화질 다운로드를 구현해줘.

조건:

  • ffmpeg가 설치되어 있다고 가정
  • bestvideo+bestaudio 조합 우선
  • 없으면 가능한 다음 화질로 자동 fallback
  • 병합 후 하나의 파일로 저장
  • 기존 조회 기능과 다운로드 버튼 흐름은 유지
  • 상태 메시지에 현재 진행 상황 표시

`

확인 명령어

`

ffmpeg -version

`

권장 품질 정책

  • 가능하면 최고 화질
  • 없으면 자동으로 다음 화질
  • 영상 + 음성을 병합해 단일 파일 저장

명세도 같이 업데이트하세요

고화질 구현 전에는 plan.md에 품질 정책과 ffmpeg 사용 조건을 한 번 더 반영하고 Go 하는 흐름이 가장 안정적입니다.

---

Step 15

GitHub 저장소 만들고 푸시하기

published

Step 15

GitHub 저장소 만들고 푸시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 15단계, "GitHub 저장소 만들고 푸시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

GitHub 저장소 만들고 푸시하기

1부에서 배운 GitHub CLI 흐름을 이번 프로젝트에 실제로 적용합니다.

실습 결과물을 로컬에만 두지 말고, GitHub에 저장해 두면 다음 시간에 이어서 수정하기 쉽습니다.

먼저 GitHub CLI 로그인 확인

GitHub CLI 설치와 로그인은 앞의 "Cursor 온보딩과 개발환경 기초" 모듈에서 완료했습니다. 아직이라면 그 모듈부터 마치고 돌아옵니다.

powershell

gh auth status

git add 전에 .gitignore부터 확인

프로젝트 루트의 .gitignore에 아래 항목을 먼저 넣습니다. 영상·음원·쿠키·비밀정보는 GitHub에 올리지 않습니다.

gitignore

.venv/
.env
.env.local
.env.*.local
downloads/
*.mp4
*.webm
*.mkv
*.mp3
*.m4a
*cookies*.txt

Git 명령어

`

git init

git add .

git commit -m "feat: youtube downloader"

git branch -M main

gh repo create youtube-downloader --private --source=. --remote=origin

git push -u origin main

`

왜 GitHub에 올리나요?

  • 실습 결과물을 안전하게 저장할 수 있습니다
  • 다음 수업에서 이어서 수정하기 쉽습니다
  • AI가 만들어준 코드도 버전 관리 습관을 들일 수 있습니다

참고

이미 같은 이름의 저장소가 있다면 gh repo create 대신 기존 원격 저장소를 연결해서 푸시하면 됩니다.

---

Step 16

exe 파일 만들기

published

Step 16

exe 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 16단계, "exe 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

exe 파일 만들기

Windows 배포 기준으로 PyInstaller를 사용해 실행 파일을 만듭니다.

PyInstaller는 파이썬 프로그램과 필요한 실행 환경을 묶어서 배포용 실행 파일 형태로 만들어주는 도구입니다.

설치 및 실행

`

pip install pyinstaller

pyinstaller --onefile --windowed main.py

`

생성되는 파일 위치

`

dist/

└─ main.exe

`

PyInstaller란?

파이썬 프로그램과 필요한 환경을 묶어서 배포용 실행 파일 형태로 만드는 도구입니다.

실습 팁

  • 아이콘 추가는 심화 과정으로 분리해도 좋습니다
  • 처음에는 onefile 결과만 확인해도 충분합니다
  • 백신이 낯선 exe를 경고할 수 있으니 테스트 환경에서 먼저 확인합니다

---

Step 17

막혔을 때는 로그로 다시 핑퐁합니다

published

Step 17

막혔을 때는 로그로 다시 핑퐁합니다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 17단계, "막혔을 때는 로그로 다시 핑퐁합니다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

막혔을 때는 로그로 다시 핑퐁합니다

실행 → 오류 확인 → Cursor 수정 → 재실행. 이 반복이 AI Native 개발의 핵심 루프입니다.

프로그램이 한 번에 완성되지 않아도 괜찮습니다. 중요한 것은 에러를 정확히 보고, 그 에러를 바탕으로 다시 Cursor와 협업하는 것입니다.

Cursor 프롬프트

`

아래는 실행 에러 로그야.

원인과 수정 방향을 먼저 설명해주고,

승인된 범위 안에서만 고쳐줘.

[에러 로그 붙여넣기]

`

좋은 디버깅 습관

  • "안 돼요" 대신 에러 로그를 붙여넣는다
  • 방금 바뀐 파일과 실행 명령을 같이 적는다
  • 한 번에 너무 많이 고치지 않는다

이번 2부에서 배운 것

  • 새 프로젝트 시작하기
  • AGENTS.md로 작업 규칙 만들기
  • Ai Studio와 Cursor로 명세 핑퐁하기
  • PyQt5, yt-dlp, ffmpeg 활용하기
  • PATH 환경변수 이해하기
  • GitHub에 저장하고 exe로 배포하기

요약

아이디어를 바로 코딩하지 않고, 명세를 다듬고 검토한 뒤 구현하는 전체 흐름을 경험했습니다.

---

Step 18

완료! 축하합니다 🎉

published

Step 18

완료! 축하합니다 🎉

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor 실습: 유튜브 다운로드 프로그램 만들기"의 18단계, "완료! 축하합니다 🎉"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

완료! 축하합니다 🎉

로컬 앱 개발을 완료했습니다. 이제 웹앱을 만들어볼 차례입니다.

🎉 유튜브 다운로더 완성!

아이디어부터 실행 파일까지, 전체 개발 과정을 경험했습니다.

이번 실습에서 완성한 것들

  • 유튜브 영상 조회 기능
  • 영상 다운로드 기능
  • Full HD / 4K 고화질 지원
  • PyQt5 GUI 인터페이스
  • GitHub 저장소 생성 및 관리
  • 실행 파일(.exe) 생성

배운 핵심 개념들

AI와의 협업

  • AGENTS.md로 작업 규칙을 정하고, PLAN/ACT 모드로 체계적으로 개발

명세 작성

  • Google AI Studio와 Cursor를 오가며 명세를 다듬고 검토

로컬 앱 개발

  • PyQt5로 GUI 프로그램 만들기

명령줄 도구

  • ffmpeg와 PATH 환경변수 이해

버전 관리

  • GitHub로 프로젝트 저장 및 관리

배포

  • PyInstaller로 실행 파일 만들기

다음 단계: 웹앱 만들기

로컬 앱 개발을 완료했으니, 이제 웹앱을 만들어볼 차례입니다!

웹앱의 장점:

  • React/Next.js로 웹 인터페이스 만들기
  • Supabase로 데이터베이스와 백엔드 활용하기
  • 웹에서도 AI와 협업하는 개발 방법
  • 배포와 공유가 쉬운 웹앱의 장점

웹앱은 설치 없이 브라우저에서 바로 사용할 수 있고, 여러 사람과 쉽게 공유할 수 있습니다.

---

마무리

수고하셨습니다! 다음 강의에서 웹앱 개발을 시작해봅시다. 🚀

Module 30lesson필수

업무 지식베이스와 RAG 이해

문서 묶음이 AI 답변의 근거가 되는 방식과 RAG의 기본 흐름을 이해합니다.

5 steps

Step 1

지식베이스란 무엇인가

published

Step 1

지식베이스란 무엇인가

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 지식베이스와 RAG 이해"의 1단계, "지식베이스란 무엇인가"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI는 우리 회사 일을 모른다

ChatGPT, Claude, Gemini가 아무리 똑똑해도 대답할 수 없는 것이 있습니다.

AI가 모르는 것이유
우리 회사의 규정, 수주 이력, 고객 정보학습 데이터에 없는 내부 자료
지난주에 나온 공고문학습 시점 이후의 정보
"그 문서 어디 있지?"우리 폴더를 볼 수 없음

이 간극을 메우는 방법이 자료를 AI에게 건네주는 것이고, 건네주기 좋게 정리한 문서 묶음이 업무 지식베이스입니다. 자료를 잘 정리할수록 AI 답변의 정확도가 올라갑니다 — 이번 과정 전체를 관통하는 원칙입니다.

일반 폴더와 무엇이 다른가

일반 폴더지식베이스 폴더
파일명이 제각각날짜·유형·주제 규칙이 있음
문서 안 구조가 다름요약, 원문, 표가 구분됨
사람이 찾아서 읽음AI가 검색하고 근거로 사용
같은 자료도 정리 규칙을 적용하면 AI가 쓸 수 있는 지식베이스가 됩니다

좋은 지식베이스의 조건

  • 최신 자료와 오래된 자료를 구분할 수 있다.
  • 문서의 주제가 분명하다.
  • 표, 목록, 요약이 일정한 형식으로 들어 있다.
  • 원문 근거를 확인할 수 있다.
Step 2

RAG 흐름 이해

published

Step 2

RAG 흐름 이해

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 지식베이스와 RAG 이해"의 2단계, "RAG 흐름 이해"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

RAG란

RAG(Retrieval-Augmented Generation)는 "검색으로 근거를 찾은 뒤(Retrieval), 그 근거를 바탕으로 답을 생성한다(Generation)"는 뜻입니다. 어려운 말 같지만 사서가 있는 도서관과 같습니다.

도서관RAG
책을 주제별로 정리해 서가에 꽂는다문서 준비
색인 카드를 만든다색인
질문을 받으면 관련 책을 찾는다검색
책 내용을 근거로 답한다답변 생성
"이 책 몇 페이지에 있어요"라고 출처를 밝힌다검증

RAG 기본 흐름

RAG 5단계 — 답변 품질은 검색이 좋은 근거를 찾았는가에서 결정됩니다
단계설명
문서 준비Markdown, PDF 텍스트, CSV 등으로 자료 정리
색인문서를 검색 가능한 조각으로 나눔
검색질문과 관련 있는 문서 조각을 찾음
답변검색된 근거를 바탕으로 답변 생성
검증근거 문서와 답변이 맞는지 확인

왜 답변이 아니라 검색이 중요한가

AI가 아무리 글을 잘 써도, 검색이 엉뚱한 문서를 가져오면 답은 틀립니다. 반대로 검색이 정확한 근거를 찾으면 답변은 거의 자동으로 좋아집니다. 그래서 RAG 품질을 높이는 작업의 대부분은 1단계 문서 준비입니다 — 문서 하나에 주제 하나, 첫 줄 요약, 고정된 표 형식이 전부 검색 정확도를 위한 규칙입니다.

실습 질문 예시

  • 이 공고에 우리 회사가 지원 가능한가?
  • 제안서에서 심사위원이 약점으로 볼 부분은 무엇인가?
  • 최근 수주 데이터에서 납기 리스크가 큰 건은 무엇인가?
Step 3

이론: 검색은 어떻게 비슷한 문서를 찾나 — 임베딩

published

Step 3

이론: 검색은 어떻게 비슷한 문서를 찾나 — 임베딩

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 지식베이스와 RAG 이해"의 3단계, "이론: 검색은 어떻게 비슷한 문서를 찾나 — 임베딩"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

단어가 달라도 찾아내는 비결

"휴가 며칠 남았지?"라고 물었는데 문서에는 "연차 사용 규정"이라고 적혀 있다면, 단어 일치 검색으로는 못 찾습니다. RAG의 검색이 이 문제를 푸는 방법이 임베딩(embedding)입니다.

임베딩은 글의 뜻을 숫자 좌표로 바꾸는 기술입니다. 뜻이 비슷한 글은 좌표가 가깝고, 뜻이 다른 글은 멀리 떨어집니다. "연차"와 "휴가"는 단어가 달라도 좌표가 가깝기 때문에 검색에 걸립니다.

질문도 좌표로 바꾼 뒤, 지도에서 가까운 문서 조각을 찾는 것이 RAG의 검색입니다

검색 과정 다시 보기

단계실제로 일어나는 일
색인문서 조각마다 좌표(임베딩)를 계산해 저장
질문질문도 같은 방식으로 좌표로 변환
검색질문 좌표에서 가장 가까운 문서 조각 몇 개를 선택
답변선택된 조각만 AI에게 건네 근거로 사용

문서 정리 규칙의 진짜 이유

한 문서에 휴가 규정과 매출 보고가 섞여 있으면 좌표가 어중간한 위치에 찍혀 어느 질문에도 안 걸립니다. "문서 하나에 주제 하나, 첫 줄에 요약"이라는 규칙은 취향이 아니라, 좌표를 선명하게 만들어 검색 정확도를 높이는 기술적 장치입니다.

Step 4

이론: 환각을 줄이는 3중 안전장치

published

Step 4

이론: 환각을 줄이는 3중 안전장치

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 지식베이스와 RAG 이해"의 4단계, "이론: 환각을 줄이는 3중 안전장치"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

환각은 왜 생기나

생성형 AI는 근거가 없어도 "모른다"라고 멈추지 않고, 가장 그럴듯한 다음 단어를 이어 씁니다. 문장이 자연스럽게 완성되기 때문에 읽어서는 진짜 정보와 구분이 어렵습니다. 이것이 환각(할루시네이션)입니다.

업무에서는 환각 하나가 잘못된 마감일, 잘못된 자격 판단, 잘못된 금액으로 이어집니다. 그래서 이 과정의 모든 실습에는 3중 안전장치가 들어 있습니다.

세 장치를 모두 통과한 답만 업무 기록으로 사용합니다

3중 안전장치

장치방법어디서 배웠나
① 프롬프트에서 막기"근거 없으면 추정 금지, 확인필요 표시"프롬프트 5요소의 검증
② 근거와 함께 답하게자료를 넣고 출처 인용을 요구지식베이스와 RAG
③ 사람이 원문 대조날짜·금액·자격은 반드시 눈으로 확인모든 실습의 마지막 단계

"확인필요"는 실패가 아닙니다

AI가 "확인필요"라고 답하면 실망스러울 수 있지만, 이것이 가장 잘 작동하는 상태입니다. 지어낸 그럴듯한 답보다 정직한 공백이 업무에서는 훨씬 가치 있습니다. 데모 앱들에도 이 원칙이 들어 있습니다 — 근거 없는 항목은 빈칸이나 확인필요로 표시됩니다.

Step 5

RAG에 적합한 자료와 부적합한 자료

published

Step 5

RAG에 적합한 자료와 부적합한 자료

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 지식베이스와 RAG 이해"의 5단계, "RAG에 적합한 자료와 부적합한 자료"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

자료적합도이유
공고문높음조건, 제출물, 일정이 명확
제안서높음강점·약점·근거 검토 가능
회의록중간발언이 길면 요약 구조 필요
이미지 스캔 PDF낮음텍스트 추출이 먼저 필요
정리되지 않은 파일 묶음낮음검색 결과가 불안정

RAG는 모든 자료를 넣는 기술이 아니라, 답변에 필요한 자료를 골라 구조화하는 작업입니다.

Module 31lesson필수

이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지

오전에 만든 Streamlit 앱이 인터넷 서비스가 되는 여정 — IaaS·PaaS·BaaS·SaaS를 식당 창업 비유로 이해하고 Vercel·Supabase 실습으로 연결합니다.

30 steps

Step 1

표지 — 내 컴퓨터를 떠나, 서비스가 되기까지

published

Step 1

표지 — 내 컴퓨터를 떠나, 서비스가 되기까지

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 1단계, "표지 — 내 컴퓨터를 떠나, 서비스가 되기까지"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

IaaS · PaaS · BaaS · SaaS — 클라우드를 빌려 쓰는 네 가지 방법
  • Supabase·Vercel 실습에 들어가기 전, 큰 그림을 잡는 이론 강의입니다.
  • 이번에도 비유 하나로 끝까지 갑니다 — 앱을 서비스로 내놓는 것 = 식당을 여는 것.
Step 2

01. 오전에 한 것 — 데이터가 대시보드가 되는 가장 간단한 길

published

Step 2

01. 오전에 한 것 — 데이터가 대시보드가 되는 가장 간단한 길

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 2단계, "01. 오전에 한 것 — 데이터가 대시보드가 되는 가장 간단한 길"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

1부 · 내 컴퓨터를 벗어나야 하는 이유

CSV → Python+Streamlit → 웹 대시보드

> 서버도, HTML도 없이 파이썬 몇십 줄로 대시보드 — 데이터를 화면으로 만드는 가장 진입장벽 낮은 도구가 Streamlit입니다.

Step 3

02. 그런데 이 요리, 우리 집 주방에서만 먹을 수 있습니다

published

Step 3

02. 그런데 이 요리, 우리 집 주방에서만 먹을 수 있습니다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 3단계, "02. 그런데 이 요리, 우리 집 주방에서만 먹을 수 있습니다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

1부 · 내 컴퓨터를 벗어나야 하는 이유

localhost = 내 컴퓨터라는 뜻 — 나에게만 보이는 주소

> 링크를 보내도 남에게는 안 열리고, 노트북을 덮으면 꺼집니다. 잘 만든 요리를 손님상에 올리려면 "주방 밖"이 필요합니다.

Step 4

03. 가장 쉬운 탈출구 — Streamlit Cloud

published

Step 4

03. 가장 쉬운 탈출구 — Streamlit Cloud

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 4단계, "03. 가장 쉬운 탈출구 — Streamlit Cloud"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

1부 · 내 컴퓨터를 벗어나야 하는 이유

GitHub에 올리면 무료 URL — 클라우드를 빌려 쓴 첫 경험

> Streamlit 앱은 GitHub에 올리고 Streamlit Cloud에 연결하면 몇 분 만에 무료 URL이 생깁니다. 방금 우리는 처음으로 "남의 컴퓨터"를 빌렸습니다 — 빌리는 방법의 지도를 지금부터 그립니다.

Step 5

04. 서비스가 되려면 — 식당 창업 체크리스트

published

Step 5

04. 서비스가 되려면 — 식당 창업 체크리스트

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 5단계, "04. 서비스가 되려면 — 식당 창업 체크리스트"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

1부 · 내 컴퓨터를 벗어나야 하는 이유

24시간 서버 · 주소 · 데이터 창고 · 보안 · 확장 · 운영

> 요리(코드)는 이미 있습니다. 문제는 나머지 전부 — 이걸 누가 해주느냐가 오늘의 주제입니다.

Step 6

05. 사지 말고, 빌리자 — 클라우드의 발상

published

Step 6

05. 사지 말고, 빌리자 — 클라우드의 발상

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 6단계, "05. 사지 말고, 빌리자 — 클라우드의 발상"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

1부 · 내 컴퓨터를 벗어나야 하는 이유

서버를 사던 시대에서, 전기처럼 끌어다 쓰는 시대로

> 전기를 쓰려고 발전소를 짓지 않듯, 서버도 이제 전기처럼 씁니다. 시작 비용 0원, 쓴 만큼만.

Step 7

06. 오늘의 지도 — 얼마나 빌릴 것인가

published

Step 7

06. 오늘의 지도 — 얼마나 빌릴 것인가

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 7단계, "06. 오늘의 지도 — 얼마나 빌릴 것인가"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

1부 · 내 컴퓨터를 벗어나야 하는 이유

직접 구축 ↔ IaaS ↔ PaaS·BaaS ↔ SaaS 스펙트럼, 오늘 우리의 자리

> 이 그림 하나가 오늘 강의 전부입니다. 오른쪽일수록 편하고, 왼쪽일수록 자유롭습니다 — 정답이 아니라 "우리 상황에 맞는 칸"이 있을 뿐.

Step 8

07. IaaS — 빈 상가를 임대하다

published

Step 8

07. IaaS — 빈 상가를 임대하다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 8단계, "07. IaaS — 빈 상가를 임대하다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 · 식당 창업으로 이해하는 네 글자

공간·전기·경비는 건물주가, 설비부터 조리까지는 내가 — AWS · Azure · Google Cloud

> Infrastructure(기반 시설) as a Service. 자유도 최고지만 주방 설비부터 전부 내 일이라, 전담 인력이 있는 조직의 선택지입니다.

Step 9

08. PaaS — 설비 갖춘 공유주방

published

Step 9

08. PaaS — 설비 갖춘 공유주방

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 9단계, "08. PaaS — 설비 갖춘 공유주방"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 · 식당 창업으로 이해하는 네 글자

요리(코드)만 가져가면 조리·서빙은 주방이 — Vercel · Railway · Streamlit Cloud

> Platform(실행 환경) as a Service. 아까 본 Streamlit Cloud도 사실 PaaS였습니다 — 여러분은 이미 써봤습니다.

Step 10

09. BaaS — 공통 반찬은 전문점에서

published

Step 10

09. BaaS — 공통 반찬은 전문점에서

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 10단계, "09. BaaS — 공통 반찬은 전문점에서"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 · 식당 창업으로 이해하는 네 글자

DB·로그인·파일 보관을 완제품으로 — Supabase · Firebase

> Backend(뒷단 공통 기능) as a Service. 김치를 직접 담그는 게 식당의 본질이 아니라면, 사다 쓰는 게 창업의 지혜입니다.

Step 11

10. SaaS — 만들지 않고, 차려진 음식을 먹는다

published

Step 11

10. SaaS — 만들지 않고, 차려진 음식을 먹는다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 11단계, "10. SaaS — 만들지 않고, 차려진 음식을 먹는다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 · 식당 창업으로 이해하는 네 글자

완성된 소프트웨어를 그냥 사용 — Sheets · Gmail · 노션 · ChatGPT 등 각종 서비스

> Software as a Service. 1일차 실습 전체가 SaaS 위에서 진행됐습니다 — 설치한 것이 하나도 없었죠.

Step 12

11. 한 장 정리 — 누가 무엇을 맡나

published

Step 12

11. 한 장 정리 — 누가 무엇을 맡나

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 12단계, "11. 한 장 정리 — 누가 무엇을 맡나"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 · 식당 창업으로 이해하는 네 글자

단계별 책임 분담표 — 오른쪽으로 갈수록 맡기는 칸이 늘어난다

> 어디까지 가도 "요리(내 앱)와 데이터"만은 끝까지 내 것 — 그래서 이 과정이 코드보다 데이터 이해를 강조해 온 것입니다.

Step 13

12. 이름표 붙이기 — 계층별 대표 서비스 지도

published

Step 13

12. 이름표 붙이기 — 계층별 대표 서비스 지도

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 13단계, "12. 이름표 붙이기 — 계층별 대표 서비스 지도"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

2부 · 식당 창업으로 이해하는 네 글자

IaaS: AWS·Azure·GCP / PaaS: Vercel·Railway·Streamlit Cloud / BaaS: Supabase·Firebase / SaaS: 각종 서비스

> 이름이 낯설어도 "어느 칸의 서비스인가"만 기억하세요 — 그게 개발자·업체와 대화할 때 절반입니다.

Step 14

13. Vercel — push하면 요리가 손님상에

published

Step 14

13. Vercel — push하면 요리가 손님상에

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 14단계, "13. Vercel — push하면 요리가 손님상에"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

3부 · 우리가 쓰는 도구로 다시 보기

내 코드 → GitHub push → 전 세계 URL, 이후엔 고치면 자동 반영

> 서빙 직원을 고용한 적이 없는데 새 버전이 알아서 손님상에 갑니다. 잘못 나가면 되돌리기 버튼 한 번(롤백).

Step 15

14. Vercel이 대신 들어주는 짐

published

Step 15

14. Vercel이 대신 들어주는 짐

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 15단계, "14. Vercel이 대신 들어주는 짐"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

3부 · 우리가 쓰는 도구로 다시 보기

24시간 서버 · URL과 HTTPS · 손님 몰림 대응 · 자동 배포

> 4번 슬라이드 체크리스트가 거의 다 지워졌습니다. 남은 건 하나 — 데이터 보관 창고.

Step 16

15. Supabase — DB · 로그인 · 저장소를 한 번에

published

Step 16

15. Supabase — DB · 로그인 · 저장소를 한 번에

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 16단계, "15. Supabase — DB · 로그인 · 저장소를 한 번에"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

3부 · 우리가 쓰는 도구로 다시 보기

진짜 데이터베이스 + 회원 관리 + 파일 보관 — 반찬 전문점

> 몇 년 걸리던 백엔드 공통 기능이 "가입 5분"으로. 지금 보고 계신 이 학습 사이트의 자료실도 Supabase입니다.

Step 17

16. 조합 완성 — 내 요리 + 공유주방 + 반찬 전문점

published

Step 17

16. 조합 완성 — 내 요리 + 공유주방 + 반찬 전문점

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 17단계, "16. 조합 완성 — 내 요리 + 공유주방 + 반찬 전문점"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

3부 · 우리가 쓰는 도구로 다시 보기

사용자 → Vercel(내 앱) → Supabase(데이터) 구조도

> 화면·로직은 Vercel에서, 데이터는 Supabase에서 — 어제 이론의 "3계층"이 실제 서비스 구조가 된 모습이자, 요즘 1인 개발의 표준 출발선입니다.

Step 18

17. 1일차와 연결 — 반찬통에서 업소용 저장고로

published

Step 18

17. 1일차와 연결 — 반찬통에서 업소용 저장고로

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 18단계, "17. 1일차와 연결 — 반찬통에서 업소용 저장고로"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

3부 · 우리가 쓰는 도구로 다시 보기

Google Sheets는 가정용 반찬통, Supabase는 업소용 저장고 — 구조는 같다

> 행=기록, 열=속성이라는 구조는 똑같습니다. 어제 배운 시트 열 설계가 그대로 테이블 설계가 됩니다 — 자세한 건 다음 모듈의 "DB 기초" 스텝에서.

Step 19

18. 바이브코딩과 클라우드는 세트입니다

published

Step 19

18. 바이브코딩과 클라우드는 세트입니다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 19단계, "18. 바이브코딩과 클라우드는 세트입니다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

4부 · 왜 이 조합인가, 조심할 것은

만들기는 에이전트, 인프라는 클라우드, 연결은 MCP

> 코드를 몰라도 앱을 만들 수 있게 됐듯, 서버를 몰라도 서비스를 낼 수 있게 됐습니다 — 두 흐름이 같은 시기에 만난 것이 지금입니다.

Step 20

19. 예전엔 다섯 명이 하던 일

published

Step 20

19. 예전엔 다섯 명이 하던 일

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 20단계, "19. 예전엔 다섯 명이 하던 일"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

4부 · 왜 이 조합인가, 조심할 것은

화면·서버·DB·인프라·디자인 다섯 역할이 도구로 — 나는 무엇을 만들지 정하고 검토

> 전문가가 필요 없어진 게 아니라, "시작"에 전문가 팀이 필요 없어진 것입니다.

Step 21

20. 비용 이야기 — 오늘 실습은 전부 0원

published

Step 21

20. 비용 이야기 — 오늘 실습은 전부 0원

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 21단계, "20. 비용 이야기 — 오늘 실습은 전부 0원"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

4부 · 왜 이 조합인가, 조심할 것은

Vercel·Supabase 무료 구간과 유료를 고민할 시점

> 공짜라서 좋은 게 아니라 "확신이 생긴 뒤에 돈을 내는 순서"라서 좋은 겁니다 — 무료로 검증하고, 되는 것에만 투자.

Step 22

21. 속도 이야기 — 아이디어에서 URL까지

published

Step 22

21. 속도 이야기 — 아이디어에서 URL까지

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 22단계, "21. 속도 이야기 — 아이디어에서 URL까지"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

4부 · 왜 이 조합인가, 조심할 것은

반년 걸리던 시간표가 하루로 — 계획보다 실험이 싸진다

> 속도가 빨라지면 일하는 방식이 바뀝니다. 일단 만들어 보고, 반응을 보고, 고친다 — 오전 이론의 "초안의 시대"가 서비스에도 적용됩니다.

Step 23

22. 조심할 것 ① — 내 데이터가 어디에 있나

published

Step 23

22. 조심할 것 ① — 내 데이터가 어디에 있나

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 23단계, "22. 조심할 것 ① — 내 데이터가 어디에 있나"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

4부 · 왜 이 조합인가, 조심할 것은

리전 · 개인정보와 규정 · 열쇠 관리 · 공개 범위

> 빌려 쓰더라도 데이터의 주인과 책임은 나입니다. 실습에서는 테스트 데이터만, 실제 고객 데이터는 규정 확인 먼저.

Step 24

23. 조심할 것 ② — 무료의 함정 세 가지

published

Step 24

23. 조심할 것 ② — 무료의 함정 세 가지

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 24단계, "23. 조심할 것 ② — 무료의 함정 세 가지"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

4부 · 왜 이 조합인가, 조심할 것은

잠자는 서버 · 한도 초과 · 갈아타기 비용

> 함정을 알고 쓰면 무료는 최고의 실험실이고, 모르고 운영하면 사고가 됩니다.

Step 25

24. 언제 무엇을 고르나 — 질문 세 개면 됩니다

published

Step 25

24. 언제 무엇을 고르나 — 질문 세 개면 됩니다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 25단계, "24. 언제 무엇을 고르나 — 질문 세 개면 됩니다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

5부 · 선택 기준과 오늘 오후

이미 있는 서비스로 되나? → 우리만의 기능이 필요한가? → 특수 요건이 있나?

> 순서가 핵심입니다 — SaaS부터 물어보고, 안 될 때만 한 칸씩 왼쪽으로.

Step 26

25. 우리 회사라면 — 시나리오 세 개

published

Step 26

25. 우리 회사라면 — 시나리오 세 개

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 26단계, "25. 우리 회사라면 — 시나리오 세 개"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

5부 · 선택 기준과 오늘 오후

교육 신청=SaaS로 충분, 거래처 조회=PaaS+BaaS, 설비 관제=IaaS 검토

> 같은 회사 안에서도 일마다 칸이 다릅니다 — "전부 클라우드"도 "전부 구축"도 답이 아닙니다.

Step 27

26. 서비스가 커지면 — 공유주방을 떠나야 하나요?

published

Step 27

26. 서비스가 커지면 — 공유주방을 떠나야 하나요?

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 27단계, "26. 서비스가 커지면 — 공유주방을 떠나야 하나요?"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

5부 · 선택 기준과 오늘 오후

대부분은 요금제 업그레이드로 충분, 떠나는 건 이유가 분명할 때만

> "나중에 커지면 어쩌지"는 지금 걱정할 일이 아닙니다 — 그 고민이 생겼다면 이미 성공한 겁니다.

Step 28

27. 이 과정의 인프라 지도

published

Step 28

27. 이 과정의 인프라 지도

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 28단계, "27. 이 과정의 인프라 지도"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

5부 · 선택 기준과 오늘 오후

1일차 SaaS 위에서 → 오전 내 컴퓨터에서 → 오후 PaaS+BaaS로

> 빌려 쓰기 → 직접 만들기 → 만든 것을 빌린 인프라에 올리기. 이틀의 여정이 곧 업계의 표준 경로이고, 수료 후 회사에서도 이 순서 그대로 가면 됩니다.

Step 29

28. 잠시 후 — 에이전트가 이 모든 걸 대신합니다

published

Step 29

28. 잠시 후 — 에이전트가 이 모든 걸 대신합니다

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 29단계, "28. 잠시 후 — 에이전트가 이 모든 걸 대신합니다"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

5부 · 선택 기준과 오늘 오후

Supabase 온보딩 → Cursor×Supabase MCP → Cursor×Vercel MCP

> 오늘 아침 배운 세 규칙(설명 듣고, 승인은 내가)을 지키면서 — 실습이 끝나면 여러분 이름의 URL이 하나 생깁니다.

Step 30

29. 마무리 — 이제 앱에 주소를 달아줄 시간

published

Step 30

29. 마무리 — 이제 앱에 주소를 달아줄 시간

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "이론 강의: 내 컴퓨터를 떠나 서비스가 되기까지"의 30단계, "29. 마무리 — 이제 앱에 주소를 달아줄 시간"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

기억할 세 문장, 그리고 Supabase 온보딩으로

> 다음 모듈에서 진짜 데이터베이스를 만듭니다.

Module 32practice필수

공휴일 앱을 Streamlit Community Cloud에 배포하기

28번에서 만든 공휴일 API 워밍업 앱을 독립 GitHub 저장소로 정리하고 Streamlit Community Cloud에서 URL로 공유합니다.

11 steps

Step 1

배포 목표와 공개 전 안전 점검

published

Step 1

배포 목표와 공개 전 안전 점검

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 1단계, "배포 목표와 공개 전 안전 점검"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

이번 실습의 결과

28번에서 로컬로 실행한 공휴일 API 워밍업 앱을 인터넷 URL로 엽니다. 배포가 끝나면 다른 사람이 내 컴퓨터 없이도 브라우저에서 앱을 볼 수 있습니다.

단계결과
Cursor배포용 파일을 점검하고 실행 확인
GitHub앱 코드와 교육용 샘플 데이터를 저장
Streamlit Community CloudGitHub 코드를 실행해 공유 URL 생성

공개해도 되는 것과 안 되는 것

GitHub와 배포 URL에 올려도 되는 것절대 올리면 안 되는 것
교육용 공휴일 JSON, 합성 문의 CSV, 앱 코드, README실제 업무자료, 개인정보, 비밀번호, API 키, .env, .streamlit/secrets.toml

이번에는 교육용 샘플 데이터만 사용하므로 GitHub 공개 저장소로 배포합니다. 실제 업무 데이터를 쓰는 경우에는 공개 전에 강사와 함께 데이터·권한·저장소 공개 범위를 다시 결정합니다.

Step 2

Cursor로 독립 배포 폴더 만들기

published

Step 2

Cursor로 독립 배포 폴더 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 2단계, "Cursor로 독립 배포 폴더 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

왜 별도 폴더로 정리하나요

wonju-advanced-demos에는 여러 실습이 함께 있습니다. 공휴일 앱 하나만 깔끔하게 공유할 수 있도록 wonju-holiday-api-dashboard 폴더를 별도로 만듭니다.

Cursor Agent 요청

복사용 텍스트

현재 프로젝트의 01-holiday-api 앱을 Streamlit Community Cloud에 배포할 독립 프로젝트로 정리해줘.

상위 작업 폴더에 wonju-holiday-api-dashboard 폴더를 만들고, 그 안에 아래 구조를 준비해줘.

wonju-holiday-api-dashboard/
  app.py
  data/
  requirements.txt
  README.md
  .gitignore

조건:
- 01-holiday-api에서 앱 실행에 실제로 필요한 코드와 교육용 샘플 데이터만 복사해줘.
- .venv, outputs, __pycache__, .env, secrets.toml, 개인 파일은 복사하지 마.
- app.py가 data 폴더의 파일을 상대 경로로 읽도록 확인해줘.
- requirements.txt에는 app.py가 import하는 외부 패키지만 넣어줘.
- README.md에는 로컬 실행 방법과 "교육용 샘플 데이터" 문구를 넣어줘.
- 만든 뒤 파일 목록과 복사하지 않은 항목을 설명해줘.

18줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

완료 기준

wonju-holiday-api-dashboard 안에 앱 실행에 필요한 파일만 있고, .venv나 실제 자료가 섞여 있지 않습니다.

Step 3

requirements.txt와 .gitignore를 Cursor로 점검

published

Step 3

requirements.txt와 .gitignore를 Cursor로 점검

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 3단계, "requirements.txt와 .gitignore를 Cursor로 점검"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cloud가 앱을 실행하려면 필요한 두 파일

파일역할
requirements.txtCloud가 설치할 Python 패키지 목록
.gitignoreGitHub에 올리면 안 되는 파일 목록

Streamlit Community Cloud는 앱 파일과 같은 폴더 또는 저장소 루트에서 의존성 파일을 찾습니다. 여러 의존성 파일을 섞지 않고, 이번 실습에서는 requirements.txt 하나만 사용합니다.

Cursor Agent 요청

복사용 텍스트

wonju-holiday-api-dashboard 폴더를 배포 전 점검해줘.

1. app.py의 import를 기준으로 requirements.txt를 확인하고 누락되거나 불필요한 패키지를 알려줘.
2. .gitignore에 .venv/, __pycache__/, .env, .env.*, .streamlit/secrets.toml, outputs/가 있는지 확인해줘.
3. 실제 비밀번호, API 키, 개인정보, 절대 경로가 코드나 README에 없는지 검색해줘.
4. 수정이 필요하면 먼저 변경 계획을 보여주고, 승인 후 고쳐줘.
5. 마지막에 배포 가능 여부를 체크리스트로 알려줘.

예시 requirements.txt

복사용 텍스트

streamlit
pandas
requests
python-dotenv

실제 목록은 앱이 사용하는 패키지를 Cursor가 확인한 결과를 우선합니다. python-dotenv는 앱이 사용하지 않으면 넣지 않아도 됩니다.

Step 4

Cursor에게 로컬 실행과 배포 전 테스트 맡기기

published

Step 4

Cursor에게 로컬 실행과 배포 전 테스트 맡기기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 4단계, "Cursor에게 로컬 실행과 배포 전 테스트 맡기기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

먼저 내 컴퓨터에서 확인합니다

Cloud 오류를 고치기 전에 로컬 앱이 정상인지 확인하는 편이 빠릅니다. 명령은 직접 입력하지 않고 Cursor Agent가 실행합니다.

Cursor Agent 요청

복사용 텍스트

wonju-holiday-api-dashboard 폴더에서 배포 전 로컬 테스트를 해줘.

1. 기존 가상환경을 사용할 수 있으면 재사용하고, 없으면 이 프로젝트 전용 .venv를 만들어줘.
2. requirements.txt의 패키지를 설치해줘.
3. streamlit run app.py로 앱을 실행해줘.
4. 브라우저에서 공휴일 표, 문의 데이터의 holiday_yn 컬럼, 요약 결과가 보이는지 확인할 수 있게 안내해줘.
5. 오류가 나면 원인을 설명하고 최소 수정 후 다시 실행해줘.
6. 성공하면 실행 명령과 확인 결과를 README.md에 반영해줘.

확인표

확인정상 기준
앱 주소Cursor 터미널에 Local URL이 보임
공휴일 표날짜와 공휴일명이 표시됨
문의 데이터holiday_yn 열이 보임
오류브라우저 화면에 빨간 오류 메시지가 없음
Step 5

GitHub 저장소를 브라우저에서 만들기

published

Step 5

GitHub 저장소를 브라우저에서 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 5단계, "GitHub 저장소를 브라우저에서 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

GitHub에서 할 일

1. 브라우저에서 https://github.com에 로그인합니다.

2. 오른쪽 위 +New repository를 선택합니다.

3. Repository name에 wonju-holiday-api-dashboard를 입력합니다.

4. 이번 교육용 샘플 앱은 Public을 선택합니다. 실제 자료가 있다면 공개하지 말고 강사에게 확인합니다.

5. Add a README file 등 초기 파일 생성 옵션은 선택하지 않습니다. Cursor가 만든 README와 충돌할 수 있습니다.

6. Create repository를 누른 뒤, 빈 저장소 화면을 그대로 열어 둡니다.

저장소 주소 확인

주소가 아래와 비슷한 형태인지 확인합니다.

GitHub 비밀번호, 인증 코드, Personal Access Token은 Cursor 채팅·README·코드 파일에 붙여넣지 않습니다.

Step 6

Cursor로 GitHub에 첫 저장과 push 하기

published

Step 6

Cursor로 GitHub에 첫 저장과 push 하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 6단계, "Cursor로 GitHub에 첫 저장과 push 하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

GitHub로 보내는 일도 Cursor에게 맡깁니다

GitHub 저장소를 만든 뒤 Cursor에서 wonju-holiday-api-dashboard 폴더를 엽니다. 아래 요청을 보내고, Cursor가 제안하는 Git 명령을 확인한 뒤 Run을 승인합니다.

Cursor Agent 요청

복사용 텍스트

현재 열린 wonju-holiday-api-dashboard 폴더를 GitHub의 빈 저장소에 첫 push 할 수 있게 준비해줘.

먼저 gh auth status와 git status를 확인해줘.
그 다음 다음 조건을 지켜 진행해줘.
- .gitignore가 실제로 적용되는지 확인한다.
- .env, secrets.toml, .venv, outputs, 개인정보 파일이 추적 대상이 아닌지 확인한다.
- git init, git add, 첫 commit, main 브랜치 설정, remote 연결, push 순서를 제안한다.
- 내 GitHub 아이디와 저장소 URL이 필요한 곳에서는 추측하지 말고 나에게 물어본다.
- 명령을 실행하기 전마다 무엇을 하는지 설명하고 Run 승인을 기다린다.
- push가 끝나면 GitHub에서 확인할 파일 목록을 알려준다.

GitHub에서 최종 확인

저장소 웹 화면을 새로고침해 아래 파일이 보이는지 확인합니다.

보여야 하는 파일보이면 안 되는 파일
app.py, data/, requirements.txt, README.md, .gitignore.env, .venv, secrets.toml, 실제 업무자료
Step 7

Streamlit Community Cloud에 GitHub 연결

published

Step 7

Streamlit Community Cloud에 GitHub 연결

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 7단계, "Streamlit Community Cloud에 GitHub 연결"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Streamlit Community Cloud 로그인

1. 브라우저에서 https://share.streamlit.io에 접속합니다.

2. Continue with GitHub 또는 GitHub 연결 버튼을 선택합니다.

3. GitHub 권한 승인 화면이 나오면, 방금 저장소를 만든 계정으로 승인합니다.

4. 저장소가 조직 계정에 있다면 그 조직의 Workspace를 선택합니다.

연결이 안 보일 때

상황확인할 것
저장소 목록에 없음GitHub 로그인 계정과 저장소 소유자가 같은지 확인
조직 저장소가 안 보임GitHub 조직 권한과 Streamlit 접근 승인을 확인
비공개 저장소Community Cloud GitHub 연결 권한을 추가로 승인하고 저장소 관리자 권한을 확인

이번 실습은 공개 교육용 저장소를 사용하므로, 저장소 이름이 목록에 보이는지까지만 확인하면 됩니다.

Step 8

Create app에서 저장소와 앱 파일 선택

published

Step 8

Create app에서 저장소와 앱 파일 선택

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 8단계, "Create app에서 저장소와 앱 파일 선택"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

배포 화면에서 입력할 값

1. Workspace 오른쪽 위 Create app을 누릅니다.

2. Yup, I have an app을 선택합니다.

3. 아래 값을 입력하거나 선택합니다.

항목입력 값
Repository내GitHub아이디/wonju-holiday-api-dashboard
Branchmain
Main file pathapp.py
App URL비워 두거나 기억하기 쉬운 이름 입력

앱 파일이 하위 폴더에 있는 구조를 유지했다면 Main file path에는 예를 들어 01-holiday-api/app.py처럼 GitHub 저장소 루트 기준 경로를 입력합니다. 경로가 헷갈리면 GitHub에서 app.py를 열어 주소와 파일 위치를 Cursor에게 보여주고 확인합니다.

배포 전 마지막 확인

  • Branch와 파일 경로가 GitHub 화면의 실제 이름과 한 글자까지 같은가
  • requirements.txt가 저장소 루트 또는 app.py와 같은 폴더에 있는가
  • 교육용 샘플 데이터가 data/에 함께 push 되었는가
Step 9

Advanced settings와 Secrets 안전하게 설정

published

Step 9

Advanced settings와 Secrets 안전하게 설정

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 9단계, "Advanced settings와 Secrets 안전하게 설정"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

이번 공휴일 앱은 Secrets가 필요 없습니다

교육용 JSON과 CSV만 읽는 현재 공휴일 앱은 API 키가 없으므로 Secrets 입력란을 비워 둡니다. 빈 칸으로 배포하는 것이 정상입니다.

Advanced settings에서 확인할 것

1. Advanced settings를 엽니다.

2. Python 버전은 로컬과 같은 버전을 선택합니다. 목록에 같은 버전이 없으면 지원되는 선택지 중 하나를 고르고, 오류가 나면 Cursor에 로그를 전달해 호환성을 점검합니다.

3. Secrets는 필요한 경우에만 TOML 형식으로 입력합니다.

4. 실제 키를 GitHub 파일이나 채팅에 넣지 않았는지 다시 확인합니다.

나중에 키가 필요한 앱의 예시

toml

SAMPLE_API_KEY = "Cloud 설정 화면에서만 입력하는 값"

이 값은 Cloud의 Advanced settings → Secrets에만 넣습니다. 로컬의 .streamlit/secrets.toml 파일도 GitHub에는 올리지 않습니다.

Step 10

Deploy 후 로그를 Cursor로 고치기

published

Step 10

Deploy 후 로그를 Cursor로 고치기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 10단계, "Deploy 후 로그를 Cursor로 고치기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Deploy와 첫 URL 확인

1. Deploy를 누릅니다.

2. 빌드 로그가 끝날 때까지 기다립니다.

3. 생성된 https://...streamlit.app URL을 새 탭에서 엽니다.

4. 공휴일 표와 holiday_yn 결과가 보이는지 확인합니다.

오류 로그가 나오면

Cloud 로그의 오류 부분만 복사해 Cursor Agent 대화에 붙여넣습니다.

복사용 텍스트

Streamlit Community Cloud 배포 로그에서 아래 오류가 발생했어.
원인을 초보자 기준으로 설명하고, GitHub에 올린 프로젝트에서 고칠 파일을 찾아 최소 수정해줘.
수정 후 requirements.txt와 상대 경로를 다시 점검하고, 내가 commit/push할 수 있게 변경 내용을 정리해줘.

오류 로그:
여기에 Cloud 로그 붙여넣기

GitHub에 수정 사항을 push하면 Community Cloud가 변경을 감지해 다시 빌드합니다. 새로 만든 출력 파일은 Cloud에서 영구 보관된다고 가정하지 말고, 필요한 원본·결과는 GitHub 또는 별도 저장소에 관리합니다.

Step 11

공유 URL 제출과 재배포 흐름 확인

published

Step 11

공유 URL 제출과 재배포 흐름 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "공휴일 앱을 Streamlit Community Cloud에 배포하기"의 11단계, "공유 URL 제출과 재배포 흐름 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

최종 제출물

제출물확인
GitHub 저장소 URL
Streamlit Community Cloud URL
배포 화면 캡처
교육용 샘플 데이터만 사용했다는 확인
다음 개선 아이디어 1개

앞으로의 수정 흐름

복사용 텍스트

Cursor에서 수정 → 로컬 실행 확인 → GitHub commit/push → Streamlit Cloud 자동 재배포 → URL 확인

마무리 Cursor Agent 요청

복사용 텍스트

wonju-holiday-api-dashboard 프로젝트를 수업 제출용으로 최종 점검해줘.
GitHub에 올리면 안 되는 파일이 없는지, README에 실행 방법과 배포 URL을 적을 자리가 있는지,
공휴일 표와 holiday_yn 결과를 설명하는 문장이 있는지 확인해줘.
문제가 있으면 수정 제안부터 보여주고, 최종 제출 체크리스트를 README.md에 추가해줘.
Module 33practice필수

Supabase 온보딩: 데이터베이스 만들기

Supabase 프로젝트를 만들고 테이블, CSV 업로드, API 키, 환경변수의 기본 흐름을 익힙니다.

6 steps

Step 1

Supabase가 맡는 역할 이해

published

Step 1

Supabase가 맡는 역할 이해

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Supabase 온보딩: 데이터베이스 만들기"의 1단계, "Supabase가 맡는 역할 이해"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

왜 Supabase를 쓰는가

Streamlit은 데이터를 빠르게 확인하는 데 좋습니다. 하지만 최종 웹앱으로 가려면 데이터를 저장하고 여러 화면에서 다시 읽을 수 있는 DB가 필요합니다.

도구역할
Streamlit빠른 데이터 확인용 임시 대시보드
Google AI Studio프론트 화면 초안 생성
Cursor실제 프로젝트 파일화와 코드 연결
Supabase데이터 저장소, 인증, API
Vercel웹앱 배포

오늘 목표는 Supabase 프로젝트, 샘플 테이블, CSV 업로드, API URL과 anon key 위치를 확인하는 것입니다. 이후 모듈에서는 Cursor에 Supabase MCP를 연결해, 에이전트가 직접 테이블을 만들고 조회하게 합니다.

Step 2

이론: 데이터베이스 기초 — 엑셀과 무엇이 다른가

published

Step 2

이론: 데이터베이스 기초 — 엑셀과 무엇이 다른가

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Supabase 온보딩: 데이터베이스 만들기"의 2단계, "이론: 데이터베이스 기초 — 엑셀과 무엇이 다른가"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

이미 절반은 알고 있습니다

1일차에 만든 Google Sheets 관리표를 떠올려 보세요. 열 이름을 정하고, 행마다 자료 하나씩 쌓았습니다. 데이터베이스(DB)의 테이블도 정확히 같은 구조입니다 — 열(컬럼) = 항목, 행(레코드) = 데이터 하나.

시트는 사람용 표, DB는 앱용 창고 — 구조는 같고 규칙이 다릅니다

그런데 왜 굳이 DB인가

차이엑셀·시트데이터베이스
값의 규칙아무 칸에 아무 값열마다 타입 고정 — 숫자 열에 글자를 넣으면 거부
행의 신원없음기본키(id)가 행마다 하나 — 중복·유실 방지
동시 사용한 파일을 여러 앱이 읽기 어려움여러 앱·여러 사람이 동시에 읽고 써도 안전
읽는 주체사람프로그램(API로 요청)

핵심은 마지막 줄입니다. 내일 만들 Streamlit 앱도, AI Studio로 만든 프론트 화면도 같은 DB 하나를 바라봅니다. 화면이 몇 개가 되어도 데이터는 한 곳 — 이것이 "앱을 만든다"의 실제 구조입니다.

미리 알아둘 용어 3개

용어쉬운 설명
테이블시트의 탭 하나에 해당. 주제 하나당 테이블 하나
기본키(Primary Key)행마다 붙는 고유 번호표. Supabase가 id 컬럼으로 자동 생성
SQL"score가 80 이상인 행을 보여줘"를 컴퓨터 문법으로 쓴 것. 에이전트가 대신 써 줍니다

다음 스텝에서 실제로 프로젝트와 테이블을 만듭니다. Supabase가 id와 created_at을 자동으로 만들어 주므로, 우리는 업무 항목 컬럼만 추가하면 됩니다.

Step 3

프로젝트 생성과 테이블 만들기

published

Step 3

프로젝트 생성과 테이블 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Supabase 온보딩: 데이터베이스 만들기"의 3단계, "프로젝트 생성과 테이블 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실행 순서

1. https://supabase.com에 접속해 GitHub 또는 Google 계정으로 가입합니다. 무료 플랜으로 이번 실습은 충분합니다.

2. New project를 누르고 아래 기준으로 만듭니다.

항목입력
프로젝트 이름wonju-ict-advanced
Database Password직접 정한 뒤 반드시 이 스텝의 개인 메모에 저장 (다시 볼 수 없습니다)
RegionNortheast Asia (Seoul)

3. 생성이 끝나면(1~2분 소요) Table Editor에서 demo_items 테이블을 만듭니다.

4. id(기본키)와 created_at은 Supabase가 자동으로 만들어 주므로 그대로 둡니다. 아래 업무 컬럼 4개만 추가합니다.

컬럼타입설명
titletext항목명
categorytext분류
scorenumeric점수
notetext설명
Supabase 프로젝트 생성과 demo_items 테이블

복사용 텍스트

Supabase에 demo_items 테이블을 만들었다.
이 테이블을 어떤 데이터 앱 데모에 연결하면 좋을지 설명하고,
샘플 데이터 5행을 CSV 형식으로 만들어줘.
Step 4

API 키와 .env.example 만들기

published

Step 4

API 키와 .env.example 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Supabase 온보딩: 데이터베이스 만들기"의 4단계, "API 키와 .env.example 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

확인할 값

용도
Project URL앱에서 Supabase에 접속할 주소
anon public key브라우저에서 읽기용으로 사용할 공개 키
Supabase API URL·anon key와 .env.example 작성

Cursor 요청

복사용 텍스트

Supabase 연결에 필요한 .env.example 파일을 만들어줘.
실제 키는 넣지 말고 아래 변수명만 넣어줘.

NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=

실제 키는 .env.local에만 넣고, GitHub에 올리지 않습니다.

Step 5

CSV 업로드와 읽기 정책 확인

published

Step 5

CSV 업로드와 읽기 정책 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Supabase 온보딩: 데이터베이스 만들기"의 5단계, "CSV 업로드와 읽기 정책 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

CSV 업로드

Table Editor에서 demo_items에 샘플 CSV를 업로드합니다.

상황권장
수업용 샘플 데이터공개 읽기 가능
실제 고객 데이터비공개, 로그인 필요
개인정보 포함외부 AI와 공개 DB 입력 금지

체크

  • 테이블에 데이터가 들어갔는지 확인
  • RLS가 켜져 있는지 확인
  • 실제 개인정보를 넣지 않았는지 확인
Step 6

데모 앱에 연결할 테이블 고르기

published

Step 6

데모 앱에 연결할 테이블 고르기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Supabase 온보딩: 데이터베이스 만들기"의 6단계, "데모 앱에 연결할 테이블 고르기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 후보

데모Supabase 테이블 예시
DART CRMcustomers, companies, filings
KIS 대시보드watchlist, stock_prices
업무 문서 RAGdocuments, questions, answers
견적 비교quotes, vendors

제출 체크

제출물확인
Supabase 프로젝트 생성
샘플 테이블 생성
CSV 업로드
.env.example 작성
연결할 데모 1개 선택
Module 34practice필수

Vercel 온보딩: 웹앱 배포 준비

GitHub 저장소와 Vercel을 연결하고 환경변수, 첫 배포, 재배포 흐름을 익힙니다.

6 steps

Step 1

Vercel이 맡는 역할 이해

published

Step 1

Vercel이 맡는 역할 이해

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Vercel 온보딩: 웹앱 배포 준비"의 1단계, "Vercel이 맡는 역할 이해"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Vercel의 역할

Vercel은 Cursor에서 만든 웹 프로젝트를 인터넷 주소로 배포하는 도구입니다.

단계도구
코드 작성Cursor
코드 보관GitHub
데이터 저장Supabase
웹 배포Vercel

오늘 목표는 GitHub 저장소를 준비하고, Vercel에서 import한 뒤, 환경변수와 첫 배포 URL을 확인하는 것입니다.

Step 2

이론: 배포의 원리 — 내 컴퓨터에서 모두의 URL까지

published

Step 2

이론: 배포의 원리 — 내 컴퓨터에서 모두의 URL까지

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Vercel 온보딩: 웹앱 배포 준비"의 2단계, "이론: 배포의 원리 — 내 컴퓨터에서 모두의 URL까지"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

"배포"란 무엇인가

지금까지 만든 앱은 내 컴퓨터에서만 열립니다(주소창의 localhost가 그 표시입니다). 배포는 내 컴퓨터의 앱을 인터넷의 서버로 옮겨서, 누구나 URL로 접속할 수 있게 만드는 일입니다.

배포 파이프라인 — push 한 번이면 나머지는 자동입니다

4단계 파이프라인

단계장소하는 일
① 내 컴퓨터localhost코드 작성, 나만 확인
② GitHub인터넷 보관소push로 코드 원본 업로드
③ Vercel빌드 서버GitHub의 새 코드를 감지해 자동으로 빌드·실행
④ 전 세계https://내앱.vercel.app폰에서도, 동료도, 강사도 접속

왜 GitHub을 거쳐야 하나

Vercel은 내 컴퓨터 안을 볼 수 없습니다. GitHub에 올라간 코드만 가져다 실행할 수 있습니다. 그래서 순서가 항상 "GitHub 저장소 먼저, Vercel 연결은 다음"입니다. 좋은 점은 한 번 연결해 두면 코드를 고치고 push할 때마다 자동으로 재배포된다는 것 — "배포 = push" 한 줄만 기억하면 됩니다.

환경변수는 왜 따로 등록하나

API 키를 코드에 넣으면 GitHub에 올라가는 순간 노출됩니다. 그래서 키는 코드가 아니라 Vercel의 환경변수 금고에 따로 등록하고, 앱이 실행될 때 금고에서 꺼내 쓰게 합니다. 다음 스텝들에서 이 순서대로 진행합니다.

Step 3

GitHub 저장소 준비

published

Step 3

GitHub 저장소 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Vercel 온보딩: 웹앱 배포 준비"의 3단계, "GitHub 저장소 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

사전 준비

  • GitHub 계정이 없다면 https://github.com에서 가입합니다.
  • Vercel은 GitHub 계정으로 가입하면 저장소 연결이 가장 쉽습니다.

Cursor 요청

복사용 텍스트

현재 프로젝트를 GitHub에 올릴 수 있게 정리해줘.
.gitignore에 .env.local, .venv, node_modules, outputs 임시 파일을 제외하고
README.md에 프로젝트 설명과 실행 방법을 작성해줘.
파일역할
README.md프로젝트 소개
.gitignore비밀키/임시파일 제외
package.json웹앱 실행 스크립트
.env.example환경변수 예시

GitHub에 올리기

정리가 끝나면 이어서 요청합니다.

복사용 텍스트

이 프로젝트를 GitHub 새 저장소로 올려줘. 저장소 이름은 wonju-ict-advanced로 하고,
로그인이나 인증이 필요한 단계가 있으면 내가 해야 할 일을 순서대로 알려줘.

처음 올릴 때 GitHub 로그인 창(브라우저 인증)이 뜰 수 있습니다. 본인 계정으로 승인하면 됩니다. 완료 후 github.com/내아이디/wonju-ict-advanced 주소가 열리는지 확인합니다.

Step 4

Vercel 프로젝트 Import

published

Step 4

Vercel 프로젝트 Import

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Vercel 온보딩: 웹앱 배포 준비"의 4단계, "Vercel 프로젝트 Import"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실행 순서

1. https://vercel.com에 접속합니다.

2. GitHub 계정을 연결합니다.

3. 새 프로젝트에서 저장소를 import합니다.

4. Framework Preset은 프로젝트에 맞게 선택합니다.

5. Deploy 버튼을 누릅니다.

Vercel에서 GitHub 저장소 Import와 Deploy
문제해결
환경변수 누락Vercel Settings > Environment Variables 등록
빌드 명령 오류package.json scripts 확인
파일 경로 오류대소문자와 상대경로 확인
Step 5

환경변수 등록

published

Step 5

환경변수 등록

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Vercel 온보딩: 웹앱 배포 준비"의 5단계, "환경변수 등록"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

14-4 Environment Variables 메뉴

Vercel 프로젝트 → SettingsEnvironment Variables 로 이동합니다.

14-4 · Settings → Environment Variables 메뉴

등록할 값

이름설명
NEXT_PUBLIC_SUPABASE_URLSupabase 프로젝트 URL
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase anon key

복사용 텍스트

Vercel 배포에 필요한 환경변수 목록을 README.md에 정리해줘.
실제 키 값은 쓰지 말고 변수명과 어디서 확인하는지만 설명해줘.
Step 6

배포 URL 제출

published

Step 6

배포 URL 제출

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Vercel 온보딩: 웹앱 배포 준비"의 6단계, "배포 URL 제출"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출 체크

제출물확인
GitHub 저장소 URL
Vercel 배포 URL
환경변수 등록 확인
첫 화면 정상 표시
모바일 화면 확인
Module 35practice필수

Cursor × Supabase MCP로 데이터 다루기

Cursor에 Supabase MCP를 연결하고 에이전트에게 테이블 생성, 데이터 입력, 조회를 요청합니다.

5 steps

Step 1

MCP 이해하기

published

Step 1

MCP 이해하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Supabase MCP로 데이터 다루기"의 1단계, "MCP 이해하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

MCP란

MCP(Model Context Protocol)는 Cursor 같은 AI 에이전트가 Supabase, Vercel 같은 외부 서비스의 기능을 도구처럼 사용할 수 있게 연결하는 표준 방식입니다.

MCP 연결 전MCP 연결 후
Supabase 웹 콘솔에서 직접 클릭Cursor 채팅으로 "테이블 만들어줘" 요청
SQL을 복사해 붙여넣기에이전트가 SQL을 작성하고 승인 후 실행
화면을 오가며 결과 확인채팅 안에서 결과 표로 확인
수강생은 요청과 승인만, 실행은 에이전트가 MCP를 통해 수행합니다

USB 규격이 하나면 어떤 기기든 꽂아 쓸 수 있듯이, MCP라는 표준 규격 덕분에 Cursor는 Supabase든 Vercel이든 같은 방식으로 연결해 도구처럼 사용합니다.

오늘 할 일

순서작업
1Cursor 설정창에서 Supabase MCP 연결
2에이전트에게 테이블 생성 요청
3전날 실습한 주문 CSV를 테이블에 입력
4조회와 품질 점검

준비물은 Supabase 온보딩 모듈에서 만든 프로젝트와 로그인 가능한 계정입니다.

Step 2

Cursor 설정창에서 Supabase MCP 연결

published

Step 2

Cursor 설정창에서 Supabase MCP 연결

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Supabase MCP로 데이터 다루기"의 2단계, "Cursor 설정창에서 Supabase MCP 연결"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 순서

1. Cursor에서 톱니바퀴(Settings)를 엽니다.

2. Tools & MCP(또는 Plugins) 메뉴를 엽니다.

3. 목록에서 Supabase MCP를 찾습니다.

4. 연결(Connect / Try chat) 버튼을 누릅니다.

5. 브라우저 로그인 창이 뜨면 Supabase 계정으로 로그인하고 권한을 허용합니다.

6. Cursor로 돌아와 Supabase 도구 목록이 보이는지 확인합니다.

화면 문구는 Cursor 버전에 따라 Plugins, MCP, Tools & MCP, Try chat, Connect처럼 조금 다를 수 있습니다. 핵심은 설정창에서 Supabase MCP를 찾아 채팅 연결을 시작하는 것입니다.

Cursor Settings에서 Supabase MCP 연결

연결 확인 프롬프트

복사용 텍스트

Supabase MCP 연결 상태를 확인해줘.
내가 접근 가능한 프로젝트 목록만 읽고, 삭제나 변경은 하지 마.

목록에 Supabase MCP가 안 보이면

프로젝트에 .cursor/mcp.json 파일을 만들어 직접 등록할 수 있습니다. 이것도 에이전트에게 요청합니다.

복사용 텍스트

.cursor/mcp.json 파일을 만들고 Supabase 공식 MCP 서버를 등록해줘.
내 실습 프로젝트 하나에만 접근하도록 project-ref 범위를 지정하고,
토큰이 필요한 자리는 YOUR_TOKEN으로 비워 둬.
설정을 마친 뒤 내가 확인해야 할 것을 순서대로 알려줘.

이 방식은 Personal Access Token이 필요합니다. Supabase 대시보드 오른쪽 위 계정 메뉴 → Access Tokens에서 토큰을 만들어, 에이전트가 비워 둔 YOUR_TOKEN 자리에 직접 붙여넣습니다. 이 토큰은 비밀번호와 같습니다 — 채팅창에 붙여넣지 않고, 개인 메모에도 저장하지 않습니다.

설정 파일을 만든 뒤에는 Cursor를 재시작하거나 MCP 서버를 새로고침해야 도구가 보일 수 있습니다. 오늘은 테이블 생성·입력 실습이 있어 쓰기 권한으로 연결하지만, 실습이 끝난 뒤 조회 용도로만 계속 쓰려면 에이전트에게 "read-only 모드로 바꿔줘"라고 요청해 두는 것이 안전합니다.

막힐 때

상황해결
로그인 창이 안 뜸브라우저 팝업 차단을 해제하고 연결 버튼을 다시 클릭
연결했는데 도구 목록이 안 보임Cursor를 완전히 종료했다가 다시 열기
프로젝트 목록이 비어 있음Supabase 로그인 계정이 온보딩에서 프로젝트를 만든 계정인지 확인
무엇이 문제인지 모르겠음채팅에 "Supabase MCP 연결 상태를 진단하고 해결 순서를 알려줘" 입력
Step 3

MCP로 테이블 만들고 주문 데이터 넣기

published

Step 3

MCP로 테이블 만들고 주문 데이터 넣기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Supabase MCP로 데이터 다루기"의 3단계, "MCP로 테이블 만들고 주문 데이터 넣기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

테이블 생성 요청

전날 Apps Script 품질 점검 실습에서 쓴 주문 데이터 구조를 그대로 사용합니다. 내려받은 quality_check_orders.csv를 프로젝트 data 폴더에 넣어 두세요.

복사용 텍스트

Supabase 실습 프로젝트에 orders 테이블을 만들어줘.
컬럼: order_id(text), order_date(date), customer(text), product(text),
quantity(integer), amount(numeric), status(text), due_date(date), owner(text)
먼저 생성 계획과 SQL을 보여주고, 내가 승인하면 실행해줘.

데이터 입력 요청

복사용 텍스트

data/quality_check_orders.csv를 읽어서 orders 테이블에 입력해줘.
입력 전에 전체 몇 행인지, 날짜나 숫자 형식이 깨져 입력이 실패할 행이 있는지 먼저 알려줘.
문제 행은 건너뛰지 말고 어떻게 처리할지 나에게 물어봐.

확인표

확인 항목정상 기준
테이블 생성orders 테이블이 생성된다
데이터 입력20행 이상 입력된다
문제 행 보고형식 오류 행을 입력 전에 알려준다

첨부파일

주문 샘플 CSV (Apps Script 실습과 동일)

orders 테이블에 입력할 교육용 주문 데이터입니다. 일부러 형식 오류가 섞여 있습니다.

quality_check_orders.csv

다운로드
Step 4

MCP로 조회하고 품질 점검하기

published

Step 4

MCP로 조회하고 품질 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Supabase MCP로 데이터 다루기"의 4단계, "MCP로 조회하고 품질 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

조회 프롬프트

복사용 텍스트

orders 테이블에서 status별 건수와 amount 합계를 조회해서 표로 보여줘.
DB 변경은 하지 마.

복사용 텍스트

orders 테이블에서 다음 문제 행을 찾아서 표로 보여줘.
1. due_date가 order_date보다 빠른 행
2. quantity가 1 미만인 행
3. amount가 0 이하인 행
각 행이 실제 업무에서 어떤 문제로 이어질 수 있는지도 한 줄씩 설명해줘.

Apps Script 품질봇과 비교

도구방식장점
Apps Script 품질봇 (1일차)시트 안에서 정해진 규칙 코드 실행시트 사용자에게 친숙, 반복 실행
Supabase MCP + 에이전트 (2일차)DB에 대화로 SQL 조회 요청질문을 유연하게 바꿔가며 탐색

같은 데이터를 두 방식으로 점검해 보면, 어떤 업무에 어느 도구가 맞는지 감이 잡힙니다.

Step 5

안전 규칙과 제출 체크

published

Step 5

안전 규칙과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Supabase MCP로 데이터 다루기"의 5단계, "안전 규칙과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Supabase 작업 규칙 만들기

복사용 텍스트

.cursor/rules/supabase.md 파일을 만들고 아래 규칙을 넣어줘.
- 실습/개발용 Supabase 프로젝트만 다루고 운영 DB는 다루지 않는다.
- 테이블을 바꾸기 전에 계획과 SQL을 보여주고 승인 후 실행한다.
- service_role 키는 브라우저 코드에 넣지 않는다.
- .env.local 파일은 GitHub에 커밋하지 않는다.
- RLS(Row Level Security)를 끄는 방식으로 문제를 해결하지 않는다.

제출 체크

제출물확인
Supabase MCP 연결
orders 테이블 생성과 데이터 입력
조회 결과 표 캡처
.cursor/rules/supabase.md 규칙 파일

이 단계까지 오면 데이터가 로컬 CSV에서 DB로 올라가고, 다음 모듈에서 Vercel MCP로 배포까지 연결합니다.

Module 36practice필수

Cursor × Vercel MCP 배포 실습

Vercel MCP를 연결해 에이전트로 배포 상태를 확인하고 GitHub push 기반 배포와 환경변수 설정까지 완료합니다.

5 steps

Step 1

배포 전 점검

published

Step 1

배포 전 점검

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Vercel MCP 배포 실습"의 1단계, "배포 전 점검"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 요청

복사용 텍스트

이 프로젝트를 Vercel에 배포하기 전에 점검해줘.
빌드 스크립트, 환경변수, .gitignore, README, 민감정보 노출 여부를 확인하고
수정해야 할 항목을 체크리스트로 만들어줘.
항목기준
비밀키코드와 GitHub에 없음
빌드로컬에서 오류 없음
README실행/배포 방법 포함
환경변수.env.example과 Vercel 설정 일치
Step 2

로컬 실행과 빌드 확인

published

Step 2

로컬 실행과 빌드 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Vercel MCP 배포 실습"의 2단계, "로컬 실행과 빌드 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행·빌드 요청

복사용 텍스트

이 프로젝트를 로컬에서 실행하고 빌드까지 확인해줘.
1. 필요한 패키지를 설치해줘 (npm install).
2. npm run dev로 실행해서 화면이 열리는지 확인시켜줘.
3. npm run build로 빌드가 통과하는지 확인해줘.
빌드 오류가 나면 원인을 설명하고 수정한 뒤 다시 빌드해줘.
어떤 파일을 왜 고쳤는지 README.md에 기록해줘.

명령 실행 승인 요청이 오면 내용을 확인하고 승인합니다.

Step 3

Vercel MCP 연결과 배포

published

Step 3

Vercel MCP 연결과 배포

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Vercel MCP 배포 실습"의 3단계, "Vercel MCP 연결과 배포"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Vercel MCP 연결

1. Cursor Settings의 Tools & MCP(또는 Plugins)에서 Vercel MCP를 찾습니다.

2. 연결(Connect) 버튼을 누르고 브라우저에서 Vercel 계정으로 로그인합니다.

3. 채팅에서 연결을 확인합니다.

복사용 텍스트

Vercel MCP 연결 상태를 확인하고 내 프로젝트 목록을 읽어줘. 변경은 하지 마.

배포 흐름

순서작업담당
1GitHub 저장소에 pushCursor 에이전트에게 요청
2Vercel이 push를 감지해 자동 배포자동
3환경변수 등록 (Settings > Environment Variables)Vercel 대시보드에서 직접
4환경변수 추가 후 재배포에이전트 또는 대시보드

에이전트에게 배포 상태 확인 요청

복사용 텍스트

방금 push한 커밋의 Vercel 배포 상태를 확인해줘.
실패했다면 빌드 로그에서 원인을 찾아 초보자가 이해할 수 있게 설명하고,
수정한 뒤 다시 push해서 배포가 성공하는지 확인해줘.
Step 4

배포 후 화면 확인

published

Step 4

배포 후 화면 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Vercel MCP 배포 실습"의 4단계, "배포 후 화면 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

확인표

화면확인
첫 화면
Supabase 데이터 표시
모바일 화면
오류 상태 문구
배포 URL 접속

복사용 텍스트

배포된 화면을 기준으로 사용자에게 어색한 문구, 깨지는 레이아웃, 데이터가 비어 보이는 상태를 점검하고 개선안을 제안해줘.
Vercel 배포 URL에서 열리는 첫 화면
Step 5

최종 URL 제출

published

Step 5

최종 URL 제출

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor × Vercel MCP 배포 실습"의 5단계, "최종 URL 제출"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

최종 제출물

제출물내용
GitHub URL코드 저장소
Vercel URL배포된 앱
Supabase 테이블연결한 데이터
README실행/배포/환경변수 안내

최종 발표는 "어떤 데이터를 어떤 화면으로 만들었고, 어디까지 배포했는가"를 중심으로 공유합니다.

Module 37practice필수

고급 RAG 프로젝트 실행

문서 폴더를 Markdown 지식베이스로 정리하고 질문-근거-답변 흐름을 만듭니다.

3 steps

Step 1

Markdown 문서 만들기

published

Step 1

Markdown 문서 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "고급 RAG 프로젝트 실행"의 1단계, "Markdown 문서 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

docs 폴더에 파일 만들기

복사용 텍스트

docs/
  2026-07-13_지원사업공고_샘플.md
  2026-07-13_회사소개_샘플.md
  2026-07-13_제품설명_샘플.md

문서 템플릿

복사용 텍스트

# 문서 제목

## 한 줄 요약

## 핵심 내용

## 중요 조건

## 원문 근거

## 확인 필요
Step 2

질문 목록 만들기

published

Step 2

질문 목록 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "고급 RAG 프로젝트 실행"의 2단계, "질문 목록 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

questions.md

복사용 텍스트

# 질문 목록

1. 우리 회사가 이 공고에 지원 가능한가?
2. 제출해야 할 자료는 무엇인가?
3. 제안서에서 강조해야 할 차별점은 무엇인가?
4. 일정상 가장 위험한 부분은 무엇인가?
5. 사람이 추가로 확인해야 하는 내용은 무엇인가?

좋은 질문은 RAG 결과의 품질을 결정합니다.

Step 3

근거 기반 답변 형식

published

Step 3

근거 기반 답변 형식

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "고급 RAG 프로젝트 실행"의 3단계, "근거 기반 답변 형식"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

답변 형식

복사용 텍스트

## 답변

## 근거 문서

| 문서 | 근거 |
| --- | --- |

## 판단

## 확인 필요

AI에게 답변만 요구하지 말고 근거 문서와 판단을 분리해 달라고 요청합니다.

Module 38practice필수

Cursor로 AI 데이터 다루기

CSV와 Markdown을 한 폴더에 두고 Cursor, Claude Code CLI, Codex CLI 방식으로 분석합니다.

4 steps

Step 1

데이터 폴더 분석 요청

published

Step 1

데이터 폴더 분석 요청

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor로 AI 데이터 다루기"의 1단계, "데이터 폴더 분석 요청"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 요청문

복사용 텍스트

data 폴더의 CSV 파일을 확인하고,
열 이름과 데이터 품질을 요약해줘.
결측치, 이상값, 날짜 형식 문제를 표로 정리하고
분석에 필요한 전처리 순서를 제안해줘.

분석 결과 표 예시

의미문제처리
order_date수주일날짜 형식 혼재YYYY-MM-DD 통일
due_date납기일일부 비어 있음확인필요 표시
amount금액쉼표 포함 문자열숫자 변환

실습용 CSV가 없다면

아래 주문 데이터를 내려받아 data/orders.csv 이름으로 저장하고 시작하세요. Apps Script 품질 점검 실습과 같은 파일이라 오류 패턴이 이미 익숙할 것입니다.

첨부파일

주문 샘플 CSV (data/orders.csv로 저장)

Cursor 데이터 분석 실습용 교육용 주문 데이터입니다. 일부러 결측·중복·형식 오류가 섞여 있습니다.

orders.csv

다운로드
Step 2

스크립트로 요약 만들기

published

Step 2

스크립트로 요약 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor로 AI 데이터 다루기"의 2단계, "스크립트로 요약 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

요청문

복사용 텍스트

data/orders.csv를 읽어서
월별 수주금액, 납기 지연 후보, 거래처별 건수를 계산하는 Python 스크립트를 scripts/analyze_orders.py로 만들어줘.
결과는 outputs/orders_summary.md로 저장해줘.

핵심 흐름

단계파일
입력data/orders.csv
처리scripts/analyze_orders.py
출력outputs/orders_summary.md
활용GPT 또는 Claude에 리포트 전달
Step 3

Markdown 리포트 재활용

published

Step 3

Markdown 리포트 재활용

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor로 AI 데이터 다루기"의 3단계, "Markdown 리포트 재활용"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

리포트 활용 프롬프트

복사용 텍스트

아래 Markdown 리포트를 읽고 경영진 보고용으로 다시 정리해줘.
1. 핵심 요약 3줄
2. 위험 신호
3. 확인할 데이터
4. 다음 주 실행 과제

분석 스크립트가 만든 Markdown은 GPT, Claude, Gemini에 다시 넘길 수 있는 중간 산출물입니다.

Step 4

Cursor, Claude Code CLI, Codex CLI 비교

published

Step 4

Cursor, Claude Code CLI, Codex CLI 비교

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Cursor로 AI 데이터 다루기"의 4단계, "Cursor, Claude Code CLI, Codex CLI 비교"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

도구사용 방식적합한 작업
Cursor에디터 안 채팅과 파일 편집초보자 실습, 폴더 기반 작업
Claude Code CLI터미널 기반 에이전트긴 코드 수정, 문서/코드 동시 작업
Codex CLI터미널 기반 에이전트스크립트 작성, 반복 분석, 저장소 작업

핵심은 도구 이름이 아니라 "폴더를 열고, 자료를 읽고, 스크립트를 만들고, 결과 문서를 남기는 흐름"입니다.

Module 39lesson필수

Markdown 리포트와 GPT/Claude 활용

AI가 다시 읽기 좋은 Markdown 보고서를 만들고 외부 AI 도구로 검토합니다.

3 steps

Step 1

Markdown 보고서 구조

published

Step 1

Markdown 보고서 구조

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Markdown 리포트와 GPT/Claude 활용"의 1단계, "Markdown 보고서 구조"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

기본 구조

복사용 텍스트

# 분석 리포트 제목

## 1. 요약

## 2. 데이터 출처

## 3. 주요 발견

## 4. 리스크

## 5. 다음 작업

## 6. 부록: 원본 열 설명

Markdown은 사람이 읽기 쉽고 AI가 다시 처리하기도 쉬운 형식입니다.

왜 하필 Markdown인가

이유설명
구조가 곧 데이터제목(#), 표, 목록이 명확해서 AI가 섹션을 정확히 구분해 읽음
어디서나 열림메모장, Cursor, GitHub, 채팅창 어디에 붙여도 형식이 유지됨
버전 관리 가능텍스트 파일이라 GitHub에서 변경 이력 추적 가능

한글(hwp)이나 PDF는 사람에게는 익숙하지만 AI에게 넘기면 표가 깨지거나 텍스트 추출이 필요합니다. 분석 결과의 중간 저장 형식은 Markdown으로 고정하는 것이 이번 과정의 규칙입니다.

Markdown 분석 리포트 구조 예시
한 번 만든 리포트를 여러 AI에 재사용하는 흐름
Step 2

GPT/Claude에 넘길 때의 주의점

published

Step 2

GPT/Claude에 넘길 때의 주의점

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Markdown 리포트와 GPT/Claude 활용"의 2단계, "GPT/Claude에 넘길 때의 주의점"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

주의점이유
개인정보 제거외부 AI 도구 입력 전 필수
숫자 단위 명시금액, 기간, 건수 오해 방지
원본과 분석 구분추정과 사실을 분리
질문을 구체화원하는 출력 품질 향상

요청 예시

복사용 텍스트

이 Markdown 리포트를 바탕으로 실무 회의용 1페이지 보고서로 바꿔줘.
단, 데이터에 없는 내용은 추가하지 말고 확인필요로 표시해줘.
Step 3

보고서 품질 체크리스트

published

Step 3

보고서 품질 체크리스트

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Markdown 리포트와 GPT/Claude 활용"의 3단계, "보고서 품질 체크리스트"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

체크 항목질문
사실성데이터에 있는 내용만 말했는가
실행성다음 작업이 행동 단위인가
근거성주요 판단에 근거가 있는가
간결성1분 안에 핵심을 읽을 수 있는가
재사용성다음 주에도 같은 구조로 쓸 수 있는가
Module 40assignment필수

데이터형 예제 미션

공고 적합도, 제안서 약점, 제조/수주 데이터 RAG 중 하나를 골라 구축합니다.

4 steps

Step 1

미션 1: 지원사업 공고 적합도 진단

published

Step 1

미션 1: 지원사업 공고 적합도 진단

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "데이터형 예제 미션"의 1단계, "미션 1: 지원사업 공고 적합도 진단"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

목표

공고문과 회사 소개 자료를 비교해 지원 가능성과 준비 항목을 정리합니다.

입력 데이터출력
공고문자격요건, 제출물, 일정
회사 소개업종, 제품, 기술, 지역
제품 설명공고와의 적합성

프롬프트

복사용 텍스트

공고문과 회사자료를 비교해 지원 적합도를 진단해줘.
출력은 [적합/부분적합/부적합], 판단근거, 부족자료, 다음작업 표로 작성해줘.
Step 2

미션 2: 제안서 약점 탐지기

published

Step 2

미션 2: 제안서 약점 탐지기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "데이터형 예제 미션"의 2단계, "미션 2: 제안서 약점 탐지기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

목표

제안서 초안을 심사 관점에서 읽고 약한 부분을 찾아 보완안을 만듭니다.

점검 항목질문
문제 정의왜 이 과제가 필요한가
차별성기존 방식과 무엇이 다른가
실행계획일정과 역할이 구체적인가
성과지표측정 가능한가
리스크실패 가능성과 대응책이 있는가

출력 형식

약점원문 근거보완 문장우선순위
Step 3

미션 3: 제조/수주 데이터 RAG

published

Step 3

미션 3: 제조/수주 데이터 RAG

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "데이터형 예제 미션"의 3단계, "미션 3: 제조/수주 데이터 RAG"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

목표

수주 CSV와 납기 규칙 문서를 함께 사용해 납기 리스크를 설명합니다.

자료예시
수주 데이터고객사, 품목, 수량, 납기일, 상태
생산 규칙최소 생산 기간, 검사 기간, 출하 기준
문의 문서고객 요청, 변경 사항

질문 예시

  • 이번 달 납기 위험이 큰 주문은 무엇인가?
  • 위험 판단의 근거는 어떤 데이터인가?
  • 담당자가 오늘 확인해야 할 항목은 무엇인가?
Step 4

선택 미션 목록

published

Step 4

선택 미션 목록

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "데이터형 예제 미션"의 4단계, "선택 미션 목록"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

미션데이터난이도
납기 지연 위험 관리수주 CSV, 생산 규칙
업체 견적 비교견적서 표, 평가 기준
리뷰 텍스트 분석고객 리뷰, VOC
공모전 아이디어 심사 보드아이디어 목록, 평가표
정책 동향 브리핑공고문, 뉴스 요약

하나를 골라 입력자료, 질문, 출력 형식을 먼저 정의한 뒤 AI 도구로 구현합니다.

샘플 자료 재사용

본인 자료가 없으면 데모 실습의 샘플을 그대로 쓸 수 있습니다.

미션재사용할 샘플
공고 적합도공고문, 회사 소개
제안서 약점제안서 초안, 평가표
수주 데이터주문 샘플 CSV (Cursor로 AI 데이터 다루기 모듈의 다운로드 카드)
견적 비교견적표, 업체 메모
Module 41practice필수

DART 고객 CRM 브리핑 앱 만들기

고객 CSV와 DART 회사정보/공시 데이터를 결합해 미팅 전 브리핑 카드를 만듭니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

DART 고객 CRM 브리핑 앱

영업/행정/취업 준비에서 자주 쓰는 고객사 조사 업무를 데이터 앱으로 바꿉니다.

항목내용
데이터 축CSV × 외부 API JOIN, 기업정보 보강, 공시 요약
주요 입력customers.csv, dart_companies_sample.json, dart_filings_sample.json
최종 결과물고객사별 회사 개요, 최근 공시, 미팅 질문을 담은 CRM 브리핑 카드
권장 구현Python + Streamlit + pandas + DART API

완성 화면 기준

  • 고객사 선택 UI가 있다.
  • 회사 개요와 최근 공시가 함께 보인다.
  • 미팅 전 질문과 제안 포인트가 생성된다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART 고객 CRM 브리핑 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

02-dart-crm 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("고객사별 회사 개요, 최근 공시, 미팅 질문을 담은 CRM 브리핑 카드")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 02-dart-crm/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
02-dart-crm 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 3개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART 고객 CRM 브리핑 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 DART 고객 CRM 브리핑 앱을 만들어줘.

요구사항:
1. customers.csv의 회사명을 DART 샘플 회사정보와 매칭한다.
2. 표기가 다르거나 목록에 없는 회사는 매칭 실패로 표시하고 원인을 보여준다.
3. 회사별 최근 공시 목록을 붙인다.
4. 고객을 선택하면 미팅 전 브리핑 카드를 보여준다.
5. API 키는 .env.example에만 안내하고 코드에 넣지 않는다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

16줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내
Cursor 구현 후 CRM 브리핑 앱 파일과 화면

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART 고객 CRM 브리핑 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 02-dart-crm 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표고객 목록에 DART 회사정보와 최근 공시 개수가 붙어 보인다
리포트outputs/report.md가 생성된다

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART 고객 CRM 브리핑 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 회사명 매칭률 계산
  • 최근 공시 날짜 정렬
  • 공시 제목 기반 관심 이슈 분류
  • 고객 관심제품과 공시 키워드 연결

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART 고객 CRM 브리핑 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART 고객 CRM 브리핑 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
DART 고객 CRM 브리핑 카드 결과

확장 과제

  • DART 실제 corp_code 매핑 파일 연결
  • 고객 이메일 도메인으로 회사 추정
  • 브리핑 카드를 PDF/Markdown으로 저장

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 42practice필수

KIS 관심종목 대시보드 앱 만들기

관심종목 시세 데이터를 시계열로 분석하고 AI 브리핑 리포트를 만듭니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

KIS 관심종목 대시보드 앱

시간에 따라 변하는 데이터를 읽고, 차트와 리포트로 설명하는 흐름을 익힙니다.

항목내용
데이터 축시계열, 주가, 거래량, API 인증
주요 입력stock_prices_sample.csv, watchlist.csv
최종 결과물관심종목별 종가 추이, 등락률, 거래량 급증일 브리핑 대시보드
권장 구현Python + Streamlit + pandas + KIS API

완성 화면 기준

  • 종목 선택 UI가 있다.
  • 종가 추이 차트가 나온다.
  • 거래량 급증일과 AI 브리핑이 보인다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "KIS 관심종목 대시보드 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

03-kis-stock-dashboard 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("관심종목별 종가 추이, 등락률, 거래량 급증일 브리핑 대시보드")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 03-kis-stock-dashboard/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
03-kis-stock-dashboard 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 2개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "KIS 관심종목 대시보드 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 KIS 관심종목 대시보드 앱을 만들어줘.

요구사항:
1. 관심종목 목록과 시세 CSV를 읽는다.
2. 종목별 최근 30일 종가 추이를 계산한다.
3. 등락률과 거래량 급증일을 표시한다.
4. 교육용 금융 분석 디스클레이머를 넣는다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "KIS 관심종목 대시보드 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 03-kis-stock-dashboard 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표종목별 최근 종가, 등락률, 거래량 변화가 보인다
리포트outputs/report.md가 생성된다
KIS 관심종목 대시보드 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "KIS 관심종목 대시보드 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 일자 정렬
  • 전일 대비 등락률 계산
  • 평균 거래량 대비 급증일 탐지
  • 종목별 수익률 비교

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "KIS 관심종목 대시보드 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.
마지막에 "교육용 분석이며 투자 권유가 아닙니다." 문구를 넣어줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "KIS 관심종목 대시보드 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 관심종목 대시보드

확장 과제

  • KIS 실제 API 호출로 데이터 갱신
  • DART 공시와 주가 이벤트 연결
  • 관심종목 알림 리포트 만들기

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 43practice필수

업무 문서 RAG 앱 만들기

FAQ, 규정, 회의록, 매뉴얼을 지식베이스로 정리하고 근거 기반 답변 앱을 만듭니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

업무 문서 RAG 앱

회사와 학교에서 흩어진 문서를 AI가 참고할 수 있는 지식베이스로 바꿉니다.

항목내용
데이터 축비정형 문서, Markdown, RAG형 질의응답
주요 입력faq.md, regulation.md, meeting_notes.md, academic_calendar.md, scholarship_guide.md, facility_guide.md, tuition_payment.md, student_services.md, privacy_guide.md, emergency_contacts.md, questions.md
최종 결과물질문에 대해 답변, 근거 문서, 근거 문장을 함께 보여주는 문서 검색 앱
권장 구현Python + Streamlit + Markdown 문서

완성 화면 기준

  • 문서 목록이 보인다.
  • 질문을 선택하면 답변과 근거가 나온다.
  • 확인 필요 항목이 분리된다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 문서 RAG 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

04-work-doc-rag 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("질문에 대해 답변, 근거 문서, 근거 문장을 함께 보여주는 문서 검색 앱")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 04-work-doc-rag/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
04-work-doc-rag 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 11개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 문서 RAG 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 업무 문서 RAG 앱을 만들어줘.

요구사항:
1. docs 폴더의 Markdown 문서를 읽는다.
2. questions.md의 질문 목록을 불러온다.
3. 질문별 답변, 근거 문서, 확인 필요 항목을 만든다.
4. 근거가 없으면 추정하지 않는다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 문서 RAG 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 04-work-doc-rag 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표질문별 답변과 근거 문서가 함께 보인다
리포트outputs/report.md가 생성된다
업무 문서 RAG 앱 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 문서 RAG 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 문서 제목/요약 추출
  • 키워드 기반 관련 문서 찾기
  • 근거 문장 분리
  • 답변과 추정 구분

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 문서 RAG 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "업무 문서 RAG 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 문서 RAG 앱

확장 과제

  • 벡터 검색/RAG 라이브러리로 확장
  • PDF 텍스트 추출 추가
  • 부서별 문서 권한 설계

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 44practice필수

아파트 실거래가 분석 앱 만들기

국토부 실거래가 형태의 데이터를 월별/지역별로 분석하는 대시보드를 만듭니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

아파트 실거래가 분석 앱

공공데이터를 분석 가능한 표로 바꾸고, 지역/시간 축으로 비교합니다.

항목내용
데이터 축공공데이터, 지역 비교, 월별 시계열
주요 입력real_estate_transactions.csv
최종 결과물지역별 거래건수, 평균 거래금액, 면적대별 가격을 보여주는 분석 앱
권장 구현Python + Streamlit + pandas

완성 화면 기준

  • 지역 필터가 있다.
  • 월별 추이 차트가 있다.
  • 면적대별 평균 가격표가 있다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "아파트 실거래가 분석 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

05-real-estate 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("지역별 거래건수, 평균 거래금액, 면적대별 가격을 보여주는 분석 앱")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 05-real-estate/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
05-real-estate 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 1개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "아파트 실거래가 분석 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 아파트 실거래가 분석 앱을 만들어줘.

요구사항:
1. 실거래 CSV를 읽고 금액 문자열을 숫자로 변환한다.
2. 월별 거래건수와 평균 거래금액을 계산한다.
3. 지역과 면적대를 필터링할 수 있게 한다.
4. 데이터 해석의 한계를 리포트에 적는다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "아파트 실거래가 분석 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 05-real-estate 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표월별 거래건수와 평균 거래금액 표가 보인다
리포트outputs/report.md가 생성된다
아파트 실거래가 분석 앱 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "아파트 실거래가 분석 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 거래월 파싱
  • 거래금액 숫자 변환
  • 지역별 groupby
  • 면적대 구간화

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "아파트 실거래가 분석 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "아파트 실거래가 분석 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 실거래가 분석

확장 과제

  • 국토부 실제 API XML 파싱
  • 동별/단지별 비교
  • 지도 시각화 추가

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 45practice필수

기상청 API × 매출 CSV JOIN 앱 만들기

날씨 데이터와 매출 데이터를 날짜로 병합해 비 오는 날 매출이 달라지는지 검증합니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

기상청 API × 매출 CSV JOIN 앱

실무 데이터 분석의 핵심인 여러 출처의 표를 붙이는 경험을 합니다.

항목내용
데이터 축외부 데이터 × 내부 데이터 JOIN, 가설 검증
주요 입력weather_sample.csv, sales_sample.csv
최종 결과물날씨별 매출/주문수 비교와 가설 검증 리포트
권장 구현Python + Streamlit + pandas + 기상청 API

완성 화면 기준

  • 병합 결과 행 수가 표시된다.
  • 비/맑음별 평균 매출 비교가 있다.
  • 가설 검증 문장이 나온다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "기상청 API × 매출 CSV JOIN 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

06-weather-sales-join 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("날씨별 매출/주문수 비교와 가설 검증 리포트")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 06-weather-sales-join/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
06-weather-sales-join 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 2개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "기상청 API × 매출 CSV JOIN 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 기상청 API × 매출 CSV JOIN 앱을 만들어줘.

요구사항:
1. weather_sample.csv와 sales_sample.csv를 date 기준으로 병합한다.
2. 강수 여부별 평균 매출과 주문수를 비교한다.
3. 날씨와 요일을 함께 볼 수 있는 표를 만든다.
4. 가설, 분석 방법, 결과, 한계를 리포트로 저장한다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "기상청 API × 매출 CSV JOIN 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 06-weather-sales-join 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표date 기준으로 날씨와 매출이 병합된 표가 보인다
리포트outputs/report.md가 생성된다
기상청 × 매출 JOIN 앱 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "기상청 API × 매출 CSV JOIN 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 날짜 JOIN
  • 강수 여부별 평균 비교
  • 요일 파생 컬럼 생성
  • 결측 날씨 처리

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "기상청 API × 매출 CSV JOIN 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "기상청 API × 매출 CSV JOIN 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 날씨·매출 분석

확장 과제

  • 기상청 실제 API 연결
  • 메뉴 카테고리별 날씨 영향 분석
  • 공휴일 API와 3중 JOIN

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 46practice필수

지원사업 공고 적합도 진단 앱 만들기

공고문과 신청자 정보를 비교해 지원 가능성, 부족자료, 다음 작업을 표로 정리합니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

지원사업 공고 적합도 진단 앱

공고문을 그냥 읽는 것이 아니라, 판단 가능한 데이터 구조로 바꿉니다.

항목내용
데이터 축문서 비교, 조건 추출, 규칙 기반 판단
주요 입력notice.md, company_profile.md, fit_criteria.csv
최종 결과물적합/부분적합/부적합 판단과 근거를 보여주는 진단표
권장 구현Python + Streamlit + Markdown/CSV

완성 화면 기준

  • 공고 요약이 있다.
  • 적합도 진단표가 있다.
  • 다음 작업 체크리스트가 있다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "지원사업 공고 적합도 진단 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

07-grant-fit-checker 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("적합/부분적합/부적합 판단과 근거를 보여주는 진단표")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 07-grant-fit-checker/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
07-grant-fit-checker 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 3개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "지원사업 공고 적합도 진단 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 지원사업 공고 적합도 진단 앱을 만들어줘.

요구사항:
1. 공고문에서 자격요건, 제출물, 마감일을 추출한다.
2. 회사/팀 소개와 기준표를 비교한다.
3. 항목별 적합도를 판단하고 근거를 표시한다.
4. 부족자료와 다음 작업을 제안한다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "지원사업 공고 적합도 진단 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 07-grant-fit-checker 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표자격요건별 판단, 근거, 부족자료가 보인다
리포트outputs/report.md가 생성된다
지원사업 적합도 진단 앱 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "지원사업 공고 적합도 진단 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 조건 키워드 추출
  • 기준표 매칭
  • 부족자료 분류
  • 마감일/제출물 체크

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "지원사업 공고 적합도 진단 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "지원사업 공고 적합도 진단 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 공고 적합도 진단

확장 과제

  • 여러 공고를 한 번에 비교
  • Google Sheets 신청 준비표로 내보내기
  • 제안서 약점 탐지기와 연결

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 47practice필수

제안서 약점 탐지기 앱 만들기

제안서 초안을 평가표 기준으로 검토하고 보완 문장과 예상 질문을 생성합니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

제안서 약점 탐지기 앱

AI를 문서 작성자가 아니라 심사위원 관점의 검토자로 사용합니다.

항목내용
데이터 축문서 평가, 평가표 매핑, 개선안 생성
주요 입력proposal.md, evaluation_rubric.csv
최종 결과물약점, 원문 근거, 보완 방향, 보완 문장을 담은 리뷰 보드
권장 구현Python + Streamlit + Markdown/CSV

완성 화면 기준

  • 평가기준별 리뷰표가 있다.
  • 원문 근거가 붙어 있다.
  • 바로 쓸 수 있는 보완 문장이 있다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "제안서 약점 탐지기 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

08-proposal-weakness 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("약점, 원문 근거, 보완 방향, 보완 문장을 담은 리뷰 보드")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 08-proposal-weakness/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
08-proposal-weakness 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 2개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "제안서 약점 탐지기 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 제안서 약점 탐지기 앱을 만들어줘.

요구사항:
1. 제안서 문단과 평가 기준을 읽는다.
2. 기준별로 강점/약점/누락을 표시한다.
3. 보완 문장과 예상 질문을 만든다.
4. 리뷰 결과를 outputs/proposal_review.md로 저장한다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "제안서 약점 탐지기 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 08-proposal-weakness 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표평가기준별 점검 결과와 보완 문장이 보인다
리포트outputs/report.md가 생성된다
제안서 약점 탐지기 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "제안서 약점 탐지기 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 평가기준 분해
  • 문단별 키워드 매칭
  • 누락 항목 찾기
  • 예상 질문 생성

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "제안서 약점 탐지기 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "제안서 약점 탐지기 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 제안서 리뷰

확장 과제

  • 공고 적합도 진단 결과를 제안서 리뷰 기준으로 연결
  • 버전별 제안서 비교
  • 심사 발표 Q&A 생성

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 48practice필수

거래처 견적 비교 보드 앱 만들기

여러 업체 견적을 가격, 납기, 조건, 리스크 기준으로 비교하고 추천 순위를 만듭니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

거래처 견적 비교 보드 앱

가격만 보는 비교가 아니라 조건과 리스크까지 포함한 실무 판단표를 만듭니다.

항목내용
데이터 축표 데이터 정규화, 가중치 평가, 추천 근거
주요 입력quotes.csv, vendor_notes.md
최종 결과물업체별 총액, 납기, 조건, 리스크를 반영한 견적 비교 보드
권장 구현Python + Streamlit + pandas

완성 화면 기준

  • 견적 비교표가 있다.
  • 가중치 조정 입력이 있다.
  • 추천 이유와 확인 질문이 있다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "거래처 견적 비교 보드 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

09-quote-comparison 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("업체별 총액, 납기, 조건, 리스크를 반영한 견적 비교 보드")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 09-quote-comparison/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
09-quote-comparison 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 2개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "거래처 견적 비교 보드 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 거래처 견적 비교 보드 앱을 만들어줘.

요구사항:
1. quotes.csv에서 총액과 단가를 계산한다.
2. 가격, 납기, 조건, 리스크 가중치를 적용한다.
3. 업체별 추천 순위와 이유를 만든다.
4. 사람이 추가 확인해야 할 질문을 생성한다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "거래처 견적 비교 보드 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 09-quote-comparison 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표업체별 점수, 추천 순위, 확인 질문이 보인다
리포트outputs/report.md가 생성된다
거래처 견적 비교 보드 실행 화면

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "거래처 견적 비교 보드 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 총액 계산
  • 납기일 비교
  • 가중치 점수화
  • 비고/조건 텍스트 요약

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "거래처 견적 비교 보드 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "거래처 견적 비교 보드 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — 견적 비교 보드

확장 과제

  • 견적서 PDF에서 표 추출
  • 구매 승인용 보고서 생성
  • 업체별 과거 납품 이력 JOIN

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 49practice필수

DART × KIS 통합 브리핑 카드 앱 만들기

기업정보, 최근 공시, 주가 흐름을 결합해 회사별 통합 브리핑 카드를 만듭니다.

7 steps

Step 1

앱 목표와 데이터 구조 이해

published

Step 1

앱 목표와 데이터 구조 이해

원주 ICT 빅데이터 고급

오늘 만들 앱

DART × KIS 통합 브리핑 카드 앱

두 개 이상의 외부 데이터 소스를 결합해 더 쓸모 있는 의사결정 자료를 만듭니다.

항목내용
데이터 축API 2개 결합, 공시 이벤트, 주가 시계열
주요 입력dart_companies_sample.json, dart_filings_sample.json, stock_prices_sample.csv
최종 결과물회사 개요, 최근 공시, 주가 추이, 미팅 질문을 한 화면에 보여주는 통합 카드
권장 구현Python + Streamlit + pandas + DART/KIS API

완성 화면 기준

  • 회사 선택 UI가 있다.
  • 최근 공시와 주가 차트가 함께 보인다.
  • 미팅 질문과 주의 문구가 있다.

이 모듈은 설명을 듣는 것이 아니라, 샘플 데이터를 내려받고 Cursor에게 구현을 요청해 실제로 실행되는 작은 앱을 만드는 흐름입니다.

전체 흐름 한눈에 보기

스텝하는 일내가 직접 하는 것
1앱 목표 이해읽기
2폴더·샘플 데이터 준비파일 다운로드, 에이전트에게 폴더 요청
3구현 요청프롬프트 붙여넣기, Accept
4실행Run 승인, 브라우저에서 확인
5분석 로직 점검프롬프트 붙여넣기, 결과 읽기
6AI 브리핑 만들기프롬프트 붙여넣기
7제출 정리체크리스트 확인

각 스텝의 프롬프트는 코드 블록 오른쪽 위 복사 버튼으로 복사해 Cursor 채팅창(Agent 모드)에 붙여넣으면 됩니다. 내용을 고치지 않고 그대로 붙여넣어도 동작합니다.

Step 2

실습 폴더와 샘플 데이터 준비

published

Step 2

실습 폴더와 샘플 데이터 준비

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART × KIS 통합 브리핑 카드 앱 만들기"의 2단계, "실습 폴더와 샘플 데이터 준비"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

실습 폴더 열기 (처음 한 번)

바탕화면 또는 문서 폴더에 wonju-advanced-demos 폴더를 만들고, Cursor에서 File > Open Folder로 이 폴더를 엽니다. 데모 실습 10개는 모두 이 폴더 안에서 진행합니다.

Cursor 에이전트에게 폴더 준비 요청

복사용 텍스트

10-dart-kis-briefing 폴더를 만들고 그 아래에 data, docs, scripts, outputs 폴더를 준비해줘.
샘플 데이터는 내가 브라우저에서 내려받아 data 폴더에 넣을 예정이야.
README.md를 만들어서 이 앱의 목표("회사 개요, 최근 공시, 주가 추이, 미팅 질문을 한 화면에 보여주는 통합 카드")와 실습 준비 순서를 적어줘.

app.py와 분석 스크립트는 아직 만들지 않습니다. 다음 스텝에서 Cursor 에이전트가 생성합니다.

샘플 데이터 내려받기 (직접)

아래 링크를 브라우저에서 클릭해 내려받은 뒤, 10-dart-kis-briefing/data 폴더에 넣습니다.

준비 확인

확인 항목체크
Cursor에서 wonju-advanced-demos 폴더 열기
10-dart-kis-briefing 아래 data, docs, scripts, outputs 생성
data 폴더에 샘플 파일 3개 저장
README.md 생성
Step 3

Cursor로 첫 구현 요청하기

published

Step 3

Cursor로 첫 구현 요청하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART × KIS 통합 브리핑 카드 앱 만들기"의 3단계, "Cursor로 첫 구현 요청하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

구현 요청 프롬프트

복사용 텍스트

너는 초보자를 돕는 데이터 앱 개발 코치다.
현재 폴더의 data 파일을 읽어서 DART × KIS 통합 브리핑 카드 앱을 만들어줘.

요구사항:
1. DART 회사정보와 최근 공시를 불러온다.
2. KIS 형태의 주가 시계열을 회사와 매칭한다.
3. 공시 발표일 전후 주가 변화가 있으면 표시한다.
4. 회사별 통합 브리핑 카드를 만든다.

구현 방식:
- Python으로 데이터 처리 스크립트를 만든다.
- 가능하면 Streamlit app.py를 만든다.
- 결과 리포트는 outputs/report.md로 저장한다.
- 실행 방법을 README.md에 적는다.
- API 키가 필요한 경우 .env.example만 만들고 실제 키는 코드에 하드코딩하지 않는다.

15줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

프롬프트를 보내면 일어나는 일

1. 에이전트가 무엇을 만들지 계획을 설명합니다.

2. 파일을 만들고 코드를 작성합니다. 파일 변경 제안이 나오면 Accept(수락) 를 누릅니다.

3. 완료되면 왼쪽 파일 트리에 아래 파일들이 생깁니다.

코드를 전부 이해하지 못해도 괜찮습니다. 이 스텝의 목표는 "AI에게 일을 시키고 결과 파일을 받는" 흐름을 경험하는 것입니다.

작업 후 확인할 파일

파일역할
app.py화면 앱
scripts/*.py데이터 처리
outputs/report.md분석 결과
README.md실행 방법
.env.exampleAPI 키 안내
Cursor 구현 후 DART × KIS 통합 브리핑 앱 파일과 화면

막힐 때

상황해결
에이전트가 나에게 질문을 함잘 모르겠으면 "네가 추천하는 방식으로 진행해줘"
응답이 중간에 멈춤"계속해줘" 입력
파일이 일부만 생김"위 요구사항 기준으로 빠진 파일을 만들어줘"
결과가 이상함아래 점검 프롬프트 사용

복사용 텍스트

지금까지 만든 파일을 요구사항과 비교해서 빠지거나 다른 부분을 찾아 고쳐줘.
무엇을 왜 고쳤는지 초보자 기준으로 설명해줘.
Step 4

실행하고 첫 결과 확인

published

Step 4

실행하고 첫 결과 확인

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART × KIS 통합 브리핑 카드 앱 만들기"의 4단계, "실행하고 첫 결과 확인"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 에이전트에게 실행까지 맡기기

터미널 명령은 직접 입력하지 않습니다. 가상환경 생성, 패키지 설치, 앱 실행까지 모두 Cursor 에이전트에게 요청하고, 수강생은 명령 실행 승인과 결과 확인만 합니다.

잠깐, 용어 두 개

용어
가상환경(.venv)이 프로젝트만의 파이썬 도구 보관함입니다. 컴퓨터 전체 설정을 건드리지 않게 해줍니다
Streamlit파이썬 코드를 웹 화면으로 보여주는 도구입니다. 실행하면 브라우저에 앱이 열립니다

실행 요청 프롬프트

복사용 텍스트

이 앱을 실행할 수 있게 환경을 준비하고 실행해줘.
1. wonju-advanced-demos 루트에 가상환경(.venv)이 없으면 만들고, 있으면 재사용해줘.
2. pandas, streamlit, requests, python-dotenv를 설치해줘.
3. 10-dart-kis-briefing 폴더에서 streamlit run app.py로 앱을 실행해줘.
터미널 명령은 네가 직접 실행하고,
오류가 나면 원인을 초보자가 이해할 수 있게 설명한 뒤 고쳐서 다시 실행해줘.

승인과 확인

상황할 일
Cursor가 터미널 명령 실행을 요청명령 내용을 읽고 실행(Run) 승인
브라우저가 자동으로 열리지 않음터미널의 Local URL(http://localhost:8501)을 클릭
오류 메시지가 반복됨오류 전체를 채팅에 붙여넣고 수정 요청

실행 확인표

확인 항목정상 기준
앱 실행브라우저에 Streamlit 화면이 열린다
데이터 로드샘플 데이터 행 수가 표시된다
핵심 표회사별 공시와 주가 요약이 함께 보인다
리포트outputs/report.md가 생성된다

오류가 반복될 때 만능 프롬프트

복사용 텍스트

아래 실행 오류의 원인을 초보자도 이해할 수 있게 설명해줘.
그리고 네가 직접 수정한 뒤 다시 실행해서 성공하는 것까지 확인해줘.

오류:
여기에 오류 메시지 전체 붙여넣기
Step 5

분석 로직 점검하기

published

Step 5

분석 로직 점검하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART × KIS 통합 브리핑 카드 앱 만들기"의 5단계, "분석 로직 점검하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

핵심 분석

  • 회사-종목코드 매칭
  • 공시일 기준 주가 전후 비교
  • 거래량 변화 탐색
  • 공시 제목 요약

Cursor 점검 프롬프트

복사용 텍스트

현재 앱의 분석 로직을 점검해줘.
계산 기준이 잘못될 수 있는 부분, 결측치 처리, 날짜/숫자 변환 문제를 찾아서
수정 제안과 함께 outputs/checklist.md로 정리해줘.

데이터 품질 체크

항목질문
날짜날짜 형식이 하나로 통일됐는가
숫자금액, 수량, 가격이 숫자로 계산되는가
결측비어 있는 값은 어떻게 처리했는가
근거리포트의 판단이 어떤 데이터에서 나왔는가
Step 6

AI 브리핑 리포트 만들기

published

Step 6

AI 브리핑 리포트 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART × KIS 통합 브리핑 카드 앱 만들기"의 6단계, "AI 브리핑 리포트 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

브리핑 생성 프롬프트

복사용 텍스트

outputs/report.md와 현재 데이터 요약을 바탕으로
사람이 바로 읽을 수 있는 브리핑을 outputs/briefing.md로 만들어줘.

형식:
1. 한 줄 결론
2. 핵심 발견 3개
3. 근거 데이터
4. 다음 작업
5. 주의할 점

데이터에 없는 내용은 추정하지 말고 확인 필요라고 표시해줘.
마지막에 "교육용 분석이며 투자 권유가 아닙니다." 문구를 넣어줘.

결과 활용

완성된 briefing.md는 ChatGPT, Claude, Gemini에 다시 붙여넣어 보고서 문체를 바꾸거나 발표문으로 바꿀 수 있습니다.

Step 7

제출 체크와 확장 과제

published

Step 7

제출 체크와 확장 과제

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "DART × KIS 통합 브리핑 카드 앱 만들기"의 7단계, "제출 체크와 확장 과제"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일
실행 앱app.py
데이터 처리 코드scripts/*.py
분석 리포트outputs/report.md
AI 브리핑outputs/briefing.md
실행 안내README.md
제출용 완성 화면 — DART × KIS 통합 브리핑 카드

확장 과제

  • 실제 DART/KIS API 연결
  • 공시 유형별 주가 반응 비교
  • CRM 브리핑 앱과 통합

최종 Cursor 요청

복사용 텍스트

이 프로젝트를 수업 제출용으로 정리해줘.
README.md에 앱 설명, 데이터 출처, 실행 방법, 결과 해석, 한계, 다음 개선 과제를 추가해줘.
Module 50practice필수

Google AI Studio 프론트 제작 온보딩

AI Studio로 화면 초안을 만들고 Cursor로 HTML/CSS/JS 파일화하는 기본 흐름을 익힙니다.

3 steps

Step 1

프론트 프로토타입 제작 흐름

published

Step 1

프론트 프로토타입 제작 흐름

원주 ICT 빅데이터 고급

전체 흐름

단계도구결과
화면 기획Google AI Studio (Build)화면 구조와 컴포넌트 초안
코드 생성·미리보기Google AI Studio (Build)HTML/CSS/JS 초안과 브라우저 미리보기
파일화Cursor 에이전트index.html, style.css, app.js
데이터 연결Cursor 에이전트샘플 CSV/JSON 연결 지점 표시
실행·개선Cursor 에이전트 + AI Studio로컬 서버 실행, 반응형, 빈 상태, 오류 상태 정리

프론트 제작은 백엔드/API 완성 전에 사용자가 보게 될 화면을 먼저 잡는 작업입니다.

Step 2

공통 화면 생성 프롬프트

published

Step 2

공통 화면 생성 프롬프트

원주 ICT 빅데이터 고급

복사용 프롬프트

복사용 텍스트

데이터 분석 앱의 프론트 화면 프로토타입을 만들어줘.
사용자는 대학생과 행정업무 담당자다.

조건:
- HTML/CSS/JavaScript 한 파일로 먼저 보여줘.
- 카드, 필터, 표, 브리핑 영역을 포함해줘.
- 실제 API 키와 개인정보는 넣지 마.
- 모바일에서도 내용이 잘리지 않게 반응형으로 구성해줘.
- 화면 하단에는 데이터 해석의 한계를 표시해줘.
AI Studio Build에서 만든 프론트 프로토타입 미리보기
Step 3

Cursor로 파일 분리하기

published

Step 3

Cursor로 파일 분리하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "Google AI Studio 프론트 제작 온보딩"의 3단계, "Cursor로 파일 분리하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

Cursor 요청

복사용 텍스트

이 HTML/CSS/JavaScript 코드를 frontend 폴더에 정리해줘.
index.html, style.css, app.js로 나누고
README.md에 실행 방법과 데이터 연결 위치를 설명해줘.

실행도 에이전트에게 요청

터미널 명령은 직접 입력하지 않습니다. 파일 정리가 끝나면 이어서 요청합니다.

복사용 텍스트

frontend 폴더를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.

Cursor가 서버 실행 명령(예: python -m http.server 8080)의 승인을 요청하면 승인하고, 터미널의 http://localhost:8080 주소를 클릭해 화면을 확인합니다.

Cursor로 정리한 frontend 폴더와 index.html, style.css, app.js
Module 51practice필수

AI Studio 프론트: 공휴일 API 앱

공휴일 표, 휴일 여부 배지, 문의량 비교 카드를 가진 화면을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

공휴일 API 워밍업 프론트

공휴일과 문의 데이터를 한눈에 비교하는 작은 업무 대시보드

항목내용
연결할 데이터 앱공휴일 API 워밍업 앱
주요 사용자학과 사무실 담당자와 대학생
화면 구성연도 선택 필터, 공휴일 목록 표, 휴일/비휴일 문의량 카드, 브리핑 문장
최종 결과물공휴일과 문의량의 관계를 보여주는 반응형 HTML 화면

화면 흐름

1. 연도를 선택한다.

2. 공휴일 목록을 확인한다.

3. 문의 데이터의 휴일 여부를 본다.

4. 휴일 전후 문의량 차이를 읽는다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 공휴일 API 워밍업 프론트
사용자: 학과 사무실 담당자와 대학생
목표: 공휴일과 문의 데이터를 한눈에 비교하는 작은 업무 대시보드

화면 섹션:
- 연도 선택 필터
- 공휴일 목록 표
- 휴일/비휴일 문의량 카드
- 브리핑 문장

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

19줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조4개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

holidays_2026.json과 inquiries_sample.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ date, name }, { date, category, channel, count }

데이터 바인딩 표시

UI 요소연결 데이터
공휴일 표holidays_2026.json
문의량 카드inquiries_sample.csv
휴일 배지date 기준 매칭 결과
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 공휴일 API 앱"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 01-holiday-api/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 01-holiday-api/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

01-holiday-api/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

01-holiday-api/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 공휴일 API 앱"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 공휴일 API 앱"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 공휴일 API 프론트

확장 과제

  • 공공데이터 API 직접 호출 버튼 추가
  • 요일별 문의량 차트 추가
  • 공휴일 전날 알림 카드 추가
Module 52practice필수

AI Studio 프론트: DART 고객 CRM

고객 리스트, 회사 개요, 최근 공시, 미팅 질문 카드를 가진 CRM 화면을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

DART 고객 CRM 프론트

고객사를 클릭하면 미팅 전 필요한 회사 정보를 카드로 보여주는 화면

항목내용
연결할 데이터 앱DART 고객 CRM 브리핑 앱
주요 사용자영업 담당자, 취업 준비생, 기업 조사 담당자
화면 구성고객 검색, 고객 리스트, 회사 개요 카드, 최근 공시 목록, 미팅 질문
최종 결과물고객사별 미팅 전 브리핑 카드 UI

화면 흐름

1. 고객을 검색한다.

2. 회사 정보를 확인한다.

3. 최근 공시를 읽는다.

4. 미팅 질문을 준비한다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: DART 고객 CRM 프론트
사용자: 영업 담당자, 취업 준비생, 기업 조사 담당자
목표: 고객사를 클릭하면 미팅 전 필요한 회사 정보를 카드로 보여주는 화면

화면 섹션:
- 고객 검색
- 고객 리스트
- 회사 개요 카드
- 최근 공시 목록
- 미팅 질문

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

customers.csv, dart_companies_sample.json, dart_filings_sample.json을 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ name, email, company, interest }, { corp_name, industry, ceo }, { corp_name, date, title, type }

데이터 바인딩 표시

UI 요소연결 데이터
고객 리스트customers.csv
회사 개요dart_companies_sample.json
최근 공시dart_filings_sample.json
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: DART 고객 CRM"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 02-dart-crm/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 02-dart-crm/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

02-dart-crm/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

02-dart-crm/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: DART 고객 CRM"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: DART 고객 CRM"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — DART 고객 CRM 프론트

확장 과제

  • 회사명 매칭 실패 상태 추가
  • 공시 유형별 필터 추가
  • 브리핑 Markdown 다운로드 버튼 추가
Module 53practice필수

AI Studio 프론트: KIS 관심종목 대시보드

관심종목 카드, 등락률 배지, 거래량 급증 알림, 차트 영역을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

KIS 관심종목 대시보드 프론트

관심종목의 시계열 변화를 직관적으로 보여주는 교육용 화면

항목내용
연결할 데이터 앱KIS 관심종목 대시보드 앱
주요 사용자데이터 분석을 배우는 대학생
화면 구성종목 선택, 핵심 지표 카드, 종가 추이 차트 영역, 거래량 급증일 표, AI 브리핑
최종 결과물주식 시계열을 보여주는 교육용 대시보드 UI

화면 흐름

1. 종목을 선택한다.

2. 등락률을 본다.

3. 차트와 거래량 변화를 확인한다.

4. 교육용 브리핑을 읽는다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: KIS 관심종목 대시보드 프론트
사용자: 데이터 분석을 배우는 대학생
목표: 관심종목의 시계열 변화를 직관적으로 보여주는 교육용 화면

화면 섹션:
- 종목 선택
- 핵심 지표 카드
- 종가 추이 차트 영역
- 거래량 급증일 표
- AI 브리핑

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

watchlist.csv와 stock_prices_sample.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ stock_code, name }, { date, stock_code, close, volume }

데이터 바인딩 표시

UI 요소연결 데이터
종목 선택watchlist.csv
차트 영역stock_prices_sample.csv
브리핑outputs/briefing.md
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: KIS 관심종목 대시보드"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 03-kis-stock-dashboard/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 03-kis-stock-dashboard/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

03-kis-stock-dashboard/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

03-kis-stock-dashboard/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: KIS 관심종목 대시보드"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: KIS 관심종목 대시보드"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 화면 하단에 "교육용 분석이며 투자 권유가 아닙니다" 문구를 넣어줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — KIS 관심종목 대시보드 프론트

확장 과제

  • DART 공시 이벤트 마커 추가
  • 관심종목 비교 탭 추가
  • 모바일 카드 레이아웃 개선
Module 54practice필수

AI Studio 프론트: 업무 문서 RAG

질문 입력창, 답변 패널, 근거 문서 카드, 확인 필요 영역을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

업무 문서 RAG 프론트

질문에 대한 답변과 근거를 함께 보여주는 지식베이스 화면

항목내용
연결할 데이터 앱업무 문서 RAG 앱
주요 사용자행정업무 담당자와 문서 검색이 필요한 학습자
화면 구성질문 입력창, 추천 질문, 답변 패널, 근거 문서 카드, 확인 필요 목록
최종 결과물근거 기반 질의응답 UI

화면 흐름

1. 질문을 입력한다.

2. 답변을 확인한다.

3. 근거 문서를 펼쳐본다.

4. 확인 필요 항목을 따로 본다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 업무 문서 RAG 프론트
사용자: 행정업무 담당자와 문서 검색이 필요한 학습자
목표: 질문에 대한 답변과 근거를 함께 보여주는 지식베이스 화면

화면 섹션:
- 질문 입력창
- 추천 질문
- 답변 패널
- 근거 문서 카드
- 확인 필요 목록

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

교육용 행정 지식문서 10개와 questions.md를 사용합니다. 문서별 근거를 함께 표시합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ question, answer, source_doc, evidence, needs_check }

데이터 바인딩 표시

UI 요소연결 데이터
질문 목록questions.md
답변 패널outputs/report.md
근거 카드docs/*.md
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 업무 문서 RAG"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 04-work-doc-rag/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 04-work-doc-rag/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

04-work-doc-rag/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

04-work-doc-rag/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 업무 문서 RAG"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 업무 문서 RAG"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 업무 문서 RAG 프론트

확장 과제

  • 근거 문장 하이라이트 추가
  • 질문 히스토리 추가
  • 문서 유형 필터 추가
Module 55practice필수

AI Studio 프론트: 아파트 실거래가 분석

지역 필터, 월별 추이 차트, 평균가 카드, 단지별 비교표를 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

아파트 실거래가 분석 프론트

지역과 기간에 따른 실거래 추이를 한눈에 보는 분석 화면

항목내용
연결할 데이터 앱아파트 실거래가 분석 앱
주요 사용자공공데이터 분석을 배우는 대학생
화면 구성지역 필터, 평균 가격 카드, 월별 거래 추이, 단지별 비교표, 해석 주의사항
최종 결과물실거래가 분석 대시보드 UI

화면 흐름

1. 지역을 선택한다.

2. 월별 거래 추이를 본다.

3. 단지별 평균을 비교한다.

4. 데이터 한계를 확인한다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 아파트 실거래가 분석 프론트
사용자: 공공데이터 분석을 배우는 대학생
목표: 지역과 기간에 따른 실거래 추이를 한눈에 보는 분석 화면

화면 섹션:
- 지역 필터
- 평균 가격 카드
- 월별 거래 추이
- 단지별 비교표
- 해석 주의사항

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

real_estate_transactions.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ deal_month, region, complex, area_m2, price_manwon }

데이터 바인딩 표시

UI 요소연결 데이터
지역 필터region
차트deal_month + price_manwon
비교표complex + area_m2
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 아파트 실거래가 분석"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 05-real-estate/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 05-real-estate/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

05-real-estate/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

05-real-estate/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 아파트 실거래가 분석"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 아파트 실거래가 분석"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 아파트 실거래가 분석 프론트

확장 과제

  • 면적대 필터 추가
  • 지도 영역 목업 추가
  • 최근 3개월 변화율 카드 추가
Module 56practice필수

AI Studio 프론트: 기상청 × 매출 JOIN

날씨 필터, 매출 비교 카드, 가설 검증 결과 영역을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

기상청 × 매출 JOIN 프론트

날씨와 매출의 관계를 가설 검증 화면으로 보여주기

항목내용
연결할 데이터 앱기상청 API × 매출 CSV JOIN 앱
주요 사용자매장 운영자와 데이터 분석 입문자
화면 구성날씨 필터, 평균 매출 비교 카드, 날짜별 병합표, 가설 결과, 한계
최종 결과물외부 데이터와 내부 데이터 JOIN 결과를 보여주는 화면

화면 흐름

1. 날씨 조건을 선택한다.

2. 매출 차이를 비교한다.

3. 날짜별 병합 데이터를 본다.

4. 가설 결과를 읽는다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 기상청 × 매출 JOIN 프론트
사용자: 매장 운영자와 데이터 분석 입문자
목표: 날씨와 매출의 관계를 가설 검증 화면으로 보여주기

화면 섹션:
- 날씨 필터
- 평균 매출 비교 카드
- 날짜별 병합표
- 가설 결과
- 한계

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

weather_sample.csv와 sales_sample.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ date, temp_c, rain_yn, sky }, { date, category, orders, sales }

데이터 바인딩 표시

UI 요소연결 데이터
날씨 필터weather_sample.csv
매출 카드sales_sample.csv
병합표date JOIN 결과
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 기상청 × 매출 JOIN"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 06-weather-sales-join/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 06-weather-sales-join/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

06-weather-sales-join/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

06-weather-sales-join/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 기상청 × 매출 JOIN"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 기상청 × 매출 JOIN"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 기상청 × 매출 JOIN 프론트

확장 과제

  • 공휴일 데이터 추가
  • 카테고리별 비교 탭 추가
  • 가설별 결과 카드 추가
Module 57practice필수

AI Studio 프론트: 지원사업 적합도

적합도 판정, 근거, 부족자료, 다음 작업을 보여주는 진단 화면을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

지원사업 적합도 진단 프론트

공고문 검토 결과를 판단표와 체크리스트로 보여주는 화면

항목내용
연결할 데이터 앱지원사업 공고 적합도 진단 앱
주요 사용자지원사업을 준비하는 대학생과 실무자
화면 구성공고 요약, 적합도 배지, 요건별 진단표, 부족자료 목록, 다음 작업
최종 결과물지원 가능성과 준비 작업을 보여주는 진단 UI

화면 흐름

1. 공고를 선택한다.

2. 적합도 판정을 본다.

3. 부족자료를 확인한다.

4. 다음 작업을 체크한다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 지원사업 적합도 진단 프론트
사용자: 지원사업을 준비하는 대학생과 실무자
목표: 공고문 검토 결과를 판단표와 체크리스트로 보여주는 화면

화면 섹션:
- 공고 요약
- 적합도 배지
- 요건별 진단표
- 부족자료 목록
- 다음 작업

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

notice.md, company_profile.md, fit_criteria.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ criterion, required, judgment, evidence, next_action }

데이터 바인딩 표시

UI 요소연결 데이터
요건별 진단표fit_criteria.csv
공고 요약notice.md
신청자 정보company_profile.md
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 지원사업 적합도"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 07-grant-fit-checker/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 07-grant-fit-checker/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

07-grant-fit-checker/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

07-grant-fit-checker/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 지원사업 적합도"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 지원사업 적합도"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 지원사업 적합도 진단 프론트

확장 과제

  • 여러 공고 비교 카드 추가
  • 마감 D-day 표시
  • 신청 준비율 진행바 추가
Module 58practice필수

AI Studio 프론트: 제안서 약점 탐지기

평가기준별 약점 카드, 원문 근거, 보완 문장 패널을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

제안서 약점 탐지기 프론트

제안서 리뷰 결과를 심사 기준별로 쉽게 확인하는 화면

항목내용
연결할 데이터 앱제안서 약점 탐지기 앱
주요 사용자제안서와 보고서를 작성하는 학습자
화면 구성평가기준 점수 카드, 약점 목록, 원문 근거, 보완 문장, 예상 질문
최종 결과물제안서 개선을 돕는 리뷰 보드 UI

화면 흐름

1. 평가기준을 본다.

2. 약점을 클릭한다.

3. 원문 근거를 확인한다.

4. 보완 문장을 복사한다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 제안서 약점 탐지기 프론트
사용자: 제안서와 보고서를 작성하는 학습자
목표: 제안서 리뷰 결과를 심사 기준별로 쉽게 확인하는 화면

화면 섹션:
- 평가기준 점수 카드
- 약점 목록
- 원문 근거
- 보완 문장
- 예상 질문

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

proposal.md와 evaluation_rubric.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ criterion, weakness, evidence, rewrite, priority }

데이터 바인딩 표시

UI 요소연결 데이터
평가기준 카드evaluation_rubric.csv
원문 근거proposal.md
리뷰 결과outputs/proposal_review.md
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 제안서 약점 탐지기"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 08-proposal-weakness/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 08-proposal-weakness/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

08-proposal-weakness/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

08-proposal-weakness/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 제안서 약점 탐지기"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 제안서 약점 탐지기"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 제안서 약점 탐지기 프론트

확장 과제

  • 보완 문장 복사 버튼 추가
  • 우선순위 필터 추가
  • 발표 Q&A 탭 추가
Module 59practice필수

AI Studio 프론트: 거래처 견적 비교

업체별 점수, 추천 순위, 가중치 슬라이더, 확인 질문 영역을 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

거래처 견적 비교 프론트

가격, 납기, 조건, 리스크를 함께 비교하는 견적 판단 화면

항목내용
연결할 데이터 앱거래처 견적 비교 보드 앱
주요 사용자구매/행정 담당자와 동아리 예산 담당자
화면 구성가중치 슬라이더, 업체별 점수 카드, 견적 비교표, 추천 이유, 확인 질문
최종 결과물견적 비교와 추천 이유를 보여주는 의사결정 UI

화면 흐름

1. 가중치를 조정한다.

2. 업체별 점수를 본다.

3. 추천 이유를 확인한다.

4. 추가 질문을 정리한다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: 거래처 견적 비교 프론트
사용자: 구매/행정 담당자와 동아리 예산 담당자
목표: 가격, 납기, 조건, 리스크를 함께 비교하는 견적 판단 화면

화면 섹션:
- 가중치 슬라이더
- 업체별 점수 카드
- 견적 비교표
- 추천 이유
- 확인 질문

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

20줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조5개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

quotes.csv와 vendor_notes.md를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ vendor, item, unit_price, qty, delivery_days, payment_terms, note }

데이터 바인딩 표시

UI 요소연결 데이터
비교표quotes.csv
업체 메모vendor_notes.md
추천 카드가중치 계산 결과
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 거래처 견적 비교"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 09-quote-comparison/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 09-quote-comparison/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

09-quote-comparison/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

09-quote-comparison/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 거래처 견적 비교"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: 거래처 견적 비교"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 데이터 해석의 한계를 화면 하단에 표시해줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인
제출용 완성 화면 — 거래처 견적 비교 프론트

확장 과제

  • 가중치 변경 시 점수 재계산
  • 승인 보고서 출력 버튼 추가
  • 업체별 과거 이력 탭 추가
Module 60practice필수

AI Studio 프론트: DART × KIS 통합 카드

회사 개요, 최근 공시, 주가 추이, 미팅 질문을 한 화면에 보여주는 통합 프론트를 만듭니다.

6 steps

Step 1

화면 목표와 사용자 흐름 정하기

published

Step 1

화면 목표와 사용자 흐름 정하기

원주 ICT 빅데이터 고급

만들 화면

DART × KIS 통합 브리핑 프론트

회사정보, 공시, 주가 흐름을 한 화면에서 함께 보는 브리핑 카드

항목내용
연결할 데이터 앱DART × KIS 통합 브리핑 카드 앱
주요 사용자기업 분석이 필요한 대학생과 실무자
화면 구성회사 선택, 회사 개요, 최근 공시, 주가 추이, 미팅 질문, 주의 문구
최종 결과물기업 분석 통합 브리핑 카드 UI

화면 흐름

1. 회사를 선택한다.

2. 회사 개요를 본다.

3. 공시와 주가 변화를 같이 확인한다.

4. 질문을 준비한다.

프론트 실습의 목표는 완벽한 서비스가 아니라, 데이터 분석 결과가 사용자에게 어떻게 보이면 좋은지 빠르게 시각화하는 것입니다.

이 실습의 진행 순서 (6스텝)

스텝하는 일사용하는 도구
1화면 목표 정하기읽기
2화면 생성과 미리보기Google AI Studio (Build)
3샘플 데이터 반영Google AI Studio (Build)
4코드를 파일로 정리하고 실행Cursor 에이전트
5데이터 연결 지점 표시Cursor 에이전트
6다듬고 제출Cursor 에이전트
Step 2

Google AI Studio 화면 생성 프롬프트 작성

published

Step 2

Google AI Studio 화면 생성 프롬프트 작성

원주 ICT 빅데이터 고급

AI Studio Build 사용

Google AI Studio의 Build 기능을 사용합니다. 프롬프트를 입력하면 화면 코드가 생성되고, 브라우저 안에서 바로 실행된 미리보기를 확인할 수 있습니다. 마음에 들 때까지 추가 프롬프트로 화면을 고친 뒤, 다음 스텝에서 코드를 Cursor로 가져옵니다.

AI Studio 프롬프트

복사용 텍스트

아래 데이터 앱을 위한 프론트 화면 프로토타입을 만들어줘.

앱 이름: DART × KIS 통합 브리핑 프론트
사용자: 기업 분석이 필요한 대학생과 실무자
목표: 회사정보, 공시, 주가 흐름을 한 화면에서 함께 보는 브리핑 카드

화면 섹션:
- 회사 선택
- 회사 개요
- 최근 공시
- 주가 추이
- 미팅 질문
- 주의 문구

디자인 조건:
- 초보자가 이해하기 쉬운 업무용 대시보드 느낌
- 카드, 표, 필터, 상태 배지를 사용
- 모바일에서도 내용이 잘리지 않게 구성
- 샘플 데이터는 코드 안에 작은 배열로 넣어도 됨
- HTML, CSS, JavaScript가 한 파일에서 실행되는 예시로 작성
- 실제 API 키나 개인정보는 넣지 않음

21줄 · 펼치기를 누르면 전체 코드를 볼 수 있습니다.

확인 기준

확인 항목기준
화면 구조6개 주요 영역이 보인다
데이터 표현표/카드/차트 자리 중 2개 이상이 있다
문구실제 사용자가 이해할 수 있는 말이다
반응형모바일에서 카드가 세로로 쌓인다
Step 3

샘플 데이터를 붙여 화면 맥락 만들기

published

Step 3

샘플 데이터를 붙여 화면 맥락 만들기

원주 ICT 빅데이터 고급

샘플 데이터 설명

dart_companies_sample.json, dart_filings_sample.json, stock_prices_sample.csv를 사용합니다.

AI Studio 추가 프롬프트

복사용 텍스트

방금 만든 화면에 아래 샘플 데이터 구조를 반영해줘.
데이터가 들어갈 위치를 명확히 보여주고,
비어 있는 상태와 로딩 상태도 간단히 추가해줘.

샘플 데이터 구조:
{ corp_name, stock_code }, { date, title, type }, { date, stock_code, close, volume }

데이터 바인딩 표시

UI 요소연결 데이터
회사 선택dart_companies_sample.json
공시 목록dart_filings_sample.json
주가 차트stock_prices_sample.csv
Step 4

Cursor로 프론트 파일 만들기

published

Step 4

Cursor로 프론트 파일 만들기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: DART × KIS 통합 카드"의 4단계, "Cursor로 프론트 파일 만들기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

AI Studio 코드 가져오기

1. AI Studio Build 화면에서 생성된 코드를 확인합니다.

2. 코드 전체를 복사(또는 다운로드)합니다.

3. Cursor 채팅창에 붙여넣고 아래 프롬프트를 함께 보냅니다.

Cursor 요청 프롬프트

복사용 텍스트

위에 붙여넣은 Google AI Studio 코드를 현재 프로젝트 폴더에 정리해줘.

요구사항:
1. 10-dart-kis-briefing/frontend/index.html 파일을 만든다.
2. 가능하면 style.css와 app.js로 분리한다.
3. data 폴더의 샘플 파일과 연결할 위치를 주석으로 표시한다.
4. 실행 방법을 10-dart-kis-briefing/frontend/README.md에 작성한다.
5. API 키나 개인정보는 코드에 넣지 않는다.

폴더 구조

복사용 텍스트

10-dart-kis-briefing/
  data/
  frontend/
    index.html
    style.css
    app.js
    README.md

브라우저에서 확인

파일을 만든 뒤, 실행도 Cursor 에이전트에게 요청합니다.

복사용 텍스트

10-dart-kis-briefing/frontend를 로컬 서버로 실행해서 브라우저에서 확인할 수 있게 해줘.
data 폴더의 CSV/JSON을 fetch로 읽는 코드가 있다면,
index.html을 파일로 직접 열면(file://) 동작하지 않는다는 안내도 README.md에 적어줘.

Cursor가 서버 실행을 승인 요청하면 승인하고, 터미널에 표시된 http://localhost:포트 주소를 클릭합니다.

Step 5

데이터 앱과 연결 지점 표시하기

published

Step 5

데이터 앱과 연결 지점 표시하기

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: DART × KIS 통합 카드"의 5단계, "데이터 앱과 연결 지점 표시하기"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

연결 전략

방식설명난이도
정적 샘플 데이터app.js 안에 샘플 배열로 표시
CSV/JSON 파일 로드data 폴더 파일을 읽어 화면에 표시
Streamlit 결과 재사용outputs/report.md 내용을 붙여 브리핑 표시
API 직접 호출실제 API를 프론트에서 호출

Cursor 요청 프롬프트

복사용 텍스트

현재 프론트 화면에서 실제 데이터가 들어갈 부분을 찾아서 주석으로 표시해줘.
각 주석은 [데이터 출처, 필요한 필드, 연결 방식]을 포함해줘.
초보자가 다음에 어떤 파일을 수정해야 하는지도 README.md에 정리해줘.

오늘은 API 직접 호출보다, 데이터 앱이 만든 결과를 화면에 보여주는 구조를 우선 완성합니다.

Step 6

화면 개선과 제출 체크

published

Step 6

화면 개선과 제출 체크

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "AI Studio 프론트: DART × KIS 통합 카드"의 6단계, "화면 개선과 제출 체크"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

개선 프롬프트

복사용 텍스트

이 프론트 화면을 수업 제출용으로 다듬어줘.
1. 제목과 설명을 더 명확하게 바꿔줘.
2. 중요한 수치가 한눈에 보이도록 카드 3개를 배치해줘.
3. 표는 모바일에서 가로 스크롤되게 해줘.
4. 빈 데이터 상태와 오류 상태 문구를 추가해줘.
5. 화면 하단에 "교육용 분석이며 투자 권유가 아닙니다" 문구를 넣어줘.

제출 체크

제출물확인
frontend/index.html
frontend/style.css
frontend/app.js
frontend/README.md
화면 캡처 또는 실행 확인

확장 과제

  • 공시일 전후 주가 마커 추가
  • CRM 고객 카드와 연결
  • 브리핑 PDF 다운로드 버튼 추가
Module 61checkpoint필수

결과 공유와 수료 정리

완성한 실습 결과를 공유하고 현업 적용 계획을 정리합니다.

4 steps

Step 1

최종 제출물 정리

published

Step 1

최종 제출물 정리

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "결과 공유와 수료 정리"의 1단계, "최종 제출물 정리"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

제출물

제출물파일 예시
업무자료 관리표Google Sheets 링크
Apps Script 품질 점검report 시트 캡처
Cursor 개발환경Python·Node.js·Git·GitHub CLI 확인 화면
유튜브 다운로드 로컬앱private GitHub URL, 실행 화면 캡처
Streamlit 데모 앱app.py, 실행 화면 캡처
AI Studio 프론트 화면frontend/index.html, 브라우저 화면 캡처
Supabase MCP 실습orders 테이블 조회 결과 캡처
결과 리포트·AI 브리핑outputs/*.md
적용 아이디어5줄 요약

제출물 중 1개 이상이면 수료 기준을 충족합니다. 파일은 학습 대시보드의 개인 자료실에, 프롬프트와 링크는 각 스텝의 개인 메모에 보관하세요.

출발점과 비교하기

첫 모듈 "사전 진단과 학습 목표"에서 개인 메모에 적어 둔 진단 결과와 목표를 다시 열어 보세요. 이틀 전의 나와 지금의 나를 비교하는 것이 이 과정의 진짜 수료식입니다.

폴더 최종 상태

복사용 텍스트

wonju-ict-advanced/
  data/
  docs/
  scripts/
  outputs/
  README.md
Step 2

발표 템플릿

published

Step 2

발표 템플릿

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "결과 공유와 수료 정리"의 2단계, "발표 템플릿"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

3분 공유 템플릿

1. 내가 고른 업무자료

2. 자료를 어떻게 정리했는지

3. AI에게 어떤 질문을 던졌는지

4. 나온 결과와 아쉬운 점

5. 실제 업무나 학교 과제에 적용할 방법

발표 표

항목내용
주제
입력 자료
사용 도구
결과물
다음 개선
Step 3

수료 후 확장 로드맵

published

Step 3

수료 후 확장 로드맵

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "결과 공유와 수료 정리"의 3단계, "수료 후 확장 로드맵"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

다음 단계

단계할 일
1주차실제 업무자료 10개를 지식베이스 형식으로 정리
2주차반복 질문 10개를 questions.md로 정리
3주차Cursor로 분석 스크립트 1개 작성
4주차Markdown 보고서 템플릿 고정

확장 방향

  • 내부 문서 검색 챗봇
  • 지원사업 공고 자동 검토표
  • 제안서 심사 대응 체크리스트
  • 수주/납기 리스크 분석 리포트
Step 4

강사 소개

published

Step 4

강사 소개

원주 ICT 빅데이터 고급

Cursor Agent로 이 단계를 진행합니다

28번 실습부터는 터미널 명령을 직접 입력하지 않습니다. Cursor에서 프로젝트 폴더를 열고 채팅창을 Agent 모드로 바꾼 뒤, 아래 복사용 프롬프트를 붙여넣습니다. Cursor가 파일 생성, 패키지 설치, 실행을 제안하면 명령 내용을 읽고 Run만 승인합니다.

이 단계에서 지킬 원칙

상황수강생이 할 일
pip install, npm install, 앱 실행 명령이 필요함직접 입력하지 않고 Cursor가 제안한 명령의 Run 승인
파일을 새로 만들거나 고침Cursor 변경 내용을 보고 Accept 승인
브라우저 로그인/권한 승인본인이 화면에서만 진행, 비밀번호·인증코드·토큰은 채팅에 입력하지 않음
오류 발생오류 전체를 Cursor 채팅에 붙여넣고 원인 설명·수정·재실행을 요청

Cursor 채팅창에 먼저 붙여넣기

복사용 텍스트

현재 Cursor에서 열려 있는 프로젝트 폴더를 먼저 확인해줘.

이번 실습은 "결과 공유와 수료 정리"의 4단계, "강사 소개"이야.
1. 기존 파일과 data, docs, scripts, outputs 폴더 상태를 먼저 읽고 짧게 설명해줘.
2. 이 단계에 필요한 파일 생성, 수정, 패키지 설치, 실행은 네가 직접 진행해줘.
3. 터미널 명령은 실행 전에 왜 필요한지 한 줄로 설명하고, 내가 Run을 승인할 수 있게 제안해줘.
4. 기존 파일과 데이터를 임의로 삭제하거나 덮어쓰지 말고, 수정이 필요하면 먼저 이유를 알려줘.
5. 로그인·브라우저 인증·API 키 입력이 필요한 경우에는 비밀번호나 토큰을 요구하지 말고, 내가 화면에서 할 행동만 안내한 뒤 기다려줘.
6. 작업이 끝나면 만든 파일, 실행한 명령, 확인한 결과, 다음에 할 일을 초보자 기준으로 정리해줘.

아래 내용은 이번 단계의 자료입니다. text 코드 블록이 있으면 그대로 Cursor 채팅창(Agent 모드)에 붙여넣습니다.

---

양승철 강사

항목내용
소속(주) 유스튜디오
역할대표이사 / AI·바이브코딩 교육 강사
이메일pd@ustudio.co.kr
교육 분야AI 활용, 업무 자동화, 데이터 기반 서비스 설계, Cursor/Codex/Claude Code 기반 바이브코딩

이번 과정은 초보자도 업무자료를 구조화하고 AI 도구로 실제 결과물을 만들어볼 수 있도록 실습 중심으로 구성되었습니다.