PageSourceSearch

https://naemo.ai/_next/static/chunks/1405-7d9690cf904ef684.js

js naemo.ai collected 2026-10-02 01:13:07 UTC 15,357 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1405],{81405:function(e,a,t){"use strict";t.r(a),t.d(a,{StudentMockExamTab:function(){return w},default:function(){return D}});var r=t(57437),s=t(2265),l=t(14296),c=t(81385),i=t(56940),n=t(97059),d=t(62994),o=t(11655),u=t(77719),m=t(26948),h=t(33245),v=t(93448),x=t(1406),j=t(57617),b=t.n(j),p=t(85625),g=t.n(p),y=t(36421),k=t(9412),f=t.n(k);function N(e){return["사회","과학","탐구1","탐구2"].includes(e.subject)?1===e.grade||2===e.grade?"사회"===e.subject||"탐구1"===e.subject?"사회":"과학":e.subjectDetail||e.subject:e.subject}function L(e){var a,t,l,c,i,n;let{mockExams:d,subjects:o,flat:u=!1}=e,m=(0,s.useMemo)(()=>{var e,a;let t=new Map;for(let a of d){let r=null!==(e=a.examKey)&&void 0!==e?e:"".concat(a.year,"-").concat(a.month);t.has(r)||t.set(r,{year:a.year,month:a.month,records:[]}),t.get(r).records.push(a)}let r=Array.from(t.entries()).sort((e,a)=>{let[,t]=e,[,r]=a;return t.year-r.year||t.month-r.month}).map(e=>{let[a,t]=e,r={};for(let e of t.records){if(!(0,x.J4)(e.gradeLevel))continue;let a=e.subject;(1===e.grade||2===e.grade)&&("탐구1"===a&&(a="사회"),"탐구2"===a&&(a="과학")),r[a]=e.gradeLevel}return{...t,key:a,average:(0,x.Jf)(r)}}),s=r.at(-1),l=r.map(e=>e.average).filter(e=>null!==e),c=(null!==(a=null==s?void 0:s.records)&&void 0!==a?a:[]).filter(e=>["국어","수학","영어","사회","과학","탐구1","탐구2"].includes(e.subject)),i=[0,2,4,3,1].flatMap(e=>{let a=o[e];if(!a)return[];let t=c.filter(e=>N(e)===a.key&&(0,x.J4)(e.gradeLevel)).map(e=>e.gradeLevel);return[{label:a.name,primary:null===a.average?null:Number(a.average),secondary:(0,x.M$)(t)}]});return{overall:(0,x.M$)(l),count:l.length,latest:s,period:s?"".concat(s.year,"년 ").concat(s.month,"월"):void 0,records:c.map(e=>({subject:N(e),gradeLevel:e.gradeLevel})),axes:i}},[d,o]);return(0,r.jsx)("div",{className:f().workspace,"data-flat":u||void 0,children:(0,r.jsxs)("section",{className:f().summary,"aria-label":"모의고사 요약",children:[(0,r.jsxs)("div",{className:f().summaryContent,children:[(0,r.jsxs)("div",{className:f().summaryTitle,children:[(0,r.jsx)("h3",{children:"모의고사 종합 평균"}),(0,r.jsxs)("span",{className:f().meta,children:[m.count,"회 시험 \xb7 9등급제"]})]}),(0,r.jsxs)("div",{className:f().value,children:[(0,r.jsx)("strong",{children:null!==(c=null===(a=m.overall)||void 0===a?void 0:a.toFixed(1))&&void 0!==c?c:"—"}),(0,r.jsx)("span",{children:null===m.overall?"평균 산출 불가":"등급"})]}),m.latest&&(0,r.jsxs)("div",{className:f().latest,children:[(0,r.jsx)("span",{children:"최근 시험"}),(0,r.jsxs)("strong",{children:[null!==(i=null===(t=m.latest.average)||void 0===t?void 0:t.toFixed(1))&&void 0!==i?i:"—",null!==m.latest.average?"등급":""]}),(0,r.jsx)("span",{className:f().meta,children:m.period})]})]}),(0,r.jsx)(y.L,{records:m.records,period:m.period,scale:9,title:"최근 시험 등급 분포",subjectGroup:"국수영탐"},null!==(n=null===(l=m.latest)||void 0===l?void 0:l.key)&&void 0!==n?n:"empty"),(0,r.jsx)(y.Q,{axes:m.axes,scale:9,primary:"과목별 종합 평균",secondary:"최근 시험"})]})})}let w=e=>{var a;let{mockExams:t,mobileView:j=!1}=e,p=(0,s.useMemo)(()=>Object.values(t.reduce((e,a)=>{var t;let r=null!==(t=a.examKey)&&void 0!==t?t:"".concat(a.year,"-").concat(a.month);e[r]||(e[r]={year:a.year,month:a.month,key:r,examLabel:a.examLabel,subjects:{}});let s=a.gradeLevel;if(s&&s>=1&&s<=9){let t=a.subject;(1===a.grade||2===a.grade)&&("탐구1"===t&&(t="사회"),"탐구2"===t&&(t="과학")),e[r].subjects[t]=s}return e},{})).sort((e,a)=>e.year!==a.year?e.year-a.year:e.month-a.month).slice(-5).map(e=>{let a=(0,x.Jf)(e.subjects),t=null!==a?a.toFixed(1):null;return{name:e.key,label:"".concat(e.year,"년 ").concat(e.month,"월").concat(e.examLabel?" \xb7 ".concat(e.examLabel):""),shortLabel:"".concat(e.month,"월"),average:t}}),[t]),y=(0,s.useMemo)(()=>{let e=[...p].reverse();for(;e.length<5;)e.push({name:"empty-".concat(e.length),label:"-",shortLabel:"-",average:null});return e}
1,[p]),[k,f]=(0,s.useState)("국어"),[N,w]=(0,s.useState)(!1),D=(0,s.useMemo)(()=>{let e=[...t].sort((e,a)=>e.year!==a.year?a.year-e.year:a.month-e.month),a=e.find(e=>"사회"===e.subject||"탐구1"===e.subject),r=e.find(e=>"과학"===e.subject||"탐구2"===e.subject),s=(null==a?void 0:a.subject)==="사회"?"사회":(null==a?void 0:a.subjectDetail)||"탐구1",l=(null==r?void 0:r.subject)==="과학"?"과학":(null==r?void 0:r.subjectDetail)||"탐구2",c=t.reduce((e,a)=>{let t=1===a.grade||2===a.grade,r="사회"===a.subject||"과학"===a.subject||"탐구1"===a.subject||"탐구2"===a.subject,s=a.subject;return r&&(s=t?"사회"===a.subject||"탐구1"===a.subject?"사회":"과학":a.subjectDetail||a.subject),e[s]||(e[s]={total:0,count:0}),a.gradeLevel&&a.gradeLevel>=1&&a.gradeLevel<=9&&(e[s].total+=a.gradeLevel,e[s].count+=1),e},{}),i=t[0],n=(null==i?void 0:i.grade)===1||(null==i?void 0:i.grade)===2;return[{key:"국어",displayName:"국어"},{key:"수학",displayName:"수학"},{key:"영어",displayName:"영어"},{key:n?"사회":s,displayName:n?"사회":s},{key:n?"과학":l,displayName:n?"과학":l}].map(e=>
1({key:e.key,name:e.displayName,average:c[e.key]&&c[e.key].count>0?(c[e.key].total/c[e.key].count).toFixed(1):null}))},[t]),S=(0,s.useMemo)(()=>p.map(e=>{let a=t.filter(a=>{var t;let r=1===a.grade||2===a.grade,s="탐구1"===a.subject||"탐구2"===a.subject||"사회"===a.subject||"과학"===a.subject,l=a.subject;return s&&(l=r?"사회"===a.subject||"탐구1"===a.subject?"사회":"과학":a.subjectDetail||a.subject),(null!==(t=a.examKey)&&void 0!==t?t:"".concat(a.year,"-").concat(a.month))===e.name&&l===k});if(a.length>0){let t=(a.reduce((e,a)=>e+(a.gradeLevel||0),0)/a.length).toFixed(1),r=a.map(e=>e.subjectDetail||e.subject).join(", ");return{...e,average:t,subjects:r}}return{...e,average:null,subjects:k}}),[t,k,p]),z=(0,s.useMemo)(()=>{let e=["국어","수학","영어","한국사","사회","과학","탐구1","탐구2"];return Object.entries(t.reduce((e,a)=>{var t;let r=null!==(t=a.examKey)&&void 0!==t?t:"".concat(a.year,"-").concat(a.month);return e[r]||(e[r]=[]),e[r].push(a),e},{})).sort((e,a)=>{let[,t]=e,[,r]=a;return r[0].year-t[0].year||r[0].month-t[0].month}).map(a=>{let[t,r]=a;return[t,[...r].sort((a,t)=>{let r=e.indexOf(a.subject),s=e.indexOf(t.subject);return -1!==r&&-1!==s?r-s:-1!==r?-1:-1!==s?1:0})]})},[t]),W=null===(a=p.at(-1))||void 0===a?void 0:a.name,_=(0,s.useMemo)(()=>{if(!j)return y;let e=[...p];for(;e.length<5;)e.push({name:"empty-".concat(e.length),label:"-",shortLabel:"\xa0",average:null});return e},[j,p,y]),M=j?{top:10,right:8,left:0,bottom:5}:{top:10,right:30,left:20,bottom:5};return(0,r.jsxs)("div",{className:(0,v.cn)(b().surface,g().desktop),"data-flat":j||void 0,children:[(0,r.jsx)(L,{mockExams:t,subjects:D,flat:j}),(0,r.jsxs)("div",{className:b().section,children:[(0,r.jsxs)("div",{className:b().sectionHeader,children:[(0,r.jsx)("h3",{className:b().heading,children:"월별 모의고사 성적 추이"}),(0,r.jsxs)("div",{className:"relative group",children:[(0,r.jsx)("button",{type:"button","aria-label":"평균 등급 계산 방법 안내",onClick:()=>w(e=>!e),className:(0,v.cn)("text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 transition-colors",j?"-m-2 p-2":"p-0.5"),children:(0,r.jsx)(h.Z,{size:j?15:14})}),N&&(0,r.jsx)("div",{className:"fixed inset-0 z-10",onClick:()=>w(!1)}),(0,r.jsx)("div",{role:"tooltip",className:(0,v.cn)("absolute top-full right-0 mt-2 w-56 z-20 rounded-lg px-3 py-2.5 text-[11px] leading-relaxed shadow-lg transition-opacity duration-150 pointer-events-none bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-zinc-700 dark:text-zinc-200",N?"opacity-100 visible":"opacity-0 invisible group-hover:opacity-100 group-hover:visible group-focus-within:opacity-100 group-focus-within:visible"),children:"국어\xb7수학\xb7영어\xb7탐구(2과목 평균) 등급의 평균이에요."})]})]}),(0,r.jsx)("div",{className:b().chartBody,children:(0,r.jsxs)("div",{className:b().chartLayout,children:[(0,r.jsx)("div",{className:b().metricList,children:_.map(e=>(0,r.jsxs)("div",{"data-empty":!e.average,"data-latest":e.name===W,className:b().metric,children:[(0,r.jsxs)("div",{className:(0,v.cn)("flex flex-col min-w-0",j&&"max-w-full items-center"),children:[(0,r.jsxs)("span",{className:b().desktopLabel,children:[e.label,e.name===W&&(0,r.jsx)("span",{className:b().latestTag,children:"최근"})]}),(0,r.jsx)("span",{className:b().mobileLabel,children:e.shortLabel})]}),(0,r.jsx)("span",{className:b().metricValue,children:e.average||"-"})]},e.name))}),(0,r.jsx)("div",{className:b().chart,children:(0,r.jsx)(l.h,{width:"100%",height:"100%",children:(0,r.jsxs)(c.w,{data:p,margin:M,children:[(0,r.jsx)(i.q,{strokeDasharray:j?"3 3":void 0,stroke:j?"var(--chart-grid)":"var(--grade-soft-rule)",vertical:!1}),(0,r.jsx)(n.K,{dataKey:"label",stroke:j?"#52525b":"var(--grade-muted)",tickFormatter:e=>{if(window.innerWidth<768){let a=e.match(/(\d{1,2})월/);if(a)return"".concat(a[1],"월")}return e}
1,tick:{fill:j?"#71717a":"var(--grade-muted)",fontSize:12},tickLine:!1,axisLine:{stroke:j?"#52525b":"var(--grade-soft-rule)",strokeWidth:1},dy:6,padding:{left:30,right:30}}),(0,r.jsx)(d.B,{domain:[1,9],reversed:!0,ticks:[1,2,3,4,5,6,7,8,9],stroke:j?"#52525b":"var(--grade-muted)",tick:{fill:j?"#71717a":"var(--grade-muted)",fontSize:12},tickLine:!1,axisLine:{stroke:j?"#52525b":"var(--grade-soft-rule)",strokeWidth:1},width:30}),j&&(0,r.jsx)(o.db,{y:2,stroke:"var(--chart-grid)",strokeDasharray:"3 3",strokeWidth:1}),j&&(0,r.jsx)(o.db,{y:4,stroke:"var(--chart-grid)",strokeDasharray:"3 3",strokeWidth:1}),(0,r.jsx)(u.u,{contentStyle:{backgroundColor:j?"var(--chart-tooltip-bg)":"var(--grade-paper)",border:j?"1px solid var(--chart-tooltip-border)":"1px solid var(--grade-rule)",borderRadius:"8px",fontSize:"12px"},labelStyle:{color:j?"var(--chart-tooltip-text)":"var(--grade-ink)"},itemStyle:{color:j?"var(--semester-card-rank)":"var(--grade-accent)"},formatter:e=>[e,"평균 등급"]}),(0,r.jsx)(m.x1,{type:"monotone",dataKey:"average",stroke:j?"#3b82f6":"var(--grade-accent)",strokeWidth:j?3:2,connectNulls:!0,animationDuration:500,dot:{fill:j?"var(--chart-dot-fill)":"var(--grade-paper)",stroke:j?"#3b82f6":"var(--grade-accent)",strokeWidth:2,r:4},activeDot:{r:j?6:5,fill:j?"#3b82f6":"var(--grade-accent)"}})]})})})]})})]}),(0,r.jsxs)("div",{className:b().section,children:[(0,r.jsx)("div",{className:b().sectionHeader,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:b().heading,children:"과목별 모의고사 성적 분석"}),(0,r.jsx)("p",{className:b().selectionHint,children:"과목을 선택하면 성적 추이가 바뀝니다."})]})}),(0,r.jsx)("div",{className:b().chartBody,children:(0,r.jsxs)("div",{className:b().chartLayout,children:[(0,r.jsx)("div",{className:b().metricList,role:"group","aria-label":"추이를 볼 과목 선택",children:D.map(e=>(0,r.jsxs)("button",{type:"button","aria-pressed":k===e.key,"data-empty":!e.average,onClick:()=>f(e.key),className:b().subjectChoice,children:[(0,r.jsx)("div",{className:(0,v.cn)("flex flex-col min-w-0",j&&"max-w-full items-center"),children:(0,r.jsx)("span",{className:b().subjectLabel,children:e.name})}),(0,r.jsx)("span",{className:b().metricValue,children:e.average||"-"})]},e.key))}),(0,r.jsx)("div",{className:b().chart,children:(0,r.jsx)(l.h,{width:"100%",height:"100%",children:(0,r.jsxs)(c.w,{data:S,margin:M,children:[(0,r.jsx)(i.q,{strokeDasharray:j?"3 3":void 0,stroke:j?"var(--chart-grid)":"var(--grade-soft-rule)",vertical:!1}),(0,r.jsx)(n.K,{dataKey:"label",stroke:j?"#52525b":"var(--grade-muted)",tickFormatter:e=>{if(window.innerWidth<768){let a=e.match(/(\d{1,2})월/);if(a)return"".concat(a[1],"월")}return e}
1,tick:{fill:j?"#71717a":"var(--grade-muted)",fontSize:12},tickLine:!1,axisLine:{stroke:j?"#52525b":"var(--grade-soft-rule)",strokeWidth:1},dy:6,padding:{left:30,right:30}}),(0,r.jsx)(d.B,{domain:[1,9],reversed:!0,ticks:[1,2,3,4,5,6,7,8,9],stroke:j?"#52525b":"var(--grade-muted)",tick:{fill:j?"#71717a":"var(--grade-muted)",fontSize:12},tickLine:!1,axisLine:{stroke:j?"#52525b":"var(--grade-soft-rule)",strokeWidth:1},width:30}),j&&(0,r.jsx)(o.db,{y:2,stroke:"var(--chart-grid)",strokeDasharray:"3 3",strokeWidth:1}),j&&(0,r.jsx)(o.db,{y:4,stroke:"var(--chart-grid)",strokeDasharray:"3 3",strokeWidth:1}),(0,r.jsx)(u.u,{contentStyle:{backgroundColor:j?"var(--chart-tooltip-bg)":"var(--grade-paper)",border:j?"1px solid var(--chart-tooltip-border)":"1px solid var(--grade-rule)",borderRadius:"8px",fontSize:"12px"},labelStyle:{color:j?"var(--chart-tooltip-text)":"var(--grade-ink)"},itemStyle:{color:j?"var(--semester-card-rank)":"var(--grade-accent)"},formatter:(e,a,t)=>["".concat(e,"등급"),"".concat(t.payload.subjects||k," 등급")]}),(0,r.jsx)(m.x1,{type:"monotone",dataKey:"average",stroke:j?"#3b82f6":"var(--grade-accent)",strokeWidth:j?3:2,connectNulls:!0,animationDuration:500,dot:{fill:j?"var(--chart-dot-fill)":"var(--grade-paper)",stroke:j?"#3b82f6":"var(--grade-accent)",strokeWidth:2,r:4},activeDot:{r:j?6:5,fill:j?"#3b82f6":"var(--grade-accent)"}})]},k)})})]})})]}),(0,r.jsxs)("div",{className:b().section,children:[(0,r.jsx)("div",{className:b().sectionHeader,children:(0,r.jsx)("h3",{className:b().heading,children:"시험별 상세 성적"})}),(0,r.jsx)("table",{className:(0,v.cn)(b().table,g().table),"data-grade-col":"2",children:z.map((e,a)=>{let[t,s]=e,{year:l,month:c,examLabel:i}=s[0];return(0,r.jsxs)("tbody",{children:[(0,r.jsx)("tr",{className:b().semesterHeading,children:(0,r.jsx)("td",{colSpan:5,className:"py-2.5 md:py-3 px-3 md:px-5",children:(0,r.jsxs)("span",{children:[l,"년 ",c,"월 모의고사",i?" \xb7 ".concat(i):""]})})}),(0,r.jsxs)("tr",{className:b().columnHeadings,children:[(0,r.jsx)("th",{scope:"col",className:"py-2 px-1.5 md:py-2.5 md:px-4 font-medium text-center",children:"과목"}),(0,r.jsx)("th",{scope:"col",className:"py-2 px-1.5 md:py-2.5 md:px-4 font-medium text-center",children:"등급"}),(0,r.jsx)("th",{scope:"col",className:"py-2 px-1.5 md:py-2.5 md:px-4 font-medium text-center",children:"표준점수"}),(0,r.jsx)("th",{scope:"col",className:"py-2 px-1.5 md:py-2.5 md:px-4 font-medium text-center",children:"백분위(%)"}),(0,r.jsx)("th",{scope:"col",className:"py-2 px-1.5 md:py-2.5 md:px-4 font-medium text-center",children:"전교 석차"})]}),s.map(e=>(0,r.jsxs)("tr",{className:b().gradeRow,children:[(0,r.jsxs)("td",{className:b().subjectCell,children:[1===e.grade||2===e.grade?"탐구1"===e.subject?"사회":"탐구2"===e.subject?"과학":e.subject:e.subject,e.
1subjectDetail&&!(1===e.grade||2===e.grade)&&(0,r.jsxs)("span",{className:g().subjectDetail,children:["(",e.subjectDetail,")"]})]}),(0,r.jsx)("td",{children:e.gradeLevel||"-"}),(0,r.jsx)("td",{children:e.standardScore||"-"}),(0,r.jsx)("td",{children:e.percentile?Number.isInteger(Number(e.percentile))?Number(e.percentile).toFixed(0):Number(e.percentile).toFixed(1):"-"}),(0,r.jsx)("td",{children:e.schoolRank||"-"})]},e.id)),a<z.length-1&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:5,className:"h-3 md:h-4"})})]},t)})})]})]})};var D=w},85625:function(e){e.exports={desktop:"student-mock-exam-tab_desktop__5tibO",table:"student-mock-exam-tab_table__UGLKN",subjectDetail:"student-mock-exam-tab_subjectDetail__6y5Lv"}}}]);

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.