PageSourceSearch

https://naemo.ai/_next/static/chunks/479.64f72e48a86e7885.js

js naemo.ai collected 2026-10-02 01:13:38 UTC 40,823 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[479],{24336:function(e,s,l){"use strict";l.d(s,{Z:function(){return n}});let n=(0,l(79205).Z)("ArrowDownUp",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"m21 8-4-4-4 4",key:"1c9v7m"}],["path",{d:"M17 4v16",key:"7dpous"}]])},82431:function(e,s,l){"use strict";l.d(s,{Z:function(){return n}});let n=(0,l(79205).Z)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},80479:function(e,s,l){"use strict";l.r(s),l.d(s,{default:function(){return Y},filterRoster:function(){return D}});var n=l(57437),t=l(30166),a=l(2265),i=l(82431),c=l(32660),d=l(24336);l(83079);var r=(0,l(12119).$)("008502a40d32e07128ce9b2d239e3dc07389e12e"),o=l(90982),h=l(55369),u=l(61858);let x=e=>{let s=e.filter(e=>"number"==typeof e&&Number.isFinite(e));return s.length?s.reduce((e,s)=>e+s,0)/s.length:null};function m(e){return e?"mock"===e.domain?"".concat(e.period,"월 모의고사"):"".concat(e.period,"학기 ").concat("midterm"===e.kind?"중간고사":"학기말"):"자료 없음"}function j(e,s,l){let n=e=>{var s,n;return l?null!==(n=null===(s=e.subjects.find(e=>e.subject===l))||void 0===s?void 0:s.grade)&&void 0!==n?n:null:e.average},t=new Map(e.map(e=>[e.studentId,n(e)])),a=s.flatMap(e=>{let s=t.get(e.studentId),l=n(e);return null!=s&&null!=l?[{before:s,after:l}]:[]});return{count:a.length,difference:x(a.map(e=>e.after-e.before)),beforeAverage:x(a.map(e=>e.before)),afterAverage:x(a.map(e=>e.after))}}function v(e,s,l){let{count:n,difference:t}=j(e,s,l);return{count:n,difference:t}}function g(e){let s=e.filter(e=>null!==e.average).sort((e,s)=>e.average-s.average),l=new Map,n=1;return s.forEach((e,t)=>{t&&e.average>s[t-1].average+1e-9&&(n=t+1),l.set(e.studentId,n/s.length*100)}),l}function p(e){return"mock"===e.domain&&e.period<3?e.period+12:e.period}var b=l(5519),f=l.n(b);let _=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return null==e?"—":e.toFixed(s)};function N(e){let{value:s,count:l}=e;return(0,n.jsxs)("span",{className:f().change,"data-direction":null!=s&&s<-.005?"up":"flat",children:[null==s?"—":.005>Math.abs(s)?"변화 없음":"".concat(s<0?"향상":"하락"," ").concat(Math.abs(s).toFixed(2)),void 0!==l&&(0,n.jsxs)("small",{children:[" \xb7 ",l,"명"]})]})}function k(e){let{label:s,children:l}=e;return(0,n.jsx)("div",{className:f().tableScroll,role:"region","aria-label":s,tabIndex:0,children:l})}let I=e=>{var s;return Array.from(new Set(null!==(s=null==e?void 0:e.records.flatMap(e=>e.subjects.map(e=>e.subject)))&&void 0!==s?s:[])).sort((e,s)=>(0,u.hC)(e)-(0,u.hC)(s)||e.localeCompare(s,"ko"))},y=(e,s)=>{var l;return null!==(l=null==e?void 0:e.records.flatMap(e=>e.subjects.filter(e=>e.subject===s)))&&void 0!==l?l:[]},w=e=>e.filter(e=>null!==e.average);function C(e){let{text:s="등록된 성적이 없습니다."}=e;return(0,n.jsx)("p",{className:f().noScores,children:s})}function E(e){var s,l;let{title:t,exam:a,onDrill:i}=e,c=w(null!==(s=null==a?void 0:a.records)&&void 0!==s?s:[]);return(0,n.jsxs)("section",{className:f().panel,children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:t}),(0,n.jsxs)("span",{children:[c.length,"명"]})]}),(0,n.jsxs)("p",{className:f().caption,children:[m(a)," \xb7 1등급대는 1.00 이상 2.00 미만"]}),c.length?(0,n.jsx)("div",{className:f().bands,children:Array.from({length:null!==(l=null==a?void 0:a.maxGrade)&&void 0!==l?l:9},(e,s)=>{let l=c.filter(e=>e.average>=s+1&&e.average<s+2).length;return(0,n.jsxs)("button",{disabled:!l,"aria-label":"".concat(t," ").concat(s+1,"등급대 ").concat(l,"명"),onClick:()=>i("".concat(t," \xb7 ").concat(s+1,"등급대"),{kind:"average",examId:a.id,min:s+1,max:s+2}),children:[(0,n.jsxs)("span",{children:[s+1,"등급대"]}),(0,n.jsx)("span",{className:f().bandTrack,children:(0,n.jsx)("span",{style:{width:"".concat(l/c.length*100,"%")}})}),(0,n.jsxs)("strong",{children:[l,(0,n.jsx)("small",{children:"명"})]}),(0,n.jsxs)("span",{className:f().percentage,children:[(l/c.length*100).toFixed(1),"%"]})]},s)})}):(0,n.jsx)(C,{text:"종합 평균을 산출할 자료가 없습니다."})]})}function S(e){var s,l;let{exam:t,onDrill:a}=e,i=w(null!==(s=null==t?void 0:t.records)&&void 0!==s?s:[]),c=Array.from({length:((null!==(l=null==t?void 0:t.maxGrade)&&void 0!==l?l:5)-1)*4+1},(e,s)=>({min:1+s/4,count:i.filter(e=>e.average>=1+s/4&&e.average<1+(s+1)/4).length}));return(0,n.jsxs)("section",{className:f().panel,children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"평균내신 분포"}),(0,n.jsx)("span",{children:"0.25등급 간격"})]}),(0,n.jsx)("p",{className:f().caption,children:"막대를 누르면 해당 구간의 학생을 확인합니다."}),i.length?(0,n.jsx)("div",{className:f().histogram,children:c.map(e=>(0,n.jsxs)("button",{disabled:!e.count,"aria-label":"평균내신 ".concat(e.min.toFixed(2),"–").concat((e.min+.25).toFixed(2),"등급 ").concat(e.count,"명"),title:"".concat(e.min.toFixed(2),"–").concat((e.min+.25).toFixed(2),"등급 \xb7 ").concat(e.count,"명"),onClick:()=>a("평균내신 ".concat(e.min.toFixed(2),"–").concat((e.min+.25).toFixed(2),"등급"),{kind:"average",examId:t.id,min:e.min,max:e.min+.25}),children:[(0,n.jsx)("span",{children:e.count||""}),(0,n.jsx)("i",{style:{height:"".concat(e.count/Math.max(...c.map(e=>e.count),1)*130,"px")}}),(0,n.jsx)("small",{children:Number.isInteger(e.min)?e.min:""})]},e.min))}):(0,n.jsx)(C,{})]})}function M(e){let{students:s,gradeRanks:l,mockRanks:t,onSelect:a}=e,i=s.filter(e=>l.has(e.studentId)&&t.has(e.studentId));return(0,n.jsxs)("section",{className:f().panel,children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"내신과 모의고사"}),(0,n.jsxs)("span",{children:["두 성적 보유 ",i.length,"명"]})]}),(0,n.jsx)("p",{className:f().caption,children:"각 성적의 학년 내 상위 비율 비교 \xb7 왼쪽 아래일수록 우수"}),i.length?(0,n.jsxs)("svg",{viewBox:"0 0 460 235",className:f().scatter,role:"group","aria-label":"내신과 모의고사 학년 내 상위 비율 산점도",children:[[0,25,50,75,100].map(e=>(0,n.jsxs)("g",{children:[(0,n.jsx)("line",{x1:48+3.8*e,x2:48+3.8*e,y1:"15",y2:"185",className:f().gridLine}),(0,n.jsx)("line",{x1:"48",x2:"428",y1:185-1.7*e,y2:185-1.7*e,className:f().gridLine}),(0,n.jsx)("text",{x:48+3.8*e,y:"204",textAnchor:"middle",children:e}),(0,n.jsx)("text",{x:"38",y:189-1.7*e,textAnchor:"end",children:e})]},e)),(0,n.jsx)("line",{x1:"48",y1:"185",x2:"428",y2:"15",className:f().diagonal}),(0,n.jsx)("text",{x:"238",y:"229",textAnchor:"middle",children:"내신 상위 % â
1†’"}),(0,n.jsx)("text",{x:"10",y:"104",transform:"rotate(-90 10 104)",textAnchor:"middle",children:"모의 상위 % →"}),i.map(e=>(0,n.jsxs)("g",{role:"button",tabIndex:0,"aria-label":"".concat(e.classNum,"반 ").concat(e.number,"번 ").concat(e.name,", 내신 상위 ").concat(l.get(e.studentId).toFixed(1),"%, 모의 상위 ").concat(t.get(e.studentId).toFixed(1),"%"),onClick:()=>a(e.studentId),onKeyDown:s=>{("Enter"===s.key||" "===s.key)&&(s.preventDefault(),a(e.studentId))},className:f().scatterPoint,children:[(0,n.jsxs)("title",{children:[e.classNum,"-",e.number," ",e.name," \xb7 내신 ",l.get(e.studentId).toFixed(1),"% / 모의 ",t.get(e.studentId).toFixed(1),"%"]}),(0,n.jsx)("circle",{cx:48+3.8*l.get(e.studentId),cy:185-1.7*t.get(e.studentId),r:"7"})]},e.studentId))]}):(0,n.jsx)(C,{text:"두 종합 성적이 모두 있어야 비교할 수 있습니다."}),(0,n.jsx)("p",{className:f().caption,children:"동점은 같은 석차 \xb7 각 시험 산출 인원 기준 \xb7 점을 누르면 학생 상세"})]})}function F(e){let{data:s,gradeExam:l,mockExam:t,beforeExam:a,onDrill:i,compact:c=!1,sort:d="class",onSort:r}=e,o=s.classes.map(e=>{var n,i,c;let d=s.students.filter(s=>s.classId===e.id),r=new Set(d.map(e=>e.studentId)),o=w(null!==(n=null==l?void 0:l.records.filter(e=>r.has(e.studentId)))&&void 0!==n?n:[]),h=w(null!==(i=null==t?void 0:t.records.filter(e=>r.has(e.studentId)))&&void 0!==i?i:[]),u=null!==(c=null==a?void 0:a.records.filter(e=>r.has(e.studentId)))&&void 0!==c?c:[];return{...e,students:d,grades:o,mocks:h,grade:x(o.map(e=>e.average)),mock:x(h.map(e=>e.average)),change:v(u,h)}}).sort((e,s)=>{var l,n;return"class"===d?e.classNum-s.classNum:(null!==(l=e[d])&&void 0!==l?l:1/0)-(null!==(n=s[d])&&void 0!==n?n:1/0)||e.classNum-s.classNum}),h=I(l);return(0,n.jsxs)("section",{className:f().section,children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"학급별 성적 비교"}),(0,n.jsxs)("label",{children:[(0,n.jsx)("span",{className:"sr-only",children:"학급 정렬"}),(0,n.jsxs)("select",{"aria-label":"학급 정렬",value:d,onChange:e=>null==r?void 0:r(e.target.value),children:[(0,n.jsx)("option",{value:"class",children:"반 순서"}),(0,n.jsx)("option",{value:"grade",children:"평균내신 우수순"}),(0,n.jsx)("option",{value:"mock",children:"모의고사 우수순"})]})]})]}),(0,n.jsx)(k,{label:"학급별 성적 비교",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"학급"}),(0,n.jsx)("th",{children:"인원"}),(0,n.jsx)("th",{children:"내신 산출"}),(0,n.jsx)("th",{children:"평균내신"}),(0,n.jsx)("th",{children:"1등급대"}),(0,n.jsx)("th",{children:"4등급 이상"}),(0,n.jsx)("th",{children:"모의 산출"}),(0,n.jsx)("th",{children:"모의 평균"}),(0,n.jsx)("th",{children:"모의 변화"})]})}),(0,n.jsx)("tbody",{children:o.map(e=>(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{scope:"row",children:(0,n.jsxs)("button",{className:f().studentName,onClick:()=>i("".concat(e.classNum,"반 학생"),{kind:"class",classId:e.id}),children:[e.classNum,"반"]})}),(0,n.jsx)("td",{children:e.students.length}),(0,n.jsxs)("td",{children:[e.grades.length,"명"]}),(0,n.jsx)("td",{className:f().emphasis,children:_(e.grade)}),(0,n.jsx)("td",{children:e.grades.length?"".concat((e.grades.filter(e=>e.average<2).length/e.grades.length*100).toFixed(1),"%"):"—"}),(0,n.jsx)("td",{children:e.grades.length?"".concat((e.grades.filter(e=>e.average>=4).length/e.grades.length*100).toFixed(1),"%"):"—"}),(0,n.jsxs)("td",{children:[e.mocks.length,"명"]}),(0,n.jsx)("td",{children:_(e.mock)}),(0,n.jsx)("td",{children:(0,n.jsx)(N,{value:e.change.difference,count:e.change.count})})]},e.id))})]})}),(0,n.jsx)("p",{className:f().caption,children:"1등급대는 평균내신 1.00–1.99 \xb7 4등급 이상은 4.00 이상 \xb7 변화는 두 회차 모두 산출된 학생 기준"}),!c&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"학급 \xd7 교과 평균등급"}),(0,n.jsx)("span",{children:"학년 평균과의 차이"})]}),h.length?(0,n.jsx)(k,{label:"학급 교과 평균등급",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"학급"}),h.map(e=>(0,n.jsx)("th",{children:e},e))]})}),(0,n.jsx)("tbody",{children:o.map(e=>(0,n.jsxs)("tr",{children:[(0,n.jsxs)("th",{scope:"row",children:[e.classNum,"반"]}),h.map(s=>{var t;let a=new Set(e.students.map(e=>e.studentId)),c=x(y(l,s).map(e=>e.grade)),d=x(null!==(t=null==l?void 0:l.records.filter(e=>a.has(e.studentId)).map(e=>{var l;return null===(l=e.subjects.find(e=>e.subject===s))||void 0===l?void 0:l.grade}))&&void 0!==t?t:[]),r=null!=d&&null!=c?d-c:null;return(0,n.jsx)("td",{className:f().heatCell,"data-tone":null!=r&&r<-.08?"better":"neutral",children:null==d?"—":(0,n.jsxs)("button",{"aria-label":"".concat(e.classNum,"반 ").concat(s," 평균 ").concat(d.toFixed(2),"등급 학생 조회"),onClick:()=>i("".concat(e.classNum,"반 \xb7 ").concat(s),{kind:"subject",examId:l.id,subject:s,metric:"grade",classId:e.id}),children:[d.toFixed(2),(0,n.jsx)("small",{children:null!=r?"".concat(r>0?"+":"").concat(r.toFixed(2)):""})]})},s)})]},e.id))})]})}):(0,n.jsx)(C,{}),(0,n.jsx)("p",{className:f().caption,children:"음수는 학년 평균보다 낮은 등급 \xb7 각 칸을 누르면 해당 반\xb7과목의 학생 조회"})]})]})}function A(e){let{exam:s,total:l,onDrill:t}=e,a=I(s);return(0,n.jsxs)("section",{className:f().section,children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"교과별 성적 현황"}),(0,n.jsx)("span",{children:m(s)})]}),a.length?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k,{label:"교과별 내신 성적",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"교과"}),(0,n.jsx)("th",{children:"원점수 평균"}),(0,n.jsx)("th",{children:"평균 석차등급"}),(0,n.jsx)("th",{children:"등급 산출"}),Array.from({length:s.maxGrade},(e,s)=>(0,n.jsxs)("th",{children:[s+1,"등급"]},s))]})}),(0,n.jsx)("tbody",{children:a.map(e=>{let a=y(s,e);return(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{scope:"row",children:e}),(0,n.jsx)("td",{children:_(x(a.map(e=>e.raw)),1)}),(0,n.jsx)("td",{className:f().emphasis,children:_(x(a.map(e=>e.grade)))}),(0,n.jsxs)("td",{children:[a.filter(e=>null!=e.grade).length," / ",l,"명"]}),Array.from({length:s.maxGrade},(l,i)=>{let c=a.filter(e=>e.grade===i+1).length;return(0,n.jsx)("td",{children:(0,n.jsx)("button",{className:f().count,disabled:!c,"aria-label":"".concat(e," ").concat(i+1,"등급 ").concat(c,"명"),onClick:()=>t("".concat(e," \xb7 ").concat(i+1,"등급"),{kind:"subject",examId:s.id,subject:e,metric:"grade",min:i+1,max:i+2}),children:c})},i)})]},e)})})]})}),(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"과목별 원점수 분포"}),(0,n.jsx)("span",{children:"등록된 원점수 기준 \xb7 10점 간격"})]}),(0,n.jsx)("div",{className:f().subjectGrid,children:a.map(e=>{let l=y(s,e),a=Array.from({length:10},(e,s)=>l.filter(e=>null!=e.raw&&e.raw>=10*s&&e.raw<(9===s?101:(s+1)*10)).length);return(0,n.jsxs)("section",{className:f().subjectPanel,children:[(0,n.jsxs)("h4",{children:[e,(0,n.jsxs)("span",{children:["평균 ",_(x(l.map(e=>e.raw)),1),"점"]})]}),(0,n.jsx)("div",{className:f().miniHistogram,children:a.map((l,i)=>(0,n.jsxs)("button",{disabled:!l,title:"".concat(10*i,"–").concat(9===i?100:(i+1)*10-1,"점 \xb7 ").concat(l,"명"),"aria-label":"".concat(e," ").concat(10*i,"점대 ").concat(l,"명"),onClick:()=>t("".concat(e," \xb7 ").concat(10*i,"점대"),{kind:"subject",examId:s.id,subject:e,metric:"raw",min:10*i,max:9===i?101:(i+1)*10}),children:[(0,n.jsx)("span",{children:l||""}),(0,n.jsx)("i",{style:{height:"".concat(l/Math.max(...a,1)*75,"px")}}),(0,n.jsx)("small",{children:i%2==0?10*i:""})]},i))})]},e)})}),(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"성취도 분포"}),(0,n.jsx)("span",{children:"현재 명단의 실제 성적 \xb7 NEIS 공시 비율과 다를 수 있음"})]}),(0,n.jsx)(k,{label:"교과별 성취도 분포",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"교과"}),["A","B","C","D","E"].map(e=>(0,n.jsx)("th",{children:e},e)),(0,n.jsx)("th",{children:"성취도 없음"})]})}),(0,n.jsx)("tbody",{children:a.map(e=>{let a=y(s,e);return(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{scope:"row",children:e}),["A","B","C","D","E"].map(l=>{let i=a.filter(e=>e.achievement===l).length;return(0,n.jsx)("td",{children:(0,n.jsxs)("button",{className:f().count,disabled:!i,onClick:()=>t("".concat(e," \xb7 성취도 ").concat(l),{kind:"subject",examId:s.id,subject:e,metric:"achievement",value:l}),children:[i,"명"]})},l)}),(0,n.jsxs)("td",{children:[l-a.filter(e=>e.achievement).length,"명"]})]},e)})})]})})]}):(0,n.jsx)(C,{})]})}function H(e){let{exams:s,exam:l,beforeExam:t,data:a,onDrill:i,onChoose:c}=e,d=I(l);return(0,n.jsxs)("section",{className:f().section,children:[(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"회차별 흐름"}),(0,n.jsx)("span",{children:"국어 \xb7 수학 \xb7 영어 \xb7 탐구 평균"})]}),s.length?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k,{label:"모의고사 회차별 요약",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"회차"}),(0,n.jsx)("th",{children:"자료 등록"}),(0,n.jsx)("th",{children:"종합 산출"}),(0,n.jsx)("th",{children:"평균등급"}),(0,n.jsx)("th",{children:"1–2등급대"}),(0,n.jsx)("th",{children:"3.00등급 이내"}),(0,n.jsx)("th",{children:"4.00등급 이상"})]})}),(0,n.jsx)("tbody",{children:s.map(e=>{let s=w(e.records);return(0,n.jsxs)("tr",{"data-selected":e.id===(null==l?void 0:l.id),children:[(0,n.jsx)("th",{scope:"row",children:(0,n.jsx)("button",{className:f().studentName,onClick:()=>c(e.id),children:m(e)})}),(0,n.jsxs)("td",{children:[e.records.filter(e=>e.subjects.some(e=>null!=e.grade)).length,"명"]}),(0,n.jsxs)("td",{children:[s.length,"명"]}),(0,n.jsx)("td",{className:f().emphasis,children:_(x(s.map(e=>e.average)))}),[{min:1,max:3},{min:1,max:3.000000001},{min:4,max:10}].map((l,t)=>{let a=s.filter(e=>e.average>=l.min&&e.average<l.max).length;return(0,n.jsx)("td",{children:(0,n.jsxs)("button",{className:f().count,disabled:!a,onClick:()=>i("".concat(m(e)," \xb7 ").concat(0===t?"1–2등급대":1===t?"3.00등급 이내":"4.00등급 이상"),{kind:"average",examId:e.id,...l}),children:[a,"명"]})},t)})]},e.id)})})]})}),(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"영역별 변화"}),(0,n.jsx)("span",{children:t?"".concat(t.period,"월 → ").concat(null==l?void 0:l.period,"월 \xb7 동일 학생 비교"):"비교할 이전 회차가 없습니다"})]}),(0,n.jsx)(k,{label:"모의고사 영역별 변화",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"영역"}),(0,n.jsx)("th",{children:"이전 평균"}),(0,n.jsx)("th",{children:"현재 평균"}),(0,n.jsx)("th",{children:"동일 학생 변화"}),(0,n.jsx)("th",{children:"백분위 평균"}),(0,n.jsx)("th",{children:"표준점수 평균"})]})}),(0,n.jsx)("tbody",{children:d.map(e=>{var s,a;let i=y(l,e),c=j(null!==(s=null==t?void 0:t.records)&&void 0!==s?s:[],null!==(a=null==l?void 0:l.records)&&void 0!==a?a:[],e);return(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{scope:"row",children:e}),(0,n.jsx)("td",{children:_(c.beforeAverage)}),(0,n.jsx)("td",{className:f().emphasis,children:_(t?c.afterAverage:x(i.map(e=>e.grade)))}),(0,n.jsx)("td",{children:(0,n.jsx)(N,{value:c.difference,count:c.count})}),(0,n.jsx)("td",{children:_(x(i.map(e=>e.percentile)),1)}),(0,n.jsx)("td",{children:_(x(i.map(e=>e.standard)),1)})]},e)})})]})}),(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"영역별 등급 분포"}),(0,n.jsx)("span",{children:t?"회색 ".concat(t.period,"월 \xb7 파랑 ").
1concat(null==l?void 0:l.period,"월"):m(l)})]}),(0,n.jsx)("div",{className:f().subjectGrid,children:d.map(e=>{let s=[t,l].filter(e=>!!e),a=s.map(s=>Array.from({length:9},(l,n)=>y(s,e).filter(e=>e.grade===n+1).length)),c=Math.max(...a.flat(),1);return(0,n.jsxs)("section",{className:f().subjectPanel,children:[(0,n.jsx)("h4",{children:e}),(0,n.jsx)("div",{className:f().groupedHistogram,children:Array.from({length:9},(t,d)=>(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{children:s.map((s,t)=>(0,n.jsx)("button",{"data-current":s.id===(null==l?void 0:l.id),style:{height:"".concat(Math.max(a[t][d]?4:0,a[t][d]/c*100),"px")},disabled:!a[t][d],title:"".concat(s.period,"월 ").concat(e," ").concat(d+1,"등급 \xb7 ").concat(a[t][d],"명"),"aria-label":"".concat(s.period,"월 ").concat(e," ").concat(d+1,"등급 ").concat(a[t][d],"명"),onClick:()=>i("".concat(m(s)," \xb7 ").concat(e," ").concat(d+1,"등급"),{kind:"subject",examId:s.id,subject:e,metric:"grade",min:d+1,max:d+2})},s.id))}),(0,n.jsx)("small",{children:d+1})]},d))})]},e)})}),(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:"학급별 모의고사 추이"}),(0,n.jsx)("span",{children:"학생별 종합 평균 기준"})]}),(0,n.jsx)(k,{label:"학급별 모의고사 추이",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"학급"}),s.map(e=>(0,n.jsxs)("th",{children:[e.period,"월 평균 \xb7 산출"]},e.id)),(0,n.jsx)("th",{children:"선택 회차 변화"})]})}),(0,n.jsx)("tbody",{children:a.classes.map(e=>{let c=new Set(a.students.filter(s=>s.classId===e.id).map(e=>e.studentId)),d=e=>{var s;return w(null!==(s=null==e?void 0:e.records.filter(e=>c.has(e.studentId)))&&void 0!==s?s:[])},r=v(d(t),d(l));return(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:(0,n.jsxs)("button",{className:f().studentName,onClick:()=>i("".concat(e.classNum,"반"),{kind:"class",classId:e.id}),children:[e.classNum,"반"]})}),s.map(e=>(0,n.jsxs)("td",{children:[_(x(d(e).map(e=>e.average))),(0,n.jsxs)("small",{className:f().secondaryText,children:[" \xb7 ",d(e).length,"명"]})]},e.id)),(0,n.jsx)("td",{children:(0,n.jsx)(N,{value:r.difference,count:r.count})})]},e.id)})})]})})]}):(0,n.jsx)(C,{})]})}let L=(0,t.default)(()=>Promise.all([l.e(6205),l.e(517)]).then(l.bind(l,517)),{loadableGenerated:{webpack:()=>[517]}});function D(e,s,l){var n,t;if(!l||"all"===l.kind)return e;if("class"===l.kind)return e.filter(e=>e.classId===l.classId);let a=new Map(null!==(t=null===(n=s.find(e=>e.id===l.examId))||void 0===n?void 0:n.records.map(e=>[e.studentId,e]))&&void 0!==t?t:[]);return e.filter(e=>{var s,n,t;let i=a.get(e.studentId);if("missing"===l.kind)return(null==i?void 0:i.average)==null;if("average"===l.kind)return(null==i?void 0:i.average)!=null&&i.average>=l.min&&i.average<l.max;if(l.classId&&e.classId!==l.classId)return!1;let c=null==i?void 0:null===(s=i.subjects.find(e=>e.subject===l.subject))||void 0===s?void 0:s[l.metric];return"achievement"===l.metric?c===l.value:"number"==typeof c&&c>=(null!==(n=l.min)&&void 0!==n?n:0)&&c<(null!==(t=l.max)&&void 0!==t?t:1/0)})}let G=[{id:"overview",label:"종합"},{id:"classes",label:"학급 비교"},{id:"grades",label:"내신"},{id:"mock",label:"모의고사"},{id:"students",label:"학생 조회"}];function Y(e){var s,l,t,u,j,b,I,y,w,C,Y,B,Z,R,P,V,z,T,J,K,U;let{detail:W,assignmentId:O,navigation:Q,onReady:X,onSelectStudent:$,onNavigate:ee,onBack:es}=e,el=O?W.me.assignments.filter(e=>e.id===O):W.me.assignments,en=[1,2,3].filter(e=>(0,h.Lq)(el,W.space.currentYear,e)),et=(0,h.Qn)(el,W.space.currentYear),[ea,ei]=(0,a.useState)(()=>{var e,s;return null!==(s=null==Q?void 0:Q.current)&&void 0!==s?s:{grade:null!==(e=en[0])&&void 0!==e?e:1,academicYear:W.space.currentYear,tab:"overview",gradeExamId:"",mockExamId:"",beforeExamId:"",query:"",classId:"",sort:"class",page:0,drill:null}}),[ec,ed]=(0,a.useState)(null),[er,eo]=(0,a.useState)(!0),[eh,eu]=(0,a.useState)(""),[ex,em]=(0,a.useState)(""),ej=(0,a.useRef)(0),ev=(0,a.useRef)(!1),eg=en.includes(ea.grade)&&(et||ea.academicYear===W.space.currentYear),ep=e=>ei(s=>({...s,...e})),eb=e=>{let s={...ea,...e};Q&&(Q.current=ea),null==ee||ee(s),ei(s)},ef=(0,a.useCallback)(async()=>{let e=++ej.current;eo(!0),eu(""),ed(null);try{let s=await r({action:"analysis",spaceId:W.space.id,assignmentId:O,grade:ea.grade,academicYear:ea.academicYear});if(e!==ej.current)return;s.success?"analysis"===s.data.kind&&ed(s.data):eu(s.error)}catch(s){e===ej.current&&eu("성적 분석을 불러오지 못했습니다. 다시 시도해 주세요.")}finally{e===ej.current&&eo(!1)}},[W.space.id,O,ea.grade,ea.academicYear]);(0,a.useEffect)(()=>(eg&&ef(),()=>{ej.current++}
1),[ef,eg,W.me.revision]),(0,a.useEffect)(()=>{let e=()=>{eg&&"visible"===document.visibilityState&&ef()};return window.addEventListener("focus",e),document.addEventListener("visibilitychange",e),()=>{window.removeEventListener("focus",e),document.removeEventListener("visibilitychange",e)}},[eg,ef]),(0,a.useEffect)(()=>{!ec||er||eh||(Q&&(Q.current=ea),ev.current||(ev.current=!0,null==X||X()))},[ea,ec,er,eh,Q,X]);let e_=null!==(j=null==ec?void 0:ec.exams.filter(e=>"grades"===e.domain))&&void 0!==j?j:[],eN=null!==(b=null==ec?void 0:ec.exams.filter(e=>"mock"===e.domain))&&void 0!==b?b:[],ek=null!==(y=null!==(I=e_.find(e=>e.id===ea.gradeExamId))&&void 0!==I?I:[...e_].reverse().find(e=>"final"===e.kind))&&void 0!==y?y:e_[e_.length-1],eI=null!==(w=eN.find(e=>e.id===ea.mockExamId))&&void 0!==w?w:eN[eN.length-1],ey=eN.filter(e=>eI&&p(e)<p(eI)),ew=null!==(C=ey.find(e=>e.id===ea.beforeExamId))&&void 0!==C?C:ey[ey.length-1],eC=(0,a.useMemo)(()=>{var e;return new Map(null!==(e=null==ek?void 0:ek.records.map(e=>[e.studentId,e]))&&void 0!==e?e:[])},[ek]),eE=(0,a.useMemo)(()=>{var e;return new Map(null!==(e=null==eI?void 0:eI.records.map(e=>[e.studentId,e]))&&void 0!==e?e:[])},[eI]),eS=(0,a.useMemo)(()=>{var e;return new Map(null!==(e=null==ew?void 0:ew.records.map(e=>[e.studentId,e]))&&void 0!==e?e:[])},[ew]),eM=(e,s)=>{eb({tab:"students",drill:{title:e,filter:s,from:ea.tab},classId:"",query:"",page:0}),ef()},eF=e=>$?$(e):em(e);if(!eg)return null;if(ex)return(0,n.jsx)(L,{spaceId:W.space.id,assignmentId:O,studentId:ex,onBack:()=>em("")});let eA=D(null!==(Y=null==ec?void 0:ec.students)&&void 0!==Y?Y:[],null!==(B=null==ec?void 0:ec.exams)&&void 0!==B?B:[],null===(s=ea.drill)||void 0===s?void 0:s.filter).filter(e=>(!ea.classId||ea.classId===e.classId)&&(!ea.query||e.name.includes(ea.query.trim())||String(e.number)===ea.query.trim())),eH=e=>{var s,l;return ea.sort.startsWith("mock")?null===(s=eE.get(e.studentId))||void 0===s?void 0:s.average:null===(l=eC.get(e.studentId))||void 0===l?void 0:l.average},eL=[...eA].sort((e,s)=>{if("class"===ea.sort)return e.classNum-s.classNum||e.number-s.number;let l=eH(e),n=eH(s);return null==l?null==n?e.classNum-s.classNum||e.number-s.number:1:null==n?-1:(l-n)*(ea.sort.endsWith("desc")?-1:1)||e.classNum-s.classNum||e.number-s.number}),eD=null===(l=ea.drill)||void 0===l?void 0:l.filter,eG=new Map(eD&&"examId"in eD&&null!==(Z=null==ec?void 0:null===(t=ec.exams.find(e=>e.id===eD.examId))||void 0===t?void 0:t.records.map(e=>[e.studentId,e]))&&void 0!==Z?Z:[]),eY=(null==eD?void 0:eD.kind)==="subject"?eD.metric:"average",eq=(null==eD?void 0:eD.kind)==="subject"?"".concat(eD.subject," ").concat("raw"===eD.metric?"원점수":"achievement"===eD.metric?"성취도":"등급"):"선택 시험 평균",eB=eD&&("subject"===eD.kind||"examId"in eD&&eD.examId!==(null==ek?void 0:ek.id)&&eD.examId!==(null==eI?void 0:eI.id)),eZ=Math.min(ea.page,Math.max(0,Math.ceil(eL.length/50)-1)),eR=null!==(R=null==ek?void 0:ek.records)&&void 0!==R?R:[],eP=null!==(P=null==eI?void 0:eI.records)&&void 0!==P?P:[],eV=eR.filter(e=>null!==e.average),ez=eP.filter(e=>null!==e.average),eT=v(null!==(V=null==ew?void 0:ew.records)&&void 0!==V?V:[],eP),eJ=g(eR),eK=g(eP);return(0,n.jsxs)("section",{className:f().dashboard,"aria-busy":er,children:[(0,n.jsxs)("header",{className:f().header,children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("h2",{children:[ea.grade,"학년 전체 학생"]}),(0,n.jsxs)("p",{children:[W.space.name," \xb7 ",ea.academicYear,"학년도",ec?" \xb7 ".concat(ec.students.length,"명"):""]})]}),(0,n.jsxs)("div",{className:f().headerActions,children:[et&&(0,n.jsxs)("label",{children:[(0,n.jsx)("span",{className:"sr-only",children:"명단 학년도"}),(0,n.jsx)("select",{"aria-label":"명단 학년도",value:ea.academicYear,disabled:er,onChange:e=>ep({academicYear:Number(e.target.value),gradeExamId:"",mockExamId:"",beforeExamId:"",drill:null,page:0}),children:(null!==(z=null==ec?void 0:ec.availableYears)&&void 0!==z?z:[ea.academicYear]).map(e=>(0,n.jsxs)("option",{value:e,children:[e,"학년도"]},e))})]}),en.length>
11&&(0,n.jsx)("div",{className:f().gradeSwitch,role:"group","aria-label":"분석 학년",children:en.map(e=>(0,n.jsxs)("button",{"aria-pressed":ea.grade===e,disabled:er,onClick:()=>ep({grade:e,tab:"overview",gradeExamId:"",mockExamId:"",beforeExamId:"",classId:"",drill:null,page:0,query:""}),children:[e,"학년"]},e))}),(0,n.jsx)("button",{className:f().iconButton,disabled:er,"aria-label":"성적 분석 새로고침",onClick:()=>void ef(),children:(0,n.jsx)(i.Z,{size:16})})]})]}),(0,n.jsx)("nav",{className:f().tabs,"aria-label":"학년 성적 분석",children:G.map(e=>(0,n.jsx)("button",{"aria-current":ea.tab===e.id?"page":void 0,onClick:()=>{(ea.tab!==e.id||ea.drill)&&eb({tab:e.id,drill:null,page:0})},children:e.label},e.id))}),eh&&(0,n.jsxs)("div",{role:"alert",className:f().error,children:[eh,(0,n.jsx)("button",{className:f().secondary,onClick:()=>void ef(),children:"다시 불러오기"})]}),er&&(0,n.jsx)(o.ContentLoadingState,{variant:"table",label:"학년 성적을 분석하고 있습니다."}),ec&&!er&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:f().sources,children:["mock"!==ea.tab&&(0,n.jsx)(q,{label:"내신",exams:e_,selected:ek,onChange:e=>ep({gradeExamId:e,drill:null,page:0})}),"grades"!==ea.tab&&(0,n.jsx)(q,{label:"모의고사",exams:eN,selected:eI,onChange:e=>ep({mockExamId:e,beforeExamId:"",drill:null,page:0})}),["overview","classes","mock"].includes(ea.tab)&&(0,n.jsx)(q,{label:"비교 회차",exams:ey,selected:ew,onChange:e=>ep({beforeExamId:e})}),(0,n.jsx)("span",{className:f().rosterNote,children:ec.historical?"해당 학년도 마지막 소속 반 기준":"현재 소속 반 기준"})]}),ec.students.length?(0,n.jsxs)(n.Fragment,{children:["overview"===ea.tab&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("dl",{className:f().summary,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"학년 평균내신"}),(0,n.jsxs)("dd",{children:[_(x(eV.map(e=>e.average))),(0,n.jsx)("small",{children:"등급"})]}),(0,n.jsxs)("button",{onClick:()=>{var e;return eM("내신 종합 평균 미산출",{kind:"missing",examId:null!==(e=null==ek?void 0:ek.id)&&void 0!==e?e:""})},children:["산출 ",eV.length,"명 \xb7 미산출 ",ec.students.length-eV.length,"명"]})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("dt",{children:[m(eI)," 평균등급"]}),(0,n.jsxs)("dd",{children:[_(x(ez.map(e=>e.average))),(0,n.jsx)("small",{children:"등급"})]}),(0,n.jsxs)("button",{onClick:()=>{var e;return eM("모의고사 종합 평균 미산출",{kind:"missing",examId:null!==(e=null==eI?void 0:eI.id)&&void 0!==e?e:""})},children:["산출 ",ez.length,"명 \xb7 미산출 ",ec.students.length-ez.length,"명"]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"이전 모의고사 대비"}),(0,n.jsx)("dd",{className:f().deltaValue,children:(0,n.jsx)(N,{value:eT.difference})}),(0,n.jsx)("span",{children:ew?"".concat(ew.period,"월 → ").concat(null==eI?void 0:eI.period,"월 \xb7 동일 학생 ").concat(eT.count,"명"):"비교할 이전 회차가 없습니다"})]})]}),(0,n.jsxs)("div",{className:f().dual,children:[(0,n.jsx)(E,{title:"평균내신 등급대",exam:ek,onDrill:eM}),(0,n.jsx)(E,{title:"모의고사 평균등급대",exam:eI,onDrill:eM})]}),(0,n.jsxs)("div",{className:f().dual,children:[(0,n.jsx)(S,{exam:ek,onDrill:eM}),(0,n.jsx)(M,{students:ec.students,gradeRanks:eJ,mockRanks:eK,onSelect:eF})]}),(0,n.jsx)(F,{data:ec,gradeExam:ek,mockExam:eI,beforeExam:ew,onDrill:eM,sort:null!==(T=ea.classSort)&&void 0!==T?T:"class",onSort:e=>ep({classSort:e}),compact:!0})]}),"classes"===ea.tab&&(0,n.jsx)(F,{data:ec,gradeExam:ek,mockExam:eI,beforeExam:ew,onDrill:eM,sort:null!==(J=ea.classSort)&&void 0!==J?J:"class",onSort:e=>ep({classSort:e})}),"grades"===ea.tab&&(0,n.jsx)(A,{exam:ek,total:ec.students.length,onDrill:eM}),"mock"===ea.tab&&(0,n.jsx)(H,{exams:eN,exam:eI,beforeExam:ew,data:ec,onDrill:eM,onChoose:e=>ep({mockExamId:e,beforeExamId:""})}),"students"===ea.tab&&(0,n.jsxs)("section",{className:f().section,children:[ea.drill&&(0,n.jsxs)("button",{className:f().link,onClick:()=>{var e,s;return es?es():ep({tab:null!==(s=null===(e=ea.drill)||void 0===e?void 0:e.from)&&void 0!==s?s:"overview",drill:null,page:0})},children:[(0,n.jsx)(c.Z,{size:14})," ",{overview:"종합으로",classes:"학급 비교로",grades:"내신으로",mock:"모의고사로",students:"학생 조회로"}[ea.drill.from]," 돌아가기"]}),(0,n.jsxs)("div",{className:f().sectionHeading,children:[(0,n.jsx)("h3",{children:null!==(K=null===(u=ea.drill)||void 0===u?void 0:u.title)&&void 0!==K?K:"학생 조회"}),(0,n.jsxs)("span",{children:[eA.length,"명"]})]}),(0,n.jsxs)("div",{className:f().rosterFilters,children:[(0,n.jsxs)("label",{children:[(0,n.jsx)("span",{className:"sr-only",children:"이름 또는 번호"}),(0,n.jsx)("input",{"aria-label":"이름 또는 번호",placeholder:"이름 또는 번호 검색",value:ea.query,maxLength:80,onChange:e=>ep({query:e.target.value,page:0})})]}),(0,n.jsxs)("label",{children:[(0,n.jsx)("span",{className:"sr-only",children:"조회 학급"}),(0,n.jsxs)("select",{"aria-label":"조회 학급",value:ea.classId,onChange:e=>ep({classId:e.target.value,page:0}),children:[(0,n.jsx)("option",{value:"",children:"모든 반"}),ec.classes.map(e=>(0,n.jsxs)("option",{value:e.id,children:[e.classNum,"반"]}
1,e.id))]})]}),(0,n.jsxs)("label",{children:[(0,n.jsx)(d.Z,{size:14}),(0,n.jsxs)("select",{"aria-label":"학생 정렬",value:ea.sort,onChange:e=>ep({sort:e.target.value,page:0}),children:[(0,n.jsx)("option",{value:"class",children:"반 \xb7 번호순"}),(0,n.jsx)("option",{value:"grade",children:"내신 우수순"}),(0,n.jsx)("option",{value:"grade-desc",children:"내신 낮은순"}),(0,n.jsx)("option",{value:"mock",children:"모의고사 우수순"}),(0,n.jsx)("option",{value:"mock-desc",children:"모의고사 낮은순"})]})]})]}),(0,n.jsx)(k,{label:"학생별 성적 비교",children:(0,n.jsxs)("table",{className:f().table,children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"학급"}),(0,n.jsx)("th",{children:"번호"}),(0,n.jsx)("th",{className:f().textCell,children:"이름"}),eB&&(0,n.jsx)("th",{children:eq}),(0,n.jsx)("th",{children:"평균내신"}),(0,n.jsx)("th",{children:"모의 평균등급"}),(0,n.jsx)("th",{children:"모의 변화"})]})}),(0,n.jsx)("tbody",{children:eL.slice(50*eZ,(eZ+1)*50).map(e=>{var s,l,t,a;let i=eG.get(e.studentId),c=(null==eD?void 0:eD.kind)==="subject"?null==i?void 0:null===(s=i.subjects.find(e=>e.subject===eD.subject))||void 0===s?void 0:s[eD.metric]:null==i?void 0:i.average,d=null===(l=eS.get(e.studentId))||void 0===l?void 0:l.average,r=null===(t=eE.get(e.studentId))||void 0===t?void 0:t.average;return(0,n.jsxs)("tr",{children:[(0,n.jsxs)("td",{children:[e.classNum,"반"]}),(0,n.jsx)("td",{children:e.number}),(0,n.jsx)("th",{scope:"row",className:f().textCell,children:(0,n.jsx)("button",{className:f().studentName,onClick:()=>eF(e.studentId),children:e.name})}),eB&&(0,n.jsx)("td",{className:f().emphasis,children:null==c?"—":"number"==typeof c?_(c,"average"===eY?2:0):c}),(0,n.jsx)("td",{children:_(null===(a=eC.get(e.studentId))||void 0===a?void 0:a.average)}),(0,n.jsx)("td",{children:_(r)}),(0,n.jsx)("td",{children:(0,n.jsx)(N,{value:null!=d&&null!=r?r-d:null})})]},e.studentId)})})]})}),!eL.length&&(0,n.jsx)("p",{className:f().empty,children:"조건에 맞는 학생이 없습니다."}),(0,n.jsxs)("div",{className:f().pagination,children:[(0,n.jsxs)("span",{children:[eL.length?50*eZ+1:0,"–",Math.min((eZ+1)*50,eL.length)," / ",eL.length,"명"]}),(0,n.jsx)("button",{disabled:!eZ,onClick:()=>ep({page:eZ-1}),children:"이전"}),(0,n.jsx)("button",{disabled:(eZ+1)*50>=eL.length,onClick:()=>ep({page:eZ+1}),children:"다음"})]})]})]}):(0,n.jsxs)("div",{className:f().empty,children:[(0,n.jsx)("h3",{children:"등록된 학생이 없습니다"}),(0,n.jsx)("p",{children:"이 학년의 학생 명단을 등록하면 성적 분석이 시작됩니다."})]}),(0,n.jsxs)("details",{className:f().method,children:[(0,n.jsx)("summary",{children:"성적 산출 기준"}),(0,n.jsx)("p",{children:"내신은 선택한 시험에서 석차등급이 있는 과목을 단위수로 가중평균합니다. 단위수가 빠지면 종합 평균을 산출하지 않습니다. 모의고사는 (국어 + 수학 + 영어 + 탐구 두 과목 평균) \xf7 4로 계산하며 한국사는 제외합니다. 필요한 영역이 빠진 학생은 종합 평균에서 제외하고 영역별 통계에는 유효한 성적을 반영합니다."}),(0,n.jsxs)("p",{children:["학년\xb7반 평균은 학생별 평균의 산술평균입니다. 변화는 두 회차 모두 성적이 있는 동일 학생 기준이며, 등급은 낮을수록 우수합니다. 내신 ",null!==(U=null==ek?void 0:ek.maxGrade)&&void 0!==U?U:"—","등급제 \xb7 모의고사 9등급제. 과목 성취도는 현재 명단의 실제 등록 성적 기준입니다."]})]})]})]})}function q(e){var s;let{label:l,exams:t,selected:a,onChange:i}=e;return(0,n.jsxs)("label",{className:f().examSelect,children:[l,(0,n.jsxs)("select",{"aria-label":l,value:null!==(s=null==a?void 0:a.id)&&void 0!==s?s:"",disabled:!t.length,onChange:e=>i(e.target.value),children:[!t.length&&(0,n.jsx)("option",{value:"",children:"자료 없음"}),t.map(e=>(0,n.jsx)("option",{value:e.id,children:m(e)},e.id))]})]})}},61858:function(e,s,l){"use strict";l.d(s,{Bz:function(){return a},RQ:function(){return i},f6:function(){return c},hC:function(){return t}});let n={통합사회:.1,통합과학:.2,"생활과 윤리":1,"윤리와 사상":2,한국지리:3,세계지리:4,동아시아사:5,세계사:6,경제:7,"정치와 법":8,사회·문화:9,생활과윤리:1,윤리와사상:2,사회문화:9,정치와법:8,"한국 지리":3,"세계 지리":4,물리학Ⅰ:10,물리학1:10,물리1:10,물리Ⅰ:10,물리학:10,화학Ⅰ:11,화학1:11,화학:11,생명과학Ⅰ:12,생명과학1:12,생명과학:12,생명:12,지구과학Ⅰ:13,지구과학1:13,지구과학:13,물리학Ⅱ:14,물리학2:14,물리2:14,물리Ⅱ:14,화학Ⅱ:15,화학2:15,생명과학Ⅱ:16,생명과학2:16,생명2:16,지구과학Ⅱ:17,지구과학2:17,지구2:17},t=e=>e.includes("국어")?-4:e.includes("화법")||e.includes("작문")?-3.9:e.includes("언어")&&e.includes("매체")?-3.8:e.includes("수학")?-3:e.includes("확률")||e.includes("통계")?-2.9:e.includes("미적분")?-2.8:"기하"===e?-2.7:e.includes("영어")?-2:e.includes("한국사")?-1:n[e]?n[e]:999,a=e=>new Date().getFullYear()-e+1,i=e=>e>=2025?"5-GRADE":"9-GRADE",c=e=>"5-GRADE"===e?{domain:[1,6],ticks:[1,2,3,4,5],maxGrade:5}:{domain:[1,9],ticks:[1,2,3,4,5,6,7,8,9],maxGrade:9}},5519:function(e){e.exports={dashboard:"school-statistics_dashboard__7WBc8",header:"school-statistics_header__ZgvnF",headerActions:"school-statistics_headerActions__zri1z",gradeSwitch:"school-statistics_gradeSwitch__fm5E9",iconButton:"school-statistics_iconButton__7JVu7",tabs:"school-statistics_tabs__Sr9VO",sources:"school-statistics_sources__bmNfP",examSelect:"school-statistics_examSelect__ciqU7",rosterNote:"school-statistics_rosterNote__w_9or",summary:"school-statistics_summary__m8SgH",deltaValue:"school-statistics_deltaValue__9PNZt",dual:"school-statistics_dual__LK06e",panel:"school-statistics_panel__WMEyk",section:"school-statistics_section__J7JSC",sectionHeading:"school-statistics_sectionHeading__GUgvJ",caption:"school-statistics_caption__WzRNt",bands:"school-statistics_bands__s_5e_",percentage:"school-statistics_percentage__jbT7a",bandTrack:"school-statistics_bandTrack__qE1E5",histogram:"school-statistics_histogram__1aOUb",miniHistogram:"school-statistics_miniHistogram__mlQXb",scatter:"school-statistics_scatter__K6owq",gridLine:"school-statistics_gridLine__Mi2PM",diagonal:"school-statistics_diagonal__OaVZL",scatterPoint:"school-statistics_scatterPoint__1BMBn",tableScroll:"school-statistics_tableScroll__x9LwZ",table:"school-statistics_table__ZnSvF",textCell:"school-statistics_textCell__qZJVE",emphasis:"school-statistics_emphasis__8pFjw",studentName:"school-statistics_studentName__SbDOb",count:"school-statistics_count__I_2L0",change:"school-statistics_change__QVANj",secondaryText:"school-statistics_secondaryText__tb5qe",heatCell:"school-statistics_heatCell__yv7EX",subjectGrid:"school-statistics_subjectGrid__eirBS",subjectPanel:"school-statistics_subjectPanel__8w93g",groupedHistogram:"school-statistics_groupedHistogram__z9_oH",rosterFilters:"school-statistics_rosterFilters__KiV_n",pagination:"school-statistics_pagination__0a5cK",link:"school-statistics_link___Ajhv",method:"school-statistics_method__3cleY",noScores:"school-statistics_noScores__TB9Rj",empty:"school-statistics_empty__U6Hdi",error:"school-statistics_error__SyrJm",secondary:"school-statistics_secondary__xNHiL"}}}]);

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.