---
title: "핸드오프 — 어드민 콘솔 v0.1 / CS 확장 현재 상태"
category: "handoff"
document_type: "핸드오프"
source_status: "generated"
knowledge_group: "03_history"
priority: "High"
purpose: "새 Claude Code 컨텍스트가 어드민 콘솔 v0.1(애널리틱스+CS) 작업을 즉시 이어받기 위한 인계. 완료/진행/잔여, 브랜치·커밋·배포 상태, 설계 결정, 사용자 선호, 주의사항, 이슈/해결/미해결, 다음 추천 작업을 기록."
read_when: ["최신상태복구","어드민콘솔","CS","핸드오프","베타준비"]
updated: "2026-06-06"
work_timestamp: "20260606_204600"
context: "달록본레포CC (D:\\dallog\\dallog_git) — 어드민 콘솔 v0.1 인계"
source_of_truth: "https://dallog-tools.hansbridge.co.kr/knowledge/"
---

# 핸드오프 — 어드민 콘솔 v0.1 / CS 확장

## 0. 한 줄 상태
어드민 콘솔 v0.1(애널리틱스 + CS) **코드·Worker 배포 완료, main 머지(PR#39·#40)**. 남은 1가지는 **support_ticket 마이그레이션 사용자 적용** + 실 OAuth 로그인 라이브 검증.

## 1. 완료
- 마스터 전용 `/admin` 탭 콘솔(애널리틱스/유저/컴플레인) + 인앱 `/support` 문의.
- CS: 유저 리스트·플랜 부여/박탈/조정·코칭 회(토큰) 보정·컴플레인 보드·1차 자동분류.
- service_role admin Worker(집계+CS 엔드포인트) **배포 완료**, chat-proxy **재배포 완료**(gemini-2.5-flash).
- 빌드 PASS, MCP 5화면 검증(샘플), 마스터 게이트 동작.

## 2. 진행/잔여
- ⏳ `migrations/2026-06-06_admin_cs.sql` Supabase 적용(사용자) → 컴플레인·인앱 문의 실동작.
- ⏳ 운영자 구글 로그인 상태 라이브 검증(현재 자동화 브라우저는 로컬 마스터 세션이라 Worker 401→샘플 폴백).
- 후속: AI 자동분류 LLM 고도화, 퍼널 중간단계·가드레일·리텐션 계측, 개인정보(생일·성별) 동의 수집 확장.

## 3. 브랜치 · 커밋 · 배포
- main 머지: PR#39(`4f705ad`), PR#40(`c555a11`). 핵심 커밋 `a7284a7`·`abc9430`·`b932760`.
- Worker: `dallog-admin-analytics`(집계+CS, service_role), `dallog-chat-proxy`(gemini-2.5-flash). 둘 다 `ccy4848` 계정 배포.
- 프론트 env: `VITE_ADMIN_ANALYTICS_URL` 미설정 시 코드 기본 URL 사용(공개 URL 하드코딩).

## 4. 변경 파일(요지)
- 신규: `src/pages/Admin.tsx`·`Support.tsx`, `src/components/admin/*`, `src/lib/admin/{analytics,api}.ts`, `src/lib/support.ts`, `workers/admin-analytics/*`, `migrations/2026-06-06_admin_cs.sql`.
- 수정: `App.tsx`·`Layout.tsx`·`admin.css`·`workers/chat-proxy/*`. 삭제: `AdminAnalytics.tsx`.

## 5. 설계 결정 (건드리면 안 되는 것)
- **service_role 키는 Worker 안에서만.** 프론트 직접 RLS 우회·키 노출 금지.
- 어드민 쓰기(플랜/토큰/문의상태)는 전부 Worker 경유. 마스터 검증(OWNER_EMAILS)·감사로그(admin_action_log) 유지.
- 잔여 회 = `coach_entitlement.granted_turns - used_turns`. 토큰 보정 = granted_turns 증감.
- AI 자동분류는 ai_* 컬럼 구조 유지(키워드 스텁 → LLM 교체 시 동일 구조).

## 6. 사용자 선호
- 비개발 전공 → 평어 해설 병기 필수. 과도한 설계 문서보다 **작동 프로토타입 먼저** 보고 보완 지시.
- "논스톱"·"커밋 푸시 머지까지 다 진행" 지시 시 중간 컨펌 없이 끝까지(결정은 기록).
- 단일 레포 유지(별도 어드민 레포 금지). 배포만 분할.

## 7. 이슈 / 해결 / 미해결
- [해결] admin Worker 껍데기(405) → 실코드 wrangler 배포(401 확인).
- [해결] chat-proxy GEMINI_MODEL 미인식 → 코드가 alias 인식 + wrangler.toml 기본 모델 flash 진본화.
- [해결·업데이트 20260606_2130] **dallog-chat-proxy 워커가 brief 코드 서빙(1차 배포 미반영) → 재배포로 해소. gemini-2.5-flash 실응답 200 확인 = AI 코치 백엔드 라이브 확정.** brief 본진(dallog-brief-proxy)도 gpt-5.4-mini 정상 확인.
- [해결] support_ticket SQL 적용 완료(사장님) → 컴플레인/문의 동작 가능.
- [미해결] profile_publications SQL 미적용 → 저장 쿼리 "[필수보존]프로필공개 스냅샷_260602" Run 1회(멱등성).
- [관측] 자동화 브라우저 로컬 마스터 세션 → 어드민 실데이터 화면 검증은 실 OAuth 로그인 필요(백엔드·배선은 검증됨).

## 8. 다음 추천 작업
1. support_ticket SQL 적용 후 운영자 로그인 → /admin 실데이터·실유저·실문의 검증·스크린샷.
2. AI 자동분류 LLM 연동(chat-proxy) + 자동해결 분기.
3. 퍼널/리텐션/가드레일 계측 이벤트 로깅.
4. 베타 트랙(플레이스토어 TWA) 준비와 병행.
