LAUNCH 체크리스트 + Ai::CopyGeneratorService — Launch 컨트롤러 + 카피 생성 + 테스트
ID: b8b914c2-ed20-4825-a539-1cabed036787
## 목표
Launch 네임스페이스. 출시 준비 체크리스트 UI. AI 카피 생성기 (landing_headline, landing_subcopy, landing_cta).
## 현재 상태
- Launch::HomeController 스텁 (index)
- Launch::ChecklistsController 스텁 (show, update)
- Launch::CopyGeneratorsController 스텁 (show, create)
- 라우트: `namespace :launch { get "/", to: "home#index"; resources :projects, only: [] do resource :checklist, only: [:show, :update]; resource :copy_generator, only: [:show, :create] end }`
- Project: landing_headline, landing_subcopy, landing_cta 필드 존재
- Ai::IdeaAnalyzerService/BlueprintGeneratorService 패턴 참고
## 구현 사항
### 1. Launch::ChecklistsController
```ruby
def show
@project = Current.user.projects.find(params[:project_id])
@checklist = build_checklist(@project)
end
def update
# 체크리스트 상태는 프로젝트 필드 기반으로 계산 (별도 DB 불필요)
redirect_to launch_project_checklist_path(@project)
end
```
**체크리스트 항목** (프로젝트 데이터 기반 자동 판단):
- [ ] 아이디어 분석 완료 (one_line_definition 존재)
- [ ] 설계도 생성 완료 (tech_stack 존재)
- [ ] CLAUDE.md 생성 완료 (claude_md_content 존재)
- [ ] 빌드 단계 50% 이상 완료 (completion_percentage >= 50)
- [ ] 랜딩 카피 생성 완료 (landing_headline 존재)
- [ ] 서비스 URL 등록 (service_url 존재)
### 2. Ai::CopyGeneratorService
```ruby
class Ai::CopyGeneratorService
def initialize(project:, user:)
@project = project
@user = user
@client = Anthropic::Client.new(api_key: ENV["ANTHROPIC_API_KEY"])
end
def call
response = @client.messages(model: "claude-sonnet-4-6", max_tokens: 1000, system: system_prompt, messages: [{ role: "user", content: user_prompt }])
data = JSON.parse(response.content.first.text.strip)
@project.update!(landing_headline: data["headline"], landing_subcopy: data["subcopy"], landing_cta: data["cta"])
end
private
def system_prompt = "VALUEIT 랜딩 카피 전문가. JSON만 응답. 한국어."
def user_prompt
"서비스: #{@project.one_line_definition}\n타겟: #{@project.target_customer}\n수익모델: #{@project.revenue_model}\n\nJSON: {\"headline\": \"...\", \"subcopy\": \"...\", \"cta\": \"...\"}"
end
end
```
### 3. Launch::CopyGeneratorsController
- show: 카피 결과 표시 (있으면) / 생성 버튼
- create: CopyGeneratorService 호출 (동기 또는 Job) → redirect
### 4. Launch::HomeController
- index: 프로젝트 목록 + 각 프로젝트의 체크리스트 진행률
### 5. 뷰
- checklist/show: 체크리스트 항목 (자동 판단, 읽기 전용 체크마크)
- copy_generator/show: headline, subcopy, cta 표시 + 재생성 버튼
- home/index: 프로젝트별 출시 준비 상태
- 다크 테마, 기존 Partial
### ⚠️ 주의
- launch/ + services/ai/ 범위만 (developer-1은 services/toss/ 작업 중)
- IdeaAnalyzerService 패턴과 일관성 (DI, JSON strip, 에러 처리)
- 소유자 접근제어
### 테스트
- ChecklistsController: show (체크리스트 항목 표시)
- CopyGeneratorsController: show, create (API mock)
- CopyGeneratorService: 카피 생성 + 프로젝트 업데이트
### 완료 기준
- 체크리스트 항목 자동 판단 표시
- AI 카피 생성 동작
- 생성 카피 프로젝트 저장
- bin/rails test 전체 통과
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
Ddeveloper-2 상태 변경: 할 일 → 리뷰
2026년 03월 26일 11:31:37