diff --git a/docs/dev_dashboard.html b/docs/dev_dashboard.html new file mode 100644 index 0000000..b0ce846 --- /dev/null +++ b/docs/dev_dashboard.html @@ -0,0 +1,602 @@ + + + + + +Vignette — 개발 오버뷰 (PM 보드) + + + + + + +
+
+ + + + + Vignette +
+ 개발 오버뷰 + + + + yunchan8804-blip/vignette + private + + 오늘 2026-06-25 +
+ + +
+ + +
+
한신대 산학협력 · 20주 · 매칭금 500만
+

Phase 0 기반정렬 막바지, 엔진 실동작까지 검증됐습니다.

+
설계 4종·모노레포·디자인 7종·P0 코드 골격이 오늘 자로 완료됐고, 남은 블로커는 Docker 기동 후 DB 실마이그레이션과 외부 데이터 수급입니다.
+
+ 4로드맵 단계 + + 1진행중 (P0) + + 6확정 결정 + + 3열린 리스크 +
+
+ + +
+
+
로드맵 · 20주
+
단계별 진행률과 상태. 진행중인 단계만 색으로 강조, 대기 단계는 무채로 둡니다.
+
+ +
+
+ +
+
PHASE 070%
+
기반정렬
+
1~2주차
+
+
진행중
+
스캐폴드·DB 스키마·엔진 PoC 거의 완료
+
+ +
+
PHASE 10%
+
텍스트 상담 MVP
+
3~8주차
+
+
대기
+
상담 루프 + 상태머신 + 실시간 피드백
+
+ +
+
PHASE 20%
+
음성 + 3역할 + 페르소나
+
9~15주차
+
+
대기
+
음성 캐스케이드 · 슈퍼바이저/내담자/평가
+
+ +
+
PHASE 30%
+
효과검증 파일럿
+
16~20주차
+
+
대기
+
IRB 면제 확정 (교육용)
+
+
+
+
+ + +
+ + +
+
+
+
오늘 완료 · 2026-06-25
+
P0 기반정렬에서 오늘 자로 닫은 항목들입니다.
+
+ +
+
+ +
+
설계 4종
+
마스터플랜
+
적대검증 — red team 40개 결함 도출 후 재설계
+
메모리 · 페르소나 설계
+
디자인 컨셉
+
+ +
+
인프라
+
모노레포 repo 생성
+
Docker 이식 구성 — compose + Caddy + 엔진 어댑터 분리
+
+ +
+
디자인
+
화면 7종 시안 login · learner-home · session · session-review · professor · admin · settings
+
아바타 Rive 채택
+
+ +
+
엔진
+
claude -p 상주 멀티턴 게이트웨이 실동작 검증 완료
컨텍스트 유지 + 캐시 재사용 확인
+
+ +
+
P0 코드 · 구문검증 통과
+
DB 스키마 35테이블 (727줄)
+
FastAPI 골격
+
taxonomy (285줄)
+
+
+
+
+ +
+
+
진행중 · 다음
+
P0 마무리와 P1 진입 작업.
+
+ +
+
+
+ + DB 실제 마이그레이션 블로커 + Docker Desktop 띄워 psql 적용 — Docker 꺼져 있어 미완 + +
+
+ + 상담 루프 연결 P1 + 엔진 + 상태머신 + 실시간 피드백 + +
+
+ + Rive 아바타 통합 P1 +
+
+ + OpenAI 음성 캐스케이드 P1 +
+
+ + React 프론트 연결 P1 +
+
+
+
+
+ + +
+
+
+
확정 결정
+
되돌리지 않는 아키텍처·운영 기준선.
+
+ +
+
+
+ 엔진 + 로컬 claude -p 상주풀 (API 폴백) +
+
+ 아바타 + Rive +
+
+ 기술 스택 + + + React 19 + FastAPI + PG 16 + pgvector + Docker + + +
+
+ 운영 디폴트 6종 + + s2s 2차 · 평가 AI 로컬 · 재귀학습 few-shot · 자유연습 ON (교수 토글) · 스케일업 compose + +
+
+
+
+ +
+
+
리스크 · 블로커
+
빨강은 데이터·외부 의존, 주황은 검증 미완.
+
+ +
+
+
+ HIGH + + 데이터 n=1 + 0615 단일 축어록뿐. 추가 사례 수급은 한신대 협의 필요 외부 블로커 + +
+
+ MID + + DB 실마이그레이션 미검증 + Docker Desktop 기동 후 psql 적용 필요 — 현재 Docker 꺼짐 + +
+
+ MID + + 미성년 사례데이터 활용동의 + 한신대 공문 필요 외부 협의 + +
+
+
+
+
+
+ + +
+
+
산출물 인벤토리
+
repo 경로 기준. 카드가 아니라 표로 — 전체를 한 번에 훑습니다.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
영역내용repo 경로상태
설계 문서마스터플랜 · 적대검증(red team) · 메모리·페르소나 설계 · 디자인 컨셉docs/MASTERPLAN.mddocs/redteam/docs/MEMORY_KNOWLEDGE_PERSONA_DESIGN.mddocs/DESIGN_CONCEPT.md완료
디자인 시안화면 7종 목업 (login · learner-home · session · session-review · professor · admin · settings)docs/mockups/ (7)완료
인프라Docker 이식 구성 — compose + Caddy + 엔진 어댑터 분리infra/구성 완료 · 마이그레이션 미완
엔진 · 백엔드claude -p 상주 게이트웨이 (실동작 검증) + FastAPI 골격 + DB 스키마 35테이블 + taxonomyapps/api/골격 · 구문검증 통과
+ +
+ repo · github.com/yunchan8804-blip/vignette (private) + + 기준일 2026-06-25 + + Vignette 개발팀 내부 PM 보드 +
+
+ +
+ + diff --git a/docs/taxonomy.md b/docs/taxonomy.md new file mode 100644 index 0000000..81361cd --- /dev/null +++ b/docs/taxonomy.md @@ -0,0 +1,147 @@ +# 발화 라벨 Taxonomy v1.0 — 0615 파란색 라벨 정의서 + +> SoT(라벨 정의). 코드 구현: `apps/api/app/taxonomy.py`. 예시 데이터: `docs/golden_schema.jsonl`. +> 근거: `데이터/README.md`(파랑 #3057B9 = 3종 혼재), `MASTERPLAN.md` §3.1~§3.2(89개·77종, 3축 분리), +> `MEMORY_KNOWLEDGE_PERSONA_DESIGN.md` §3.6(kb.chunk.label_id FK). +> **버전 = 1.0.0** (`TAXONOMY_VERSION`). 라벨 코드는 불변, 추가는 append-only. + +## 0. 설계 원칙 + +0615 축어록의 파란색(#3057B9) 주석은 **한 셀에 3종이 혼재**한다(기법/내담자 상태/슈퍼바이저 논평). +학습 신호 오염을 막기 위해 **3개의 독립 축으로 분리**한다. 이것이 평가 AI 정답셋과 페르소나 +상태전이 정답의 단일 원천이다. + +- **3축 분리**: (A) 기법 태그(상담자 발화) · (B) 내담자 상태 태그(내담자 발화) · (C) 슈퍼바이저 논평(둘 다). +- **위계**: 기법은 5개 군집(category) 아래에 둔다 → 분포·과다/과소 집계·리뷰 게이지 축. +- **복수 부착**: 한 발화에 기법·상태·논평이 각각 여러 개 붙을 수 있다. +- **부착 규칙**: 기법은 상담자 발화에만, 상태는 내담자 발화에만(코드에서 강제, `Annotation.__post_init__`). +- **원본 미적재**: 0615 원문(미성년·자살사고)은 절대 적재하지 않는다. 예시는 합성 변형(`source="0615_synthetic"`). + +## 1. 회기 단계 (Stage) + +결정론 상태머신이 소유(LLM 아님). 발화는 발화 시점의 단계를 단일 값으로 기록한다. + +| code | 단계 | 정의 | +|---|---|---| +| `라포` | 라포 형성 | 안전감·관계 구축, 비밀보장 구조화, 비자발성 완화 | +| `탐색` | 탐색 | 호소문제·정서·인지·위험요인(자살/자해) 탐색 | +| `개입` | 개입 | 직면·해석·인지재구성·교정적 정서체험 | +| `정리` | 정리 | 요약·과제·다음 회기 연결·종결 | + +## 2. 화자 (Speaker) + +| code | 화자 | 0615 대응 | +|---|---|---| +| `counselor` | 상담자(수련생/상담사 AI) | "상N" | +| `client` | 내담자(가상내담자 AI) | "내N" | + +## 3. (A) 기법 라벨 (Technique) — 상담자 발화 + +> 각 라벨: **조작적 정의**(무엇을 했을 때 부착하는가) + **0615 예시**(실제 파랑 라벨에서 정규화). + +### 3.1 RELATIONAL (관계 형성) + +| code | 한글 | 조작적 정의 | 0615 표면 라벨 예시 | +|---|---|---|---| +| `empathy` | 공감 | 내담자의 감정·입장을 정확히 알아차리고 그대로 되돌려, "이해받고 있다"를 전달 | "공감" / "한숨이 무겁게 느껴지네요" | +| `reflection` | 반영 | 내담자 발화·비언어의 핵심(정서/내용)을 거울처럼 재진술 | "반영", "정서 반영", "내담자의 반응을 반영함" | +| `validation` | 타당화 | 내담자의 감정·반응이 그 상황에서 자연스럽고 정당함을 인정 | "타당화", "감정 노출의 타당화" | +| `holding` | 홀딩 | 침묵·머뭇거림을 재촉 없이 견디며 안전한 공간을 유지(기다려 줌) | "홀딩", "탐색과 홀딩" | +| `self_disclosure` | 자기공개 | 상담자 자신의 정보·경험·마음을 라포 목적으로 적절히 개방 | "라포형성을 위한 상담자의 자기 개방" | +| `affect_conveyance` | 정서 전달 | 내담자를 향한 상담자 자신의 정서·태도를 명시적으로 전달 | "상담자의 정서 전달" | +| `humor` | 유머 | 무거운 분위기를 가볍게 만들어 참여를 촉진(상황·관계 고려) | "유머" | + +### 3.2 EXPLORATORY (탐색) + +| code | 한글 | 조작적 정의 | 0615 표면 라벨 예시 | +|---|---|---|---| +| `exploration` | 탐색 | 경험·맥락·의미를 더 드러내도록 묻거나 머무름 | "탐색", "탐색질문" | +| `facilitative_question` | 촉진질문 | 내담자가 더 말하도록 여는 개방형/참여 촉진 질문 | "촉진", "참여 촉진 질문" | +| `risk_assessment` | 위험사정 | 자살/자해/타해 위험 요인·경험·계획을 직접 탐색 | "위험요인 탐색", "자해 위험 및 경험 탐색" | +| `consent_motivation_check` | 동의·동기 확인 | 상담 동의·문제의식·변화 동기 수준을 확인 | "동의확인, 동기수준 확인" | +| `opinion_check` | 의견 확인 | 내담자의 생각·반응·주호소를 되짚어 확인 | "내담자 의견 확인", "주호소 문제 재확인" | + +### 3.3 INTERVENTION (개입) + +| code | 한글 | 조작적 정의 | 0615 표면 라벨 예시 | +|---|---|---|---| +| `confrontation` | 직면 | 내담자 발화·행동의 불일치/모순을 근거와 함께 마주하게 함 | "기초자료를 활용하여 반응의 불일치에 직면시킴" | +| `interpretation` | 해석 | 표면 너머의 의미·동기·패턴을 가설로 제시 | "모순의 의미를 해석함", "비언어적 자극 해석", "행동의 재해석" | + +### 3.4 STABILIZING (안정/지지) + +| code | 한글 | 조작적 정의 | 0615 표면 라벨 예시 | +|---|---|---|---| +| `stabilization` | 안정화 | 각성·정서를 진정시켜 안전 범위로 되돌림 | "안정화" | +| `hope_instillation` | 희망고취 | 변화 가능성·욕구를 비추어 희망을 불어넣음 | "동기부여, 희망고취", "희망 고취, 욕구 반영" | +| `reinforcement` | 강화 | 바람직한 개방·시도를 인정·격려해 지속을 촉진 | "강화" | +| `normalization` | 정상화 | 반응(감정 노출 등)을 보편적 경험으로 정상화 | "감정 반응을 노출하는 것을 정상화함" | + +### 3.5 STRUCTURING (구조화) + +| code | 한글 | 조작적 정의 | 0615 표면 라벨 예시 | +|---|---|---|---| +| `principle_explanation` | 상담원칙 설명 | 비밀보장·예외 등 상담 원칙·틀을 안내 | "상담원칙에 대한 설명", "비밀보장 제외 원칙 설명" | +| `psychoeducation` | 심리교육 | 보편적 교범·정보를 주관적 해석과 구별해 전달 | "보편적 교범 전달, 주관적 해석과 구별" | +| `homework` | 과제 부여 | 회기 간 실천 과제를 이해 가능하게 제시·확인 | "다음 회기까지 해 와야 하는 과제 설명" | + +## 4. (B) 내담자 상태 태그 (ClientState) — 내담자 발화/비언어 + +> 페르소나 저항 엔진의 상태전이 정답 + 평가 AI '반응 읽기' 채점 근거. + +| code | 한글 | 조작적 정의 | 0615 표면 라벨 예시 | +|---|---|---|---| +| `involuntary` | 비자발적 태도 | 단답·회피·거부 등 상담에 비자발적 신호 | "(아니오)는 비자발적 태도", "(쓴웃음)은 비자발적 태도" | +| `defensive` | 방어 | 주제 회피·차단·거리두기 | "방어", "부모자녀 관계에 대한 방어적 태도" | +| `suicidal_ideation_admit` | 자살사고 인정 | 자살/죽음 생각을 직간접 인정(★안전 핵심) | "자살사고 인정" | +| `negative_self_perception` | 부정적 자기인식 | 자기에 대한 부정·평가절하 표현 | "부정적 자기인식" | +| `conflicted` | 갈등 상태 | 양가·상충하는 욕구/감정 사이의 갈등 | "갈등 상태" | +| `lack_of_confidence` | 확신 부족 | 자신감/확신의 결여 표현 | "확신의 부족" | +| `affect_contact` | 정서 접촉/표현 | 자기 감정에 접촉하고 표현하기 시작 | "정서와 접촉함", "정서와 사고의 표현" | +| `thought_organizing` | 생각 정리 | 침묵 속에서 자기 생각을 정리 중 | "생각을 정리함" | +| `responds_to_exploration` | 탐색에 반응 | 상담자 탐색에 응답·협조 | "상담자의 탐색에 반응함" | +| `expresses_plan` | 계획/욕구 표현 | 자기 계획·욕구·바람을 표현 | "자신의 계획을 표현함" | +| `defense_loosening` | 방어 완화 | 누적된 반영/탐색으로 방어가 서서히 풀림(진전 신호) | "방어가 서서히 풀어지고 있음" | + +## 5. (C) 슈퍼바이저 논평 (SupervisorComment) + +2종으로 분리한다. critique 는 `intent_deviation`(의도 vs 실제)을 구조화한다(윤찬: 1급 시민). + +| kind | 정의 | 0615 예시 | +|---|---|---| +| `rationale` | 왜 이 반응이 적절한가 — 근거·의도 설명 | "비자발적 내담자의 초기 상담에서는 상담자의 적극적인 안내가 필요함" | +| `critique` | 개선점·주의 — 과도/부족/평가적 시각 등 | "과도한 자기개방일 수 있음", "비언어적 반응의 반영이 더 되었으면 좋았을 것임", "평가적인 시각을 줄 수 있음" | + +`critique` 선택 필드: `dimension`(평가 차원) · `expected`(권장 의도) · `actual`(실제) · `severity`(minor/moderate/major) · `author`(ai/supervisor). + +## 6. 발화 Annotation 스키마 (golden 단위) + +`docs/golden_schema.jsonl` 한 줄 = `Annotation` 하나. README JSONL 스키마를 3축 분리로 격상. + +```jsonc +{ + "utterance_id": "0615-C-001", // 화자(C=상담자/K=내담자)+seq 인코딩 + "speaker": "counselor", // counselor | client + "stage": "라포", // 라포 | 탐색 | 개입 | 정리 + "seq": 0, // 회기 내 발화 순서(0-based) + "text": "…", // 발화 텍스트(합성 변형, 원문 미적재) + "techniques": ["self_disclosure"], // (A) 상담자 발화만 + "client_states": [], // (B) 내담자 발화만 + "comments": [{"kind": "rationale", "text": "…", "author": "ai"}], // (C) + "nonverbal": ["(쓴웃음)"], // 비언어 단서 원문 표기(상태판정 보조) + "source": "0615_synthetic" // provenance +} +``` + +## 7. DB 코드테이블 동기화 + +`MASTERPLAN.md` §3.2 코드테이블에 enum `value`(code)를 적재, 다대다 연결. + +| taxonomy 축 | DB 코드테이블 | 다대다 연결 | label_id 참조 | +|---|---|---|---| +| `Technique` | `technique_label_def(code, category, ko)` | `turn_technique(turn_id, label_id)` | `kb.chunk.label_id` | +| `ClientState` | `client_state_def(code, ko)` | `turn_client_state(turn_id, label_id)` | — | +| `Stage` | `stage_def(code)` | `turns.stage` | — | +| `SupervisorComment` | `supervisor_comment(turn_id, kind, text, intent_deviation JSONB)` | (1:N) | — | + +> 라벨 추가 시: enum 에 append → `technique_label_def` seed → `TAXONOMY_VERSION` minor++. 기존 code 변경 금지(골든셋 재현성).