# InsuRo AI 콘텐츠 생성 — 자동 저장 (히스토리 자동 기록)

## 작업 레벨: Lv.1

## 프로젝트
- InsuRo: `/home/jay/projects/InsuRo`
- 서버: `/home/jay/projects/InsuRo/server`

## 문제
AI 콘텐츠 생성 후 사용자가 수동으로 "저장" 버튼을 눌러야 히스토리에 저장됨. 저장 안 누르면 생성 결과가 사라짐.

## 수정 사항

### 1. 서버: 생성 완료 시 자동으로 contents 테이블에 저장
`server/main.py` — `_save_and_run()` 함수 (약 1160-1203줄):

현재 코드에 이미 자동 저장 시도가 있지만, `model_used`와 `skills` 컬럼이 contents 테이블에 없어서 INSERT 실패 → `except Exception: pass`로 무시됨.

**수정:**
```python
# 기존 — 존재하지 않는 컬럼 포함
sb.table("contents").insert({
    "user_id": user_id,
    "content_type": requested_channel,
    "topic": req.topic,
    "content": result_text,
    "model_used": cli_model,  # ← 이 컬럼 없음
    "skills": filtered_skills,  # ← 이 컬럼 없음
}).execute()

# 변경 — 존재하는 컬럼만 사용
sb.table("contents").insert({
    "user_id": user_id,
    "title": (req.topic or "")[:50] + ("..." if len(req.topic or "") > 50 else ""),
    "content_type": requested_channel,
    "topic": req.topic,
    "content": result_text,
}).execute()
```

- `title` 필드 추가 (필수 NOT NULL): topic 앞 50자 사용
- `model_used`, `skills` 제거 (테이블에 컬럼 없음)
- `except Exception: pass`를 `except Exception as e: logger.error(f"콘텐츠 자동저장 실패: {e}")`로 변경 (디버깅용)

### 2. 프론트엔드: 수동 "저장" 버튼 역할 변경
`src/pages/Generate.tsx`:

- 생성 결과가 나오면 **자동으로 저장됨** (서버에서 처리)
- 기존 "저장" 버튼(handleSave) → **"히스토리에서 보기"** 또는 제거
- 중복 저장 방지: 서버에서 이미 저장했으므로 프론트에서 다시 저장하지 않도록
- 또는: 서버 자동 저장이 성공하면 프론트 "저장" 버튼 비활성화 + "저장됨 ✓" 표시

### 3. 자동 저장 후 content_schedules 등록
서버 _save_and_run()에서 contents INSERT 성공 시:
```python
# 캘린더에도 자동 등록
content_id = insert_result.data[0]["id"]
sb.table("content_schedules").insert({
    "user_id": user_id,
    "content_id": content_id,
    "title": title,
    "content_type": requested_channel,
    "scheduled_date": datetime.now().strftime("%Y-%m-%d"),
    "status": "completed",
}).execute()
```

## affected_files
- `server/main.py` (수정 — _save_and_run 자동 저장 수정)
- `src/pages/Generate.tsx` (수정 — 저장 버튼 로직 변경)

## 검증 시나리오
1. Threads 채널 → 주제 입력 → "콘텐츠 생성하기" 클릭 → 결과 표시
2. 별도로 "저장" 누르지 않고 콘텐츠 관리 히스토리 페이지로 이동 → 방금 생성한 콘텐츠가 표시됨
3. 콘텐츠 캘린더에도 오늘 날짜로 기록됨
4. 중복 저장 없음 (히스토리에 같은 콘텐츠 2개 안 뜸)
5. npm run build 성공
6. 서버 curl 테스트: generate-content → contents 테이블에 자동 INSERT 확인
