Commit graph

155 commits

Author SHA1 Message Date
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
1248ae8ca4 백로그 페르소나 경계 반영 2026-06-28 20:17:04 +09:00
Yun Chan
4b2857861c 노드 전환 문서 페르소나 경계 반영 2026-06-28 20:16:31 +09:00
Yun Chan
e634aa0dba 갭 문서 페르소나 경계 반영 2026-06-28 20:15:58 +09:00
Yun Chan
7f1cd0b6fa 아키텍처 문서 페르소나 경계 반영 2026-06-28 20:15:15 +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
Yun Chan
480fbd543a 계약 DTO SSOT 3차 2026-06-27 18:27:30 +09:00
Yun Chan
1007eaf7d9 세션 종료 UX 정리 2026-06-27 18:09:48 +09:00
Yun Chan
f472883c31 대시보드 이슈 정리 1차 2026-06-27 17:51:54 +09:00
Yun Chan
94cc56592f 배포 검증 문서 갱신 2026-06-27 17:30:14 +09:00
Yun Chan
0ec266a761 동의 게이트와 런타임 안정화 2026-06-27 17:22:38 +09:00
Yun Chan
0eb7d925ed 서버 안정화와 평가 모델 라우팅 보강 2026-06-27 16:34:27 +09:00
Yun Chan
6fa50c52ff 대시보드 검증 수치 정정 2026-06-27 16:09:27 +09:00
Yun Chan
c0dddab594 현재 작업 전체 반영 2026-06-27 16:08:41 +09:00
Yun Chan
5560638e54 P1 아바타 PSB 최신본 기본 적용 2026-06-27 16:05:57 +09:00
Yun Chan
6bd91b0d5e 현재 작업 상태 저장 2026-06-27 11:20:24 +09:00
Yun Chan
07cc67761e 대시보드: 팀장 협업 커맨드센터로 재설계(KPI·오너보드·관계도·폴드아웃, 내용 보존) 2026-06-27 04:29:46 +09:00
Yun Chan
2877fb0cb7 세션 인계 문서 + API 핫리로드
- docs/ops/handoff-2026-06-27.md: 완료/잔여(위기 안전게이트 109·교수자 성장 UI)·재개 방법·한신대 PDF 핵심·병렬 아바타 세션 주의
- scripts/dev-up.ps1: API --reload(watchfiles) 핫리로드 — app/*.py 저장 시 자동 재기동
2026-06-27 02:41:05 +09:00
Yun Chan
085460b5e0 대시보드 폴드아웃/드릴다운 정리 + 페르소나 역린·misconduct 반응 + 게이트웨이 격리·RAG 비차단 수정
SSOT 대시보드:
- 한신대 기술분석 PDF(19쪽) 정합성 분석 + 이번 세션 발견 섹션 추가
- 섹션 폴드아웃(접기)·상단 목차(드릴다운)·모두 펼치기/접기 — 내용 보존, 레이아웃만 정리

페르소나 반응 강화('저항·반응 조절' 핵심 차별):
- PersonaCard.triggers(역린) 필드 + CCD 핵심상처 파생 역린 블록
- L0에 무례·모욕·조롱 시 현실적 동맹 균열 반응 지침

버그·성능 수정(라이브/E2E로 포착):
- 게이트웨이 페르소나 격리: --append-system-prompt를 --system-prompt(교체)로 + --exclude-dynamic-system-prompt-sections (내담자 캐릭터 붕괴·개발맥락 누출 차단)
- RAG: 임베더 동기 로드(약 7-13초)를 _warm_rag_caches 백그라운드 warm으로(세션 생성 블로킹 회귀 수정)
- voice TTS RMS 데드힌트 제거, init_state OpennessParams 파라미터객체화
- 한국어 PII(날짜·금액·주소) 마스킹 보강
- 레이아웃 시각 게이트: 폼 컨트롤 값 스크롤 오탐 제외(7/7)

검증: 백엔드 84/84, E2E 42(데스크톱 27·모바일 11·아바타 4), 시각 게이트 7/7
2026-06-27 02:30:46 +09:00
Yun Chan
cb2aebd76c docs: restore detailed dashboard tab content 2026-06-26 16:16:07 +09:00
Yun Chan
47c5b97a6d docs: consolidate dashboard details into tabs 2026-06-26 16:05:46 +09:00
Yun Chan
22ee0c6b89 docs: add full phase roadmap to dashboard 2026-06-26 15:38:00 +09:00
Yun Chan
bf6c313027 docs: update Live2D removal deployment status 2026-06-26 15:20:00 +09:00
Yun Chan
435cbafbc5 Remove bundled Live2D demo assets 2026-06-26 15:09:32 +09:00
Yun Chan
a3483067ed docs: record production deployment status 2026-06-26 14:54:20 +09:00
Yun Chan
188e899394 Stabilize runtime auth and E2E coverage 2026-06-26 14:47:00 +09:00
Yun Chan
6a3e3b541c docs: 핸드오프 노트 — 다음 세션 인계(상주인프라/완료현황/다음작업/함정) 2026-06-26 02:07:03 +09:00
Yun Chan
24b1b7a6e1 feat: P1 풀빌드 — React 프론트 7화면 + 백엔드 상담루프·평가·음성·RAG
web (Vite+React19+TS, Cloudflare Pages 배포):
- 디자인토큰(세이지틸/테라코타 SSOT), 앱셸, 공통 UI 프리미티브
- 7화면: 로그인/학습자홈/상담세션/회기리뷰/교수자/관리자/설정
- ClientAvatar: SVG 반구상 흉상 4상태 + RMS 립싱크 + 6파라미터 정서
- 회기리뷰는 외부 레퍼런스 디자인을 Vignette 토큰으로 리스킨

api (FastAPI):
- 게이트웨이 /v1/generate·/v1/stream 어댑터(상주풀/EngineSession 보존)
- services: 페르소나 L0~L6 빌더 / 결정론 상태머신 / 가드레일 /
  턴 오케스트레이터 / 회기간 메모리 / 평가AI / 음성 / RAG
- store: DB off 폴백(in-memory), sessions 실구현

검증:
- web: node22 tsc+vite build 통과(node23 segfault 회피), Pages 배포 200
- api: app.main import 통과
- 핫픽스: Topbar initials undefined-safe (undefined.trim 크래시)
- E2E: 서연(P1) 상담 1턴 — 좋은/나쁜 상담에 차등 반응 실증
2026-06-25 23:37:22 +09:00