세션 평가·라이브코치·교수자 분석 라운드 마감 + 문서 정리 + 코드품질 리팩터

- 누적 작업트리 커밋: 회기 평가 복구·durable 저장, 라이브 코치 이력/근거, 교수자 학생분석, 음성 비언어 메타, PII 마스킹, 운영 티켓/헬스 등
- 문서: 완료 기록 docs/archive/ 냉동 보관, docs/ 단일 인덱스(docs/README.md)+통합 TODO(docs/TODO.md)로 정리
- 리팩터(행위 보존): Stage enum SSOT(taxonomy 소유·state_machine re-export), store recent/masked_turns 중복 제거, speaker_ko_label 단일 헬퍼, _list_sessions N+1 제거(state/turns 배치 + 턴평가 하이드레이션 배치)
- 검증: 백엔드 pytest 352 passed, _list_sessions E2E chromium-single-run 2 passed
This commit is contained in:
Yun Chan 2026-07-02 02:50:36 +09:00
parent 7c41c3ce79
commit 778e8526d4
108 changed files with 6457 additions and 455 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 KiB

View file

@ -0,0 +1,38 @@
# 대시보드 레이아웃 정렬 리포트
작성일: 2026-06-28 KST
## 범위
이번 라운드는 페르소나 저작 기능을 교수 콘솔의 한 카드로 방치하지 않고, 교육 플랫폼의 실제 작업 흐름 안에 맞추는 데 초점을 둔다. 수정 범위는 학습자 홈/연습/기록, 교수 콘솔, 운영 콘솔/사용자/티켓, 페르소나 스튜디오, 공용 셸 폭 정책이다.
## 적용 판단
- 학습자 홈은 "오늘 이어갈 회기"를 첫 결정 영역으로 두고, 하단 회기 목록은 카드 더미가 아니라 상태/대상/시작/작업이 보이는 큐로 낮췄다.
- 교수 콘솔은 검토 대기와 위기 알림을 최우선 업무로 올렸다. 페르소나 저작은 별도 스튜디오 진입점으로 남기되, 검수 큐와 연결해 교육 운영 맥락 안에서 보이게 했다.
- 페르소나 스튜디오는 3열을 유지한다. 왼쪽은 저작 흐름과 카탈로그, 중앙은 SSOT 첨부/RAG 생성/항목 편집, 오른쪽은 검증/RAG 근거/검수 결정이다. 세 컬럼이 단순 장식이 아니라 역할이 다르기 때문에 현재 구조가 맞다.
- 운영 콘솔은 사용자/티켓을 카드형 나열보다 조밀한 운영 행으로 낮췄고, 모바일에서는 내부 스크롤보다 세로 흐름을 우선했다.
- 공용 셸에는 `wide` 모드를 추가해 작업형 화면만 넓게 쓰게 했다. 읽기형 화면의 최대 폭 정책은 건드리지 않았다.
## 증거 캡처
- `final-gate-learner-home__1440-desktop.png`
- `final-gate-learner-home__390-mobile.png`
- `final-gate-professor__1440-desktop.png`
- `final-gate-professor__390-mobile.png`
- `final-gate-admin__1440-desktop.png`
- `final-gate-admin__390-mobile.png`
- `persona-studio-after1-1440x980.png`
- `persona-studio-after1-390x844.png`
## 검증
- `npm run typecheck` passed.
- `npm run build` passed.
- `npx playwright test e2e/layout-visual-gate.spec.ts --project=chromium-single-run --workers=1` 7 passed.
- `npx playwright test e2e/session-layout.spec.ts --project=chromium-desktop --project=chromium-mobile --workers=1` 8 passed.
- `npx playwright test e2e/learner.spec.ts e2e/teacher.spec.ts e2e/admin.spec.ts --project=chromium-desktop --workers=1` 17 passed.
## 남겨둔 기준
페르소나 저작의 핵심 SSOT는 첨부 파일과 RAG source id다. 교수자가 실제 기록, 교재, 가이드를 넘기면 원문을 곧장 프롬프트에 섞는 방식이 아니라, PII 마스킹과 근거 청크 등록 후 생성/검수 기록에 source id, document hash, chunk id를 남기는 현재 구조를 유지해야 한다.

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB