Commit graph

120 commits

Author SHA1 Message Date
Yun Chan
32c0b97dbe 세션 화면 배포 증거 갱신 2026-07-31 09:27:51 +09:00
Yun Chan
12bdc59497 세션 화면 디자인 개편 2026-07-31 09:19:42 +09:00
Yun Chan
04a5f485ed docs: 공개 배포 증거 갱신 2026-07-31 00:21:11 +09:00
Yun Chan
c788343467 feat: 운영 안정성과 세션 음성 경험 개선 2026-07-31 00:13:08 +09:00
Yun Chan
facc4ad2d9 144차 배포 증거 기록
Cloudflare Pages production d8ebcb61(commit 4511383c) 배포와 prod API 8001
새 코드 재기동 증거를 SSOT 검증 표·144차 노트에 기록. 커스텀 도메인 번들
해시 일치, 공개 헬스·auth config·인증 경계·OAuth 302·watchdog healthy 실측.
2026-07-27 14:33:45 +09:00
Yun Chan
4511383cd9 전수 E2E 순회·소유자 결정 6건 구현·디자인 감사 반영
- 전수 순회: IA 전 라우트 412개 기능 인벤토리를 체크리스트 백로그로 관리
  (docs/ops/e2e-full-sweep-2026-07-27.md), 신규 full-sweep 스펙 10파일 추가.
  RED→GREEN으로 결함 12건 수정: 관리자 무한 렌더 프리즈(TanStack autoReset
  루프), 복수 코호트 저장 유실, 페르소나 보관 503(SQL 컬럼 모호성), PII 과잉
  마스킹, /admin/ai watchdog 오탐 오버레이, 모바일 겹침 2건, 설정 스크롤
  스파이, 온보딩 전화번호 무검증, 리뷰 조사·난도 라벨, pending 피드백 등.
- 소유자 결정 구현: 설정 아바타 변경, 동의 철회·재동의 전체 흐름, 신규
  학습자 기초 우선 추천, 학생 분석 테이블 가상화(@tanstack/react-virtual),
  저작 모드 죽은 레일 정리, 감정 밸런스 타임라인 차트(deep turn_valence +
  결정론 파생 폴백).
- 디자인 감사(142차): 라이트 팔레트 AA 대비, 다크 토큰 별칭 통일, 미정의
  CSS 변수 정리, 한글 keep-all 전역화, 탭 타깃 24px, LCP preconnect.
- 검증: npm run e2e 병렬 432 수집 GREEN + 직렬 49/49 exit 0, 백엔드 pytest
  421, gateway 29, typecheck/build/design-ssot/dead-code/중복 게이트 통과,
  layout-visual-gate 15/15, session-layout 8/8. 상세는 SSOT 대시보드
  142~144차 노트.
2026-07-27 14:25:24 +09:00
Yun Chan
0ae94499f2 배포 증거와 공개 상태 기록 2026-07-15 21:36:11 +09:00
Yun Chan
3dfddcac6f 전 저장소 리팩터링과 SSOT 정비 2026-07-15 21:31:30 +09:00
Yun Chan
14ecbd4e7d 음성 배포 증거 기록 2026-07-13 16:11:09 +09:00
Yun Chan
d80e33da5e 텍스트 응답 음성 재생 연결 2026-07-13 16:09:34 +09:00
Yun Chan
64e06a1185 관리자 빈 화면 진단 로그 추가 2026-07-03 23:24:09 +09:00
Yun Chan
85608b41ee 부트 진단 배포 증거 갱신 2026-07-03 23:10:12 +09:00
Yun Chan
b67fd5d471 흰 화면 부트 진단 추가 2026-07-03 23:08:05 +09:00
Yun Chan
8585f54643 관리자 흰 화면 배포 증거 갱신 2026-07-03 22:52:35 +09:00
Yun Chan
287029f2a2 관리자 흰 화면 진단 보강 2026-07-03 22:50:14 +09:00
Yun Chan
e9efaa8031 관리자 진단 배포 증거 갱신 2026-07-03 20:47:46 +09:00
Yun Chan
50524f14ae 관리자 빈 화면 진단 2026-07-03 20:45:41 +09:00
Yun Chan
0324df7c4d 공개 배포 증거 갱신 2026-07-03 20:31:23 +09:00
Yun Chan
a5a2e2ea78 관리자 화면 스크롤 복원 2026-07-03 20:27:54 +09:00
Yun Chan
d939253b3f 공개 배포 증거 갱신 2026-07-03 20:17:12 +09:00
Yun Chan
6b6241f468 한신대 피드백 개선팩 반영 2026-07-03 19:53:14 +09:00
Yun Chan
5a9c110c11 SSOT 관리자 착지 검증 갱신 2026-07-03 19:49:03 +09:00
Yun Chan
bd046c4501 관리자 기본 진입 경로 수정 2026-07-02 10:52:12 +09:00
Yun Chan
778e8526d4 세션 평가·라이브코치·교수자 분석 라운드 마감 + 문서 정리 + 코드품질 리팩터
- 누적 작업트리 커밋: 회기 평가 복구·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
2026-07-02 02:50:36 +09:00
Yun Chan
7c41c3ce79 검증 증거 문서 보강 2026-07-01 12:48:26 +09:00
Yun Chan
69fece56bf 학생 분석 목록 펼침 보강 2026-07-01 12:41:17 +09:00
Yun Chan
51053af536 안전 이벤트 대시보드 보강 2026-07-01 12:34:46 +09:00
Yun Chan
fe2796f05a 세션 평가와 교수자 분석 보강 2026-07-01 12:10:52 +09:00
Yun Chan
5c4ac04e06 preview host 허용 회귀 가드 추가 (check:preview-hosts)
배포 도메인 블랭크(vite preview allowedHosts 누락) 재발을 막는 행동 검증
스크립트를 추가. preview를 띄워 공개 Host(vnet/api-vnet/chanpaca) 3종이
200으로 허용되고 임의 Host는 403으로 차단(DNS 리바인딩 보호 유지)되는지
http.request로 직접 Host 헤더를 보내 확인한다. package.json에
check:preview-hosts로 등록.

검증: npm run check:preview-hosts → 공개 3 allowed + unlisted blocked PASS,
exit 0. 대시보드 104차 갱신.
2026-06-30 12:27:46 +09:00
Yun Chan
7b2ceafd68 보드 s2s 행을 결정 확정(DECIDED)으로 일관화
결정 패널은 이미 s2s 유지로 갱신했으나 보드 영역 s2s 행이 DECIDE로 남아
있어 일관화. 채택 여부는 확정(유지), 비교 PoC 구현·실측은 후속 build.
이로써 대시보드 비완료 항목은 외부 의존 GATE 6 + BLOCK 2만 남는다.
2026-06-30 12:19:24 +09:00
Yun Chan
09d3220f68 배포 도메인 관리자 페이지 블랭크 수정 (vite preview allowedHosts)
vnet.18ka.net 공개 배포에서 vite preview 서버가 Host 검증으로 공개 도메인
요청을 "Blocked request. This host is not allowed." 403으로 막아 SPA 전체가
블랭크로 뜨던 문제를 수정. server.allowedHosts와 같은 목록을 preview에도
적용하고 기본 허용 호스트에 vnet.18ka.net/api-vnet.18ka.net/vignette.chanpaca.net 추가.

검증: curl -H "Host: vnet.18ka.net" 127.0.0.1:5174 가 수정 전 Blocked →
수정 후 200+정상 index, 로컬 dev·preview 일반/슈퍼관리자 전 페이지 정상 렌더,
npm run typecheck. 대시보드 104차 기록.
2026-06-30 12:16:51 +09:00
Yun Chan
4e6b0045e3 관리자 워크스페이스 접근 확장과 소유자 결정 7건 확정 반영
- 관리자(role=admin)가 학습자·교수자·관리자 워크스페이스를 모두 접근하도록
  can_access_role/require_role와 프론트 auth 헬퍼·Sidebar 내비를 정리하고
  admin 워크스페이스 내비 E2E를 추가.
- 소유자 결정 7건 전건 확정(2026-06-30)을 SSOT 대시보드·백로그에 반영하고
  결정 필요 7→0으로 동기화. SSOT drift 게이트 기대 카운트도 갱신.
- 확정된 H1 평가설계(κ≥0.70·ICC≥0.75·환각률≤0.03·t-검정 α=0.05·무작위 배정)를
  approved-export κ 게이트(checker·dataset_export·recursive export)와
  KPI 측정계획·export manifest 문서에 반영.

검증: npm run typecheck, npm run check:api-types, 백엔드 pytest 290 passed,
admin 내비 E2E 1 passed, 레이아웃 시각게이트 9/9, session-layout 4 passed,
SSOT drift 게이트 PASS.
2026-06-30 10:57:46 +09:00
Yun Chan
1274ba9ccc 테스트 메일 수신자 제한 2026-06-29 17:13:34 +09:00
Yun Chan
3bf38c50df 메일 알림 시스템 추가 2026-06-29 17:07:01 +09:00
Yun Chan
ddf12a851c 공개 배포 상태 갱신 2026-06-29 08:17:16 +09:00
Yun Chan
206018b088 런타임 계약과 학습자 흐름 보강 2026-06-29 08:12:14 +09:00
Yun Chan
d18e4b6b4b Phase 3 KPI 계약 상수 분리 2026-06-29 00:01:24 +09:00
Yun Chan
d9458d0e40 다크 UI 시안과 운영 문서 갱신 2026-06-28 23:53:58 +09:00
Yun Chan
391639c1de 평가 및 화면 구조 정리 2026-06-28 21:50:21 +09:00
Yun Chan
2afb4f45c8 상태판 페르소나 읽기 모델 반영 2026-06-28 20:14:37 +09:00
Yun Chan
eb77d7ec7c 운영 문서와 상태판 동기화 2026-06-28 20:13:36 +09:00
Yun Chan
2bbd7053f3 검증 상태 정리 2026-06-28 12:22:43 +09:00
Yun Chan
6ec4a42d90 검증 문서 갱신 2026-06-28 12:20:18 +09:00
Yun Chan
ac7db95542 음성 재생과 운영 배포 정리 2026-06-28 12:18:20 +09:00
Yun Chan
8ed185ce6c 외부 계정 수동 등록 허용 2026-06-28 11:31:07 +09:00
Yun Chan
bd389a97cc 사례개념화 워크시트 저장 추가 2026-06-27 19:27:34 +09:00
Yun Chan
7f4a2d90c7 P4-P7 페르소나와 Tailnet 허용 보강 2026-06-27 19:04:46 +09:00
Yun Chan
17b114f647 세션 계약 SSOT 정리 2026-06-27 18:47:55 +09:00
Yun Chan
1881fe50bd API 계약 CI 추가 2026-06-27 18:42:09 +09:00
Yun Chan
250787cb18 다크 테마 설정 정리 2026-06-27 18:34:36 +09:00