재부팅 복구와 학습자 패널을 정리

This commit is contained in:
Yun Chan 2026-08-28 18:07:28 +09:00
parent dcb76a2373
commit 99779a6ab2
10 changed files with 442 additions and 25 deletions

View file

@ -12,3 +12,5 @@
- 320px과 모바일 프로젝트에서도 문서 가로 넘침이 없어야 하며, 오류·재시도 상태는 기존 관리자/리뷰 알림 패턴을 따른다.
국소 구현 소유자는 `src/pages/Admin.tsx`, `src/pages/admin/admin-console.css`, `src/pages/SessionReview.tsx`, `src/pages/session-review/`다. 공통 토큰과 앱 셸은 각각 `src/styles/tokens.css`, `src/components/shell/`의 소유권을 유지한다.
- 2026-08-28 · `/learn` 성장 지표의 라포 헤더에서 중첩 inset surface를 제거해 같은 패널의 일반 헤더 위계와 정렬했다. 토큰 변경 없음.

View file

@ -700,6 +700,39 @@ test.describe("uc learner home dashboard", () => {
await expect(page).toHaveURL(/\/learn\/practice$/);
});
test("성장 지표 라포 헤더는 중첩 inset 표면을 사용하지 않는다", async ({
page,
}) => {
await installFixtures(page);
await page.goto("/learn");
await page.getByRole("tab", { name: "성장 지표" }).click();
const rapportHeading = page
.locator("#lh-panel-growth")
.getByRole("heading", { name: "회기를 건너 누적됩니다." });
const headingContent = rapportHeading.locator("..");
await expect(rapportHeading).toBeVisible();
await expect(headingContent).not.toHaveClass(/vg-surface/);
await expect
.poll(() =>
headingContent.evaluate((element) => {
const style = getComputedStyle(element);
return {
backgroundColor: style.backgroundColor,
borderTopWidth: style.borderTopWidth,
borderRadius: style.borderRadius,
padding: style.padding,
};
}),
)
.toEqual({
backgroundColor: "rgba(0, 0, 0, 0)",
borderTopWidth: "0px",
borderRadius: "0px",
padding: "0px",
});
});
// usecase: 첫 방문 학습자가 기록·성장 탭에서 빈 상태 안내 문구를 확인한다
test("신규 학습자의 기록·성장 탭이 빈 상태 안내 문구를 보여준다", async ({
page,

View file

@ -1554,12 +1554,7 @@ export default function LearnerHome({ view = "dashboard" }: LearnerHomeProps) {
className={surfaceClassName("lh-panel lh-panel--growth")}
>
<div className="lh-panel__head">
<div
className={surfaceClassName(undefined, {
variant: "inset",
flat: true,
})}
>
<div>
{/* D1: 섹션 라벨 — dot 제거 */}
<Kicker dot={false}> </Kicker>
<h2> .</h2>