Agent Treatment Flow Flowise 구현 전략
1. 개요
Agent Treatment Flow 도메인의 P1-P5 프로세스와 10가지 핵심 Agent 메시지를 dta-wide-agent-flow(Flowise fork)로 구현하는 단계별 전략을 정의합니다.
Flowise를 "플로우 오케스트레이션"의 핵심으로 활용하면서, 부족한 기능은 별도 지원 시스템으로 보완하는 하이브리드 접근 방식을 채택합니다.
📁 구현 가이드: 각 프로세스의 상세 구현 방법은 별도 문서를 참고하세요.
2. 아키텍처 구조
┌─────────────────────────────────────────────────┐
│ Agent Board │
│ (Presentation) │
└──────────────────────┬──────────────────────────┘
│ (Messages/Feedback)
┌──────────────────────┴──────────────────────────┐
│ dta-wide-agent-flow (Flowise) │
│ (Orchestration & LLM Integration) │
├─────────────────────────────────────────────────┤
│ - P1-P5 Process Flows │
│ - LLM Chain Management │
│ - Decision Logic │
│ - Content Generation │
│ - Custom MCP Node Integration │
└──────────────┬───────────────┬─────────────────┘
│ │
┌─────────┴──────┐ ┌──────┴─────────┐
│ dta-wide-mcp │ │ Agent Data │
│ (MCP Server) │ │ (Data Hub) │
│ │ │ │
│ Current: │ │ - LLM Transform │
│ - Time Tools │ │ - Event Process │
│ - Log Query │ │ - Pattern Analyze│
│ - Error Analysis│ │ - Task Queue │
│ │ │ - Correlation │
│ Extended: │ │ │
│ - Sleep Tools │ │ API Endpoints: │
│ - User Tools │ │ - Context API │
│ - Q'naire Tools│ │ - Insights API │
│ - Learning Tools│ │ - Tasks API │
│ - Agent Tools │ │ │
└────────┬───────┘ └───────┬─────────┘
│ │
┌────────┴─────────────────┴─────────┐
│ dta-wide-api │
│ (Domain APIs & Events) │
└────────────────────────────────────┘
2.1 핵심 컴포넌트 역할
- dta-wide-agent-flow (Flowise): 워크플로우 오케스트레이션, LLM 통합, 시각적 플로우 관리
- dta-wide-mcp: MCP Server로 LLM에게 필요한 도구와 데이터 접근 제공, Agent Data API와 연동하여 인사이트 생성
- Agent Data: LLM 친화적 데이터 변환, 크로스 도메인 이벤트 처리, 패턴 분석, Task 큐잉, 복합 데이터 API 제공
- dta-wide-api: 각 도메인(Sleep, Learning, Questionnaire 등)의 원본 데이터와 비즈니스 로직 제공
2.2 MCP 기반 아키텍처 장점
- LLM 네이티브 통합: LLM이 MCP 프로토콜로 직접 도구 호출
- 표준화된 인터페이스: Model Context Protocol 표준 준수
- 컨텍스트 유지: LLM 세션 내에서 일관된 컨텍스트 관리
- 도구 중심 설계: Sleep, User, Questionnaire 등을 도구로 추상화
- 실시간 데이터 접근: LLM이 필요한 시점에 즉시 데이터 조회
- API 추상화: MCP가 dta-wide-api 호출을 캡슐화하여 복잡성 감소
- 타입 안전성: TypeScript 기반 도구 스키마로 안전한 도구 호출
3. 10가지 메시지 구현 가능성 분석
3.1 dta-wide-agent-flow로 직접 구현 가능 (5개)
| 메시지 유형 | 구현 방식 | 필요 노드 |
|---|---|---|
| 치료적 Task 메시지 | P4 플로우에서 직접 생성 | LLM Chain, Decision Node, Template Node |
| 나의 치료 현황 | MCP 데이터 집계 후 LLM 생성 | Custom MCP Node, LLM Chain, Aggregation Node |
| 최종 설문 분석 결과 | 설문 데이터 분석 플로우 | Analysis Chain, LLM Summary, Report Template |
| 오늘의 치료 프로그램 | 수면기록 트리거 플로우 | Event Trigger, Content Generator, Personalization |
| 수면기록 작성하기 | 조건 기반 메시지 생성 | Condition Check, Simple Template |
3.2 Flowise + 외부 시스템 연동 필요 (5개)
| 메시지 유형 | 필요한 외부 시스템 | 구현 복잡도 |
|---|---|---|
| 슬립큐 소개 | State Management System | Medium |
| 권장 취침시간 처방 | Message Queue (자정 처리) | High |
| 기상 시각 안내 | Push Notification Service + Scheduler | High |
| 취침 준비 안내 | Dynamic Scheduler + Push Service | High |
| 서비스 만료 안내 | Queue System + State Manager | Medium |
4. 단계별 구현 전략
Phase 1: 핵심 플로우 구현 및 MCP 도구 확장
목표: 핵심 기능 구현 및 필요한 MCP 도구 개발
기간: 4주
구현 대상
MCP 도구 확장
-
Sleep Tools 개발
// dta-wide-mcp에 추가될 Sleep 관련 도구들
// 수면 기록 관련
- getSleepRecords: 수면기록 조회
- 입력: userId, startDayIndex, endDayIndex
- 출력: 수면기록 배열 (취침/기상 시각, 수면의 질, TST 등)
- analyzeSleepPattern: 수면 패턴 분석
- 입력: userId, period (주간/월간)
- 출력: 평균 수면 시간, 수면 효율, 패턴 분석 결과
- getSleepStats: 수면 통계 조회
- 입력: userId, startDayIndex, endDayIndex
- 출력: 총 수면 시간, 수면 효율, SOL, WASO 등 통계
// 수면 목표 달성 관련
- getSleepGoals: 수면 목표(취침/기상 시각) 조회
- 입력: userId, targetDate 또는 dayIndex
- 출력: 목표 취침 시각(targetLOT), 목표 기상 시각(targetAET), rTIB
- getSleepGoalAdherence: 수면 목표 달성 여부 조회
- 입력: userId, targetDate 또는 dayIndex
- 출력: 취침 목표 달성 여부(lotSuccess), 기상 목표 달성 여부(aetSuccess)
- 목표 달성 기준: ±30분 이내
- getWeeklyGoalAdherence: 주간 목표 달성 통계 조회
- 입력: userId, startDayIndex
- 출력:
* 취침 목표 달성 횟수 (N/7일)
* 기상 목표 달성 횟수 (N/7일)
* 일차별 상세 달성 여부 -
User Tools 개발
// 사용자 프로필 및 설정 관련 도구들
- getUserProfile: 사용자 프로필 조회
- getUserPreferences: 사용자 선호도 조회
- getTreatmentHistory: 치료 이력 조회
- getCurrentDayIndex: 현재 치료 일차 조회 -
Learning Tools 개발
// Learning 도메인 데이터 조회 도구들
// 학습 진도 관련
- getLearningProgress: 학습 진행률 조회
- 입력: userId, userCycleId
- 출력: completedLessons, progressPercentage, lastActivityAt
- getLessonStatus: 레슨별 상태 조회
- 입력: userId, lessonId
- 출력: status (LOCKED/UNLOCKED/IN_PROGRESS/COMPLETED), completedAt
// 학습 이력 및 패턴 관련
- getLearningHistory: 상세 학습 이력 조회
- 입력: userId, startDate, endDate
- 출력: 레슨별 시작/종료 시간, 소요 시간, 완료 여부
- getLearningPattern: 학습 패턴 분석
- 입력: userId
- 출력: preferredTimeOfDay, averageSessionDuration, frequencyPerWeek
- getLearningMetrics: 학습 메트릭 조회
- 입력: userId, period
- 출력: averageDuration, completionRate, totalSessions
// 퀴즈 관련
- getQuizResponses: 퀴즈 응답 이력 조회
- 입력: userId, startDate, endDate
- 출력: 퀴즈별 응답, 정답률, 응답 시간
- getQuizAccuracy: 퀴즈 정답률 통계
- 입력: userId
- 출력: 전체 정답률, 주제별 정답률 -
Agent Data Tools 개발
// Agent Data 도메인 통합 도구들
// 종합 컨텍스트 조회
- getComprehensiveUserContext: 전체 치료 컨텍스트 조회
- 입력: userId, dateRange, includeOptions
- 출력: {
sleepPatterns: LLM 친화적 수면 패턴,
psychologicalState: 심리 상태 해석,
learningEngagement: 학습 참여도,
treatmentProgress: 치료 진행 상황,
pendingTasks: 대기 중 Task,
riskFactors: 위험 요인 분석
}
// 치료 인사이트 생성
- getTreatmentInsights: 여러 도메인 데이터 종합 인사이트
- 입력: userId, insightType ('weekly'|'daily'|'critical')
- 출력: {
patterns: 식별된 패턴들,
correlations: 도메인 간 상관관계,
recommendations: 개인화된 권장사항,
llmContext: LLM 최적화 컨텍스트
}
// Task 관리
- getPendingTherapeuticTasks: 대기 중 치료 Task 조회
- 입력: userId, priority, dateRange
- 출력: 우선순위별 Task 목록과 컨텍스트
- optimizeTaskPriorities: Task 우선순위 동적 최적화
- 입력: userId, currentContext
- 출력: 최적화된 Task 순서와 근거
// 패턴 예측
- predictTreatmentOutcome: 치료 결과 예측
- 입력: userId, predictionWindow
- 출력: {
prediction: 예상 결과,
confidence: 신뢰도,
factors: 주요 영향 요인,
recommendations: 사전 대응 권장사항
}
// 실시간 위험 감지
- detectRiskSignals: 실시간 위험 신호 감지
- 입력: userId, sensitivityLevel
- 출력: {
riskLevel: 'none'|'low'|'medium'|'high'|'critical',
triggers: 위험 트리거 요인들,
immediateActions: 즉시 필요한 조치
}
// LLM 친화적 데이터 변환
- transformToLLMFriendly: 도메인 데이터를 LLM용으로 변환
- 입력: domainData, dataType
- 출력: 자연어 해석과 컨텍스트가 포함된 데이터 -
Questionnaire Tools 개발
// Questionnaire 도메인 데이터 조회 도구들
// 설문 응답 조회
- getQuestionnaireResponses: 설문 응답 조회
- 입력: userId, roundNumber, questionnaireType
- 출력: 응답 데이터, 점수, 점수 구간
- getQuestionnaireScores: 설문별 점수 조회
- 입력: userId, questionnaireTypes[]
- 출력: { ISI: 15, PHQ9: 8, GAD7: 7, PSS: 20, DBAS16: 5.2 }
// 설문 결과 분석
- analyzeISIScore: ISI (불면증 심각도) 분석
- 입력: userId, roundNumber
- 출력: score (0-28), severity (없음/가벼움/중간/심함), feedback
- analyzePHQ9Score: PHQ-9 (우울) 분석
- 입력: userId, roundNumber
- 출력: score (0-27), level, riskLevel, recommendation
- analyzeGAD7Score: GAD-7 (불안) 분석
- 입력: userId, roundNumber
- 출력: score (0-21), anxietyLevel, clinicalSignificance
- analyzePSSScore: PSS (스트레스) 분석
- 입력: userId, roundNumber
- 출력: score (0-40), stressLevel (low/moderate/high)
- analyzeDBAS16Score: DBAS-16 (수면 신념) 분석
- 입력: userId, roundNumber
- 출력: averageScore (0-10), dysfunctionalBeliefs[]
// 설문 추이 분석
- getQuestionnaireTrajectory: 회차별 점수 변화 추이
- 입력: userId, questionnaireType
- 출력: rounds[], scores[], trends (improving/stable/worsening)
- getCumulativeResults: 누적 설문 결과
- 입력: userId, upToRound
- 출력: 모든 회차의 설문 결과 및 차트 데이터
// 설문 회차 관리
- getCurrentQuestionnaireRound: 현재 진행해야 할 설문 회차
- 입력: userId, currentDayIndex
- 출력: roundNumber, status, questionnaires[]
- getSkippedQuestionnaires: 연기된 설문 조회
- 입력: userId
- 출력: skippedRounds[], validUntil
Flowise 플로우 구현
-
P1: 초기 평가 플로우
- Day 7 트리거 설정
- 1주일 데이터 종합 분석 (Sleep, Learning, Questionnaire)
- LLM 기반 맞춤형 질문 3개 생성
- 상세 구현: P1 초기 평가 가이드
-
P2: 가설 정교화 플로우
- P1 응답 완료 트리거
- 불면증 원인 가설 수립 (Trigger, Reinforcer, Contextual)
- 가설 검증 및 우선순위 설정
- 상세 구현: P2 가설 정교화 가이드
-
P3: 치료 로드맵 플로우
- P2 완료 트리거
- 12주 개인화 치료 계획 수립
- CBT-I 모듈 선택 및 강도 설정
- 상세 구현: P3 치료 로드맵 가이드
-
P4: 일일 코칭 플로우 (치료적 Task 메시지)
- 매일 오전 8시 트리거
- 4가지 Task 유형별 템플릿 및 LLM 프롬프트 설정
- 난이도 조절 로직 구현
- 상세 구현: P4 일일 코칭 가이드
-
P5: 주간 재평가 플로우
- 매주 일요일 트리거
- 4가지 경로 결정 (SUCCESS/MISMATCH/BARRIER/CRITICAL)
- 치료 계획 동적 조정
- 상세 구현: P5 주간 재평가 가이드
-
나의 치료 현황 (통합 대시보드)
- Agent Data Tools를 통한 종합적 데이터 집계
- getComprehensiveUserContext: 전체 치료 컨텍스트 한 번에 조회
- getTreatmentInsights: 도메인 간 상관관계 분석된 인사이트
- 개별 도메인 MCP Tools로 상세 데이터 보강
- getSleepStats: 수면 통계 (평균 수면 시간, 수면 효율 등)
- getWeeklyGoalAdherence: 목표 달성률 (취침/기상 목표 준수 횟수)
- analyzeSleepPattern: 수면 패턴 변화 추이
- getLearningProgress: 학습 진도와 참여도
- getQuestionnaireTrajectory: 설문 점수 변화 추이
- LLM 기반 통합 인사이트 생성
- 도메인 간 연관성 분석 (예: 학습 참여도↓ → 수면 효율↓)
- 목표 달성률 기반 격려/조언
- 수면 패턴 개선 포인트 제시
- 심리 상태와 수면의 상관관계 설명
- 시각화 데이터 준비
- Agent Data Tools를 통한 종합적 데이터 집계
-
오늘의 치료 프로그램 안내
- 수면기록 이벤트 트리거 설정
- 개인화된 프로그램 추천 로직
- Agent Board 연동
-
최종 설문 분석 결과
- 설문 완료 이벤트 트리거
- 회차별 점수 비교 분석
- LLM 기반 종합 피드백 생성
-
수면기록 작성하기 리마인더
- 조건 기반 트리거 (당일 미작성 + 슬립큐 완료)
- 동적 메시지 생성
- 우선순위 관리
📖 Flowise 사용 방법 이해하기
Flowise는 No-Code 비주얼 플로우 빌더입니다:
- 🖱️ 드래그 앤 드롭: 노드를 캔버스에 끌어다 놓기
- 🔗 연결: 노드 간 화살표로 데이터 흐름 연결
- ⚙️ 설정: 각 노드의 속성을 GUI에서 설정
- 🚫 코드 작성 불필요: 모든 로직은 노드 설정으로 구현
📌 P1-P5 프로세스 개요
- P1 (초기 평가): 사용자의 불면증 상태를 파악하고 맞춤형 질문 생성
- P2 (가설 정교화): 불면증 원인에 대한 가설을 세우고 검증
- P3 (치료 로드맵): 개인화된 12주 치료 계획 수립
- P4 (일일 코칭): 매일 제공되는 치료적 과제와 메시지
- P5 (주간 재평가): 주간 진행 상황 평가 및 경로 조정
각 프로세스의 상세 구현 방법은 아래 개별 가이드를 참고하세요:
P1-P5 프로세스 요약
각 프로세스의 상세한 구현 방법은 별도의 가이드 문서를 참고하세요:
P1: 초기 평가 및 질문 생성
- 트리거: Day 7, 오전 9시
- 목적: 1주일 데이터 분석 후 맞춤형 질문 3개 생성
- 핵심 도구: getComprehensiveUserContext, getLearningProgress, analyzeISIScore 등
- 상세 가이드: P1 구현 가이드
P2: 가설 정교화
- 트리거: P1 질문 답변 완료 후
- 목적: 불면증 원인 가설 수립 및 검증
- 핵심 도구: getLearningHistory, analyzePatterns, getQuestionnaireScores
- 상세 가이드: P2 구현 가이드
P3: 치료 로드맵 설계
- 트리거: P2 가설 검증 완료 후
- 목적: 12주 개인화 치료 계획 수립
- 핵심 도구: determineIntensity, selectModules, configureRoadmap
- 상세 가이드: P3 구현 가이드
P4: 일일 코칭
- 트리거: 매일 오전 8시
- 목적: 4가지 유형 중 적절한 치료적 Task 생성
- 핵심 도구: getDailyLesson, getCurrentContext, generateTask
- 상세 가이드: P4 구현 가이드
P5: 주간 재평가
- 트리거: 매주 일요일 오후 6시
- 목적: 4가지 경로(SUCCESS/MISMATCH/BARRIER/CRITICAL) 중 선택
- 핵심 도구: getWeeklyStats, analyzeTrajectory, determinePathway
- 상세 가이드: P5 구현 가이드
이벤트 기반 통합 처리
도메인 이벤트 구독
Agent Treatment Flow는 다양한 도메인 이벤트를 구독하여 실시간으로 치료 전략을 조정합니다:
- Learning 이벤트: LessonCompleted, QuizAnswered, PatternChanged
- Questionnaire 이벤트: RoundCompleted, ScoreCalculated, CriticalScoreDetected
- Sleep 이벤트: RecordCreated, PatternIdentified, EfficiencyDropped
- Agent Data 이벤트: RiskDetected, PatternIdentified, TaskQueued, InsightGenerated
Agent Data의 중심 역할
Agent Data는 모든 크로스 도메인 이벤트를 수신하여:
- LLM 친화적 데이터로 변환
- 도메인 간 상관관계 분석
- 치료적 Task 생성 및 큐잉
- 2차 이벤트 발행 (위험 감지, 패턴 식별 등)
상세한 이벤트 처리 전략은 각 프로세스별 구현 가이드를 참고하세요.
Agent Data 도메인의 핵심 역할
Agent Data는 LLM을 위한 데이터 변환 허브이자 이벤트 기반 복합 데이터 처리 엔진입니다:
- LLM 친화적 데이터 변환: 도메인별 전문 용어를 자연어로 변환
- 이벤트 기반 복합 처리: 크로스 도메인 이벤트를 실시간 분석
- Task Queueing: 우선순위 기반 치료적 Task 관리
- API Endpoints: 실시간 조회 및 복합 쿼리 지원
MCP 도구의 진화된 역할
MCP는 단순 데이터 전달이 아닌 추가적인 인사이트를 제공합니다:
- getComprehensiveUserContext: 전체 치료 컨텍스트 조회 및 인사이트 생성
- predictTreatmentOutcome: 패턴 기반 치료 결과 예측
- optimizeTaskPriorities: Task 우선순위 동적 최적화
상세한 구현은 Agent Data 도메인 문서를 참고하세요.
기술 스택
flowise_nodes:
- LLM Chain Node (GPT-4)
- Custom MCP Node (dta-wide-mcp 연동)
- Conditional Logic Node
- Template Engine Node
- Webhook Node (Agent Board 연동)
agent_data_infrastructure:
- Event Processing: NestJS EventEmitter2
- Storage: Firestore (LLM 친화적 문서)
- Queue: Redis Priority Queue
- Correlation Engine: Custom TypeScript
- API: RESTful + GraphQL (복합 쿼리용)
Phase 2: 기본 지원 시스템 구축
목표: 시간 기반 메시지 처리를 위한 인프라 구축
기간: 3주
구현 대상
-
Message Queue System
// Redis 기반 Queue 구현
interface QueuedMessage {
id: string;
userId: string;
messageType: string;
scheduledFor: Date;
payload: any;
} -
권장 취침시간 처방 안내
- 자정 처방 → Queue 저장 플로우
- 아침 배치 처리 시스템
- Flowise 트리거 연동
-
서비스 사용 만료 안내
- 만료 감지 스케줄러
- Queue 기반 지연 전송
- 우선순위 처리 로직
아키텍처 추가
Flowise ← → Redis Queue ← → Batch Processor
↓
Agent Board
Phase 3: 고급 기능 구현
목표: 상태 관리 및 복잡한 비즈니스 로직 처리
기간: 4주
구현 대상
-
State Manager 구현
// 메시지 상태 추적 시스템
interface MessageState {
messageId: string;
userId: string;
status: 'pending' | 'displayed' | 'confirmed' | 'expired';
displayCount: number;
lastDisplayedAt?: Date;
} -
슬립큐 소개
- 온보딩 상태 관리
- 재노출 로직 구현
- 다른 메시지와의 우선순위 조정
-
수면기록 작성하기
- 복잡한 조건 체크 (슬립큐 완료 + 당일 미작성)
- 동적 메시지 생성
- 행동 추적 연동
Flowise Custom Node 개발
📋 Flowise 플로우 구성 예시 (P1 초기 평가)
실제 Flowise UI에서 P1 플로우를 구성하는 단계:
1단계: 노드 배치
Flowise 캔버스에 다음 노드들을 드래그:
- Start Node (트리거)
- Custom MCP Node × 3개 (데이터 조회용)
- Aggregator Node (데이터 통합)
- LLM Chain Node (GPT-4)
- Template Node (결과 포맷팅)
- Output Node (Agent Board 전송)
2단계: 노드 연결
Start → MCP Nodes → Aggregator → LLM → Template → Output
├─ Sleep Data
├─ Learning Data
└─ Questionnaire Data
3단계: 각 노드 설정
MCP Node 1 (Sleep Data):
- Name: "Get Sleep Context"
- Tool:
getComprehensiveUserContext - Settings:
User ID: {{trigger.userId}}
Date Range: 7days
Include: ✅ Sleep Patterns
MCP Node 2 (Learning Data):
- Name: "Get Learning Progress"
- Tool:
getLearningProgress - Settings:
User ID: {{trigger.userId}}
LLM Chain Node:
- Model: GPT-4
- Temperature: 0.7
- System Prompt:
당신은 불면증 치료 전문가입니다.
다음 데이터를 분석하여:
1. 사람 검토용 보고서
2. 시스템 처리용 데이터
3. 환자용 추가 질문
을 생성하세요. - Input:
{{aggregator.output}}
💻 Custom Node 개발이 필요한 경우
대부분의 경우 Flowise 기본 노드로 충분하지만, 특별한 로직이 필요한 경우 Custom Node를 개발할 수 있습니다:
- Custom MCP Node
// Custom MCP Node for Flowise
class MCPNode extends BaseNode {
constructor() {
super();
this.mcpClient = new MCPClient('dta-wide-mcp');
}
async execute(input) {
const { toolName, params } = input;
// MCP 도구 호출
const result = await this.mcpClient.callTool(toolName, params);
// LLM 컨텍스트에 결과 추가
return {
output: result,
metadata: {
tool: toolName,
timestamp: new Date(),
}
};
}
}
- State Check Node with MCP
// State Check Node using MCP
class StateCheckNode extends BaseNode {
async execute(input) {
const mcpNode = new MCPNode();
// MCP를 통해 사용자 상태 조회
const userState = await mcpNode.execute({
toolName: 'getUserState',
params: { userId: input.userId }
});
return this.evaluateConditions(userState.output, input.conditions);
}
}
Phase 4: 외부 시스템 연동
목표: 푸시 알림 및 실시간 알림 기능 완성
기간: 3주
구현 대상
-
Push Notification Service 연동
- FCM/APNS 통합
- 사용자별 시간대 처리
- 알림 설정 관리
-
기상 시각 안내
- 동적 스케줄러 구현
- 푸시 알림 + Agent Board 동시 처리
- 실패 시 재시도 로직
-
취침 준비 안내
- 취침 1시간 전 계산 로직
- 개인화된 준비 메시지
- 다중 채널 전송
-
Support Systems 구축
- Message Queue: Redis 기반 우선순위 큐
- State Manager: 메시지 상태 추적 시스템
- Scheduler Service: Cron 기반 정기 작업 관리
- Notification Hub: 푸시/인앱/이메일 통합 알림
최종 아키텍처
┌─────────────────────────────────────────┐
│ Flowise Flows │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ P1 │ │ P2 │ │ P3 │ │ P4 │ ... │
│ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ │
│ └───────┴───────┴───────┘ │
└─────────────────┬───────────────────────┘
│
┌────────────┴────────────┐
│ Integration Layer │
├─────────┬───────────────┤
│ Queue │ State Manager │
│ System │ (Redis) │
└────┬────┴───────┬───────┘
│ │
┌────┴────┐ ┌────┴─────┐
│Scheduler│ │Push │
│Service │ │Service │
└─────────┘ └──────────┘
5. 구현 시 주요 고려사항
5.1 Flowise 플로우 설계 원칙
- 모듈화: 각 P1-P5를 독립적인 플로우로 구성
- 재사용성: 공통 로직은 서브플로우로 분리
- 테스트 가능성: 각 노드별 단위 테스트 지원
- 버전 관리: 플로우 변경 이력 추적
- MCP 통합: 데이터 액세스는 MCP Server의 도구를 통해 수행
5.2 성능 최적화
optimization_strategies:
- LLM 호출 최소화 (캐싱, 템플릿 활용)
- 병렬 처리 가능한 작업 식별
- 배치 처리로 대량 메시지 효율화
- Redis 캐싱으로 반복 계산 방지
5.3 에러 처리 및 복구
// Flowise 에러 처리 패턴
const errorHandlingFlow = {
llmFailure: 'fallback_to_template',
dbTimeout: 'retry_with_backoff',
externalApiError: 'queue_for_later',
criticalError: 'alert_and_manual_intervention'
};
6. 예상 일정 및 리소스
6.1 전체 일정 (14주)
- Phase 1: 4주 (핵심 기능)
- Phase 2: 3주 (기본 인프라)
- Phase 3: 4주 (고급 기능)
- Phase 4: 3주 (외부 연동)
6.2 필요 리소스
- 개발팀: Flowise 전문가 1명, Backend 개발자 2명
- 인프라: Redis 클러스터, Message Queue, Scheduler Service
- 외부 서비스: OpenAI API, FCM/APNS
7. 리스크 및 대응 방안
| 리스크 | 영향도 | 대응 방안 |
|---|---|---|
| LLM API 응답 지연 | High | 비동기 처리 + 템플릿 폴백 |
| Flowise 확장성 한계 | Medium | 핵심 로직을 NestJS로 분리 |
| 복잡한 상태 관리 | High | Redis 기반 중앙화된 State Manager |
| 실시간 요구사항 충돌 | Medium | 우선순위 큐 + 지능적 스케줄링 |
8. 성공 지표
8.1 기술적 지표
- 메시지 생성 성공률 > 99.5%
- 평균 응답 시간 < 5초
- 시스템 가용성 > 99.9%
8.2 비즈니스 지표
- 사용자 메시지 확인율 > 80%
- Task 완료율 > 60%
- 치료 프로세스 완주율 > 70%
9. 결론
Flowise 기반 구현은 다음과 같은 장점을 제공합니다:
- 빠른 프로토타이핑: 시각적 플로우로 빠른 iteration
- LLM 통합 용이성: 다양한 LLM 모델 쉽게 교체
- 비즈니스 로직 가시성: 비개발자도 플로우 이해 가능
- 점진적 확장: 단계별로 기능 추가 가능
핵심은 Flowise를 "오케스트레이션 레이어"로 활용하면서, 복잡한 비즈니스 로직과 인프라 요구사항은 전문 시스템으로 보완하는 것입니다. 이를 통해 10가지 Agent 메시지 모두를 효과적으로 구현할 수 있습니다.
10. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-06-22 | bok@weltcorp.com | 최초 작성 - Flowise 기반 구현 전략 수립 |
| 1.0.0 | 2025-01-04 | bok@weltcorp.com | TreatmentProcess로 용어 통일, P3 가이드 반영 |