AI 뷰 강화
Doggy는 AI 기반 뷰 강화 시스템을 제공하며, 의도 인식 메인 Agent + 6개 시나리오 서브 Agent를 통해 자연어 요구를 자동 분류하고 해당 서브 Agent로 라우팅하여 뷰를 생성하며, 비동기 작업 실행과 실시간 진행률 푸시를 지원합니다.
개요
AI 뷰 강화 시스템은 src/Service/AI/Orchestrator/에 있으며 LlmRole/LlmProvider 체계 기반으로 구축됩니다:
사용자 요구 (자연어)
→ IntentAgent (의도 인식 메인 Agent)
→ FormViewSubAgent 폼 뷰
→ InfoViewSubAgent 정보 표시 뷰
→ ReportViewSubAgent 보고서 뷰
→ LandingViewSubAgent 랜딩 페이지 뷰
→ EmailViewSubAgent 비즈니스 이메일 뷰
→ GeneralViewSubAgent 범용 뷰아키텍처
의도 인식 메인 Agent
IntentAgent는 LLM을 통해 사용자 요구의 의도 유형을 판단하고 해당 서브 Agent로 라우팅합니다:
php
// src/Service/AI/Orchestrator/IntentAgent.php
class IntentAgent
{
public function classify(string $userMessage): string
{
// 의도 유형 반환: form / info / report / landing / email / general
}
}시나리오 서브 Agent
각 서브 Agent는 AbstractViewSubAgent를 상속하며 ViewSubAgentInterface를 구현합니다:
| 서브 Agent | 의도 | 시나리오 |
|---|---|---|
FormViewSubAgent | form | 폼 페이지 |
InfoViewSubAgent | info | 정보 표시 페이지 |
ReportViewSubAgent | report | 보고서/통계 페이지 |
LandingViewSubAgent | landing | 랜딩/마케팅 페이지 |
EmailViewSubAgent | 비즈니스 이메일 | |
GeneralViewSubAgent | general | 범용 페이지 |
비동기 작업
뷰 강화는 Symfony Messenger를 통해 비동기로 실행되어 요청 차단을 방지합니다:
php
// src/Message/EnhanceViewMessage.php
class EnhanceViewMessage
{
public function __construct(
public readonly string $viewId,
public readonly string $prompt,
) {}
}EnhanceViewMessageHandler가 처리 후:
AiViewEnhanceTask생성으로 작업 상태 기록- 서브 Agent 호출로 뷰 생성
AiOperationLog업데이트로 작업 기록- Mercure를 통해 작업 진행률 푸시
실시간 진행률
Mercure SSE 기반 AI 작업 진행률 푸시, 프론트엔드는 EventSource로 구독:
javascript
const url = new URL('/.well-known/mercure', window.location.origin);
url.searchParams.append('topic', `/user/${userId}/ai-task`);
const eventSource = new EventSource(url);
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
// 작업 진행률 업데이트
};엔티티 모델
| 엔티티 | 설명 |
|---|---|
AiChatSession | AI 세션(요청 간 컨텍스트 유지) |
AiChatMessage | 세션 메시지 |
AiOperationLog | AI 작업 로그 |
AiViewEnhanceTask | 뷰 강화 작업 상태 |
호출 흐름
사용자가 뷰 생성/편집
→ 자연어 요구 입력
→ POST /api/admin/platform/view-ai-task
→ IntentAgent가 의도 분류
→ 서브 Agent로 라우팅
→ 비동기 실행 (EnhanceViewMessage)
→ 뷰 파일 생성
→ Mercure로 진행률 푸시LLM 설정
DeepSeek 모델의 심층 사고 모드와 추론 강도 조절을 지원합니다:
bash
# .env
DEEPSEEK_MODEL_ID=deepseek-reasoner
DEEPSEEK_REASONING_EFFORT=medium # low / medium / high뷰 편집기 통합
AI 강화 컴포넌트는 뷰 생성 페이지(_ai_enhance_component.html.twig)에 통합되었습니다:
- 뷰 생성 시 AI 보조 편집
- 뷰 상세 페이지의 강화 작업(
view_detail.html.twig) - 뷰 삭제 확인 다이얼로그
관련 파일
| 파일 | 역할 |
|---|---|
IntentAgent.php | 의도 인식 메인 Agent |
ViewEnhanceAgentOrchestrator.php | 강화 오케스트레이터 |
ViewSubAgentChatRouter.php | 서브 Agent 대화 라우팅 |
AbstractViewSubAgent.php | 서브 Agent 추상 베이스 클래스 |
EnhanceViewMessage.php | 비동기 작업 메시지 |
EnhanceViewMessageHandler.php | 비동기 작업 핸들러 |
ViewAiTaskApiController.php | AI 작업 API |
AiViewEnhanceTask.php | 작업 상태 엔티티 |