// 내 정보: 로그인한 학생의 반·학습 기록 (로그인 안 했으면 /login 으로) import { api, esc, toast } from "./common.js"; const main = document.getElementById("main"); const next = new URLSearchParams(location.search).get("next") || "/"; async function load() { let me; try { me = await api("/api/members/me"); } catch (e) { main.innerHTML = `

불러오지 못했습니다: ${esc(e.message)}

`; return; } if (!me.logged_in) return renderGuest(me); if (me.status === "approved") return renderMember(me); main.innerHTML = `

${esc(me.name)} 님

사용할 수 없는 계정 담당 교수자에게 문의해 주세요.

개념 우주로

`; document.getElementById("logout").onclick = logout; } function renderGuest(me) { if (me.admin) { main.innerHTML = `

${esc(me.admin)} 님

교수자로 로그인되어 있습니다.

관리 화면 회원 관리

`; return; } location.replace("/login?next=" + encodeURIComponent("/account")); } async function renderMember(me) { const rate = me.attempts ? Math.round((me.correct / me.attempts) * 100) : 0; main.innerHTML = `

${esc(me.name)} 님

승인됨${esc(me.class_name || "")}
푼 문제${me.attempts}
맞힌 문제${me.correct}
정답률${rate}%

문제 풀러 가기 틀린 문제 다시 풀기

기록을 불러오는 중…

`; document.getElementById("logout").onclick = logout; try { const s = await api("/api/members/my-stats"); document.getElementById("stats").innerHTML = `

단원별 정답률

${s.by_galaxy.length ? s.by_galaxy.map((g) => { const p = g.attempts ? Math.round((g.correct / g.attempts) * 100) : 0; return `
${esc(g.name)}${g.correct}/${g.attempts} · ${p}%
`; }).join("") : `

아직 푼 문제가 없습니다.

`}

자주 틀린 용어

${s.wrong_terms.length ? `
${s.wrong_terms.map((t) => `${esc(t.name)} · ${t.wrong}`).join("")}
` : `

틀린 용어가 없습니다.

`}
`; } catch (e) { document.getElementById("stats").innerHTML = `

${esc(e.message)}

`; } } async function logout() { try { await api("/api/members/logout", { method: "POST" }); } catch { /* 무시 */ } load(); } load();