- 2-pass 보정 후 각 step의 좌표 영역을 원본에서 크롭하여 Gemini 검증
- 크롭에 패딩 확장 (30% 또는 최소 80px) + 최소 크롭 200x150px 보장
- 빨간 사각형으로 타겟 영역 표시하여 false positive 방지
- 재추정 실패 시 그리드 오버레이 이미지로 3차 재시도
- _verification 메타데이터에 crop_verified, crop_corrected 추가
- PASS율: 37.5% → 100% (FAIL 5 → 0)
- ScreenAnalysisService: Gemini 프롬프트에 UI 타입별 최소 크기 가이드라인 추가
- ScreenAnalysisService: normalizeCoordinates에 타입별 최소크기 보정 + 1.5% 패딩
- SlideAnnotationService: STEP 배지 1/2 축소 (300x76→150x38)
- SlideAnnotationService: 이중 테두리 (안쪽 흰색 + 바깥 빨간색) 적용
- SlideAnnotationService: 번호 마커 위치를 테두리 바깥으로 이동
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 10x10 그리드 오버레이를 스크린샷에 그려서 Gemini에 전송
(가로 0~9, 세로 A~J 라벨로 AI에게 시각적 참조점 제공)
- 좌표계를 0~1 소수 → 0~1000 정수로 변경 (AI 추정 정확도 향상)
- ERP 화면 기준 좌표 예시 추가 (사이드바, 헤더, 테이블 등)
- normalizeCoordinates()로 1000좌표 → 0~1 비율 자동 변환
- 범위 클램핑으로 비정상 좌표 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ScreenAnalysisService: Gemini 프롬프트를 멀티스텝(3~5 steps) 출력으로 변경 + 하위 호환 fallback
- SlideAnnotationService: 스포트라이트 효과(annotateSlideWithSpotlight), 인트로/아웃트로 슬라이드 생성
- TutorialVideoJob: screen→steps 중첩 루프 + 인트로/아웃트로 씬 추가
- index.blade.php: 단계별 나레이션 편집 UI + 예상 시간 표시
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TutorialVideo 모델 (상태 관리, TenantScope)
- GeminiScriptService에 callGeminiWithParts() 멀티모달 지원 추가
- ScreenAnalysisService: Gemini Vision 스크린샷 AI 분석
- SlideAnnotationService: PHP GD 이미지 어노테이션 (마커, 캡션)
- TutorialAssemblyService: FFmpeg 이미지→영상 합성 (crossfade)
- TutorialVideoJob: 분석→슬라이드→TTS→BGM→합성 파이프라인
- TutorialVideoController: 업로드/분석/생성/상태/다운로드/이력 API
- React-in-Blade UI: 3단계 (업로드→분석확인→생성모니터링) + 이력
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>