PageSourceSearch

https://www.ic-pbl.com/assets/DataPBLGenerator-BQX1dA-C.js

js ic-pbl.com collected 2026-10-09 02:51:48 UTC 12,979 bytes, 70 lines download raw bytes

1import{j as e}from"./vendor-ui-BTq5TDLN.js";import{a as i}from"./vendor-sentry-BFHQO6cl.js";import{u as N,y as T,z as L,a as v,x as M,q as n,v as x,S as z}from"./index-DArpIf0g.js";import{T as S}from"./textarea-C9JlBsvp.js";import{u as D,a as w,G as k,A as E,C as B,b as P}from"./GuidedFormWizard-C0dIWa7g.js";import{a as R}from"./LoginPromptModal-CIl7QTJ3.js";import{C as b}from"./chart-column-CEycj0SG.js";import{T as G}from"./target-DFyAdBQk.js";import{D as j}from"./database-DVo_7et-.js";import{U as _}from"./user-DryZnBam.js";import"./vendor-react-65r6d5Wi.js";import"./vendor-supabase-DNBNrwrO.js";import"./vendor-charts-D1MhMD93.js";import"./vendor-editor-DdE53h-I.js";import"./aiScenarioService-C27Vsr5c.js";import"./aiToolLabels-D3RUqWIC.js";import"./pblBankService-BzFmftth.js";import"./analyticsService-S7AnfNbK.js";import"./k12Filter-CYMhf1Fz.js";import"./permissions-D56p5Zvi.js";import"./qaAgentService-sXVdlq7W.js";import"./taxonomy-Dj5c3n8S.js";import"./aiUsageService-DlYJonPU.js";import"./htmlUtils-C1j-nvKc.js";import"./clipboard-DAVdWD_F.js";import"./bankToolEntry-BW1tVm2N.js";import"./cpu-8cmGYu69.js";import"./brain-7fVFleCe.js";import"./zap-DtXgX83b.js";import"./ExportDropdown-8gVnZ2v_.js";import"./exportUtils-B_gkkLgz.js";import"./markdownConfig-h226piP8.js";import"./vendor-markdown-k5tt2I9s.js";import"./markdownComponents-BgiOClDy.js";import"./download-B0RjiA2V.js";import"./file-text-DSg5sT3k.js";import"./alert-dialog-emx_WfTp.js";import"./users-round-BeAc85UC.js";import"./lightbulb-BmzMP5R_.js";import"./message-square-text-lNUbjVxy.js";import"./rocket-CCpGiyjm.js";import"./messages-square-BQ0sz5aU.js";import"./file-question-mark-CBK-RwpO.js";import"./clipboard-list-DT7zjzpy.js";import"./arrow-right-1uqOvaOS.js";import"./chevron-down-cJreBjqv.js";import"./lock-CUhqwqJV.js";import"./save-9NQ0urUw.js";import"./chevron-right-BvdLiKlf.js";import"./copy-BjgqZW64.js";import"./bot-CR4zivXR.js";import"./clock-QyzuV4jU.js";import"./square-DVMb9kiZ.js";import"./send-DcHctEPe.js";import"./arrow-left-Bv_8l1VX.js";import"./check-DFNQCMSY.js";import"./pen-line-DI-TADuA.js";import"./dialog-DJtvMLco.js";import"./user-plus-DrWocgfB.js";const O=`당신은 데이터 기반 문제해결(AI-PBL/Data-PBL) 설계 전문가입니다. Bloom's Taxonomy와 CRISP-DM 방법론을 참고하되, 답변은 **간결·실행 가능**하게 작성하세요.
2
3응답 구성 (이 순서·분량 엄수, 머리말·결론·인사말 일체 금지):
4
51) **프로젝트 개요 및 분석 목표** (3~4문장 이내)
6   - 학생들이 달성해야 할 구체적 데이터 분석 목표 1~2개와 학습 기대효과만 작성.
7
82) **데이터셋 이해** (표 형식, 5컬럼, 변수 5개 이내)
9   | 변수명 | 데이터 타입 | 의미 | 주의사항 | 분석 활용 |
10   - 주요 변수만 5행 이내로 압축. 각 셀 1문장 이내.
11
123) **단계별 분석 가이드 (4단계)** — 각 단계 **2~3문장 이내**로 압축
13   - [1단계] 데이터 탐색·전처리: 결측치·이상치 처리 핵심 1~2가지
14   - [2단계] 분석·시각화: 권장 그래프·통계량 1~2가지
15   - [3단계] 인사이트 도출: 패턴 → 문제해결책 1가지 예시
16   - [4단계] AI 활용 팁: 프롬프트 예시 1개 + 검증 포인트 1개
17
184) **평가 루브릭** (표 형식, 3컬럼, **3개 행**)
19   | 평가 기준 | 우수 (90+) | 보통 (70~89) |
20   - 데이터 리터러시 핵심 기준 3개만. Bloom 분석/평가/창조 수준 반영. 각 셀 1문장.
21
225) **학제 연계 가능성** (1~2줄)
23   - 통계·CS + 도메인(경영·의료·사회 등) 협업 시나리오 1줄.
24
25규칙:
26- 각 섹션 사이 빈 줄 1개. 추상적 서술("다양한", "효과적인") 대신 구체적 예시·행동 기술어 사용.
27- ASCII 트리 문자(└ ├ ─ │ ┌ ┐) 사용 금지.
28- 표 구분선(\`| :--- |\`)은 컬럼당 1번만. 같은 구분선 반복 금지.
29- 데이터가 부족하면 행을 늘리지 말고 합리적 기본값으로 채울 것.
30
31금지 사항:
32- 실존 기업명 대신 "A사", "B기관" 등 가상 명칭 사용.
33- URL, 논문 DOI, 통계 수치 생성 금지. 필요 시 "약 ~", "~년 기준 약 ~" 근사 표현.
34- 실존 인물 발언 인용 금지.
35- 특정 외부 상용 AI 제품명(ChatGPT, Copilot 등) 명시 금지. "AI 분석 도구", "AI 챗봇" 등 일반 명칭 사용.
36
37**마크다운 표 작성 필수 규칙** (반드시 준수):
381. 표는 반드시 다음 3단계 순서로 작성: (a) 헤더 행 \`| 컬럼1 | 컬럼2 |\` → (b) 구분선 \`| --- | --- |\` → (c) 데이터 행. 이 순서를 절대 바꾸지 마세요.
392. 모든 행은 별도 줄로 작성하세요. 한 줄에 여러 행을 이어 쓰지 마세요 
39(예: \`| A | B || C | D |\` 금지).
403. 헤더 행, 구분선, 데이터 행의 \`|\` 개수가 정확히 동일해야 합니다. 컬럼 수 불일치 시 표가 깨집니다.
414. 모든 셀에 구체적 내용을 채우세요. **빈 셀 금지**. 셀 내용은 1~2문장으로 간결하게. 셀 내부 줄바꿈은 \`<br>\`로 표기.
425. 표 시작 전과 종료 후에 반드시 빈 줄 1줄을 삽입하세요.`,F=`안녕하세요! **데이터 활용 가이드 작성기**입니다.
43
44학생들이 데이터를 수집, 정제, 분석하고 인사이트를 도출하는 과정을 설계하는 것은 매우 중요합니다. 좌측 폼에 수업 주제와 활용할 데이터셋 정보를 입력하시면, 학생들의 수준에 맞는 단계별 데이터 활용 가이드를 작성해 드립니다.`,$=`당신은 데이터 기반 PBL 설계를 돕는 소크라테스식 코치입니다.
45결과를 바로 만들어주지 않습니다. 교수자가 스스로 좋은 데이터 활용 전략을 설계할 수 있도록 단계적 질문으로 안내합니다.
46
47대화 흐름:
481단계: "학생들이 이 데이터에서 어떤 인사이트를 스스로 발견하기를 원하시나요? 어떤 분석적 사고력을 기르길 기대하시나요?"
492단계: "학생들의 현재 데이터 리터러시 수준은 어떤가요? 어떤 분석 도구를 활용할 수 있나요?"
503단계: "데이터 분석 과정에서 학생들이 겪을 수 있는 어려움은 무엇이고, 어떤 단계별 스캐폴딩이 필요할까요?"
514단계: 앞선 대화를 바탕으로 데이터 활용 가이드 초안을 함께 작성
52
53규칙:
54- 각 단계에서 1~2개의 질문만 제시
55- 사용자의 답변을 인정하고 공감한 후 다음 질문으로 이동
56- 마지막 단계에서 대화 내용을 종합하여 가이드 초안 제시
57- 초안 제시 후 "수정하고 싶은 부분이 있으신가요?"로 마무리`,q=`**소크라테스식 코치 모드**입니다.
58
59단계적 질문을 통해 함께 데이터 활용 전략을 설계합니다. 결과를 바로 생성하지 않고, 질문을 통해 함께 설계합니다.
60
61준비가 되셨다면 좌측에 기본 정보를 입력하고 시작해주세요.`,U=[{key:"goal",label:"데이터 분석 목표"},{key:"dataset",label:"활용할 데이터셋"},{key:"literacyLevel",label:"데이터 리터러시 수준"}],W=[{key:"goal",label:"데이터 분석 목표",required:!0},{key:"dataset",label:"활용할 데이터셋",required:!0},{key:"literacyLevel",label:"데이터 리터러시 수준",required:!1}];function Qe(){const{user:l}=N(),[a,p]=T(L.form(l==null?void 0:l.id,"data-pbl"),{subject:"",goal:"",dataset:"",literacyLevel:""}),[d,c]=i.useState(!1),[u,f]=i.useState(!1),{suggestions:I,isLoading:C,requestSuggestions:g}=D({toolType:"data-pbl",targetFields:U}),h=i.useRef(!0);i.useEffect(()=>{if(h.current){h.current=!1;return}a.subject.trim().length>=2?(g({subject:a.subject}),u||c(!0)):c(!1)},[a.subject,g,u]);const t=w({systemInstruction:O,initialMessage:F,socraticInstruction:$,socraticInitialMessage:q,toolType:"data-pbl",defaultTitle:"데이터 활용 가이드",getSaveTitle:()=>a.subject?`데이터 활용 가이드: ${a.subject}`:"데이터 활용 가이드"}),r=s=>{const{name:o,value:m}=s.target;p(A=>({...A,[o]:m}))},y=async()=>{if(!t.requireAuth())return;if(a.subject.trim().length<2||a.goal.trim().length<2||a.dataset.trim().length<2){t.showAlert("입력 확인","교과목명, 데이터 분석 목표, 활용할 데이터셋은 필수 입력 항목입니다. (각 2자 이상)");return}const s=`다음 정보를 바탕으로 AI-PBL 데이터 활용 가이드를 설계해주세요:
62- 교과목명 및 주제: ${a.subject}
63- 데이터 분석 목표: ${a.goal}
64- 활용할 데이터셋: ${a.dataset}
65- 학생들의 데이터 리터러시 수준: ${a.literacyLevel||"초급 (엑셀 기본 사용 가능, 코딩 경험 없음)"}
66
67위 조건들을 모두 반영하여 완벽한 단계별 데이터 활용 가이드를 마크다운으로 작성해주세요.`,o=`[데이터 활용 가이드 작성 요청]
68- 과목: ${a.subject}
69- 목표: ${a.goal}
70- 데이터셋: ${a.dataset}`;await t.handleSend(s,!0,o)};return e.jsx(k,{title:"데이터 활용 가이드 작성기",subtitle:"데이터 분석부터 인사이트 도출까지, 학생들을 위한 단계별 가이드를 설계합니다.",icon:e.jsx(j,{className:"w-5 h-5 text-blue-500 dark:text-blue-400"}),formTitle:"데이터 분석 설계 폼",formSubtitle:"어떤 데이터를 어떻게 분석할지 입력해주세요.",formIcon:e.jsx(b,{className:"w-5 h-5 text-blue-500"}),formContent:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n,{className:"flex items-center gap-2",children:[e.jsx(G,{className:"w-4 h-4 text-zinc-400"}),"교과목명 및 주제 ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(x,{name:"subject",value:a.subject,onChange:r,placeholder:"예: 마케팅 원론 - 고객 이탈 예측",className:"bg-zinc-50 dark:bg-zinc-900 h-11"})]}),d&&e.jsx(P,{steps:W,suggestions:I,isLoading:C,onSelect:(s,o)=>p(m=>({...m,[s]:o})),onComplete:()=>{c(!1),f(!0)}}),e.jsxs("div",{className:d?"opacity-40 pointer-events-none space-y-4":"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n,{className:"flex items-center gap-2",children:[e.jsx(z,{className:"w-4 h-4 text-zinc-400"}),"데이터 분석 목표 ",e.jsx("span",{className:"text-red-500",children:"*"})]}
70),e.jsx(S,{name:"goal",value:a.goal,onChange:r,placeholder:"예: 통신사 고객 데이터를 분석하여 이탈률이 높은 고객군의 특징을 파악하고, 이탈 방지 프로모션 기획하기",className:"bg-zinc-50 dark:bg-zinc-900 resize-none h-24"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n,{className:"flex items-center gap-2",children:[e.jsx(j,{className:"w-4 h-4 text-zinc-400"}),"활용할 데이터셋 ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(S,{name:"dataset",value:a.dataset,onChange:r,placeholder:"예: Kaggle Telco Customer Churn 데이터셋 (성별, 연령, 서비스 가입 정보, 월 요금, 이탈 여부 등 포함)",className:"bg-zinc-50 dark:bg-zinc-900 resize-none h-24"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n,{className:"flex items-center gap-2",children:[e.jsx(_,{className:"w-4 h-4 text-zinc-400"}),"학생들의 데이터 리터러시 수준"]}),e.jsx(x,{name:"literacyLevel",value:a.literacyLevel,onChange:r,placeholder:"예: 파이썬 기초 문법 숙지, Pandas 활용 가능",className:"bg-zinc-50 dark:bg-zinc-900 h-11"})]})]})]}),submitButton:e.jsx(v,{className:"w-full py-6 text-base font-bold shadow-md hover:shadow-lg transition-all bg-blue-600 hover:bg-blue-700 text-white",onClick:y,disabled:t.isLoading,children:t.isLoading?e.jsxs(e.Fragment,{children:[e.jsx(M,{className:"w-5 h-5 mr-2 animate-spin"})," 생성 중..."]}):e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"w-5 h-5 mr-2"})," 가이드 생성하기"]})}),hasSocraticMode:t.hasSocraticMode,isSocraticMode:t.isSocraticMode,onToggleSocraticMode:t.toggleSocraticMode,chatPanel:e.jsx(B,{messages:t.messages,input:t.input,setInput:t.setInput,isLoading:t.isLoading,isStreaming:t.isStreaming,hasError:t.hasError,responseTime:t.responseTime,savingId:t.savingId,selectedModel:t.
70selectedModel,onModelChange:t.handleModelChange,onReset:t.resetChat,onSend:t.handleSend,onSave:t.handleSaveScenario,onCopy:t.handleCopy,onStopGeneration:t.stopGeneration,onRetry:t.retry,messagesEndRef:t.messagesEndRef,accentColor:"blue",loadingText:"가이드를 작성하고 있습니다...",placeholder:"생성된 가이드에 대해 추가로 수정하거나 요청할 내용을 입력하세요... (예: 파이썬 코드 예시를 추가해줘)",filenameBase:"data-pbl-guide",toolDisplayName:"데이터 활용 가이드 작성기",currentToolId:"data-pbl",lastSavedScenarioId:t.lastSavedScenarioId,promotedScenarioId:t.promotedScenarioId,linkedScenarioInfo:t.linkedScenarioInfo}),alertDialog:e.jsxs(e.Fragment,{children:[e.jsx(E,{open:t.isAlertOpen,onOpenChange:t.setIsAlertOpen,title:t.alertTitle,message:t.alertMessage,onConfirm:t.onAlertConfirm}),e.jsx(R,{open:t.isAuthModalOpen,onClose:()=>t.setIsAuthModalOpen(!1),featureDescription:"AI 도구"})]})})}export{Qe as DataPBLGenerator};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.