# Agent 미팅: 금소법 면책동의 UX 개선

**날짜**: 2026-04-24
**소집 이유**: AI 콘텐츠 작성 페이지에서 금소법 면책동의 체크박스가 고급옵션 안에 숨어있어 유저가 찾지 못하는 UX 문제
**참여 페르소나**: 미미르, 로키, 펜리르, 마아트, 야누스, 비너스, 아틀라스, 프로메테우스
**미팅 모드**: hybrid
**토론 깊이**: thorough
**총 사이클 수**: 3

---

## Cycle 1 — Independent 라운드

### 페르소나 의견

**미미르 (UX)**: D안 지지 — 빠른 선택 직후 인라인 배너가 인과관계상 자연스러움. 동의 요청은 의무 발생 시점과 동일 위치에.
- 생성 버튼 비활성화로 누락 방지
- A/B: 맥락 없는 법률 경고로 스킵됨, C: 워크플로우 단절

**로키 (보안)**: C안 지지 — 모달이 "인지 후 동의" 입증 최강. 관성 클릭 방지.
- 동의 로그(타임스탬프 + 해시) 남기기 용이
- 비관습적 대안: 체크박스 + 3초 딜레이

**펜리르 (Pentester)**: UX보다 서버 검증 핵심. 어떤 배치든 클라이언트 체크박스는 JS 1줄로 우회 가능. 서버 바인딩 필수.

**마아트 (QC)**: D안 지지 — 오류 가능성 최저, 테스트 용이성 최고. C는 팝업 피로 + E2E 복잡도.

**야누스 (DevOps)**: 위치 이동/모달 모두 구현 복잡도 낮음. feature flag 래핑 필수.

**비너스 (디자인)**: D안 지지 — F-pattern 시선 흐름에 자연스러움. amber 배너 + 방패 아이콘. 스킵 불가 시각 무게.

**아틀라스 (Codex)**: 골든패스(showAdvanced+스크롤) 비관습적 대안. 코드 1줄 변경.

**프로메테우스 (전략)**: D안 변형 지지 — 첫 진입 1회 확장, 이후 축소. "번거롭지 않은 컴플라이언스"가 경쟁사 대비 UX 무기.

### 투표: D 4표 / C 1표 / E 1표 / 무관 2표

---

## Cycle 2 — Sequential 심화

### 미미르 수정안
- 반복 사용자: 1회 동의 후 30일 세션 저장
- 고급옵션 내 직접 filter 변경 시에도 동의 체크박스 표시
- 서버 검증 필수: API 호출 시 동의 타임스탬프 DB 검증

### Devil's Advocate (로키)
1. **실패 시나리오**: 30일 쿠키 불안정 — 브라우저 변경/시크릿 시 재등장 피로. 서버-클라이언트 불일치.
2. **후회 이유**: 3레이어(인라인+고급옵션+서버) 유지보수 지옥. 규제 변경 시 3곳 동기화 누락.
3. **더 단순한 대안**: 서버 기본값 ON + 해제를 계정 설정으로 격상.

### 반박 (미미르+프로메테우스)
1. 수정: 로그인 유저는 DB 우선, 쿠키는 비로그인 폴백만
2. 수정: 동의 판단 로직을 단일 함수(`getConsentStatus()`)로 중앙화
3. 부분 인정: 서버 기본값 ON은 명시적 Opt-in 규제 위반 가능. 계정 설정 격상은 수용.

**판정**: 반박 수용. 설계 수정 반영.

---

## Cycle 3 — 비관습적 대안 평가

### 아틀라스 "골든패스 인터셉트"
- handleGenerate에서 미동의 시 showAdvanced=true + 스크롤
- 최강 지지: 코드 변경 최소(1줄)
- 최강 반론: UX 혼란(의도치 않은 화면 이동), 서버 검증 부재
- 노력 수준: Lv.1
- 리스크 등급: 중-고 (컴플라이언스 요건 미달)

**판정**: 기각 — 서버 검증 부재로 요건 불충족

---

## 최종 합의 사항

### 1. D안 수정본 채택 (만장일치)

**UI 변경:**
- 콘텐츠 유형 빠른 선택(블로그/SNS/제안서) 아래에 인라인 배너+체크박스 배치
- complianceFilter가 "basic"/"full"로 활성화될 때만 슬라이드다운으로 표시
- 디자인: 옅은 amber 배경 + 방패 아이콘, 1줄 요약 + "전문 보기" 토글
- 체크 전까지 "콘텐츠 생성하기" 버튼 비활성화 (툴팁: "면책 동의 후 생성 가능")

**동의 저장:**
- 로그인 유저: DB에 동의 타임스탬프 저장 (최초 1회 동의 후 30일 유효)
- 비로그인 유저: 쿠키 폴백
- DB-클라이언트 불일치 시 DB 우선

**고급옵션 내 커버리지:**
- 고급옵션에서 직접 filter 변경 시에도 동의 체크박스 인라인 표시

**동의 로직 중앙화:**
- `getConsentStatus()` 단일 함수로 중앙화
- 배너, 고급옵션, 서버 모두 이 함수만 참조

**서버 검증:**
- 콘텐츠 생성 API 요청 시 동의 여부 DB 확인
- 미동의 시 400 거부 + 명확한 에러 메시지

### 2. 고급옵션 내 금소법 섹션은 현재 위치 유지
- 필터 모드 변경(전체/기본/끄기), 개인 규정 등 상세 설정은 고급옵션에 잔류

### 3. Feature flag 래핑
- 배포 시 feature flag로 ON/OFF 가능하게

## 미해결 항목
- 서버 측 동의 API 엔드포인트 설계 (기존 API에 필드 추가 vs 별도 엔드포인트)
- 동의 유효기간 30일의 적절성 (법무 검토 필요)
- 비로그인 유저 대응 정책 (현재 비로그인으로 콘텐츠 생성 가능한지 확인)

## 다음 단계
- 위임 태스크 파일 작성 → 팀 배정 → 구현
